LitDev 1.2.16.0 DE Extension API

LD3DView LDArray LDBits LDBlueTooth LDCall
LDChart LDClient LDClipboard LDColours LDCommPort
LDController LDControls LDCursors LDDataBase LDDateTime
LDDebug LDDialogs LDDictionary LDEffect LDEmail
LDEncryption LDEvents LDFastArray LDFastShapes LDFigures
LDFile LDFocus LDftp LDGraph LDGraphicsWindow
LDHID LDImage LDInline LDIOWarrior LDList
LDLogic LDMath LDMathX LDMatrix LDMusic
LDNetwork LDPhysics LDProcess LDQueue LDRegex
LDResources LDScrollBars LDSearch LDServer LDSettings
LDShapes LDShell LDSort LDSound LDSpeech
LDStatistics LDStopwatch LDText LDTextWindow LDTimer
LDTranslate LDUnits LDUtilities LDVector LDWaveForm
LDWebCam LDWindows LDxml LDZip

LD3DView
3D Visualisierung im GraphicsWindow.

Standardkoordinaten (Rechtssystem) haben folgende Richtungen und keinen Bezug zu GraphicsWindow Koordinaten:
x - Links 0 Rechts +
y - Unten 0 Oben +
z - Hinten 0 Vorne +

Weitere Details zu untergeordneten Methoden s. http://msdn.microsoft.com/library/ms747437.aspx (Übersicht 3D-Grafiken).
Einige Add...-Methoden verwenden HelixToolkit (rekompiliert und angepasst für SB, http://www.helix-toolkit.org).
S.a. 'LDVector' für algebraische Vektormethoden.

example 3D-samples\*.sb
http://blogs.msdn.microsoft.com/smallbasic/2016/06/19/3d-visualisation/
http://msdn.microsoft.com/library/system.windows.media.media3d.aspx
http://msdn.microsoft.com/library/system.windows.controls.viewport3d.aspx
http://csharphelper.com/blog/2014/10/understand-three-dimensional-drawing-with-wpf-xaml-and-c
http://paulbourke.net


AddAmbientLight AddArrow AddCone
AddCube AddDirectionalLight AddGeometry
AddIcosahedron AddImage AddPipe
AddPointLight AddPyramid AddRectangle
AddRevolute AddSphere AddSpotLight
AddTube AddView AnimateRotation
AnimateRotation2 AnimateTranslation AutoControl
AutoControl2 BoundingBox CameraProperties
CloneObject Freeze GetCameraDirection
GetCameraPosition GetCameraUpDirection GetPosition
HitTest LastRotationCompleted LastTranslationCompleted
LoadModel ModifyObject MoveCamera
QueuedRotationCompleted QueuedTranslationCompleted ResetCamera
ResetMaterial ReverseNormals RotateGeometry
RotateGeometry2 RotateGeometry3 RotationCompleted
ScaleGeometry SetBillBoard SetCentre
SpecularExponent SwapUpDirection TranslateGeometry
TranslationCompleted

AddAmbientLight(shapeName,colour)
Fügt eine umgebende Lichtquelle hinzu, für gleichmäßige Beleuchtung aller Objekte. Oft mit Farbe geringer Helligkeit zB. (Light)Gray, "#404040". Ungeeignet für spiegelnde Materialien "S" (Intern: Light#).
shapeName Der Name der 3DView Shape.
colour Die Lichtfarbe (zB. "#808040").
returns Der 3DView Lichtname.
example Reflektierter Farbwert = Material Farbwert * Licht Farbwert / 255

AddArrow(shapeName,length,diameter,arrowLength,arrowDiameter,divisions,colour,materialType)
Fügt ein Pfeil Geometrieobjekt hinzu, aufwärts gerichtet (+y, stehend auf x,z Ebene) beginnend an (0,0,0) (Intern: Geometry#).
shapeName Der Name der 3DView Shape.
length Die Gesamtlänge des Pfeils.
diameter Der Schaftdurchmesser des Pfeils.
arrowLength Die Länge der Pfeilspitze.
arrowDiameter Der untere Durchmesser der Pfeilspitze.
divisions Die Anzahl radialer Teilbereiche für den Pfeil (>3, Standard: 18, nicht "").
colour Die Farbe oder ein Gradientpinsel (Brush) für das Objekt.
materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst durch Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

returns Der Name des Geometrieobjekts in der 3DView.

AddCone(shapeName,baseRadius,topRadius,height,divisions,colour,materialType)
Fügt ein solides Kegel(stumpf) Geometrieobjekt hinzu, aufrecht (+y, stehend auf x,z Ebene) mit der Basis zentriert in (0,0,0) (Intern: Geometry#).
Info: Ein Zylinder entspricht einem Konus mit baseRadius = topRadius.

shapeName Der Name der 3DView Shape.
baseRadius Der Radius der Grundfläche.
topRadius Der obere Radius (Standard: 0, Kegel),
> 0 Kegelstumpf
= baseRadius Zylinder

height Die Höhe des Konus.
divisions Die Anzahl radialer Teilbereiche für den Konus (Standard: 18).
colour Die Farbe oder ein Gradientpinsel (Brush) für das Objekt.
materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst durch Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

returns Der Name des Geometrieobjekts in der 3DView.

AddCube(shapeName,sideLength,colour,materialType)
Fügt ein Würfel Geometrieobjekt hinzu, zentriert in (0,0,0) (Intern: Geometry#).
shapeName Der Name der 3DView Shape.
sideLength Die Kantenlänge für den Würfel.
colour Die Farbe oder ein Gradientpinsel (Brush) für das Objekt.
materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst durch Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

returns Der Name des Geometrieobjekts in der 3DView.

AddDirectionalLight(shapeName,colour,xDir,yDir,zDir)
Fügt eine gerichtete Lichtquelle hinzu, zur Beleuchtung aus einer Richtung zB. Sonnenlicht (Intern: Light#).
shapeName Der Name der 3DView Shape.
colour Die Lichtfarbe (zB. "#FFFF80", "#C0C0C0").
xDir Der x-Richtungsvektor [-1,1] entlang dem der Lichteffekt wirkt (Standard: 0).
yDir Der y-Richtungsvektor [-1,1] entlang dem der Lichteffekt wirkt (Standard: 0).
zDir Der z-Richtungsvektor [-1,1] entlang dem der Lichteffekt wirkt (Standard: -1).
returns Der 3DView Lichtname.

AddGeometry(shapeName,points,indices,normals,colour,materialType)
Fügt ein math. Geometrieobjekt hinzu. Position und Dimension entsprechend 'points' Definition. (Intern: Geometry#).
s. http://sol.gfxile.net/sphere/index.html (Sphere Mesh Creation).

shapeName Der Name der 3DView Shape.
points Eine Leerzeichen- oder Doppelpunkt- begrenzte Liste aller Eckpunkt-Koordinaten (zB. "x0:y0:z0 x1:y1:z1 ..").
indices Eine Leerzeichen- oder Doppelpunkt- begrenzte Liste von Eckpunkt-Indizes für jedes Dreieck (ab 0, im Gegenuhrzeigersinn je Außenfläche).
normals Optionale Leerzeichen- oder Doppelpunkt- begrenzte Liste von Auswärtsnormalen für jedes Dreieck (indices) oder "".
colour Die Farbe oder ein Gradientpinsel (Brush) für das Objekt.
materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst vom Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

returns Der Name des neuen Geometrieobjekts in der 3DView bei Erfolg, sonst "" und Fehlermeldung.
example 'Tetraeder
'Kante 2, zentriert im Ursprung
pts= "1:0:-.707 -1:0:-.707 0:1:.707 0:-1:.707"
'Kante 1, Basis zentriert im Ursprung
pts= "0:.82:0 0:0:.58 .5:0:-.29 -.5:0:-.29"
'schräg liegend
pts= "1:1:1 1:-1:-1 -1:1:-1 -1:-1:1"
idcs= "0:1:2 0:2:3 0:3:1 1:3:2"
'Pyramide Höhe h, Basislänge 2*s
pts= "0:h:0 -s:0:-s -s:0:s s:0:s s:0:-s"
idcs= "0:1:2 0:2:3 0:3:4 0:4:1 1:3:2 1:4:3"


AddIcosahedron(shapeName,radius,colour,materialType)
Fügt ein regelmäßiges Ikosaeder (20Flächner) Geometrieobjekt hinzu, zentriert in (0,0,0) (Intern: Geometry#).
shapeName Der Name der 3DView Shape.
radius Der Radius des Ikosaeder.
colour Die Farbe oder ein Gradientpinsel (Brush) für das Objekt.
materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst durch Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

returns Der Name des Geometrieobjekts in der 3DView.

AddImage(shapeName,geometryName,textures,imageName,materialType)
Fügt ein Bild zu einem Geometrieobjekt hinzu (beidseitige Ansicht von Vorder- und Rückseite). S.a. 'ResetMaterial'.
Eine geometrische 'Ansicht' kann verschiedene Segmentbilder in einem Bild beinhalten.

shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts, zB. model[1].
textures Eine Leerzeichen- oder Doppelpunkt- begrenzte Liste der 2D Texturkoordinaten für jeden 3D-Eckpunkt (points).
Jeder Knoten hat 2 Werte (zwischen 0 und 1) welche die x,y Abbildung des Bildes zum Knoten bestimmen (zB. "0:1 1:1 1:0 0:0" für Gesamtbild auf 4eck).
Kann "" (Standard) sein, wenn die Textur zuvor bereits gesetzt wurde.

imageName Das im Geometrieobjekt zu ladende Bild oder ein Gradientpinsel (Brush).
Rückgabewert von ImageList.LoadImage, lokale oder Netzwerk- Bilddatei bzw. Brushname.

materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst vom Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

example http://paulbourke.net/texture_colour/
http://archivetextures.net

'Vollbild auf 4eck (Breite w, Höhe h, y Pos)
pt= "-w:y:h w:y:h w:y:-h -w:y:-h"
pt2= "-w:y:h w:y:h w:y:-h -w:y:h w:y:-h -w:y:-h"
pt= LDText.Replace(pt, "w",w/2)
pt= LDText.Replace(pt, "h",h/2)
pt= LDText.Replace(pt, "y",y)
id= "0:1:2 3:4:5"
id2= "0:1:2 0:2:3"
tx= "0:1 1:1 1:0 0:0"
tx2= "0:1 1:1 1:0 0:1 1:0 0:0"
rec= AddGeometry(view, pt,id,"", col,"D")
LD3DView.AddImage(view, rec,tx, img,"D")

0:1 1:1 1:0 0:0 'Strd (tx)
1:1 1:0 0:0 0:1 '90° reRo
1:0 0:0 0:1 1:1 '180° Ro
0:0 0:1 1:1 1:0 '270° reRo = 90° liRo
1:1 0:1 0:0 1:0 'flipY
0:1 0:0 1:0 1:1 'flipY 90° reRo
0:0 1:0 1:1 0:1 'flipY 180° Ro = flipX
1:0 1:1 0:1 0:0 'flipY 270° reRo = flipY 90° liRo


AddPipe(shapeName,length,innerDiameter,outerDiameter,divisions,colour,materialType)
Fügt ein Hohlzylinder/Rohr Geometrieobjekt hinzu, aufrecht (+y, stehend auf x,z Ebene) mit der Basis zentriert in (0,0,0) (Intern: Geometry#).
shapeName Der Name der 3DView Shape.
length Die Länge des Rohres.
innerDiameter Der innere Rohrdurchmesser.
outerDiameter Der äußere Rohrdurchmesser.
divisions Die Anzahl radialer Teilbereiche für das Rohr (Standard: 18).
colour Die Farbe oder ein Gradientpinsel (Brush) für das Objekt.
materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst durch Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

returns Der Name des Geometrieobjekts in der 3DView.

AddPointLight(shapeName,colour,xPos,yPos,zPos,range)
Fügt eine ungerichtete Punktlichtquelle hinzu, begrenzte Reichweite (Intern: Light#).
shapeName Der Name der 3DView Shape.
colour Die Lichtfarbe.
xPos Die x-Position des Lichtes.
yPos Die y-Position des Lichtes.
zPos Die z-Position des Lichtes.
range Der Lichtwirkungsbereich (Entfernung bis zu welcher der Lichteffekt wirkt).
returns Der 3DView Lichtname.

AddPyramid(shapeName,sideLength,height,colour,materialType)
Fügt ein Pyramide Geometrieobjekt hinzu, aufrecht (+y, stehend auf x,z Ebene) mit der Basis zentriert in (0,0,0).
Ohne Basisfläche, mit umgekehrten Normalen (Intern: Geometry#).

shapeName Der Name der 3DView Shape.
sideLength Die Kantenlänge an der Basis.
height Die Höhe.
colour Die Farbe oder ein Gradientpinsel (Brush) für das Objekt.
materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst durch Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

returns Der Name des Geometrieobjekts in der 3DView.

AddRectangle(shapeName,width,height,colour,materialType)
Fügt ein Rechteck (einseitige Ebene) Geometrieobjekt hinzu, zentriert in (0,0,0), liegt in x,y Ebene mit Höhe z=0, Normale in +z Richtung (Intern: Geometry#).
shapeName Der Name der 3DView Shape.
width Die Breite des Rechtecks (entlang x).
height Die Höhe des Rechtecks (entlang y).
colour Die Farbe oder ein Gradientpinsel (Brush) für das Objekt (nur Seite der Auswärtsnormalen, Gegenseite wirkt transparent).
materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst durch Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

returns Der Name des Geometrieobjekts in der 3DView.

AddRevolute(shapeName,path,divisions,colour,materialType)
Fügt ein Revolute Geometrieobjekt hinzu. Dies ist eine (offene/geschlossene) Oberfläche beginnend an (0,0,0) und aufwärts gerichtet.
Die Form ist definiert durch eine Punktemenge (Y,Z), wobei Y die vertikale Distanz entlang der Oberfläche ab 0 beschreibt, Z ist der Mantelradius.

shapeName Der Name der 3DView Shape.
path Eine Leerzeichen- oder Doppelpunkt- begrenzte Liste von 2D Punktkoordinaten zur Beschreibung der Revolutenform, zB. "y1:r1 y2:r2 ..." (y Höhe, r Umkreisradius).
divisions Die Anzahl radialer Teilbereiche (>1, zB. 2 Fläche, Standard: 10, beeinflusst Anzahl der Dreiecke und Glattheit).
colour Die Farbe oder ein Gradientpinsel (Brush) für das Objekt.
materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst durch Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

returns Der Name des Geometrieobjekts in der 3DView.
example '3-stöckiger Baum
path = "0:0 0:0.5 1:0.5 1:3 3:1 3:2.5 5:1 5:2 8:0"
'Regelm. n-Prisma/-(Doppel)Pyramide
path= "0:0 0:r h:r h:0"
path= "0:0 0:r h:0" 'Pyram
path= "0:0 h:r H:0" 'DoPyr
AddRevolute(view, path,n+1, "Red","D")


AddSphere(shapeName,radius,divisions,colour,materialType)
Fügt ein Kugel Geometrieobjekt zentriert in (0,0,0) hinzu (Intern: Geometry#).
shapeName Der Name der 3DView Shape.
radius Der Kugelradius.
divisions Die Anzahl der Raumbereiche (>1, Standard: 10, beeinflusst Anzahl der Dreiecke und Glattheit).
colour Die Farbe oder ein Gradientpinsel (Brush) für das Objekt.
materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst durch Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

returns Der Name des Geometrieobjekts in der 3DView.

AddSpotLight(shapeName,colour,xPos,yPos,zPos,xDir,yDir,zDir,angle,range)
Fügt eine gerichtete Punktlichtquelle hinzu, begrenzter Lichtkegel und Reichweite (Intern: Light#).
shapeName Der Name der 3DView Shape.
colour Die Lichtfarbe.
xPos Die x-Position des Lichtes.
yPos Die y-Position des Lichtes.
zPos Die z-Position des Lichtes.
xDir Der x-Richtungsvektor [-1,1] der Lichtprojektion (Standard: 0).
yDir Der y-Richtungsvektor [-1,1] der Lichtprojektion (Standard: 0).
zDir Der z-Richtungsvektor [-1,1] der Lichtprojektion (Standard: -1).
angle Der Lichtkegel des Strahls [Grad].
range Der Lichtwirkungsbereich (Entfernung bis zu welcher der Lichteffekt wirkt).
returns Der 3DView Lichtname.

AddTube(shapeName,path,diameter,divisions,colour,materialType)
Fügt ein rohr-/schlauchförmiges Geometrieobjekt hinzu (Intern: Geometry#).
shapeName Der Name der 3DView Shape.
path Eine Leerzeichen- oder Doppelpunkt- begrenzte Liste von 3D Punktkoordinaten, zB. "x1:y1:z1 x2:y2:z2 ...".
diameter Der Rohr-/Schlauchdurchmesser.
divisions Die Anzahl radialer Rohrbereiche (>1, Standard: 10, beeinflusst Anzahl der Dreiecke und Glattheit).
colour Die Farbe oder ein Gradientpinsel (Brush) für das Objekt.
materialType Der Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst durch Licht
"S" Spiegelnd, zusätzliche Glanzpunkte

returns Der Name des Geometrieobjekts in der 3DView.

AddView(width,height,performance)
Fügt eine 3DView Shape im GraphicsWindow hinzu, worin 3D Geometrieobjekte eingebunden und animiert werden können (Intern: View3D#).
width Die Breite der 3DView Shape.
height Die Höhe der 3DView Shape.
performance Vorzug von Schnelligkeit über Qualität? "True" oder "False" (Standard, 3DView fixiert auf definierte Breite/Höhe).
"True" entfernt visuelles Clipping (-> Größenänderung mit GW), 'HitTest' (nicht verwendet) und Antialias (nicht benötigt).
"False" zum Ablegen+Laden einer 3D-Modelldatei (s. LDControls.AllowDrop, -.FileDropped).

returns Der Name der 3DView Shape.

AnimateRotation(shapeName,geometryName,xDir,yDir,zDir,startAngle,endAngle,duration,repeats)
Setzt ein Geometrieobjekt auf animierte 3D-Rotation um einen Achsenvektor (asynchron, s. 'RotationCompleted' Ereignis).
Verwendet die zweite Rotation "R2". Die erste ist weiterhin verfügbar für eine andere Achsrotation.

shapeName Der Name der 3DView Shape.
geometryName Der Name des zu drehenden Geometrieobjekts, zB. model[1].
xDir Der x-Richtungsvektor [-1,1] der Drehachse.
yDir Der y-Richtungsvektor [-1,1] der Drehachse.
zDir Der z-Richtungsvektor [-1,1] der Drehachse.
startAngle Der Startwinkel [Grad] vom Grundzustand (Standard: 0).
endAngle Der Endwinkel [Grad] vom Grundzustand, zB. 360 (Standard: 0).
duration Die Dauer für einen Rotationszyklus [sec].
repeats Die Anzahl der Rotationszyklen (-1 für stetig).

AnimateRotation2(shapeName,geometryName,xDir,yDir,zDir,startAngle,endAngle,duration,repeats)
Setzt ein Geometrieobjekt auf animierte 3D-Rotation um einen Achsenvektor (asynchron, s. 'RotationCompleted' Ereignis).
Verwendet die dritte Rotation "R3". Die erste ist weiterhin verfügbar für eine andere Achsrotation.

shapeName Der Name der 3DView Shape.
geometryName Der Name des zu drehenden Geometrieobjekts, zB. model[1].
xDir Der x-Richtungsvektor [-1,1] der Drehachse.
yDir Der y-Richtungsvektor [-1,1] der Drehachse.
zDir Der z-Richtungsvektor [-1,1] der Drehachse.
startAngle Der Startwinkel [Grad] vom Grundzustand (Standard: 0).
endAngle Der Endwinkel [Grad] vom Grundzustand (Standard: 0), zB. 360.
duration Die Dauer für einen Rotationszyklus [sec].
repeats Die Anzahl der Rotationszyklen (-1 für stetig).

AnimateTranslation(shapeName,geometryName,x,y,z,duration)
Setzt ein Geometrieobjekt auf animierte geradlinige 3D-Bewegung (asynchron, s. 'TranslationCompleted' Ereignis).
shapeName Der Name der 3DView Shape.
geometryName Der Name des zu bewegenden Geometrieobjekts, zB. model[1].
x Die x-Koordinate des Zielpunktes.
y Die y-Koordinate des Zielpunktes.
z Die z-Koordinate des Zielpunktes.
duration Die Dauer der Animation [sec].

AutoControl(pitchRoll,shift,keyDistance,speed)
Setzt automatische Steuerung für die Kamera.
Dieser Modus ist zur allg. Kamerasteuerung, hauptsächlich zum Bewegen (Überflug) in einer 3D Szene.
Vor-|Rückwärtsbewegung per Mausrad (+Umschalt/Strg Taste für 5x schneller/langsamer).
L|R Gieren (Yaw) und Auf|Ab Neigen (Pitch) Kamerabewegung mit L-Maus.
L|R Gieren mit A,D oder Links,Rechts Taste.
Vor-|Rückwärtsbewegung mit W,S oder Auf,Ab Taste.
Rollen (Drehen) Kamerabewegung mit R-Maus.
L-Doppelklick auf Objekt zur Zentrierung/Auswahl (Zentrum für Rotation R1).
R-Doppelklick zum Zurücksetzen der Aufwärts-Richtung zu y (yUp=1).
L|R Gieren (Yaw) und Auf|Ab Neigen (Pitch) Szenenbewegung mit Umschalt+LMaus nach Objektwahl (worum die Szene dedreht wird).
X,Y,Z Taste setzt diese Ansichts-/Aufwärts-Richtung (Blick nach 0,0,0); +Umschalt in die Gegenrichtung.

pitchRoll Auf|Ab Neigen und Rollen Bewegung erlauben? "True" oder "False" (Standard).
shift Umschalt/Strg Tasten zur Maussteuerung erlauben? "True" oder "False" (Standard).
keyDistance Kameraabstand und Tastensteuerung:
>0 Kameraabstand zum Ursprung bei X,Y,Z Taste
=0 blockt X,Y,Z Tasten (Standard, "")
<0 blockt auch A,D,W,S und Pfeiltasten

speed Vor/Zurück Schrittfaktor für W,Up,Rad↓ bzw. S,Down,Rad↑:
>0 zB. 0.833=1/1.2=5/6 für dStep=1
=0 blockt W,S, Up,Down, Mausrad (Standard)
<0 Gegenrichtung


AutoControl2(keyDistance,speed)
Setzt automatische Steuerung für die Kamera.
Dieser Modus ist eher für Drehen und Ansicht einer 3D Szene (Inspektion), als zum Bewegen durch die Szene.
Rein|Raus Zoom per Mausrad (+Umschalt/Strg Taste für 5x schneller/langsamer).
L|R Schwenk mit A,D oder Links,Rechts Taste. Auf|Ab Schwenk mit W,S oder Auf,Ab Taste.
L-Doppelklick auf Objekt zur Zentrierung/Auswahl (Zentrum für Rotation R1).
R-Doppelklick zum Zurücksetzen der Aufwärts-Richtung zu y (yUp=1).
L|R Gieren (Yaw) und Auf|Ab Neigen (Pitch) Szenenbewegung mit LMaus nach Objektwahl (worum die Szene dedreht wird).
Rollen (Drehen) Szenenbewegung mit R-Maus.
X,Y,Z Taste setzt diese Ansichts-/Aufwärts-Richtung (Blick Richtung gewählten Zentrums); +Umschalt in die Gegenrichtung.

keyDistance Kameraabstand und Tastensteuerung:
>0 Kameraabstand zum Ursprung bei X,Y,Z Taste
=0 blockt X,Y,Z Tasten (Standard, "")
<0 blockt auch A,D,W,S und Pfeiltasten

speed Vor/Zurück Schrittfaktor für A,D,W,S, Pfeiltasten, Mausrad:
>0 zB. 0.833=1/1.2=5/6 für dStep=1
=0 blockt A,D,W,S, Pfeiltasten, Mausrad (Standard)
<0 Gegenrichtung


BoundingBox(shapeName,geometryName)
Ermittelt Abmessungen und Position des umgebenden Hüllkörpers für ein einzelnes Geometrieobjekt (s. GetPosition).
Dies sind die aktuellen Werte/Koordinaten (nach allen Transformationen).

shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts.
returns Ein 6-elementiger Array (ab 1) folgender Dimensionen/Position bei Erfolg, sonst "FAILED":

dimX = box[1] (Breite)
dimY = box[2] (Höhe)
dimZ = box[3] (Tiefe)
minX = box[4]
minY = box[5]
minZ = box[6]


CameraProperties(shapeName,nearDistance,farDistance,angle)
Setzt den horizontalen Blickwinkel der Kamera, sowie Clipping Abstände (Entfernung zur nahen/fernen Ausschneideebene).
Die fundamentalen Eigenschaften für perspektivische Kamerasicht.

shapeName Der Name der 3DView Shape.
nearDistance Der nahe Clipping Abstand (kann nahes Objekt verbessern zB. Maueraufprall Erkennung).
Bei -angle ist 0.001 (Standard: 0.125, sonst >=0.001).

farDistance Der ferne Clipping Abstand (kann Leistung verbessern).
Bei -angle ist unendlich (Standard, sonst >= nearDistance).

angle Der Sichtkegel der Kamera [Grad]. Beeinflusst den perspektivischen Fluchtpunkt (Standard: 60).
Falls negativ, wird eine orthographische Kamera (Parallelprojektion mit Sichtbreite -angle) verwendet (statt perspektivische Zentralprojektion).


CloneObject(shapeName,geometryName)
Erstellt eine komplette Kopie eines einzelnen Geometrieobjekts mit all seinen Eigenschaften (Intern: Geometry#+1).
shapeName Der Name der 3DView Shape.
geometryName Der Name des zu kopierenden Geometrieobjekts, zB. model[1].
returns Der Name des neuen kopierten Geometrieobjekts in der 3DView bei Erfolg, sonst "".

Freeze(shapeName,geometryName)
Einfrieren eines Geometrieobjekts zur kleinen Leistungsverbesserung. Dieses kann danach in keiner Weise modifiziert werden.
shapeName Der Name der 3DView Shape.
geometryName Der Name des einzufrierenden Geometrieobjekts, zB. model[1].
returns Nichts (Fehlermeldung bei Mißerfolg)

GetCameraDirection(shapeName)
Ermittelt die Blickrichtung der Kamera (Richtungsvektor) als Array der Komponenten "1=xDir;2=yDir;3=zDir;".
xDir*xDir + yDir*yDir + zDir*zDir = 1 (Einheitsvektor)

shapeName Der Name der 3DView Shape.
returns Ein 3-elementiger Array mit dem Richtungsvektor der Kamerasicht (Standard: "1=0;2=0;3=-1;").

GetCameraPosition(shapeName)
Ermittelt die Kameraposition als Array der Koordinaten "1=xPos;2=yPos;3=zPos;".
shapeName Der Name der 3DView Shape.
returns Ein 3-elementiger Array mit den Positionskoordinaten der Kamera (Standard: "1=0;2=0;3=10;").
example 'Radius zum Ursprung (0,0,0)
P = LD3DView.GetCameraPosition(view)
r = Math.SquareRoot(P[1]*P[1] + P[2]*P[2] + P[3]*P[3])

'Abstand 2er Punkte (Vektorlänge)
a = Math.SquareRoot(dx*dx + dy*dy + dz*dz)

'Koord. von P2 ab P,r,dir (Vektorverschiebung)
x2 = P[1] + r * dir[1]
y2 = P[2] + r * dir[2]
z2 = P[3] + r * dir[3]


GetCameraUpDirection(shapeName)
Ermittelt den Aufwärts-Richtungsvektor in der Szenenprojektion als Array der Komponenten "1=xUp;2=yUp;3=zUp;".
xUp*xUp + yUp*yUp + zUp*zUp = 1 (Einheitsvektor)

shapeName Der Name der 3DView Shape.
returns Ein 3-elementiger Array mit dem Aufwärts Richtungsvektor der 3DView (Standard: "1=0;2=1;3=0;").

GetPosition(shapeName,geometryName)
Ermittelt die transformierte (aktuelle) Zentrumsposition für ein bestehendes Geometrieobjekt (s. BoundingBox).
shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts.
returns Ein 3-elementiger Array (ab 1) der transformierten Position bei Erfolg, sonst "FAILED":

centX = pos[1]
centY = pos[2]
centZ = pos[3]


HitTest(shapeName,x,y)
Ermittelt ein Auftreffen auf ein Geometrieobjekt in der 3DView. s. LD3DView.AddView(w,h, "").
Ein negativer Wert für eine Koordinate bezieht sich auf die Mitte der 3DView (Kameraansicht).

shapeName Der Name der 3DView Shape.
x Die x-Koordinate im GraphicsWindow (innerhalb der 3DView).
y Die y-Koordinate im GraphicsWindow (innerhalb der 3DView).
returns Ein 2-elementiger Array mit dem Name des Zielobjekts und seiner Entfernung (zB. "1=Geometry#;2=dist;") oder "" für keinen Treffer.
example 3D-samples\LD3DView.sb, LD3DMazeGame.sb

LastRotationCompleted
Ermittelt den Name des Geometrieobjekts welches zuletzt eine animierte Volldrehung beendete.

LastTranslationCompleted
Ermittelt den Name des Geometrieobjekts welches zuletzt eine animierte Vollbewegung beendete.

LoadModel(shapeName,fileName)
Lädt ein geometrisches Modell von einer Datei und fügt dieses an (0,0,0) in der 3DView hinzu (Intern: Geometry#+1).
Unterstützte Formate: 3ds, lwo, obj, (obj.gz ->)objz, off, stl. Position und Dimension entsprechend vorgegebener Geometrieeigenschaften.

shapeName Der Name der 3DView Shape.
fileName Der volle Pfad der zu ladenden Modelldatei.
Oft sind auch (gleichnamige) Bilddateien usw. im selben Ordner erforderlich.

returns Ein Array mit den Namen der hinzugefügten Geometrieobjekte bzw. Teilobjekte.
example 3D-samples\LD3DViewImport.sb
http://archive3d.net
http://archibase.co
http://leopoly.com
http://tf3dm.com
http://yobi3d.com


ModifyObject(shapeName,geometryName,action)
Durchführen einer Aktion an einem Geometrie- oder Lichtobjekt.
shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrie- oder Lichtobjekts, zB. model[1].
action Die durchzuführende Aktion:
"H" Verbergen
"S" Anzeigen
"X" Entfernen


MoveCamera(shapeName,yaw,pitch,roll,move)
Ändert die Blickrichtung und Position der Kamera relativ zur aktuellen Ausrichtung/Position.
Winkelangaben im Bereich [0,-/+180] oder [0,-/+360], zB. 10|-350 bzw. -10|350.

shapeName Der Name der 3DView Shape.
yaw Die Links/Rechts ↔ Schwenkung [Grad] ab aktueller Ausrichtung (Gierung, Standard: 0).
+ Kamera rechts, Szene links
- Kamera links, Szene rechts

pitch Die Rauf/Runter ↕ Neigung [Grad] ab aktueller Ausrichtung (Standard: 0).
+ Kamera rauf, Szene runter
- Kamera runter, Szene rauf

roll Die Verdrehung in Blickrichtung [Grad] ab aktueller Ausrichtung (Standard: 0).
+ Kamera/Szene im/gegen Uhrzeigersinn
- Kamera/Szene gegen/im Uhrzeigersinn

move Die Vor-/Rückwärts Bewegung [Pxl] in Kamerakoordinaten (entlang Blickrichtung) ab aktueller Position.
+ Kamera vorwärts
- Kamera rückwärts


QueuedRotationCompleted
Ermittelt die Anzahl der aktuell abgeschlossenen animierten Volldrehungen.

QueuedTranslationCompleted
Ermittelt die Anzahl der aktuell abgeschlossenen animierten Vollbewegungen.

ResetCamera(shapeName,xPos,yPos,zPos,xDir,yDir,zDir,xUp,yUp,zUp)
Setzt die Position und Blickrichtung der Kamera, sowie (optional) die Aufwärtsrichtung der Ansicht.
Standard: Position in (0,0,10), zentrierte Ansicht entlang -z Achse abwärts, +y oben und +x rechts.
Mindestens ein Dir Vektor muß <>0 sein, alle anderen Pos/Dir Werte können dann "" sein.

shapeName Der Name der 3DView Shape.
xPos Die x-Position der Kamera (Standard: 0).
yPos Die y-Position der Kamera (Standard: 0).
zPos Die z-Position der Kamera (Standard: 10).
xDir Der x-Richtungsvektor [-1,1] der Kamerasicht (-/+ Links/Rechts, Standard: 0).
yDir Der y-Richtungsvektor [-1,1] der Kamerasicht (-/+ Runter/Rauf, Standard: 0).
zDir Der z-Richtungsvektor [-1,1] der Kamerasicht (-/+ Rein/Raus, Standard: -1).
xUp Optionaler x-Richtungsvektor [-1,1], definiert Aufwärts-Richtung der Szenenprojektion (Standard: 0).
yUp Optionaler y-Richtungsvektor [-1,1], definiert Aufwärts-Richtung der Szenenprojektion (Standard: 1).
zUp Optionaler z-Richtungsvektor [-1,1], definiert Aufwärts-Richtung der Szenenprojektion (Standard: 0).
example 'Z-Taste (Standard Ansicht):
ResetCamera(view, 0,0,10, 0,0,-1, 0,1,0)
ResetCamera(view, "","",10, "","",-1, "",1,"")
'Umschalt+Z:
ResetCamera(view, 0,0,-10, 0,0,1, 0,1,0)
'X-Taste:
ResetCamera(view, 10,0,0, -1,0,0, 0,1,0)
'Umschalt+X:
ResetCamera(view, -10,0,0, 1,0,0, 0,1,0)
'Y-Taste:
ResetCamera(view, 0,10,0, 0,-1,0, 0,0,1)
'Umschalt+Y:
ResetCamera(view, 0,-10,0, 0,1,0, 0,0,1)


ResetMaterial(shapeName,geometryName,colour,materialType)
(Er)Setzt das Material/Farbe für ein bestehendes Geometrieobjekt. S.a. 'LoadImage'.
shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts.
colour Die neue Farbe oder ein Gradientpinsel (Brush) für das Objekt (nur Seite der Auswärtsnormalen).
materialType Der neue Materialtyp:
"E" Emissiv, konstante Helligkeit
"D" Diffus, beeinflusst durch Licht
"S" Spiegelnd, zusätzliche Glanzpunkte


ReverseNormals(shapeName,geometryName)
Umkehren aller Auswärtsnormalen (1/Dreieck) für ein Geometrieobjekt.
Macht zB. die Innenoberfläche einer Sphäre anstatt der Außenoberfläche sichtbar (SkyDome).

shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts dessen Auswärtsnormale umgekehrt werden.

RotateGeometry(shapeName,geometryName,x,y,z,angle)
Rotiert ein Geometrieobjekt um dessen Zentrum (erste Rotation "R1", relativ ab Originalposition).
shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts, zB. model[1].
x Der x-Richtungsvektor [-1,1] der Drehachse.
y Der y-Richtungsvektor [-1,1] der Drehachse.
z Der z-Richtungsvektor [-1,1] der Drehachse.
angle Der Drehwinkel vom Grundzustand [Grad] ab Originalposition.
Blick entlang +/- Drehachse -> im/gegen Uhrzeigersinn


RotateGeometry2(shapeName,geometryName,x,y,z,angle)
Rotiert ein Geometrieobjekt um dessen Zentrum (zweite Rotation "R2", relativ ab aktueller Position).
shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts, zB. model[1].
x Der x-Richtungsvektor [-1,1] der Drehachse.
y Der y-Richtungsvektor [-1,1] der Drehachse.
z Der z-Richtungsvektor [-1,1] der Drehachse.
angle Der Drehwinkel [Grad] ab aktueller Position.
Blick entlang +/- Drehachse -> im/gegen Uhrzeigersinn


RotateGeometry3(shapeName,geometryName,x,y,z,angle)
Rotiert ein Geometrieobjekt um dessen Zentrum (dritte Rotation "R3", relativ ab aktueller Position).
shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts, zB. model[1].
x Der x-Richtungsvektor [-1,1] der Drehachse.
y Der y-Richtungsvektor [-1,1] der Drehachse.
z Der y-Richtungsvektor [-1,1] der Drehachse.
angle Der Drehwinkel [Grad] ab aktueller Position.
Blick entlang +/- Drehachse -> im/gegen Uhrzeigersinn


RotationCompleted
Ereignisaufruf bei Beendigung einer Drehanimation (AnimateRotation(2)).

ScaleGeometry(shapeName,geometryName,scaleX,scaleY,scaleZ)
Skaliert (zoomt) ein Geometrieobjekt an dessen Zentrum. s. SetCentre(..,"S")
shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts, zB. model[1].
scaleX Der x-Skalierungsfaktor (Standard: 1).
scaleY Der y-Skalierungsfaktor (Standard: 1).
scaleZ Der z-Skalierungsfaktor (Standard: 1).

SetBillBoard(shapeName,geometryName)
Setzt ein Geometrieobjekt auf kontinuierliche Rotation zur Kameraverfolgung.
Verwendet die zweite und dritte Rotation "R2R3".

shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts in der 3DView.

SetCentre(shapeName,geometryName,x,y,z,options)
Setzt das Zentrum von Rotate- und ScaleGeometry Transformationen für ein Geometrieobjekt.
Standardmäßig ist dies das Zentrum des Hüllkörpers für das Geometrieobjekt (meist 0,0,0).
Das Zentrum wird mittels der Koordinaten bei Erstellung des Geometrieobjekts definiert und kann auch außerhalb des Geometrieobjekts liegen.
Ist ein Koordinatenwert auf "" gesetzt, wird dafür der Standardwert für das Zentrum verwendet.

shapeName Der Name der 3DView Shape.
geometryName Der Name des zu transformierenden Geometrieobjekts.
x Die x-Koordinate des Zentrums.
y Die y-Koordinate des Zentrums.
z Die z-Koordinate des Zentrums.
options Optionen zur Steuerung der Zentrierung (auch Mehrfachwerte, zB. "R1R2R3" zum Setzen für alle drei Rotationen):
"R1" RotateGeometry
"R2" RotateGeometry2, AnimateRotation
"R3" RotateGeometry3, AnimateRotation2
"S" ScaleGeometry


SpecularExponent
Ermittelt oder setzt den Spiegelungsexponent bei Verwendung von spiegelndem Material "S" für Geometrieobjekte (Standard: 5).
Dieser Exponent definiert den relativen Anteil der Glanzkomponente des Beleuchtungsmodells für ein Material.
Ist zu setzen bevor ein neues Geometrieobjekt mit dieser Eigenschaft erstellt wird, danach unveränderbar.


SwapUpDirection(shapeName,geometryName)
Rotiert (Wechselt) die y<->z Richtungen für ein Geometrieobjekt (zB. der Reihe nach: +y, -z, -y, +z, .., entspricht 90° Linksdrehung(en) um x-Achsvektor).
Hilfreich für Geometrieobjekte, die nach zUp=1 Regel erstellt wurden. Konvertiert diese zur yUp=1 Richtung (wie in LD3DView verwendet).
Direkt nach Erstellung/Laden anwenden, da skalierte Objekte damit auf Originalgröße zurückgesetzt werden.

shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts.
example http://de.wikipedia.org/wiki/Rechtssystem_(Mathematik)

TranslateGeometry(shapeName,geometryName,dX,dY,dZ)
Verschiebt ein Geometrieobjekt geradlinig an dessen Zentrum, relativ ab Originalposition.
shapeName Der Name der 3DView Shape.
geometryName Der Name des Geometrieobjekts, zB. model[1].
dX Der Versatz in x-Richtung ab Originalposition.
dY Der Versatz in y-Richtung ab Originalposition.
dZ Der Versatz in z-Richtung ab Originalposition.

TranslationCompleted
Ereignisaufruf bei Beendigung einer geradlinigen Bewegungsanimation (AnimateTranslation).