1

我要实现的总体目标是实现一个可定制的化身系统,可以在其中改变身高、体重、体型等。这是如何完成的?举个简单的例子,当你改变头像的高度时,你不希望头部/眼睛/手指/等被拉伸,你只希望躯干和腿改变大小,而其他一切都保持原样(也许重新定位)。另一个例子是添加“啤酒肚”。这种变形的现有技术是什么?

每个变形的部分是一个单独的网格吗?

如果是这样,这两个被操纵的部分是如何以可信的方式“粘”在一起的(它们改变了大小)。

如果不是,您如何将您的操作限制在网格的一个部分而不是其他部分?

我正在寻找通用技术以及特定解决方案。这是一个通用的 3D 图形问题,但我正在使用 Kit3D/Silverlight/C#。这类似于我发布的另一个问题,但这更笼统。

4

2 回答 2

2

看看MakeHuman项目。(警告,一些可能对工作不安全的屏幕截图可能在主页上。大多数都是模糊的,但公平的警告。)

MakeHuman 使用的人体网格是一个简单的基础网格,具有一系列可以在 4 轴或 5 轴上调整的目标。该程序的大部分是用 Python 编写的,因此应该相对容易挖掘。文档站点上还有一些白皮书和其他文档。

于 2009-08-31T02:16:48.340 回答
1

如果您的几何图形是基于网格的,那么我建议您尝试生成非线性变换(我们称它们为“变形”)。

例如,您可以在 3D 世界中插入 N 个枢轴点,然后为网格中的每个顶点(点)确定任何给定枢轴对它的影响程度。例如,您可以使用平方反比加权,或高斯衰减,或某种 3D Voronoi,或...。然后您移动枢轴点并根据您的权重图对网格顶点进行变形。

如果您对所有网格中的所有顶点都执行此操作,并且您的网格构造良好,那么您永远不会出现间隙或不需要的交叉点。

另一种方法是使用带有衰减的局部变形。以 3D 缩放为例。您定义了缩放操作的中心点 C,但比例因子取决于与该基点的距离。因此,接近 C 的网格部分会缩放很多,而远离 C 的部分会缩放很少或根本不缩放。

于 2009-08-31T02:27:30.010 回答