我已经能够将 3D 模型从 Maya 导入到 OBJ 文件中,而这些文件又可以被我的 Android 应用程序读取。现在可以显示这个模型,我也可以对它们应用变换,即使是在高多边形数的对象上,这很好。
下一步是确定是否有任何合理的方式来显示 Maya 中定义的动画。我真的不知道如何处理这个问题,我对此的初步研究基本上是空的。
有没有人尝试过这个?如果是这样,这将如何工作?
我认为值得注意的是,这个问题与 Maya 几乎没有关系。Maya 的文件格式是专有且不透明的;您将找不到直接在 Android 上显示它们的方法(或其他任何地方,来吧)。但是您可以将数据从 Maya 导出为(基本上)任何格式,这正是您真正想要做的。
所以,这里的过程:
有很多方法可以完成第 1 步。为了纯粹的易用性,我自己可能会选择Unity。基本上它是一个游戏开发工具,可以创建在 Android(和 iOS、OSX、Windows 等)上运行的 3D 应用程序和游戏。它不是免费的——Android 插件售价 400 美元——但如果你真的打算用 Android 做任何严肃的事情,你会发现它是值得的。有了它,在 Unity 中制作一个显示动画模型的小 Android 应用程序实际上非常简单(并且在 Unity 中制作了许多 3D Android 和 iOS 游戏)。Unity 还需要 FBX 格式的模型和动画,这是一种广泛支持的交换格式 - 将 Maya 中的内容导入 FBX 不会有任何问题。
如果您在第 1 步中使用了 Unity,那么第 2 步很简单:将您的模型从 Maya 导出为 FBX,然后您就完成了。如果您决定推出自己的 Android 渲染应用程序,那么祝您好运。:)
无论如何,关键是您要做的是找到一个通用的解决方案,用于在 Android 上渲染动画模型,然后才弄清楚如何从 Maya 中获取您的内容。
与其将每个单独的帧输出到单独的 obj 文件(如辣味维尼建议的那样),不如只将关键帧导出到 obj 文件。在代码中实现插值以填充缺失的帧。如果您的模型很复杂,您可能希望将插值模型缓存在内存中,但至少您不必也从文件中加载它们。
与 Cody Hatch 的回答不同,我对此也很感兴趣。这是我关于动画模型的理论:
假设您的模型有 30 帧。一种方法是将每一帧导出为单独的 OBJ 模型。从那里,您可以为这 30 个 OBJ 创建一个文件夹。所以现在你总共有 31 个文件。如果这个人点击了一个按钮,诀窍是根据按钮(或任何动作)有效的时间长度来加载每个 OBJ。如果它持续超过 1 秒(30 帧),则循环回到开头。
这个理论的唯一问题是它很可能是资源和功率密集型的,更不用说,如果你试图将很多东西加载到一个场景中,它会占用大量空间。