1

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 ファイルで車を色で表示するのに十分ではないかということです。マテリアルを設定しなくても車の色で見えてしまうのではないですか?私は何か間違ったことをしていますか?

4

1 に答える 1

2

メモ帳でmtlファイルを見てください。画像ファイルの名前が一覧表示されます。mtl ファイルを作成したとき、その時点でのその場所への経路がまだ mtl ファイルにある可能性があります。その場合、mtl が obj と同じフォルダーにある場合は、mtl 内のファイルの名前を、obj と同じフォルダーにあるかのように変更します。つまり、パスは必要ありません。ワードパッドでファイル名を編集できます。

于 2013-11-04T22:05:37.723 に答える