这里我有一个简单的脚本,它使用Three.JS MTL Loader和OBJ加载器来加载模型和模型的材料。 现在,当它加载模型时,它只加载第一个对象颜色,其余部分加载白色。任何人都可以了解这可能是什么原因? 这是我的代码
var loader = new THREE.MTLLoader();
loader.load('http://ustarp.com/3DModels/WebsiteParts/Polished Aluminum/Underbody/11228.mtl', function (materials) {
materials.preload();
var objLoaderOfficeChair = new THREE.OBJLoader();
objLoaderOfficeChair.setMaterials(materials);
objLoaderOfficeChair.load('http://ustarp.com/3DModels/WebsiteParts/Polished Aluminum/Underbody/11228.obj', function (object) {
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ){
x=document.getElementsByClassName("popup"); // Find the elements
for(var i = 0; i < x.length; i++){
x[i].innerHTML += "<li class='mi_child'>"+child.name+"</li>"; // Change the content
}
}
});
object.name = 'Part1';
object.scale.set(50,50,50);obj3d.add( object );
object.updateMatrix();
model2 = object;
scene.add(object);
});
});
以下是显示模型的示例。
http://ustarp.com/3DModels/?part=2c75cf2681788adaca63aa95ae028b22
答案 0 :(得分:0)
您的mtl文件格式不正确:
# WaveFront *.mtl file (generated by Autodesk ATF)
newmtl 254,254,255
Ka 0.996078 0.996078 1.000000
Kd 0.996078 0.996078 1.000000
Ks 0.996078 0.996078 1.000000
Ns 1000.000000
d 1.000000
newmtl 229,31,31
Ka 0.898039 0.121569 0.121569
Kd 0.898039 0.121569 0.121569
Ks 1.000000 1.000000 1.000000
Ns 1000.000000
d 1.000000
newmtl
将字符串用作标识符。
修改强>
您可以做的是将字符串254,254,255
替换为字符串white
,将字符串229,31,31
替换为mtl文件和obj文件中的字符串redish
。 / p>