Javascript .3ds loader不加载材质和纹理

Javascript .3ds loader不加载材质和纹理,javascript,three.js,3dsmax,Javascript,Three.js,3dsmax,我正在尝试使用TDSLoader将相当复杂的.3ds模型加载到three.js中,方法与three.js/examples中完全相同: 但我得到的应该是这样的。我可以看到这个在线查看器使用了three.js,所以这是可能的。我还知道TDSLoader会加载纹理,但由于某种原因不会映射纹理(如果我将纹理移出文件夹,则会出现加载资源错误)。代码如下所示: var loader = new THREE.TextureLoader(); var normal = loader.load('texture

我正在尝试使用TDSLoader将相当复杂的.3ds模型加载到three.js中,方法与three.js/examples中完全相同: 但我得到的应该是这样的。我可以看到这个在线查看器使用了three.js,所以这是可能的。我还知道TDSLoader会加载纹理,但由于某种原因不会映射纹理(如果我将纹理移出文件夹,则会出现加载资源错误)。代码如下所示:

var loader = new THREE.TextureLoader();
var normal = loader.load('textures/normal.png');
var loader = new THREE.TDSLoader();
loader.setPath('textures/');
loader.load('textures/CAT_336D.3ds', function (object) {
  object.traverse(function (child) {
    if (child instanceof THREE.Mesh) {
      child.material.normalMap = normal;
    }
  });
  scene.add(object);
});

我的模型有23种材料,但装载机只装载2种——黑色和黄色,你可以看到玻璃、金属和其他材料都不见了。如何映射所有纹理和材质?可能是因为模型太大,所以不起作用?(超过160个网格,大约30MB)

您是否可以使用
glTF
而不是
3DS
?一种解决方案是将文件上载到sketchfab并将其导出到
glTF
。顺便说一句:
TDSLoader
加载纹理并将其指定给材质。只有法线贴图不受支持。@Mugen87是的,我这样做了,效果很好。问题是该文件几乎大了两倍。您可以尝试使用A3dsViewer将其导出为three.js