2017-10-25 15 views
2

OBJLoaderとMTLLoaderを使用して、インターネットからダウンロードした低ポリゴンモデルをThree.JSシーンに読み込もうとしています。このモデルにはテクスチャはありません。しかし、私はモデルを見ているが、私はそれにマテリアルが表示されません(スクリーンショットの右車)。 .objファイルをBlenderで開きました.Cyclesレンダリングで低ポリカーの色が表示されています。私は(以下のコードを参照)ObjMtlLoader.loadによって返される値をconsole.log場合、Iは、材料名を表示することができ、色の値がMTLファイルに存在するものに対応するのでThreeJs OBJLoader + MTLLoader:資料読み込み中に表示されない

材料は、ロードあります。

正直に言うと、私はColladaLoaderを試してみましたので、(スクリーンショットの上に車を残した)、それはOBJLoaderまたはMTLLoaderに問題だ全くわからないんだけど、それは離れて、車輪から、いずれかの材料は表示されません。

私は、この限定された文脈では、何が原因であるかについての手がかりがあるかどうかを知りたいと思います。私はこの問題をより深く研究するつもりですが、週末を含め、すでに10時間も働いています。私は何も動作しないと思う、私は手動で材料を手動で作成しようとします。ここで

は、コードの抜粋です。ここ

// obj-mtl-loader.ts 

export class ObjMtlLoader { 

    private objLoader: THREE.OBJLoader = new THREE.OBJLoader(); 
    private mtlLoader: THREE.MTLLoader = new THREE.MTLLoader(); 

    constructor(basePath?: string) { 
     if (basePath) { 
      this.objLoader.setPath(basePath); 
      this.mtlLoader.setPath(basePath); 
     } 
    } 

    public load(objFile: string, mtlFile: string): Promise<THREE.Group> { 
     return new Promise((resolve, reject) => { 
      this.mtlLoader.load(
       mtlFile, 
       (materialCreator) => { 
        materialCreator.preload(); 
        this.objLoader.setMaterials(materialCreator); 
        this.objLoader.load(
         objFile, 
         (model) => { 
          resolve(model); 
         }, 
         () => {}, 
         (reason) => reject(reason) 
        ); 
       }, 
       () => {}, 
       (reason) => reject(reason) 
      ); 
     }); 
    } 

} 

は使用例です:

// renderer.ts 
    new ObjMtlLoader().load(
     '/assets/racing/car_model/Low-Poly-Racing-Car.obj', 
     '/assets/racing/car_model/Low-Poly-Racing-Car.mtl' 
    ).then((car) => { 
     this.SCENE.add(car); 
    }); 

そして、ここではスクリーンショットです:何らかの理由

Demo

答えて

0

、 ThreeJS(または私が持っているThreeJSのバージョン)はマルチマテリアルが好きではありませんまた、私がBlenderで素材でメッシュを分割すると、すべてが正常に見えます。

関連する問題