【发布时间】:2020-12-14 16:38:39
【问题描述】:
在阅读 OBJ 文件格式时,我意识到还有其他几个属性,例如子对象 (-o)、组 (-g) 等。
我无法理解如何解析这些其他参数(如有必要)。我应该将每个 (-o) 的顶点和面数据加载到单独的 VAO 中吗?
另外,在这种情况下,整个对象的旋转将如何工作?所有子对象都会开始围绕它们自己的中心旋转吗?
如何使多个子对象像单个对象一样一致旋转,并且在必要时仍然可以独立控制每个子对象?
【问题讨论】:
在阅读 OBJ 文件格式时,我意识到还有其他几个属性,例如子对象 (-o)、组 (-g) 等。
我无法理解如何解析这些其他参数(如有必要)。我应该将每个 (-o) 的顶点和面数据加载到单独的 VAO 中吗?
另外,在这种情况下,整个对象的旋转将如何工作?所有子对象都会开始围绕它们自己的中心旋转吗?
如何使多个子对象像单个对象一样一致旋转,并且在必要时仍然可以独立控制每个子对象?
【问题讨论】:
我应该将每个 (-o) 的顶点和面数据加载到单独的 VAO 中吗?
基本上是的。每个对象 (-o) 或平滑组 (-g 或 -s) 本质上是整个模型的独立部分。所以你应该为每个组创建一个单独的可渲染网格。
通常顶点数据(顶点、法线、纹理坐标)不会在模型之间共享,但 OBJ 格式中没有任何内容表明它们不能是 AFAIK。
如何使多个子对象像单个对象一样一致旋转,并且在必要时仍然可以独立控制每个子对象?
这更像是一个设计问题。假设您有某种树状场景图,那么您将为整个 OBJ 模型创建一个根节点,并为每个组附加单独的节点。要旋转整个模型,您将变换应用到根节点。据我所知,OBJ 格式没有指定变换、旋转等。
【讨论】: