hallo...
Capter 10
um das nächste Capter besser erörtern zu können.Habe ich wider ein
Video und screens davon gemacht. Ihr könnt sehen das ein Quader und
ein Galaxie von Sternen im Hintergrund abgebildet sind. Wenn ihr ge-
nauer hinschaut. Werdet ihr sehen das die Sterne im Hintergrund auf
dem Cube zu sehen sind. So wird es ohne zuordnung von EntityOrder
Gezeichnet.
Mit der Taste F6 kann der Kossmoss hintergrund mittels
EntityOrder so eingestellt werden. Das dieser immer als erstes gezeichnet
wird.
Hir sehen wir die ganze sachen aus einer anderen richtung. Wir stellen
fest, das es sich zu anfang nur um einen illosion handelt. Durch die
anordnung und EntityOrder können wir selber bestimmen wann etwas
gezeichnet wird.
Und hir nochmal aus der gleichen position. Aber dismal wird Der Kossmoss immer an der Position der Camera festgemacht.
Für den Sternen hintergrund verwenden wir eine Specielle Texture
die nur aus 4 Punkten besteht. wir nutzrn die Eigenschalten des Render
vorganges um die Abrundungen zu erzeugen.
Die Funktionen MakeCube und FindFile gehören zum FrameWork.
Letzteres sorgd dafür, das es egal ist von wo Compiliert wird. Das file wird
immer gefunden.
InitB3DDaten.pbi
Code: Alles auswählen
;
; Capter 10
;
bbcamerazoom(cam,1.5)
Define kossmoss
kossmoss=bbloadmesh(FindFile("Dat\kosmos.3ds"))
If kossmoss=0
MessageRequester("Error", "Cant load kosmos.3ds",0) : End
EndIf
bbscaleentity(kossmoss,5,5,5,1)
Define a=$00ffffff
Define me=bbCreateMesh()
Define b=bbCreateBrush()
Define t=bbCreateTexture(2,2,3)
bbWritePixel( 0,0,a,bbTextureBuffer(t))
bbWritePixel( 1,0,$ffffffff,bbTextureBuffer(t))
bbWritePixel( 0,1,a,bbTextureBuffer(t))
bbWritePixel( 1,1,a,bbTextureBuffer(t))
bbScaleTexture( t,2,2 )
bbpositiontexture( t,0,0.5)
bbBrushTexture( b,t,0,0 )
bbBrushFx(b,3)
bbpaintentity(kossmoss,b)
bbentityorder(kossmoss,0)
Define cube=makecube(0,0,0)
bbpositionentity(cube,0,0,5)
Define SwitshOrder=0
Project3DLoop.pbi
Code: Alles auswählen
;
; Capter 10
;
; wie wir sehen wird das kossmoss Object immer an die Position
; der Camera gesetzt. Dadurch erreichen wir, das der eindruck
; entsteht. Das sich die Camera innerhalb des Objectes bewegt.
; Was aber nicht ganz richtig ist. Die Position der Camera wird
; wie gewohnt verändert. Jedoch der Kossmoss wird ebenso verschoben.
;
; Wenn wir uns jetzt bewegen, Werden wir beobachten. Das der Quader
; irgendwann hinter dem Kossmoss Objecte dargestellt wird. Durch drücken
; Der F5 Taste.wird die kopplung zwischen Camera und Kossmoss aufgehoben.
; Dadurch können wir sehen wie beide objecte wirklich zueinander
; stehen.
;
; Um jetzt zu ereichen das der Kossmoss immer als hintergrund gezeichent
; wird. Müssen wir ihm einen Order >0 geben.
; Mit der F6 taste können wir den zustand Switschen.
;
; Experimentiert etwas damit rum. Bewegt euch mit den WASD Tasten und
; schaut euch die Realität und den Schein genauer an. Mit EntityOrder()
; Lassen sich noch einiges mehr en Tricks anwenden.
If bbkeydown(#key_f5)=0
bbpositionentity(kossmoss,bbentityx(cam,1),bbentityy(cam,1),bbentityz(cam,1))
EndIf
If bbkeyhit(#key_f6)
SwitshOrder=~ SwitshOrder
EndIf
If SwitshOrder=0
bbentityorder(kossmoss,0)
Else
bbentityorder(kossmoss,1000)
EndIf
Hir noch das AVI
http://www.optima-code.ch/PB/v3.avi
http://www.optima-code.ch/PB/capter-10.zip