IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> UE4 绘制简单三角形(五) -> 正文阅读

[游戏开发]UE4 绘制简单三角形(五)

UE4 绘制简单三角形(五)

使用FRawMesh绘制两个三角形面片,并赋予不同的材质,生成本地资源StaticMesh
在这里插入图片描述

   //设定模型名字
	FString MeshName = "TestRawMesh";
	//设定包的路径
	FString PackageName = "/Game/" + MeshName;
	//创建包
	UPackage* MeshPackage = CreatePackage(nullptr, *PackageName);
	//创建StaticMesh资源
	UStaticMesh* StaticMesh = NewObject< UStaticMesh >(MeshPackage, FName(*MeshName), RF_Public | RF_Standalone);
	//测试RawMesh
	FRawMesh RawMesh;
	//顶点位置数据,一个直角三角形
	RawMesh.VertexPositions.Add(FVector(0, 0, 0));
	RawMesh.VertexPositions.Add(FVector(100, 0, 0));
	RawMesh.VertexPositions.Add(FVector(100, 100, 0));
	RawMesh.VertexPositions.Add(FVector(0, 100, 0));
	//索引数据
	RawMesh.WedgeIndices.Add(0);
	RawMesh.WedgeIndices.Add(2);
	RawMesh.WedgeIndices.Add(1);

	RawMesh.WedgeIndices.Add(0);
	RawMesh.WedgeIndices.Add(3);
	RawMesh.WedgeIndices.Add(2);

	//接下来的数据并不重要,只是需要满足Array的长度以能通过 FRawMesh::IsValid()
	RawMesh.WedgeTexCoords[0].Add(FVector2D(0, 0));
	RawMesh.WedgeTexCoords[0].Add(FVector2D(1, 0));
	RawMesh.WedgeTexCoords[0].Add(FVector2D(0, 1));

	RawMesh.WedgeTexCoords[0].Add(FVector2D(0, 0));
	RawMesh.WedgeTexCoords[0].Add(FVector2D(1, 1));
	RawMesh.WedgeTexCoords[0].Add(FVector2D(1, 0));

	//每一个face对应一个材质slot 
	RawMesh.FaceMaterialIndices.Add(0);
	RawMesh.FaceMaterialIndices.Add(1);

	RawMesh.FaceSmoothingMasks.Add(0);
	RawMesh.FaceSmoothingMasks.Add(1);

	RawMesh.WedgeTangentX.Add(FVector(1, 0, 0));
	RawMesh.WedgeTangentX.Add(FVector(1, 0, 0));
	RawMesh.WedgeTangentX.Add(FVector(1, 0, 0));
	RawMesh.WedgeTangentX.Add(FVector(1, 0, 0));
	RawMesh.WedgeTangentX.Add(FVector(1, 0, 0));
	RawMesh.WedgeTangentX.Add(FVector(1, 0, 0));

	RawMesh.WedgeTangentY.Add(FVector(0, 1, 0));
	RawMesh.WedgeTangentY.Add(FVector(0, 1, 0));
	RawMesh.WedgeTangentY.Add(FVector(0, 1, 0));
	RawMesh.WedgeTangentY.Add(FVector(0, 1, 0));
	RawMesh.WedgeTangentY.Add(FVector(0, 1, 0));
	RawMesh.WedgeTangentY.Add(FVector(0, 1, 0));


	RawMesh.WedgeTangentZ.Add(FVector(0, 0, 1));
	RawMesh.WedgeTangentZ.Add(FVector(0, 0, 1));
	RawMesh.WedgeTangentZ.Add(FVector(0, 0, 1));
	RawMesh.WedgeTangentZ.Add(FVector(0, 0, 1));
	RawMesh.WedgeTangentZ.Add(FVector(0, 1, 0));
	RawMesh.WedgeTangentZ.Add(FVector(0, 1, 0));


	if (!RawMesh.IsValid())
		return;
	//创建StaticMeshSourceModel
	StaticMesh->PreEditChange(nullptr);
	FStaticMeshSourceModel& SrcModel = StaticMesh->AddSourceModel();
	SrcModel.SaveRawMesh(RawMesh);
	//对StaticMesh进行Build
	TArray< FText > BuildErrors;
	StaticMesh->Build(true, &BuildErrors);
	//随后通知Asset创建
	FAssetRegistryModule::AssetCreated(StaticMesh);

参考

  1. UE4绘制简单三角形(一)
  2. UE4绘制简单三角形(二)
  3. UE4绘制简单三角形(三)
  4. UE4绘制简单三角形(四)
  5. UE4尝试用C++生成一个最简单的StaticMesh
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:38:55  更:2022-02-24 15:40:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:27:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码