我试图渲染我在3dsmax中制作的原始角色,但似乎导出的DAE文件出现了问题,或者只是ColladaLoader无法正确处理它。
场景包含一个动画两足动物骨架,使用Physique修改器的简单装配角色,一个静态框和一个动画角色。
这是我的代码:
<script src="three.js" type="text/javascript"></script>
<script src="ColladaLoader.js" type="text/javascript"></script>
<script type="text/javascript">
var size_width = window.innerWidth;
var size_height = window.innerHeight;
var player;
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, size_width/size_height, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(size_width, size_height);
document.body.appendChild(renderer.domElement);
camera.position.x = 100;
camera.position.y = -50;
camera.position.z = 7;
camera.rotation.x = 1.4;
var player_loader = new THREE.ColladaLoader();
player_loader.load( "running_babe.dae", function(collada) {
player = collada.scene;
init();
});
function init() {
scene.add(player);
render();
}
function render() {
requestAnimationFrame(render);
renderer.render(scene, camera);
}
</script>
但我得到的只是那两个盒子而且是一个错误:
ColladaLoader: Could not find the skeleton for the skin.
这是我使用的导出的DAE文件 - http://touhou.ru/upload/ff72eb0b40adf5c97286a1bcb164e1f0.DAE
有什么建议吗?
更新:使用皮肤修饰符绑定角色后,我得出了相同的结果 - 无法找到皮肤的骨架。
以下是导出的dae与皮肤修饰符的链接 - http://touhou.ru/upload/af6ba52b7bff5fa2b0f6ba3f704a3b77.dae
答案 0 :(得分:3)
我遇到了同样的问题,并且在我开始阅读threejs colladaloader来源之前花了几天玩导出器设置并想出来了。所以如果你还没有解决它,这就是你要做的事情:
首先:当您从max导出模型时,请确保场景中没有任何元素与文件名相同(或者您的几何图形不会显示,这与DAE文件中生成的ID有关)< / p>
现在,3DSMax忽略了导出节点,所以你必须手动添加:
<instance_controller url="...."> <skeleton>#xxxxx</skeleton> </instance_controller>
其中'xxxxx'是id((3dsmax中的元素/骨骼名称),它是骨架层次结构的根元素。并且不要忘记开头的'哈希'! :)
希望能为你解决这个问题。我还没有尝试动画,但我现在会告诉你,如果这个解决方案有什么遗漏的话,请告诉你。
编辑:没关系,显然我只是划伤了尖端的表面 一个巨大的冰山冰山..似乎得到了collada(来自3dsmax 2013)+剥皮动画工作很痛苦......我会看一下写一个新的json导出器。 格式似乎很直接,并且有很好的文档记录,另外,还有旧的.ms文件 从github开始。祝你好运!如果你找到了什么,那就发帖了 你的方法在这里,对吗? :)
答案 1 :(得分:2)
3ds max附带的默认插件不起作用。您需要使用OpenCollada插件。然后,您可以按照collada loader示例进行操作。你得到骨头,动画和所有!