使用ObjLoader加载的对象在three.js中不接收阴影
该模型在地平面上投射阴影,但它不接收来自前面另一个小平面(在地平面上投射阴影)的阴影,更不用说来自它自己。有什么想法吗使用ObjLoader加载的对象在three.js中不接收阴影,three.js,shadows,objloader,Three.js,Shadows,Objloader,该模型在地平面上投射阴影,但它不接收来自前面另一个小平面(在地平面上投射阴影)的阴影,更不用说来自它自己。有什么想法吗 var light = new THREE.DirectionalLight( 0xffefee, 1.2 ); light.position.set( 0, 40, 100 ); light.shadow.camera.left = -100; light.shadow.camera.right = 100; light.shadow.came
var light = new THREE.DirectionalLight( 0xffefee, 1.2 );
light.position.set( 0, 40, 100 );
light.shadow.camera.left = -100;
light.shadow.camera.right = 100;
light.shadow.camera.top = 100;
light.shadow.camera.bottom = -100;
light.shadow.camera.far = 1000;
light.shadow.camera.near = 1;
light.shadow.mapSize.width = 512;
light.shadow.mapSize.height = 512;
light.castShadow = true;
light.shadowDarkness = 0.5;
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
var femModel = null;
mtlLoader.setMaterialOptions({ side:THREE.DoubleSide });
mtlLoader.load( 'female02.mtl', function( materials ) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( 'female02/' );
objLoader.load( 'female02.obj', function ( object ) {
femModel = object;
femModel.position.set( 0, -80, 0 );
sceneRTTA.add( femModel );
}, onProgress, onError );
});
安装函数在完全加载后调用:
function setupmodel(){
femModel.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.castShadow = true;
child.receiveShadow = true;
}
} );
}
three.js 0.91.0在哪里调用
setupmodel()
?尝试在scenerta.add(femModel)之前调用它代码>是!就是这样,我刚刚移动了scenerta.add(femModel);在“if”之后插入setupmodel(),它成功了!谢谢我没有想到这一点,因为它确实部分起作用(投射阴影)。