Tutorial
Minib3d Kurs
von Westbeam | Seite 2 von 3 |
- Licht und Kamera -
Wir verändern unseren Code aus dem ersten Teil folgendermaßen:
#Include "Header.bi"
Var light=CreateLight()
Var cam=CreateCamera()
Do
UpdateWorld
RenderWorld
Sleep 1
ScreenSync
Loop Until Inkey=Chr(27)
ClearWorld
End
Durch die Befehle "CreateLight()" wird ein Licht erzeugt, damit man in der 3D-Welt auch etwas erkennen kann. Ohne Licht geht gar nichts, genauso wenig wie ohne Kamera, welche mittels "CreateCamera()" erstellt wird. Die "Kamera" ist natürlich keine echte Kamera, sondern der Punkt in der 3D-Welt, durch welchen der Benutzer des Programms in die 3D-Welt hineinschaut.
Die Befehle "UpdateWorld" und "RenderWorld" in der Schleife sind ebenfalls wichtig, da sie die gesamte 3D-Szene rendern, also sie für den Benutzer sichtbar machen. "ClearWorld" löscht alle Objekte in der 3D-Szene und sollte, ähnlich wie "ImageDestroy", immer am Ende des Programms stehen.
- Ein erstes Objekt -
Trotzdem ist eure Welt anscheinend immer noch leer und im Vergleich zum letzten Code hat sich jedenfalls optisch nichts geändert. Immer noch ein schwarzes Fenster. Aus diesem Grund werden wir nun einmal ein 3dimensionales Objekt erstellen. Einen einfachen Würfel, welcher sich mittels "CreateCube" erstellen lässt:
#Include "Header.bi"
Var light=CreateLight()
Var cam=CreateCamera()
Var cube=CreateCube()
Immernoch schwarz ...
Woran liegt das? Ganz einfach: In MiniB3d wird jedes Objekt an der XYZ-Position 0, 0, 0 erstellt. Also befindet sich der Würfel an der gleichen Stelle wie die Kamera, genauer gesagt befindet sich die Kamera im Würfel. Um den Würfel zu sehen, müssen wir ihn nach vorne auf der Z-Achse verschieben. Dies kann man mit dem Befehl "PositionEntity" bewerkstelligen:
Var cube=CreateCube()
PositionEntity cube, 0, 0, 5
Mit diesem Befehl könnt ihr übrigens auch eure Kamera oder das Licht an einen anderen Ort verschieben.
Nun solltet ihr einen kleine weiße Fläche vor euch sehen, aber wer sagt, dass dies nun tatsächlich 3dimensional ist? Das was wir sehen, ließe sich auch mit einfachen 2D-Zeichenbefehlen verwirklichen. Hier ist also der Beweis, dass dies wirklich ein 3dimensionaler Würfel ist:
Do
TurnEntity cube, 1, 1, 0
UpdateWorld
RenderWorld
Sleep 1
ScreenSync
Loop Until Inkey=Chr(27)
Und auf einmal dreht sich der Würfel. Unglaublich!
Mit "TurnEntity" wird ein Objekt auf den 3 XYZ-Achsen gedreht. Diese 3 Achsen werden auch "Pitch", "Yaw" und "Roll" genannt, allerdings ist dies nicht weiter wichtig.
Ein Würfel ist eine primitive Figur, von denen es in MiniB3d noch 3 weitere gibt: Kugeln(Sphere), Zylinder(Cylinder) und Kegel(Cone):
#Include "Header.bi"
Var light=CreateLight()
Var cam=CreateCamera()
Var cube=CreateCube()
PositionEntity cube, -6, 0, 9
Var cylinder=CreateCylinder()
PositionEntity cylinder, -2, 0, 9
Var sphere=CreateSphere()
PositionEntity sphere, 2, 0, 9
Var cone=CreateCone()
PositionEntity cone, 6, 0, 9
Do
TurnEntity cube, 1, 1, 0
TurnEntity cylinder, 1, 1, 0
TurnEntity sphere, 1, 1, 0
TurnEntity cone, 1, 1, 0
UpdateWorld
RenderWorld
Sleep 1
ScreenSync
Loop Until Inkey=Chr(27)
ClearWorld
End
Das sollte so aussehen:
Primitives
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|