2

我试图渲染我在 3dsmax 中制作的原始角色,但我导出的 DAE 文件似乎有问题,或者只是 ColladaLoader 无法正确处理它。

场景由一个动画 Biped 骨架、使用 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

4

2 回答 2

3

在我开始阅读threejs colladaloader源代码并弄清楚之前,我遇到了同样的问题并花了几天时间玩导出器设置。所以如果你还没有解决它,这就是你必须做的:

首先:当您从 max 导出模型时,请确保场景中的所有元素都没有与文件名相同的名称(否则您的几何图形不会显示,这与 DAE 文件中生成的 id 有关)

现在,3DSMax 不知何故忽略了导出节点,因此您必须手动添加:

  1. 在文本编辑器中打开 running_babe.dae 文件
  2. 查找 <instance_controller url="...."/> 节点并将其重写为:
<instance_controller url="....">
    <skeleton>#xxxxx</skeleton>
</instance_controller>

其中“xxxxx”是 id(=3dsmax 中的元素/骨骼名称),它是骨架层次结构的根元素。并且不要忘记开头的“哈希”!:)

希望能为您解决。我还没有尝试过动画,但我现在会尝试,并让您知道此解决方案是否缺少任何内容。

编辑:没关系,显然我只是在一个巨大的该死的冰山一角的表面上划过..似乎得到collada(来自3dsmax 2013)+蒙皮动画工作很痛苦..我会考虑编写一个新的json导出器。格式看起来很简单并且有据可查,此外,还有来自 github 的旧 .ms 文件可以开始。祝你好运!如果你发现了什么,请把你的方法贴在这里,好吗?:)

于 2013-02-19T17:18:42.250 回答
2

3ds max 附带的默认插件不起作用。您需要使用OpenCollada插件。然后您可以按照collada loader示例进行操作。你得到骨头,动画和所有!

于 2013-12-14T05:30:18.897 回答