Kamerabewegung

Nun wird es zeit unsere Camera in Bewegung zu bringen, dass ist nicht alt zu kompliziert wie man denkt.
Man muss sie ja eigentlich nur drehen und bewegen. Wenn man die Kamera dreht und dann bewegt, bewegt
sie sich immer in die Richtung in die man sie gedreht hat das ist eine feine Sache. Hier ein kleines
Beispielprogramm:

Graphics3D 640, 480

SetBuffer BackBuffer()

Global camera=CreateCamera()

Global cube=CreateCube()

PositionEntity cube, -4, 0, 8

Global cone=CreateCone(30)

PositionEntity cone, -1, 1, 8

Global sphere=CreateSphere(30)

PositionEntity sphere, 2, 2, 8

Global cylinder=CreateCylinder(30)

PositionEntity cylinder, 5, 3, 8

While Not KeyHit(1)

If KeyDown(200) Then TurnEntity camera, 1, 0, 0

If KeyDown(208) Then TurnEntity camera, -1, 0, 0

If KeyDown(203) Then TurnEntity camera, 0, 1, 0

If KeyDown(205) Then TurnEntity camera, 0, -1, 0

If KeyDown(30) Then MoveEntity camera, 0, 0, 0.3

If KeyDown(44) Then MoveEntity camera, 0, 0, -0.3

WireFrame(0)

UpdateWorld

RenderWorld

Flip

Wend

Hätte man eigentlich selbst drauf kommen können oder? Die Kamera ist genau wie

zum Beispiel ein Würfel auch ein Körper und kann deswegen auch mit "TurnEntity

gedreht und mit "MoveEntity" bewegt werden.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Das wehre jetzt die typische Egoshooterperspektive aber was wenn man eine Vervolgerperspektive haben will dann geht das ganze fasst genauso:

Graphics3D 640, 480

SetBuffer BackBuffer()

Global figur=CreateSphere(30)

Global camera=CreateCamera(figur)

PositionEntity camera, 0, 5, -8

Global cube=CreateCube()

PositionEntity cube, -4, 0, 8

Global cone=CreateCone(30)

PositionEntity cone, -1, 1, 8

Global sphere=CreateSphere(30)

PositionEntity sphere, 2, 2, 8

Global cylinder=CreateCylinder(30)

PositionEntity cylinder, 5, 3, 8

While Not KeyHit(1)

If KeyDown(200) Then TurnEntity figur, 1, 0, 0

If KeyDown(208) Then TurnEntity figur, -1, 0, 0

If KeyDown(203) Then TurnEntity figur, 0, 1, 0

If KeyDown(205) Then TurnEntity figur, 0, -1, 0

If KeyDown(30) Then MoveEntity figur, 0, 0, 0.3

If KeyDown(44) Then MoveEntity figur, 0, 0, -0.3

WireFrame(0)

UpdateWorld

RenderWorld

Flip

Wend

Man trägt einfach nur das zu verfolgende Objekt in die Klammern von CreateCamera() ein und schon verfolgt die Kamera das Objekt. Das Problem ist das sie nun wider
 in einander sitze deswegen muss man die Kamera ein bisschen weiter hinten
 Positionieren.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Meshs Einlesen

Kommen wir nun zum Thema Meshs, Meshs sind nichts anderes als 3DModelle die vorher mit einem 3DModeller erstellt
wurden sind. Es würde nämlich viel zu viel Aufwand machen zum Beispiel seine Spiel figuren aus den Grundformen
selber zu schustern also mit text und so weiter. Es geht nämlich mit einem 3DModeller viel einfacher und schneller.
Also hier ein kleines Beispiel in dem ich den kleinen Mario aus der Castle demo von BlitzBasic einlese:

Graphics3D 640, 480

SetBuffer BackBuffer()

Global camera=CreateCamera()

PositionEntity camera, 0, 0, -10

Global mario=LoadMesh( "mario.x" )

ScaleEntity mario, 0.2, 0.2, 0.2

While Not KeyHit(1)

WireFrame(1)

UpdateWorld

RenderWorld

Flip

Wend

Und da steht er nun, wenn man das Drahtgitter sichtbar macht kann man ihn besser erkennen.

Das wars dann ja schon wider mit Teil drei und wie immer Verbesserungsvorschläge an "Mattisinfo@gmx.de"

<zurück                                                                                                                                                                                                weiter>

<zurück zur Übersicht