为骨骼扩展 Wavefront OBJ

Extending Wavefront OBJ for bones

我正在扩展 Wavefront OBJ 以使用骨骼。这是我的例子:

bn my_bone 0.0 0.0 0.0
wgh 1 1.0
wgh 2 1.0
wgh 3 1.0
wgh 4 1.0
wgh 5 1.0

bn my_bone2 1.0 0.0 0.0
prt my_bone
wgh 11 0.1
wgh 12 0.2
wgh 13 0.3

描述如下:

骨头:

bn [bone name] [x] [y] [z]

Parents:

prt [parent name]

权重:

wgh [vertex index] [weight]

我想问的是:

  1. 我的新命令会导致与标准的冲突吗?
  2. 我已经在 Visual Studio 的图形编辑器、混合现实查看器和 Blender 中测试了我的新 OBJ 文件,它们只是忽略了我的命令。我想知道在读取我的新 OBJ 文件时是否有任何程序抛出错误。我希望我的新 OBJ 文件在其他程序中像普通 OBJ 文件一样运行。
  3. 我必须考虑实现骨骼的附加功能是什么?
  4. 它将用于使用 CUDA 或 Direct3D 的游戏。我将通过使用矩阵来实现它。有没有更有效的方法,尤其是在 GPU 或 Direct3D 中?

我知道 FBX 等其他格式,我只想在 OBJ 中使用骨骼。

  1. 只要您的行 header 不是标准的一部分,那么它就完全没问题,但请参阅 2).

  2. 大多数现有的 OBJ 阅读器被设计为仅解析标准 headers(因为解析器需要知道行格式以及如何处理结果数据),因此您可能必须推出你自己的(不太难,周围有很多教程)。

  3. 您需要不止一个点来指定骨骼。 非常 至少你还需要它的端点。如果您计划进行正向或反向运动学,您还需要指定其局部轴和旋转限制。如果您不打算在运行时生成这些权重,还有一组用于蒙皮的权重。

  4. 矩阵表示是一种广泛使用的技术,因为它涉及简单的线性代数,可以很容易地进行矢量化和优化;然而,某些应用程序可能需要更先进的技术,例如双四元数在视觉上更具吸引力的蒙皮效果。