Das Camera Objekt stellt eine virtuelle Kamera dar, welche auf das 3D-Modell gerichtet ist. Wie bei einer echten Kamera können Position, Blickrichtung, Abstand zum Objekt, Neigung und Zoom eingestellt werden. Das Camera Objekt wird beim Erzeugen des JsGraphX3D Objektes angelegt. Die Einstellungen werden mit den JsgCamera Funktionen vorgenommen und können über die JsgCamera Properties abgefragt werden.
}
Das Camera Objekt wird beim Erzeugen des JsGraphX3D Objektes angelegt. Camera ist ein Property der JsGraphX3D Klasse. Verwende die JsgCamera Funktionen, um die Kamera-Einstellungen zu ändern.
Das Verändern von JsgCamera Properties mit den JsgCamera Funktionen bewirkt eine Neuberechnung der Viewing-Transformation CamTrans.
Zoom | Vergrössert oder verkleinert die Darstellung der Szenerie: < 1 → verkleinern, > 1 → vergrössern der Scene |
ScreenSize | Grösse des 2D-Fensters, in dem das 3D-Bild abgebildet wird |
SceneSize | Grösse der abzubildenden Szenerie |
ObjectZExtend | Verschiebt die Bezugsebene für SceneSize näher zur Kamera |
CamViewCenter | Zentrum, auf das die Kamera ausgerichtet ist |
CamPos | Position der Kamera im 3D-Modell |
CamUp | Richtung der vertikalen Achse der Kamera |
ViewDir | Blickrichtung der Kamera |
ViewCenterDist | Abstand der Kamera vom CamViewCenter |
ScreenDist | Abstand der Bildebene der Kamera von der Kamera-Position CamPos |
CamTrans | Transformations-Matrix für die Viewing-Transformation |
Einige Camera-Funktionen sollten nicht direkt gerufen werden, sondern über die unten aufgeführten JsGraphX3D-Funktionen.
JsgCamera.Trans() | Viewing-Transformation eines JsgVect3 |
JsgCamera.TransTo() | Viewing-Transformation eines JsgVect3 |
JsgCamera.TransPoly() | Viewing-Transformation eines JsgPolygon |
JsgCamera.TransList() | Viewing-Transformation einer JsgVect3List |
JsgCamera.TransGrid() | Viewing-Transformation eines JsgVect3Grid |
JsgCamera.TransToPoly2D() | Viewing-Transformation einer JsgVect3List und Reduktion der 3D-Vektoren zu einem 2D JsgPolygon |
ResetCamera() | Setzt alle Camera Properties auf die Initialwerte zurück → JsgCamera Klasse |
SetCameraScale() | Berechnet einen Standard-Zoomwert aus Scenen- und Window-Grösse |
SetCamera() | Setzt frei wählbare JsgCamera Properties |
SetCameraPos() | Setzt Kamera-Position und Blickrichtung über die drei Vektoren Pos, Center, Up |
SetCameraView() | Setzt Kamera-Position und Blickrichtung über CamViewCenter, zwei Winkel und Abstand zum CamViewCenter, sowie dem Up Vektor |
SetCameraZoom() | Setzt den Zoom der Kamera |
SetCameraClipping() | Aktiviert/Deaktiviert das Kamera-Clipping |
SaveCamera() | Sichert die JsgCamera Properties in einem Objekt. |
Siehe auch SetWindowToCameraScreen().
JsgCamera.Zoom: Number(>0); ReadOnly; Init = 1; → SetCameraZoom(), SetCameraScale()
Wert grösser als 1 vergrössert das Bild, Wert kleiner als 1 verkleinert das Bild. Die Grösse des Bildausschnitts bei Zoom = 1 wird weiter bestimmt durch ScreenSize und SceneSize, wobei auch ObjectZExtend einen Einfluss hat.
JsgCamera.ScreenSize: Number(>0); ReadOnly; Init = 1; → SetCameraScale()
Grösse des 2D-Fensters, in dem das 3D-Bild abgebildet wird. Sinnvollerweise setzt man hier die Breite oder Höhe des mit SetWindow() definierten Bereiches ein oder Ruft vor dem Zeichnen von Grafik die Funktion SetWindowToCameraScreen() auf, um das Window entsprechend der SceneSize einzustellen.
JsgCamera.SceneSize: Number(>0); ReadOnly; Init = 2; → SetCameraScale()
Breite oder Höhe der 3D-Objekte, welche innerhalb der ScreenSize abgebildet werden sollen. Die SceneSize bezieht sich auf eine Ebene, die durch das CamViewCenter geht. Mit ObjectZExtend kann diese Ebene näher zur Kamera hin verschoben werden, damit auch näher gelegene Objekte noch vollständig im Fenster dargestellt werden.
JsgCamera.ObjectZExtend: Number(>=0); ReadOnly; Init = 0; → SetCameraScale()
Verschiebt die Bezugsebene für die SceneSize näher zur Kamera. Für die Beschreibung dieses Properties siehe SceneSize.
JsgCamera.CamViewCenter: JsgVect3; ReadOnly; Init = JsgVect3.Null(); → JsgCamera Funktionen
Zentrum, auf das die Kamera ausgerichtet ist. Das Zentrum ergibt sich entweder aus einer direkten Vorgabe mit den Funktionen SetCameraPos() und SetCameraView() oder aus CamPos, ViewDir und ViewCenterDist.
JsgCamera.CamPos: JsgVect3; ReadOnly; Init = JsgVect3.New(100,0,0); → JsgCamera Funktionen
Gibt die Position der Kamera in 3D-Modell an.
JsgCamera.CamUp: JsgVect3; ReadOnly; Init = JsgVect3.New(0,0,1)
Gibt an, in welcher Richtung die vertikale Achse der Kamera zeigt. Dieser Vektor ist immer normiert (Länge = 1).
JsgCamera.ViewDir: JsgVect3; ReadOnly; Init = JsgVect3.New(-1,0,0); → SetCamera()
Gibt die Blickrichtung der Kamera an. Dieser Vektor ist immer normiert (Länge = 1).
JsgCamera.ViewCenterDist: Number; ReadOnly; Init = 100; → SetCameraView()
Gibt den Abstand der Kamera vom CamViewCenter an.
JsgCamera.ScreenDist: Number; ReadOnly; Init = 50; → JsgCamera Funktionen
Abstand der Bildebene der Kamera von der Kamera-Position CamPos. Dieser Wert wird aus den Properties SceneSize, ScreenSize und ViewCenterDist berechnet und für die Viewing-Transformation benötigt.
JsgCamera.CamTrans: JsgMat3; ReadOnly; Init = [[1,0,0][0,1,0][0,0,1]]; → JsgCamera Funktionen
Transformations-Matrix, welche von Objekt- in Kamera-Koordinaten transformiert. Diese JsgMat3 wird aus diversen JsgCamera Properties berechnet.
JsgCamera.Trans( Vec )
Führt eine Abbildungs-Transformation des Vektors Vec durch und gibt das Resultat als neuen Vektor vom Typ JsgVect3 zurück.
JsgCamera.TransTo( x, y, z, toVect )
Führt eine Abbildungs-Transformation des Vektors (x,y,z) durch und gibt das Resultat in toVect zurück, falls definiert. Wenn toVect nicht definiert ist wird das Resultat im internen Vektor this.WorkPoint gespeichert.
JsgCamera.TransPoly( poly, transPolys )
Führt eine Abbildungs-Transformation des Polygons poly durch. Wenn transPolys definiert ist, wird das resultierende Polygon darin mit JsgPolygon.AddPoint() oder JsgPolygonList.AddPoint() abgespeichert. transPolys muss eventuell vorher mit JsgPolygon.Reset() gelöscht werden. Wird transPolys nicht definiert, wird das transformierte Polygon im internen Polygin this.ResultPoly gespeichert.
JsgCamera.TransList( VecList )
Führt eine Abbildungs-Transformation der Vektoren in der Liste VecList durch und gibt das Resultat als neue Vektor-Liste vom Typ JsgVect3List zurück.
JsgCamera.TransGrid( VecGrid )
Führt eine Abbildungs-Transformation der Vektoren im Gitter VecGrid durch und gibt das Resultat als neues Vektor-Gitter vom Typ JsgVect3Grid zurück.
JsgCamera.TransToPoly2D( VecList, Poly )
Führt eine Abbildungs-Transformation auf die Vektor-Liste VecList durch (siehe JsgCamera.TransList()). Die resultierenden 3D-Vektoren werden auf 2 Dimensionen reduziert, indem die Z-Komponente ignoriert wird. Wenn Poly definiert und vom Typ JsgPolygon ist, werden die resultierenden 2D-Vektoren in Poly gespeichert. Ist Poly nicht definiert, wird ein neues JsgPolygon erzeugt, in welchem die 2D-Vektoren gespeichert werden. Diese neue Polygon, oder Poly falls definiert, wird zurückgegeben.
JsGraphX3D.ResetCamera( )
Setzt die Kamera-Properties auf ihre Standard-Werte zurück (siehe JsgCamera Klasse).
JsGraphX3D.SetCamera( Params )
Wenn Params nicht definiert wird, werden die JsgCamera Properties auf ihre Default-Werte gesetzt, wie bei ResetCamera()
}
Die Kamera-Position kann entweder mit dem Property CamPos oder durch Angabe der Properties CamHAng, CamVAng und CamDist angegeben werden.
Parameter, welche in Params nicht definiert sind, verändern die zugehörigen Kamera-Properties nicht.
JsGraphX3D.SetCameraScale( SceneSize, ScreenSize, ObjectZExtend, Zoom )
Wenn ein Argument undefiniert ist oder null übergeben wird, so wird das entsprechende JsgCamera-Property nicht geändert. So können mit dieser Funktion gezielt einzelne Properties der Kamera verändert werden. Siehe auch SetCamera().
JsGraphX3D.SetCameraPos( Pos, ViewCenter, Up )
Setzt Kamera-Position und Blickrichtung über die drei Vektoren Pos, ViewCenter, Up.
Wenn ein Argument undefiniert ist oder null übergeben wird, so wird das entsprechende JsgCamera-Property nicht geändert. Somit können mit dieser Funktion gezielt einzelne Properties der Kamera verändert werden. Siehe auch SetCamera().
JsGraphX3D.SetCameraView( ViewCenter, HAngle, VAngle, ViewDist, Up )
Setzt Kamera-Position und Blickrichtung über ViewCenter, zwei Winkel und Abstand zum ViewCenter, sowie dem Up Vektor.
Die Kamera-Position wird wiefolgt berechnet. Es wird ein Vektor aus den beiden Winkeln konstruiert, der die Länge ViewDist erhält. Dieser Vektor wird zum ViewCenter addiert und ergibt so die Kamera-Position CamPos.
Wenn ein Argument undefiniert ist oder null übergeben wird, so wird das entsprechende JsgCamera-Property nicht geändert. Somit können mit dieser Funktion gezielt einzelne Properties der Kamera verändert werden. Siehe auch Setcamera().
JsGraphX3D.SetCameraZoom( Zoom )
Setzt das Kamera-Proprty Zoom. Der Bildausschnitt kann hiermit vergrössert oder verkleinert werden, ohne die Kameraposition zu verändern.
JsGraphX3D.SetCameraClipping( clipPlaneDist )
Wenn 3D Grafik hinter die Bildebene der Kamera gerät, wird diese in den Bereich vor der Ebene geworfen, was zu falschen Darstellungen führt. Dies kann verhindert werden, indem alle Grafik an der Bildebene der Kamera oder einer Ebene davor geclippt wird.
Mit clipPlaneDist wird der Abstand der Clippeneben vom Kamera-Zentrum in Blickrichtung angegeben.
JsGraphX3D.SaveCamera( Params )
Sichert alle JsgCamera Properties in ein Objekt. Wenn Params ein Objekt ist, werden die Properties in diesem Objekt abgespeichert. Wenn Params kein Objekt ist, wird intern ein neues Objekt zum Speichern der Properties erzeugt. Das Objekt mit den gespeicherten Properties wird als Returnwert zurückgegeben.
Mit der Funktion SetCamera() können die gesicherten Properties in die Camera zurückgeschrieben werden.