Zeigen Sie SpotLight in derselben Richtung an wie die Kamera three.js (Flashlight)

8

Ich bin wirklich neu in diesem Zeug. Ich möchte eine einfache 3D-Szene machen, in der ich mit PointerLockControls herumfliegen kann, aber ich möchte auch eine Art Taschenlampe haben. Daher sollte das Spotlicht in dieselbe Richtung zeigen wie die Kamera.

Ich habe Spotlight gemacht, um der Kamera zu folgen, aber ihr Ziel ist an 0,0,0 gebunden.

Was ist der beste Weg, dies zu erreichen?

Danke.

    
Pavel Galaton 09.05.2013, 07:44
quelle

3 Antworten

12

Das SpotLight Ziel ist ein Object3D , nicht ein Vector3 .

%Vor%

Die beste Lösung in Ihrem Fall ist, stattdessen ein PointLight zu verwenden und dieses Muster zu verwenden:

%Vor%

Wenn Sie immer noch ein Spotlight verwenden möchten, dann tun Sie etwas wie folgt:

%Vor%

Es ist nicht generell erforderlich, dass die Kamera als Kind der Szene hinzugefügt wird, aber in diesem Fall ist es erforderlich, da das Licht als Kind der Kamera hinzugefügt wird.

drei.js r.69

    
WestLangley 09.05.2013, 13:59
quelle
9

Ich hatte das gleiche Problem, das ich wie folgt gelöst habe:

%Vor%

Da das Ziel eines SpotLights ein Objekt (und keine Position) sein muss, fand ich es mental einfacher, das Blitzlicht einfach hinter die Kamera zu setzen und dann auf die Kamera. So scheint das Licht durch die Kamera und erleuchtet die Dinge davor.

Dieser Ansatz ist in Ordnung, wenn Sie nach einem Taschenlampeneffekt suchen, bei dem die Taschenlampe nahe an der Brust (zentral zum Körper) und nicht auf einer Seite gehalten wird.

    
Tim 20.06.2013 15:02
quelle
2

Inspiriert von der obigen Lösung von WestLangley fand ich heraus, dass spotlight.target und spotlight selbst als untergeordnetes Objekt demselben Objekt hinzugefügt werden können, unabhängig davon, ob es sich um die Kamera oder ein anderes Objekt handelt Objekt, wie ein Auto oder eine Waffe. Dann werden sie relativ zum übergeordneten Objekt positioniert, so dass die Position nicht von einem Objekt zum anderen kopiert werden muss.

Sie könnten zum Beispiel so etwas tun:

%Vor%

Und jetzt wird die Waffe standardmäßig der Kamera folgen und der Scheinwerfer wird entlang der Waffe aufleuchten. Wenn die Waffe aus irgendeinem Grund gedreht wird (eine Kugel ablenkt oder auf dem Boden kriecht oder was auch immer), dreht sich der Scheinwerfer ebenfalls. DREI ist ein schönes Stück Software. : -)

Wenn Sie den Scheinwerfer an der Kamera anbringen und ihn in die gleiche Richtung wie die Kamera richten und ihn nicht von der Mitte weg positionieren, sieht der Lichtkegel ständig kreisförmig aus. Für viele Anwendungen sieht es kühler und realistischer aus, dass es seine Form in der Projektion dynamisch ändert. Ein kleiner Versatz genügt (wie in meinem obigen Beispiel, obwohl ich das nicht getestet habe).

    
Elias Hasle 19.04.2016 19:16
quelle

Tags und Links