Three.js MTLLoader()仅加载第一个对象颜色?
这里我有一个简单的脚本,它使用Three.JS MTL Loader和OBJ Loader加载模型和模型的材质。 现在,当加载模型时,它只加载第一个对象的颜色,其余对象保留白色。有人能解释一下这可能是什么原因吗? 这是我的密码Three.js MTLLoader()仅加载第一个对象颜色?,three.js,Three.js,这里我有一个简单的脚本,它使用Three.JS MTL Loader和OBJ Loader加载模型和模型的材质。 现在,当加载模型时,它只加载第一个对象的颜色,其余对象保留白色。有人能解释一下这可能是什么原因吗? 这是我的密码 var loader = new THREE.MTLLoader(); loader.load('http://ustarp.com/3DModels/WebsiteParts/Polishe
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);
});
});
var loader=new THREE.MTLLoader();
loader.load('http://ustarp.com/3DModels/WebsiteParts/Polished 铝/车身底部/11228.mtl',功能(材料){
材料。预加载();
var objLoaderOfficeChair=new THREE.OBJLoader();
ObjLoaderOfficeHair.setMaterials(材料);
objLoaderOfficeHair.load('http://ustarp.com/3DModels/WebsiteParts/Polished 铝合金/车身底部/11228.obj',功能(对象){
遍历(函数(子对象){
if(三个.Mesh的子实例){
x=document.getElementsByClassName(“弹出”);//查找元素
对于(变量i=0;i”+child.name+“”;//更改内容
}
}
});
object.name='Part1';
object.scale.set(50,50,50);obj3d.add(object);
object.updateMatrix();
模型2=对象;
场景。添加(对象);
});
});
下面是所示模型的一个示例
您的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
采用字符串作为标识符
编辑
您可以做的是将mtl文件和obj文件中的字符串
254255
替换为字符串white
,将字符串229,31,31
替换为字符串redish
。您的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
采用字符串作为标识符
编辑
你可以做的是在mtl文件和obj文件中用字符串替换字符串
2542555
,用字符串white
替换字符串229,31,31
。你有什么建议吗?我直接从Autodesk生成这些字符串。有没有一种方法可以通过编程实现这一点呢?可能一直都是用php的regex上载并用颜色名称替换RGB的MTL文件?是的,您可以这样做,但我会尝试找出AutoDesk创建此类名称的原因,并尝试修复它。您的建议是什么?我直接从AutoDesk生成这些文件是否有方法以编程方式执行此操作?可能使用php正则表达式上载并替换所有MTL文件用颜色名称替换RGB?是的,您可以这样做,但我会尝试找出AutoDesk创建此类名称的原因,并尝试修复它。