Inspiriert von oben WestLangley-Lösung, fand ich heraus, dass spotlight.target und Scheinwerfer sich als Kinder auf das gleiche Objekt hinzugefügt werden kann, ob, dass die Kamera oder ein anderes Objekt, wie ein Auto oder einer Pistole. 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 wie folgt aus:
scene.add(camera);
camera.add(gun);
gun.position.set(-30,-30,0);
gun.add(spotlight);
spotlight.position.set(0,0,30);
gun.add(spotlight.target);
spotlight.target.position.set(0,0,31);
Und nun die Waffe wird in der Standardeinstellung folgen die Kamera und der Scheinwerfer entlang der Pistole leuchtet. 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 Beispiel oben, obwohl ich das nicht getestet habe).
Ja, aber PointLight gibt mir keine Schatten. Gibt es eine Möglichkeit, sie mit dem PointLight zu haben? –
Wahr, PointLights unterstützt keine Schatten. Befindet sich das Licht jedoch an der Stelle, an der sich die Kamera befindet, können Sie die Schatten sowieso nicht sehen, da die Objekte, die die Schatten werfen, im Weg sind. – WestLangley
Ok vielleicht schlecht Beispiel - Aufgabe: Ich möchte zwei Einheiten an der Szene von node.js als Server synchronisiert, (Multiplayer) und ich möchte Blitzlicht in jeder der Einheit haben, zeigt definierte Richtung. Was ist der beste Weg, solche Informationen per Socket zu senden? (nebenbei, wo ist akzeptieren Schaltfläche? :)) –