2016-08-02 5 views
0

Zu allererst diese Skalierung ist die Bibliothek ich spreche: https://github.com/mrdoob/three.js/blob/dev/examples/js/controls/OrbitControls.js
Mein Problem ist folgendes: ich kann nicht herausfinden, wo der Zoom genau definiert ist. Es skaliert auf die Entfernung zwischen Kamera und einem ursprünglichen Punkt, aber ich kann es nicht finden.
Ich weiß bereits, dass es nicht Zeile 31-33 oder getZoomScale() - Funktion (Zeile 276) und viele andere (für die verschiedenen Ereignisse) sein kann.
Hat jemand schon damit gearbeitet und hat eine Vermutung, wo die Definition ist?
Oder wie skaliert man den Zoom auf einen eingestellten Wert anstelle dessen, was es jetzt ist?Three.js OrbitControls.js Zoom nicht linear

Antwort

1

Eine Kamera (PerspectiveCamera) wird in der 3D-Entwicklung verwendet, um die Entfernung, den Winkel, das Sichtfeld usw. zu definieren. Dies ergibt eine 2D-Darstellung der Szene, die beim Rendern aus Licht, Netzen, Sprites usw. besteht. Es hat eine Position und eine Rotation in 3D-Vektoren, Matrizen oder Quaternionen gespeichert.

Steuerelemente (Orbit Control example, misc_controls_orbit.html) Bewegen Sie sich durch die Kamera, indem Sie Benutzerereignisse wie Mausrad zuordnen/an eine neue Position und Drehung verschieben. Im Falle einer Orbit-Kontrolle kann man sich eine Kamera als an ein Gewinde gebunden vorstellen, das sie zwingt, immer auf einen Mittelpunkt zu schauen, wenn sie bewegt wird. Bei einem bestimmten Radius bewegt sich die Kamera auf einer Kugel.

In Zeile 74 des Orbit-Samples wird die Kamera an OrbitControl übergeben, in Zeile 16 von OrbitControls.js sehen Sie, dass dieses Objekt an die Kamera übergeben wird, die den einstellbaren Variablen/Eigenschaften folgt. Dinge aktivieren. In Zeile 81 (this.zoom0 = this.object.zoom;) sehen Sie, dass die Kamera einen Zoom hat und der Wert von der Steuerung für Reset-Zwecke gespeichert wird. Die Update-Funktion enthält den Code, der die Kamera abhängig von der Eingabe (Maus, Touch, Pointer) neu positioniert. (Linie 156, 159 spherical.radius)

Sie die Kamera auf eine Anfangsposition und Drehung (camera.lookat) einstellen:

camera = new THREE.PerspectiveCamera(60, window.innerWidth/window.innerHeight, 0.1, 1000);   
    camera.position.x = 0.1; 
    camera.position.y = 3.5; 
    camera.position.z = 6; 
    camera.lookAt(new THREE.Vector3(0, 0, 0)); 

    controls = new THREE.OrbitControls(camera, renderer.domElement);  

Die GitHub Wiki Link (nur als Referenz): Home

+0

Danke für die schnelle Auffrischung. Der Zoom des Kamera-Objekts ist immer eine Konstante (standardmäßig 1). Ich werde in den Rest davon schauen, wo diese Sphäre angewendet wird. Danke – Garamaru

+0

Wahr ist es 1, aber Sie können es zum Beispiel auf 10 setzen .. aber nicht sicher, ob Sie controls.update() explizit aufrufen müssen; danach. Sie können auch einfach die Kamera weiter weg oder näher positionieren. Ich habe meine Antwort aktualisiert. –