Three.js MTLLoader()只加载第一个对象的颜色?

时间:2017-11-09 17:57:52

标签: three.js

这里我有一个简单的脚本,它使用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

1 个答案:

答案 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>