2017-07-19 5 views
0

コンパイルした.mtlファイルのおかげで、モデルに正しいマテリアルがマップされた.objモデルが正常に読み込まれました。しかし現在、ロードされたモデルは非常に暗いので、放射色を白に変更することは良い考えですが、私はそれを行う方法を見つけることができません。私はこれをやってみましたOBJ + MTLLoaderで読み込まれたモデルの材料特性を変更するには?

MTLLoader.setTexturePath('../models/'); 
MTLLoader.setPath('../models/'); 
var url = "model.mtl"; 
MTLLoader.load(url, function(materials) { 

    materials.preload(); 
    OBJLoader.setMaterials(materials); 
    OBJLoader.setPath('../models/'); 
    OBJLoader.load('model.obj', function (object) { 

     scene.add(object); 

    }); 
}); 

発光材料を作り出す独自に動作しますが、私の.mtlファイルを無視
object.traverse (function (child) { 
      if (child instanceof THREE.Mesh) { 
       child.material = new THREE.MeshLambertMaterial({emissive: 'white'}); 
      } 
     }); 

私はこれを持っています。私はそれらの両方を組み合わせる方法はありますか?私はこれに関連する何かをどこでも見つけることができないようです。前もって感謝します。

答えて

1

この資料は上書きされています。何がしたいだけで、発光値を変更して、それを修正している。

object.traverse (function (child) { 
     if (child instanceof THREE.Mesh) { 
      child.material.emissive.setHex(0xFFFFFF); 
     } 
    }); 
+0

私はエラーを取得「プロパティを読み取ることができません 『setHex』未定義の」、あなたは何が悪かったのかを知っていますか? –

+0

それは材料なしの 'THREE.Mesh'です。メッシュマテリアルの別のチェックを追加します: 'if(child.material instance of THREE.Material){/ * ... * /}'。 –

+0

ありがとう、私はこの場合も同様に動作した自分の設定に手動でMTLLoaderを編集しました。 –

関連する問題