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, 8Global cone=CreateCone(30)PositionEntity cone, -1, 1, 8Global sphere=CreateSphere(30)PositionEntity sphere, 2, 2, 8Global cylinder=CreateCylinder(30)PositionEntity cylinder, 5, 3, 8While Not KeyHit (1)If KeyDown (200) Then TurnEntity camera, 1, 0, 0If KeyDown (208) Then TurnEntity camera, -1, 0, 0If KeyDown (203) Then TurnEntity camera, 0, 1, 0If KeyDown (205) Then TurnEntity camera, 0, -1, 0If KeyDown (30) Then MoveEntity camera, 0, 0, 0.3If KeyDown(44) Then MoveEntity camera, 0, 0, -0.3WireFrame (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, -8Global cube=CreateCube()PositionEntity cube, -4, 0, 8Global cone=CreateCone(30)PositionEntity cone, -1, 1, 8Global sphere=CreateSphere(30)PositionEntity sphere, 2, 2, 8Global cylinder=CreateCylinder(30)PositionEntity cylinder, 5, 3, 8While Not KeyHit (1)If KeyDown (200) Then TurnEntity figur, 1, 0, 0If KeyDown (208) Then TurnEntity figur, -1, 0, 0If KeyDown (203) Then TurnEntity figur, 0, 1, 0If KeyDown (205) Then TurnEntity figur, 0, -1, 0If KeyDown (30) Then MoveEntity figur, 0, 0, 0.3If KeyDown(44) Then MoveEntity figur, 0, 0, -0.3WireFrame (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, -10Global mario=LoadMesh( "mario.x" )ScaleEntity mario, 0.2, 0.2, 0.2While 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"