2017-07-11 1 views
0

in meinen drei js einzuwenden Einstellung habe ich folgende Einstellungen für ein gerichtetes Licht haben:three.js Licht direkt aus der Kamera

private aLight: THREE.DirectionalLight; 

this.aLight = new THREE.DirectionalLight(0xffffff, 1.0); 
this.aLight.position.set(-5, 5, 5); 

this.aScene.add(this.aLight); 

Um das Licht nach meiner Kamera zu haben und immer meine Masche beleuchten ich gesetzt folgend in meiner render-Funktion: private OnRender() {

this.aLight.position.copy(this.aCamera.getWorldPosition()); 

window.requestAnimationFrame(_ => this.onRender()); 
this.aRenderer.render(this.aScene, this.aCamera); 

Nun wird das Objekt immer beleuchtet:

enter image description here enter image description here

aber wenn ich in den Oberflächen heran vor der Kamera sind dunkel:

enter image description here

Ich möchte mein Licht immer von meiner Kamera auf das Objekt zeigt haben. Was mache ich falsch?

Antwort

3

Wenn Sie möchten, dass eine Lichtquelle mit Ihrer Kamera übereinstimmt, ist die einfachste Lösung, ein Punktlicht zu verwenden und es als Kind der Kamera hinzuzufügen. Sie können verwendet ein Muster wie folgt aus:

camera.position.set(10, 10, 10); 
scene.add(camera); // required in this case since the camera will have a child 

// ambient 
scene.add(new THREE.AmbientLight(0xffffff, 0.1)); // optional 

// light 
var light = new THREE.PointLight(0xffffff, 1); 
camera.add(light); 

Wenn Sie ein gerichtetes Licht verwenden, denken Sie daran, dass ein gerichtetes Licht eine target Eigenschaft hat, eine Object3D. Wenn Sie also zoomen, müssen Sie wahrscheinlich target.position ändern. Mit einem Punktlicht, wie ich oben erklärt habe, ist es einfacher.

three.js r.86

+0

Sie sind ein Star WestLangley, danke yo sehr viel. – Dino

Verwandte Themen