Turbosquidから無料のモデルをダウンロードしました。これには、obj と mtl、およびテクスチャ (スペキュラ、バンプ マップなど) が含まれます。今のところ、mtl と obj ファイルに興味があります。そこで、ここから無料のモデルをダウンロードしました(車です)。次に、次のコードを使用してモデルをロードしました。
var loader= new THREE.OBJMTLLoader();
loader.load("./L200-Obj/L200-Obj.obj","./L200-Obj/L200-Obj.mtl",function(object) {
scene.add(object);
}
すでにパスを確認しましたが、問題ありません(ログを記録しようとしましたがobject
、これは有効なオブジェクトです)。問題は、黒い画面が表示されることです。その理由は、mtl ファイルが何らかの形で「考慮されていない」ためです。マテリアルを追加しようとすると:
object.traverse(function(child) {
child.material= someMaterial;
});
すると、設定したマテリアルで車を見ると、車の形が整っています。テクスチャもロードしようとしました:
var map= THREE.ImageUtils.loadTexture("./L200-Obj/truck_color-silver.jpg");
var bumpMap= THREE.ImageUtils.loadTexture("./L200-Obj/truck_bump.jpg");
var specularMap= THREE.ImageUtils.loadTexture("./L200-Obj/truck_spec.jpg");
var material= new THREE.MeshPhongMaterial({
map: map,
specularMap: specularMap,
bumpMap: bumpMap
});
// Set it as material with the above code
車は問題ないように見えますが、問題は、obj ファイルと mtl ファイルで車を色で表示するのに十分ではないかということです。マテリアルを設定しなくても車の色で見えてしまうのではないですか?私は何か間違ったことをしていますか?