Die Grundformen, Bewegung,
Texturen
Hallo bei meinem ersten Tutorial für BlitzBasic3D.
Ich wollte nämlich auch mal so ein Tutorial schreiben.
Da ich Ellen lange Einleitungen in Tutorials hasse, werde ich auch gleich
anfangen. Für dieses Tutorial sind
gewisse
Grundkenntnisse BlitzBasic2d nötig!!!
Erstellen eines Zylinders
Fangen wir mit einem ganz einfachen Programm an
das einen Zylinder erstellt.
Graphics3D 640, 480 SetBuffer BackBuffer() Global camera=CreateCamera() Global cylinder=CreateCylinder(30) PositionEntity cylinder, 0, 0, 5 While Not KeyHit(1) UpdateWorld RenderWorld Flip Wend
|
So einfach ist das kommen wir nun zur
Erläuterung der einzelnen Befehlen: "Graphics3d": Sagt nichts weiter das man jetzt den 3D Modus nutzen will. "Setbuffer Backbuffer()": Hat genau die selbe Bedeutung wie in BlitzBasic2D. "camera=CreateCamera()": Erstellt eine Camera damit wir überhaupt was sehen. Das muss man sich so forstellen das ist wie beim Menschen das Auge. "cylinder=CreateCylinder(30)": Erzeugt einen Zylinder und die 30 in den Klammern gibt an wie viele Polygonen(Segmente) der Zylinder haben soll. "PositionEntity cylinder, 0, 0, 5": BlitzBasic setzt alle was man erstellt auf die Koordinaten 0, 0, 0 (in einem dreidimensionalen Koordinatensystem x, y, z) das heißt das der Zylinder direkt auf der Camera sitzt. Und wenn er da ist können wir ihn ja nicht sehen. Deswegen müssen wir ihn von der Camera wegbewegen. Und dafür ist der befehl nun gut. Die hinteren Zahlen stehen für die Koordinaten, wir bewegen ihn also um 5 Einheiten auf der ZAchse nach vorne. Wenn die zahl Negativ wird bewegen wir ihn nach hinten. Experementirt mit diesem Befehl noch ein bisschen. "While Not KeyHit(1)": Öffnet die Hauptschleife. |
Wenn ihr wollt könnt ihr noch den Befehl "WireFrame(1)" hinzufügen (vor
UpdateWorld)
dieser Befehl wird euch das Drahtgitter des Zylinders anzeigen.
Hier der
Beweis es ist 3D.
Bewegung
Ist das nicht langweilig so ein darumstehender Zylinder, wenn er
sich doch wenigstens drehen
würde nichts leichter als das.
Graphics3D 640, 480 SetBuffer BackBuffer() Global camera=CreateCamera() Global cylinder=CreateCylinder(30) PositionEntity cylinder, 0, 0, 5 While Not KeyHit(1) TurnEntity cylinder, 1, 1, 1 WireFrame(1) UpdateWorld RenderWorld Flip Wend |
"TurnEntity cylinder, 1, 1, 1": Sagt nichts anderes
als das der Zylinder sich um alle Achsen drehen soll. Auch wenn hier die Zahlen Negativ werden ändert sich auch hier die Drehrichtung. Wenn man einen höheren wert als eins einsetzt dreht er sich schneller. |
Wie wär's wenn wir den Zylinder mit den Pfeiltasten hin und her bewegen könnten?
Hier der Quellcod:
Graphics3D 640,
480 SetBuffer BackBuffer ()Global camera=CreateCamera()Global cylinder=CreateCylinder(30)PositionEntity cylinder, 0, 0, 5EntityColor cylinder, 0, 0, 255While Not KeyHit (1)If KeyDown(205) Then MoveEntity cylinder, 0.2, 0, 0If KeyDown(203) Then MoveEntity cylinder, -0.2, 0, 0If KeyDown(200) Then MoveEntity cylinder, 0, 0.2, 0If KeyDown(208) Then MoveEntity cylinder, 0, -0.2, 0WireFrame (0)UpdateWorld RenderWorld Flip Wend |
"MoveEntity cylinder, 0.2, 0, 0": Mit PositionEntity konnte man
Gegenstände bis her nur Positionieren
|
Texturen
Jetzt könnte unser Zylinder doch auch mal eine schöne Textur gebrauchen. Für den
der`s nicht weis eine
Textur ist ein Bild was über das Drahtgitter eines Körpers gezogen wird.
Graphics3D 640, 480 SetBuffer BackBuffer() Global camera=CreateCamera() Global cylinder=CreateCylinder(30) PositionEntity cylinder, 0, 0, 5 Global stein=LoadTexture( "stein.bmp" )EntityTexture cylinder, steinWhile Not KeyHit(1) TurnEntity cylinder, 1, 1, 1WireFrame (0)UpdateWorld RenderWorld Flip Wend |
"stein=LoadTexture( "Stein.bmp )": Dieser Befehl lädt die Textur in diesem Fall Stein.bmp. "EntityTexture cylinder, stein": Damit sagt man BlitzBasic das die
Textur stein auf den Körper Wenn euch die Steine zu groß oder zu klein sind kann man die Textur auch
skalieren (zerren). Es gibt noch etliche Sachen die man mit Texturen machen kann aber das soll
fürs erste reichen. |
Die Grundformen
Jetzt haben wir schon so viel mit unserem Zylinder gemacht aber es gibt ja
nicht nur den Zylinder sondern auch
noch andere so genante Grundformen. Dazu gehören - der Zylinder (cylinder)
- der Würfel (cube )
- die Kugel (sphere )
- der Kegel ( cone )
Erstellt werden sie alle gleich:
CreateCylinder(30)
CreateCube() (Warum wohl keine Zahl könnt ihr euch sicher selber denken)
CreateSphere(30)
CreateCone(30)
Wenn einem die Größe des Körpers nicht passt dann kann man sie mit "ScaleEntity
Variable, x, y, z" ändern.
Dazu ein kleines Beispiel:
Graphics3D 640,
480 SetBuffer BackBuffer()Global camera=CreateCamera()Global cylinder=CreateCylinder(30)PositionEntity cylinder, -4, 0, 10ScaleEntity cylinder, 0.5, 2, 1Global sphere=CreateSphere(30)PositionEntity sphere, 3, 0, 10ScaleEntity sphere, 5, 2, 1While Not KeyHit(1) WireFrame(1) UpdateWorldRenderWorld Flip Wend |
Jetzt sind sie schön verzerrt |
Ich hoffe doch das euch der erste Teil meines Tutorials Gefallen hat und das
ihr euch mal meinen Zweiten
Teil anschaut "Licht und Effekte" wenn ihr Verbesserungsvorschläge habt die dann
bitte an "MattisInfo@gmx.de"
<Zurück zur Übersicht Weiter >