Hilfe

RenderWorld

B3D

Aufruf

RenderWorld [schritt#]

Parameter

schritt# Animationsschritt 0 bis 1 (Standard=1)


Rückgabewert

-


Beschreibung

Die Anweisung RenderWorld rendert komplette 3D-Szene und zeichnet es auf BackBuffer ein.

Der optionale Parameter gibt den Animationsschritt an. Wenn keine Zwischenanimationen erstellt werden sollen, dann muss man nichts angeben. Sollen Objekte animiert werden, dann muss man folgendes tun:

Mit CaptureWorld kann ein "snapshot" aller Objekte (entitys) erstellt werden. Dabei werden Positionen und Drehwinkel der Objekte gespeichert.

Nachdem ein "snapshot" gemacht wurde, können die Objekte verschoben und gedreht werden. Danach kann man eine Animation zwischen den zwei Bewegungen erstellen. Dazu muss man den Befehl RenderWorld benutzen. RenderWorld 0 zeichnet die Objekte an der Position, wo ein "snapshot" erstellt wurde. Mit RenderWorld 1 werden die Objekte dagegen an der aktuellen Position eingezeichnet. Mit den Zwischenwerten können die Objekte animiert werden.

Der Grund für diese Technik ist sehr einfach. Die Spielobjekte können mit einer geringeren CPU-Belastung bewegt werden, da nur die Veränderungen berechnet werden. Zudem kann man das Updaten der Objekte etwas reduzieren. So kann man z.B. 30 Animationsstufen erstellen, aber ganze 60 anzeigen (mit Zwischensequenzen).


Beispiel

Standardbeispiel:

Graphics3D 640, 480, 0, 2
SetBuffer BackBuffer()
camera = CreateCamera()
light = CreateLight(1)
RotateEntity light, 90, 0, 0

Dim c(100)
For i = 0 To 100
   c(i) = CreateCube()
   PositionEntity c(i), Rnd( - 10, 10), Rnd( - 10, 10), Rnd(10, 100)
   RotateEntity c(i), Rnd(360), Rnd(360), Rnd(360)
Next
CaptureWorld
For i = 0 To 100
   PositionEntity c(i), Rnd( - 10, 10), Rnd( - 10, 10), Rnd(10, 100)
   RotateEntity c(i), Rnd(360), Rnd(360), Rnd(360)
Next

While Not KeyDown(1)
   value# = (value# + 1) Mod 360
   RenderWorld Sin#(value#) * .5 + .5
   Flip
Wend
End


Siehe auch

CaptureWorld, UpdateWorld

Übersicht 3D Grafik Global