2016-05-03 1 views
0

La géométrie de tour ne projette pas d'ombres mais des sphères et des cubes. Pourquoi donc ?Three.js LatheGeometry ne projette pas d'ombres

Image

Mon renderer:

var webGLRenderer = new THREE.WebGLRenderer(); 
    webGLRenderer.setClearColor(0xAAAAAA, 1.0); 
    webGLRenderer.setSize(window.innerWidth, window.innerHeight); 
    webGLRenderer.shadowMapEnabled = true; 

Tour:

var latheGeometry = new THREE.LatheGeometry(array, Math.ceil(segments), 0, 2 * Math.PI); 

     //var meshMaterial = new THREE.MeshBasicMaterial({color:0x00ff00, transparent:true, opacity:0.6}); 
var meshMaterial = new THREE.MeshLambertMaterial({color: 0xFFFFFF}); 
meshMaterial.side = THREE.DoubleSide; 
var wireFrameMat = new THREE.MeshBasicMaterial(); 
wireFrameMat.wireframe = false; 

latheMesh = THREE.SceneUtils.createMultiMaterialObject(latheGeometry,[meshMaterial, wireFrameMat]); 
latheMesh.rotation.x = Math.PI * -0.5; 
     latheMesh.position.z = 0; 
    latheMesh.castShadow = true; 
     scene.add(latheMesh); 

Mon éclairage:

var pointColor = "#ffffff"; 
    directionalLight = new THREE.DirectionalLight(pointColor); 
    directionalLight.position.set(-50,50,50); 
    directionalLight.castShadow = true; 
    directionalLight.receiveShadow = false; 
    directionalLight.shadowCameraVisible = true; 

    directionalLight.intensity = 1; 
    directionalLight.shadowCameraNear = 50; 
    directionalLight.shadowCameraFar = 200; 
    directionalLight.shadowCameraLeft = -50; 
    directionalLight.shadowCameraRight = 40; 
    directionalLight.shadowCameraTop = 50; 
    directionalLight.shadowCameraBottom = -50; 


    directionalLight.distance = 0; 
    directionalLight.shadowMapHeight = 1024; 
    directionalLight.shadowMapWidth = 1024; 

    //scene.add(new THREE.DirectionalLightHelper(directionalLight, 0.5)); 
    scene.add(directionalLight); 

Comme vous pouvez le voir, seule sphère peut jeter l'ombre et pas tourheGeometry.

Répondre

2

THREE.SceneUtils.createMultiMaterialObject() crée un THREE.Group avec un enfant Mesh pour chaque article.

Vous devez spécifier la propriété castShadow non pas pour le groupe, mais pour le maillage enfant que vous souhaitez transformer l'ombre.

trois.js r.76

+0

cela fonctionne comme un charme! merci @WestLangley – ralcazar

+0

@ralcazar Super! Voilà ce que sont les votes pour les votes. – WestLangley