假设我正在制作我自己的C++ 3D引擎;我已经可以使用assimp加载一个3D模型,用phong照明显示它,现在我想将它动画化。
我希望我的引擎中的特性,比如说,用assimp加载一个运行动画,并将它应用到我的人类角色中,最好是在GPU方面。我需要学习哪些技术来发展这个?
这是一个“购物清单”类的问题,我不一定需要一步一步的解释,但更多的是有关技术的概述,以了解我需要研究什么。(比如“阅读本OpenGL教程”或“学习X的工作原理”)
发布于 2018-05-29 10:03:48
首先,决定你将如何动画模型。
最简单的方法是每帧动画都有一个单独的网格。这需要更多的内存专门用于网格数据,更多艺术家的时间来创建它们,它只把你锁在那些姿势上。
下一步是在完整的网格(关键字morph目标)之间进行插值。这对面部表情非常有用,特别是如果你可以给每个顶点不同的权重的话。这并不是很好的全身动画,因为这是很难得到适当的圆形运动到它。
全身动画最常见的技术是骨骼动画。而不是每个动画帧的完整网格,相反,您有一组模型转换每一个“骨头”,每个顶点有一组权重,以决定它遵循哪些骨头。然后,在顶点着色器中,根据需要对变换进行插值,然后将插值变换应用到顶点。这有一个好处,不同的网格可以使用相同的动画数据,假设骨骼是相同的设置。
https://computergraphics.stackexchange.com/questions/7668
复制相似问题