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

本文介绍了如何在UE4中使用ProceduralMeshComponent创建自定义网格,包括顶点、法线、UV坐标等概念,并通过示例展示了创建过程。同时,讨论了创建碰撞的问题及贴图对齐问题,强调了UV坐标的重要性。还提供了相关API的简要说明。
摘要由CSDN通过智能技术生成

额四月份写了 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具体还是需要基础知识的哦,可以百度看看呢

随便找个链接吧

uv坐标是什么? - 知乎

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

稍微说一下ProceduralMesh的相关api吧

Set Mesh Section Visible 设置个显示隐藏 

 Clear Mesh Section 清除一个mesh

Clear All Mesh Section 清除所有mesh

 好了

祝君好运~~~

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懵懵爸爸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值