搅拌机的模型骨头都有0,0,0的初始值。
我已经尝试过先将模型导出为FBX格式,然后在搅拌器中导入,然后导出为JSON格式。啊,真灵!不幸的是,这造成了其他问题和太多的步骤要遵循。而且,Sea3d格式比JSON小得多,我在整个项目中成功地使用了这种格式。
另外,我尝试使用SEA3D Studio http://sea3d.poonya.com/studio/将“逆绑定矩阵”的旋转设置为0,0,0,对于每个骨头,这有助于初始位置,但不符合轴序。
如果我对矩阵的了解超过0,我会创建一个脚本,它会在加载时重置每个模型,但这是我需要帮助或帮助导出的,从3ds最大值导出,所以初始旋转值为0,轴的顺序是正确的
发布于 2015-06-19 06:11:05
在无数次中断设置骨骼初始旋转值的尝试和错误实验之后,我发现在SEA3D加载器中编辑这段代码完成了这项工作。
THREE.SEA3D.prototype.flipMatrix = function(mtx) {
var mtx_data = THREE.SEA3D.BUFFER0.copy( mtx );
mtx.setPosition( THREE.SEA3D.VECZERO );
mtx.multiplyMatrices( THREE.SEA3D.BUFFER1.makeRotationAxis( THREE.SEA3D.VECBUF0.set(0, 0, 1), THREE.Math.degToRad( 180 ) ), mtx );
mtx.makeRotationFromQuaternion( THREE.SEA3D.QUABUF0.setFromRotationMatrix( mtx ) );
var pos = THREE.SEA3D.VECBUF0.setFromMatrixPosition( mtx_data );
pos.z = -pos.z;
mtx.setPosition(pos);
return mtx;
}
准确地说,这一行:
mtx.makeRotationFromQuaternion( THREE.SEA3D.QUABUF0.setFromRotationMatrix( mtx ) );
应改为:
mtx.makeRotationFromQuaternion( new THREE.Quaternion(0, 0, 0, 1) );
这不是一个解决方案,而是一个解决方案,所以如果你有一个真正的解决方案(如何正确地从3ds max导出它或在加载后处理它),那么不要犹豫发布它!
https://stackoverflow.com/questions/30928803
复制相似问题