我已使用此加载函数导入了一个obj:
// called when resource is loaded
function ( object ) {
// For any meshes in the model, add our material.
object.traverse( function ( node ) {
if ( node instanceof THREE.Mesh ){
//node.material = material;
//node.geometry.computeVertexNormals();
node.castShadow = true;
node.receiveShadow = true;
}
} );
object.scale.set(0.5,0.5,0.5);
scene.add( object );
parts[partName] = object;
}
该对象加载得很好,并且场景中的聚光灯具有阴影。问题是,当我将材料应用于网格时(为什么在上面的代码中将其注释掉),模型不再接收阴影。
将材质逐个节点地应用,并将材质这样映射为jpg。
if ( node.isMesh ) node.material = material;
new THREE.MeshBasicMaterial( { map: new THREE.TextureLoader().load( 'materials/orange.jpg' ), shininess: 50, shading: THREE.SmoothShading }),
谢谢您的帮助,埃德。
答案 0 :(得分:1)
我正在使用
MeshBasicMaterial
应使用
MeshLambertMaterial
因此材料可以接收阴影。