Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

Minib3d Kurs

von MitgliedWestbeamSeite 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
Vergrößern
Primitives

 

Gehe zu Seite Gehe zu Seite  1  2  3  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 22.05.2011 von MitgliedWestbeam angelegt.
  • Die aktuellste Version wurde am 11.05.2012 von AdministratorSebastian gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen