额四月份写了 CustomMeshComponent 用于创建自定义网格
ue4 unreal4 自定义网格 绘制自定义网格 绘制面_ljason1993的博客-CSDN博客
当时想着找时间写个 Procedural Mesh 的相关介绍 也是用于创建自定义网格
结果忙废了...直接就快双十一了
(感谢mingmmen大兄弟的提醒...不然忘得一干二净)
-----------------------------------------------------------------------------------------------------------
首先随便创建一个Actor吧 这个不重要
在里面加一个procedural mesh component(如下图)
注意这个东西就是个mesh 基本功能和staticMeshComponent基本一致
什么碰撞啊材质啊物理啊
这东西ue官方拿来玩mesh切割比较多,就是一刀给个方盒子劈开,任意形状!
本质就是拿到要切的mesh的所有几何信息(顶点、法线、连线顺序等等)
然后分成两半后用两个 proceduralMesh 分别绘制出来 (下图)
用这个功能创建面很简单
Create Mesh Section 这个就是创建mesh用的 Section 是部分(也就是说他们创建很多个)
来咱们按个解释一下
Target:就是ProceduralMesh本身,你直接add一个到actor上面也行的
Section Index:这个是当前创建mesh的顺序,一个ProceduralMesh可以创建很多个mesh的,这个就是用来标记序号的,妥善运用(删除啥的都要用哦)
Vertices:这个是顶点数组(Vector的哦)
Triangles:三角形数组(int的哦)用于存放各个顶点连线顺序的,三个三个一组,额一个三角形三个点对吧
Normals:法线数组(Vector的哦)存放法线的,发现是光照相关,你可以给空!
UV0:UV数组(Vector2的哦)这个用来存放UV坐标的,用来控制贴图,也可以给空!
UV1 UV2 UV3:同上,但是一般不用,具体为啥这么多套UV你可以问问你附近的模型师哦~~~同样可空
Vertex Colors:顶点颜色数组(LinearColor的哦) 顶点颜色吧,没事干你可以研究玩玩,看过相关GL书的自己也明白,一般咱们也不用,可空哦
Tangents:切线数组 这玩意我不用直接把原厂翻译复制下来吧
Optional array of tangent vector for each vertex. lf supplied, must be same length as Vertices array.
每个顶点的切线向量的可选数组。如果提供,则必须与顶点数组的长度相同。
Create Collision:这个酸爽啊,创建碰撞(bool值),这个名为其意啊,但是注意注意关键来了,非常重要的事情说三遍啊!!!
我在4.26版本 CreateMeshSection的时候勾选CreateCollision,在EventGraph内正常使用,一旦放在Func里面就直接失效!!!
-----------------------------------------------------------------------------------------------------------
如果你输入的值都没错那么你就可以弄一个东西试试了
额那我先给大家试试吧,咱们还是按照上次的一个小面片来吧省事
顺便关于上次mingmmen大兄弟提的问题说明一下
关于贴图贴上去为啥不对了
因为默认的uv坐标是有问题的,所以肯定是不对的,这里我们做个试验
为了方便大家测试咱们先导入初学者资料包用于测试uv
好了这时候你就看见可爱的材质球文件夹了,找到这个花里胡哨的材质
打开详情看一下贴图样子,记一下
张这个样啊,然后我来创建一个一样的片,不给UV看看啥情况(刚才创建的Actor蓝图如下)
所有的东西都能直接看见啊,没什么花里花哨的函数
然后放在关卡里面,看下结果哈
是不是完全不一样~~~
好这个时候,我们按照UV的规则,每个顶点对应一个UV坐标
然后再看看结果吧~~~
so是不是发现uv挺重要~~~哈哈
但是大家会发现方向好像不对,转了180度
这个其实很简单,每个引擎对坐标定义都不一样,不止是左右手世界坐标系而已,连UV坐标也是不一样的,所以我们要找到正确的UV坐标而已,问题仅仅是四个点哪个是00点
如果还有点不理解,那试着用我下面的uv放进去看看什么结果,思考一下,不要光复制哦~~~
UV具体还是需要基础知识的哦,可以百度看看呢
随便找个链接吧
-----------------------------------------------------------------------------------------------------------
稍微说一下ProceduralMesh的相关api吧
Set Mesh Section Visible 设置个显示隐藏
Clear Mesh Section 清除一个mesh
Clear All Mesh Section 清除所有mesh
好了
祝君好运~~~