我正在努力实现的总体目标是实现一个可定制的头像系统,其中一个人可以改变身高,体重,体型等。这是如何实现的?举个简单的例子,当你改变头像的高度时,你不希望头部/眼睛/手指/等等伸展,你只想改变躯干和腿的大小,而让其他一切保持不变(可能是重新定位)。另一个例子是添加一个“啤酒胃”。对于这种变形,现有的技术是什么?
每个变形后的片段都是一个单独的网格吗?
如果是这样的话,这两个被操纵的部分是如何以可信的方式“粘合”在一起的(它们改变了大小)。
如果不是,如何将您的操作限制在网格的一个部分而不是其他部分?
我正在寻找通用的技术以及具体的解决方案。这是一个通用的3D图形问题,但我使用的是Kit3D/Silverlight/C#。这与我发布的另一个问题类似,但这个问题要普遍得多。
发布于 2009-08-31 02:16:48
看一看MakeHuman项目。(警告,一些可能不安全的工作屏幕截图可能在主页上。大多数是模糊的,但也是公平的警告。)
MakeHuman使用的人体网格是一个简单的基础网格,具有一系列可以在4轴或5轴上调整的目标。程序的大部分都是用Python编写的,因此应该相对容易理解。document site上还有一些白皮书和其他文档。
发布于 2009-08-31 02:27:30
如果你的几何体是基于网格的,那么我建议你尝试生成非线性变换(让我们称之为“变形”)。
例如,可以在3D世界中插入N个轴心点,然后确定网格中每个顶点(点)受任何给定轴心点的影响程度。例如,您可以使用平方反比加权,或者高斯衰减,或者一种3D Voronoi,或者...然后移动轴心点,并根据权重贴图变形网格顶点。
如果对所有网格中的所有顶点执行此操作,并且网格构造良好,则永远不会出现间隙或不需要的交点。
另一种方法是使用带有衰减的局部变形。以3D缩放为例。您可以定义缩放操作的中心点C,但比例因子取决于距此基点的距离。因此,网格中靠近C的部分将缩放很多,而远离C的部分将缩放很少或根本不缩放。
https://stackoverflow.com/questions/1355517
复制相似问题