2017-02-27 5 views
0

私は影をつけたいと思っていますが、私は次のように設定して、本当に何が問題なのか疑問に思っています。私はそれの子としてキュービックと球を持つグリッドを持っているし、また私はそれらのためのキャストシャドウと受信シャドウを設定したが、それは影のための結果を持っていない。 私のコードの一部:three.jsでポイントライトでシャドウを使用できないのはなぜですか?

var camera, scene, renderer, dice, dice1; 
scene = new THREE.Scene(); 
camera = new THREE.PerspectiveCamera(35,window.innerWidth/window.innerHeight, 0.1, 1000); 
// Z is up for objects intended to be 3D printed. 
camera.up.set(0, 0, 1); 
scene.add(camera); 
renderer = new THREE.WebGLRenderer({antialias: true}); 
renderer.setClearColor(0x999999); 
renderer.setPixelRatio(window.devicePixelRatio); 
renderer.setSize(window.innerWidth, window.innerHeight); 
renderer.shadowMap.enabled = true; 
renderer.shadowMap.type = THREE.PCFSoftShadowMap; 
document.body.appendChild(renderer.domElement); 
var light = new THREE.PointLight(0x000000, 1, 1000); 
light.position.set(10, 10,10); 
light.castShadow = true; // default false 
scene.add(light); 
//Set up shadow properties for the light; 
light.shadow.mapSize.width = 1024; // default 
light.shadow.mapSize.height = 1024; // default 
light.shadow.camera.near = 1; // default 
light.shadow.camera.far = 1000 // default 
var grid = new THREE.GridHelper(50, 50, 0xffffff, 0x555555); 
grid.colorGrid = 0x00ff00; 
grid.rotateOnAxis(new THREE.Vector3(1, 0, 0), 90 * (Math.PI/180)); 
scene.add(grid); 
objects.push(grid); // add to the array for DragControls 
grid.receiveShadow=true; 
//Create a sphere that cast shadows (but does not receive them) 
var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial); 
sphere.castShadow = true; //default is false 
sphere.receiveShadow = false; //default 
sphere.position.set(10, 15, 10); 
scene.add(sphere); 
//initializing the color cubic 
var material = new THREE.MeshBasicMaterial({ 
color: 0xff0000}); 
dice = new THREE.Mesh(new THREE.BoxGeometry(5, 5, 5, 1, 1, 1), material); 
dice.position.set(10, 2.5, 10); 
dice.castShadow = true; 
grid.add(dice); 
+0

「PointLightHelper」を追加して、あなたの「PointLight」を視覚化し、あなたのオブジェクトが円錐の中に入るかどうかを確認してください。 – gaitat

+0

@gaitat私は私の飛行機をドラッグすることができます、私は見ることができる、それはコーンに落ちるが、影が表示されません。 – Zahra

+0

あなたはフィドルまたはコードペンを作成できますか? – gaitat

答えて

0

グリッドに影を投げることはできません。それは単なる行です。 これをコードに追加して、影を確認してください。

var plane = new THREE.Mesh(new THREE.PlaneGeometry(50,50), new THREE.MeshStandardMaterial({color: 0x00ff00 })); 
plane.castShadow = false; 
plane.receiveShadow = true; 
plane.position.set(0, 0, -1); 
scene.add(plane); 
+0

それだけです。ありがとうございました。 – Zahra

関連する問題