我正在开发一款小型多人游戏,它有一个单一的皮肤玩家网格,很多玩家使用它.一些背景:我尝试通过maya和blender collada export加载.两者似乎都参考了某种形式的动画数据,但我无法让它发挥作用.我已经尝试过maya JSON导出器,它只用一条物质线吐出很小的1k文件.最后,搅拌机JSON导出器工作.对于那些也试图加载蒙皮网格的人,我发现这非常有用:模型与骨骼动画(blender导出)在three.js中动画不正确
所以现在我有一个来自JSON加载器的geometry对象和materials数组.
我可以设置skinning=true材料,创建一个THREE.SkinnedMesh,添加到场景,添加动画THREE.AnimationHandler.add(我不清楚AnimationHandler实际上做了什么),创建一个THREE.Animation,调用play()和update(dt).最后我在我的场景中播放了一个网格和一个动画.
现在我想要的是这些......
很多例子 - 我想在我的场景中运行不止一个玩家模型.
我应该创建多个THREE.SkinnedMesh和THREE.Animation相同的型号?哪里THREE.AnimationHandler来的?
许多动画 - 我希望空闲/运行周期能够单独播放.
AFAIK只有一个动画关键帧的时间轴.Three.js如何为我分区,或者我必须手动执行此操作?
动画混合 - 当角色停止运行并使用空闲动画静止不动时,我不希望从一个角色到另一个角色立即快速捕捉.我想暂停运行动画并将该状态重新混合到空闲动画中.
目前这是否可以使用蒙皮网格(不是变形目标)?是否有关于此的示例或文档?
任何信息都会受到高度赞赏,即使只是朝着正确的方向努力.我不是在完整的教程之后,我想了解一些关于这些功能的更高级别的信息.
我可以愉快地实现2和3,但我想要一些关于threejs皮肤和动画框架的信息/描述文档来帮助我入门.例如,这不是很多.
[ 编辑 ]
谢谢,@ NishchitDhanani,这个页面相当不错,但没有提到多个动画或混合骨骼动画:http://chimera.labs.oreilly.com/books/1234000000802/ch05.html#animating_characters_with_skinning
这个页面说多个动画仍然是当前的问题,但不多(在评论中稍微讨论):http: //devmatrix.wordpress.com/2013/02/27/creating-skeletal-animation-in-blender-and -exporting,其对三JS /
目前的答案是......
THREE.SkinnedMesh但仍然不确定THREE.AnimationHandler …我实现了一个带有软件皮肤的MD5 Loader.md5中的绑定姿势是最终的,绝对位置和旋转,你只需要对关节相关的权重进行计算.
我试图实现GPU皮肤,但我陷入了困境.由于这些坐标是最终的,为什么我不能将我的3d矢量和四元数转换为矩阵并将其上传到着色器?正如我在这里读到的:http://3dgep.com/?p = 1356,我需要将我的骨架与绑定姿势的倒数相乘.但我不明白这一部分,因为我一直认为我唯一需要做的就是将最终矩阵上传到GPU并计算其余部分(权重总和等等)
你能解释一下逆绑定姿势的行为吗?
我有一个用Blender创建的简单骨架网格物体,我试图将其导出以便在OpenGL中渲染它.
我的问题是:为了分析网格(特别是骨架/骨骼)并在C/C++程序中渲染它,最简单的导出格式是什么?
我管理(没有太多问题)在网格中渲染对象,所以这不是问题.我搜索了很多,我尝试了不同的格式,但实际上我遇到了所有这些问题的困难..obj根据我的研究,使用它会很棒,它不支持骨骼.
因此,我应该使用什么格式(轻松)解析骨骼?
我已经阅读了几个关于OpenGL骨架动画的教程,它们似乎都是单一的使用四元数进行旋转,3d矢量进行翻译,所以不是矩阵.
但是当它们进入顶点蒙皮过程时,它们将所有四元数和三维矢量组合成一个4x4矩阵,并上传矩阵以在着色器中执行其余的计算.4x4矩阵有16个元素,而四元数+ 3d向量只有7个.那么为什么我们要在上传之前将它们转换为4x4矩阵?