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);
});
そして、ここではスクリーンショットです:何らかの理由