Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:grafik3d:kamera:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
api:documentation:grafik3d:kamera:start [2025/01/17 10:59] martinapi:documentation:grafik3d:kamera:start [2025/01/17 21:12] (aktuell) – [Animation] martin
Zeile 9: Zeile 9:
 </WRAP> </WRAP>
  
 +
 +===== Nutzung/Veränderung der Default-Kamera =====
 +<WRAP center round info 80%>
 +Die default-Kamera erhält man am einfachsten durch
 +<code java>
 +var camera = (PerspectiveCamera3d)t.getWorld3d().getCamera();
 +</code>
 +Sie bietet Methoden zum Setzen der Position (''setPosition''), Verschieben (''move'') und Drehen (''rotateX'', ...) wie jedes andere ''Object3d'' auch. Darüber hinaus lässt sich mit den Methoden
 +<code java>
 +void lookAt(double xTarget, double yTarget, double zTarget, Vector3 up, boolean keepTarget)
 +void lookAt(Object3d target, Vector3 up, boolean keepTarget)
 +</code>
 +die Blickrichtung ändern. Dabei ist ''target'' das Objekt, zu dem die Kamera hinsehen soll (alternativ Angabe einer Position durch Koordinaten). Die Kamera wird zusätzlich um die Achse der Blickrichtung so gedreht, dass der ''up''-Vektor nach oben zeigt. Der Parameter ''keepTarget'' legt fest, ob die Blickrichtung der Kamera nach eventuell nachfolgenden Positionsänderungen der Kamera oder des Target jeweils automatisch so korrigiert werden soll, dass sie weiterhin zum Target blickt.
 +</WRAP>
  
  
Zeile 38: Zeile 52:
  
 </HTML> </HTML>
 +
 +
 +===== PerspectiveCamera3d =====
 +<WRAP center round info 100%>
 +Der Konstruktor von ''PerspectiveCamera3d'' erwartet folgende Parameter:
 +<code java>
 +PerspectiveCamera3d(double fov, double aspect, double near, double far)
 +</code>
 +{{ :api:documentation:grafik3d:kamera:perspective_camera.svg?400 |}}
 +Dabei ist 
 +  * **fov** (//field of view//) das Sichtfeld in Grad. Das menschliche Auge hat ein Sichtfeld von fast 180°. Da der Computermonitor aber meist nur einen begrenzten Bereich dieses Sichtfeldes abdeckt, wird ein Sichtfeld von 45° bis 75° als "normal" empfunden.
 +  * **aspect** das Breite:Höhe-Verhältnis des Bildschirms, 
 +  * **near** der Abstand der near-Ebene zur Kameraposition und
 +  * **far** der Abstand der far-Ebene zur Kameraposition
 +
 +**Vorsicht:** \\ 
 +''near'' und ''far'' müssen beide größer sein als 0.
 +
 +Der Renderer zeichnet nur Objekte, die in den Bereich hineinragen, der durch die near-Ebene und die far-Ebene begrenzt wird (//frustum//). 
 +
 +Mit den Methoden
 +<code java>
 +void lookAt(double xTarget, double yTarget, double zTarget, Vector3 up, boolean keepTarget)
 +void lookAt(Object3d target, Vector3 up, boolean keepTarget)
 +</code>
 +lässt sich die Blickrichtung und die up-Richtung festlegen, mehr dazu im obigen Kapitel (default-Kamera).
 +
 +Die default-Kamera hat die Parameterwerte
 +  * fov = 75
 +  * near = 0.1
 +  * far = 1000
 +  * Position: (2, 2, 2)
 +  * Blickrichtung: Zum Ursprung
 +  * Up-Richtung: (0, 1, 0)
 +
 +</WRAP>
 +
 +
 +<HTML>
 +<div class="java-online" style="height: 500px; width: 100%" data-java-online="{'withBottomPanel': true, 'id': '3d-camera2', 'enableFileAccess': true}">
 +
 +<script type="text/plain" title="Test1.java">
 +Box3d box = new Box3d(0.5, 0.5, 1);
 +box.move(1, 1, 1);
 +
 +Icosahedron3d iso = new Icosahedron3d(0.2, 1);
 +iso.moveTo(-1, 0, -1);
 +iso.getMaterial().setColor(new Color(89, 89, 196));
 +
 +PerspectiveCamera3d camera = new PerspectiveCamera3d(75, 2.0, 0.1, 1000);
 +camera.moveTo(-1, -1, -1);
 +camera.lookAt(0, 0, 0, new Vector3(0, 0, 1));
 +World3d.getWorld3d().setCamera(camera); 
 +
 +</script>
 +
 +</div>
 +
 +</HTML>
 +
 +
 +===== OrthographicCamera3d =====
 +<WRAP center round info 80%>
 +Siehe die entsprechende [[https://threejs.org/docs/#api/en/cameras/OrthographicCamera|Dokumentation von three.js]]
 +</WRAP>
 +
 +
 +
api/documentation/grafik3d/kamera/start.1737111585.txt.gz · Zuletzt geändert: 2025/01/17 10:59 von martin