关于游戏引擎中低模树的法线梳理方式
unity3d吧
全部回复
仅看楼主
level 13
mayaxiaoan 楼主
被迫放假在家人都要霉了,顺便写一点TA向的小文章,也顺便祝愿大家都能够安安稳稳熬过疫情。
此篇文章讨论的是游戏中低模树木的制作技巧,关于这个内容国外有些专业向文章其实已经有相关的原理介绍,但此篇文章侧重的是如何使用更加具体高效的制作方式。
首先我们按照常规的插片方式制作一棵树的低模,模型法线默认垂直于三角面。
然后将该模型导入Unity使用平行光照宴请八方
可以看到因为片的朝向错综复杂,导致树的光影非常错乱,无法产生明确的体积感。
这里不卖关子直接介绍具体的解决方式,就是为树叶的片面提供球形法线映射来解决。
即如下图的法线分布:
2020年02月10日 09点02分 1
level 13
mayaxiaoan 楼主
然后就是讨论具体的制作方式,MAX中虽然提供了法线编辑修改器,但功能相对简单,树叶插片法线繁杂,手动编辑每个法线势必影响工作效率,而且难以做到绝对正确。一般来说如果顶点数相同我们可以使用BlendShape的思路制作一个顶点编号相同的BlendMesh拓扑为圆球形并自动统一法线,然后将数据传递回原始的模型,但是树叶包含众多子Mesh,所以不能够使用这个方法。
那么面向美术的一个推荐方法是使用Maya软件的属性传递功能。
制作一个球体,将球体的法线传递到树的模型上,简单直接。
(当然这只是maya工具一个特性吻合的活用,其实maya默认提供的法线编辑功能并不如max强大)。
图只做演示,实际制作时记得剔除树干。
Max中虽然不能直接实现类似的功能,但是我们可以使用强大的MaxScript脚本来实现:
完整脚本内容如下:
另外在这里推荐一个比较新兴的程序向建模软件——Houdini,由于得天独厚的可编程节点优势,此软件正逐渐从原本的影视领域转入游戏领域,推荐大家学习了解。
我们的需求在Houdini中只需要简单的两行代码实现,相信稍微有点代码基础的童鞋就能看得懂:
当然除了上述软件的这些方法,一些法线功能相关的插件也能够做到类似需求,每个人的插件使用习惯不同,这里不再一一复述。
将经过上述方案修改的树木模型再次导入引擎并宴请八方,即可看到拥有圆形体积感的插片树木效果了(可以对比之前的动图查看区别):
以上~
by mayaxiaoan 20200210发表于百度Unity3D贴吧
2020年02月10日 09点02分 2
level 13
mayaxiaoan 楼主
啊,可恶的贴吧,图被压缩了,补充下houdini中的两行代码是:
vector o = set(1,5,0);
@璐村惂鐢ㄦ埛_00000E7馃惥 = normalize(@P-o);
2020年02月10日 09点02分 3
level 1
小安姐姐牛逼
2020年02月10日 09点02分 4
level 1
小安姐姐牛逼
2020年02月10日 09点02分 5
level 1
太感谢你了!!解决了我一个当前的困扰
2020年02月11日 13点02分 6
level 14
厉害了!
2020年02月11日 14点02分 7
level 1
小安姐姐太棒啦!
2020年03月09日 04点03分 8
level 1
好兄弟!能不能给个vx!
2020年04月04日 06点04分 9
level 13
安姐姐牛逼
2020年04月06日 15点04分 10
level 5
NB
2020年04月16日 05点04分 11
level 2
请问unity2018 4.8的enable frame timing stats在哪里,想使用动态分辨率,沒找到
2020年04月16日 15点04分 12
level 12
小安姐姐牛逼
2020年05月19日 03点05分 15
1 2 尾页