OpenGL - 参数化网格

时间:2016-08-22 17:45:44

标签: opengl 3d shader vertex-shader

鉴于人体3D模型,我想通过提供高度,腰围,胸围等参数来改变其形状。

从我收集的内容来看,3D模型应该有一些'钩子'我可以改变的地方。

通过OpenGL,Three.js或任何其他方式,任何指针都非常有用。我不想在Blender或其他3D操作工具中这样做。我希望以编程方式完成。

这里是Sample 3D model

1 个答案:

答案 0 :(得分:0)

你应该做的是将一组顶点“标记”在一起。 然后将顶点着色器应用于这些组,这会更改顶点的位置以缩小/展开网格。

一种方法是在网格内放置一个点,并给它一个半径。这几乎意味着你要创建一个球体。 在球体内的所有顶点上运行着色器。 着色器应该做的是“膨胀”球体 - 将顶点移离中心点。

只需将每个顶点从中心转换一定距离即可。 (从中心到当前顶点创建一个向量,继续向量,然后在那里移动顶点。

这应该适合腹部。

你可以做的另一个着色器是垂直拉伸网格(对于人的高度)。 这更直截了当。 只需在所有顶点上运行并添加到它们的高度。 要添加多少 - 这是你应该弄清楚的。我的直觉说它不能是常数 - 我认为这是一个线性函数,但我不确定。