Threejsの.objモデル投影
1780 ワード
今日はプロジェクトをする時にthreejsの中で.obj模型の投影はgeometryの投影と少し違っています.文章を書いて記録してください.忘れないようにしてください.皆さんの助けにもなりたいです.
Objモデル投影の方法は、Obj.Childrenの中の要素を遍歴して設定することである.
コアコード:
つまり、モデルに影を付ける場合は、Meshオブジェクトに
最終効果を見てください.
, ^_^ ~
原理:Objモデル投影の方法は、Obj.Childrenの中の要素を遍歴して設定することである.
castShadow
とreceiveShadow
;コアコード:
for(k in obj.children){
obj.children[k].castShadow = true;
obj.children[k].receiveShadow = true;
}
モデルの完全なコードを作成: //
function initCar(){
var geometry, material;
var loader = new THREE.MTLLoader();
loader.setPath('../3d-models/');
loader.load('car.mtl', function(material){
material.preload();
let objLoader = new THREE.OBJLoader();
objLoader.setMaterials(material);
objLoader.load('../3d-models/car.obj', function(obj){
for(k in obj.children){
obj.children[k].castShadow = true;
obj.children[k].receiveShadow = true;
}
// obj.receiveShadow = true; // , geometry
// obj.castShadow = true; // , geometry
scene.add(obj);
})
})
}
geometry投影モデルの投影コード:(みんな自分で.objコードと比較してください) function initCube(){
var geometry = new THREE.BoxGeometry(20, 20, 20);
var material = new THREE.MeshPhongMaterial({ color: 0xff3300 });
cube = new THREE.Mesh(geometry, material);
cube.receiveShadow = true; // .obj
cube.castShadow = true; // .obj
scene.add(cube)
}
詳しく分析してみます.つまり、モデルに影を付ける場合は、Meshオブジェクトに
castShadow
およびreceiveShadow
を設定し、Objオブジェクトは複数のMeshから構成され、すべてObj.Childrenの中にあるので、Obj.Childrenを遍歴して影効果を加える必要がある.最終効果を見てください.