【问题标题】:OpenGL - parameterized meshesOpenGL - 参数化网格
【发布时间】:2016-08-22 17:45:43
【问题描述】:

给定一个人体 3D 模型,我想通过给出参数来改变它的形状,比如身高、腰围、胸围等。

根据我收集到的信息,3D 模型应该在我可以更改的区域周围有一些“钩子”。

通过 OpenGL、Three.js 或任何其他方式,对此的任何指示都会非常有帮助。我不想在 Blender 或其他 3D 操作工具中这样做。我希望它以编程方式完成。

这是Sample 3D model

【问题讨论】:

  • OpenGL 只是一个渲染 API。您需要自己管理几何图形(或使用单独的库或框架)。

标签: opengl 3d shader vertex-shader


【解决方案1】:

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


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

只需将每个顶点从中心变换一定数量即可。 (做一个从中心到当前顶点的向量,继续这个向量,把顶点移到那里。

这对腹部应该很有效。


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

【讨论】:

  • 这很有趣。看起来我需要小心选择精确的顶点并应用变换。
  • 假设您的网格是蒙皮的,只需平移和/或缩放模型的特定关节即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 2016-04-30
  • 2011-08-20
相关资源
最近更新 更多