我正在尝试使用 TDSLoader 将非常复杂的 .3ds 模型加载到three.js 中,方式与three.js/examples 中完全相同:https : //github.com/mrdoob/three.js/blob/master/examples/webgl_loader_3ds。 html 但我得到的结果看起来像这样使用 https://3dviewer.net/ 加载时应该看起来像这样。我可以看到这个在线查看器使用了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);
});
Run Code Online (Sandbox Code Playgroud)
我的模型有 23 种材料,但装载机只装载了 2 种 - 黑色和黄色,您可以看到缺少玻璃、金属和其他材料。如何映射所有纹理和材质?也许它不起作用是因为模型太大?(超过 160 个网格,大约 30MB)