ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)

额四月份写了 CustomMeshComponent 用于创建自定义网格

ue4 unreal4 自定义网格 绘制自定义网格 绘制面_ljason1993的博客-CSDN博客

当时想着找时间写个 Procedural Mesh 的相关介绍 也是用于创建自定义网格

结果忙废了...直接就快双十一了

(感谢mingmmen大兄弟的提醒...不然忘得一干二净)

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第1张图片

 -----------------------------------------------------------------------------------------------------------

 首先随便创建一个Actor吧 这个不重要

在里面加一个procedural mesh component(如下图)

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第2张图片

注意这个东西就是个mesh 基本功能和staticMeshComponent基本一致

什么碰撞啊材质啊物理啊

这东西ue官方拿来玩mesh切割比较多,就是一刀给个方盒子劈开,任意形状!

本质就是拿到要切的mesh的所有几何信息(顶点、法线、连线顺序等等)

然后分成两半后用两个 proceduralMesh 分别绘制出来 (下图)

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第3张图片

用这个功能创建面很简单

Create Mesh Section 这个就是创建mesh用的 Section 是部分(也就是说他们创建很多个)

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第4张图片

 来咱们按个解释一下

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大兄弟提的问题说明一下

关于贴图贴上去为啥不对了

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第5张图片

 因为默认的uv坐标是有问题的,所以肯定是不对的,这里我们做个试验

为了方便大家测试咱们先导入初学者资料包用于测试uv

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第6张图片ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第7张图片

 好了这时候你就看见可爱的材质球文件夹了,找到这个花里胡哨的材质

打开详情看一下贴图样子,记一下

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第8张图片

张这个样啊,然后我来创建一个一样的片,不给UV看看啥情况(刚才创建的Actor蓝图如下)

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第9张图片

 所有的东西都能直接看见啊,没什么花里花哨的函数

然后放在关卡里面,看下结果哈

 是不是完全不一样~~~

好这个时候,我们按照UV的规则,每个顶点对应一个UV坐标

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第10张图片

然后再看看结果吧~~~

 so是不是发现uv挺重要~~~哈哈

但是大家会发现方向好像不对,转了180度

这个其实很简单,每个引擎对坐标定义都不一样,不止是左右手世界坐标系而已,连UV坐标也是不一样的,所以我们要找到正确的UV坐标而已,问题仅仅是四个点哪个是00点

如果还有点不理解,那试着用我下面的uv放进去看看什么结果,思考一下,不要光复制哦~~~

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第11张图片

 UV具体还是需要基础知识的哦,可以百度看看呢

随便找个链接吧

uv坐标是什么? - 知乎

 -----------------------------------------------------------------------------------------------------------

稍微说一下ProceduralMesh的相关api吧

Set Mesh Section Visible 设置个显示隐藏 

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第12张图片

 Clear Mesh Section 清除一个mesh

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第13张图片

Clear All Mesh Section 清除所有mesh

ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)_第14张图片

 好了

祝君好运~~~

你可能感兴趣的:(Unreal4,ue4,unreal)