2016-03-31 19 views
0

Üç nokta.js ile PointLight'dan yararlandığım bir sahne hazırladım.Three.js: PointLight değişiklik mesafesi

var distance = 10000; 
var intensity = 10; 
var decay = 0; 
var hex = 0xFFFFFF; 
var light1 = new THREE.PointLight(hex, intensity, distance, decay); 

Gölgeleri kullanmak istiyorum, bu yüzden her şey mükemmel çalıştı burada Ta ki

light1.shadow.camera.near = 200; 
light1.shadow.camera.far = 10000; 
light1.shadow.camera.fov = 90; 
light1.shadow.bias = -0.00022; 
light1.shadow.mapSize.width = 1024; 
light1.shadow.mapSize.height = 1024; 

eklendi. Ancak, en kısa sürede bir sonraki satırda yer alır: 1000 için 10000 den

light1.castShadow = true; 

Sonra mesafe gözle görülür değişimler.
Konsola light1 arasındaki mesafeyi ararsam, hala 10000 dur.
Tuvalde olduğu gibi olmasa da.
(Mesafe değiştirilmeden ~ 50 basamaklı bir sayıya değiştirdim)

Bunu nasıl çözeceğinize dair herhangi bir öneriniz var mı?

cevap

0

THREE.Texture() aracılığıyla bir gölge oluşturmaya çalışabilirsiniz, bu şekilde gölge bağımsız bir öğe olacaktır ve PointLight konumunu etkilememelidir. Ben gölge sahnede döküm farz beri

var shadowTexture = new THREE.Texture(canvas); 
shadowTexture.needsUpdate = true; 
var shadowMaterial = new THREE.MeshBasicMaterial({map: shadowTexture, opacity: 0.5}); 
var shadowGeo = new THREE.PlaneBufferGeometry(100, 100, 100, 1); 

// Locate the position of the shadows 
mesh = new THREE.Mesh(shadowGeo, shadowMaterial); 
mesh.position.y = 0; 
mesh.rotation.x = - Math.PI/2; 
scene.add(mesh); 

Ben PlaneGeometry için gölge uyguluyorum. Her durumda, bir sahnede gölgelerle ilgili this example'a da bakın.