前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UE5 CitySample的MassAI海量人群绘制

UE5 CitySample的MassAI海量人群绘制

作者头像
quabqi
发布2022-04-19 13:58:06
1.1K0
发布2022-04-19 13:58:06
举报
文章被收录于专栏:Dissecting UnrealDissecting Unreal

之前这篇有说过Mass的Visualization,在近处是真实可以交互的Actor,而在远处会统一合并成ISM,如下图所示。

也有同学在私信和评论里问我,远处StaticMesh合并了Instance,但不能使用骨骼,那怎样才能有动画呢?其实官方做法就是材质里使用顶点动画。这个做法官方之前UE4 Niagara的视频里就已经讲过了,只是自己搞或看着视频照抄材质比较费劲。

现在黑客帝国的工程已经放出来了,也是通过这种方法做的,可以直接复制粘贴现成的了。打开Demo,可以看到远处这些会动的人,其实就是合了instance的静态网格,通过材质实现的动画。

下面来具体说一下:

可以打开上面那个路人的StaticMesh资源,可以发现这个StaticMesh在预览时候会动,所以第一反应肯定是材质里面使用了World Position Offset,就和树叶和草的材质动画做法一样,只是角色的会稍微复杂点。

因为角色骨骼动画,本质其实就是网格的每个顶点相对于TPose做了变换得到的Pose,而StaticMesh本身就是TPose,那么只要在材质里对每个顶点做对应的变换就可以实现动画了。

直接打开对应材质实例,右边3张贴图的样子已经能大概看出来做了什么,有骨骼的Position,Rotation,Weight。骨骼动画的蒙皮,本身每个顶点就是受对应几根骨骼影响的,那么只要知道了对应几根骨骼的偏移,也就能根据权重计算出当前顶点的偏移了。

打开母材质,可以看到确实是World Position Offset,而具体的动画,是通过ML_BoneAnimation这个材质Layer做的,材质Layer跟材质函数本质上其实是一回事,这里就不具体说区别了。

打开就可以看到具体是怎么做的了,本质其实就是拿骨骼和权重然后算出来偏移量:

至于怎样把动画烘到贴图上,可以看AnimToTexture这个插件的代码,具体就是把动画资源每帧的矩阵都拿出来,写到贴图上,可以看这几个函数。注意因为图片的通道保存的是位置等向量信息,所以这些烘出来的图片没有压缩。当然简单的压缩对精度损失会非常大,如果对图片的大小有特殊要求,可以自己研究一下算法,想办法压缩下,这里就不细说了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档