Hallo ...
Capter 9
Will man Rotation eines Objectes mit Angelpunkt vom Pivot
unabhängig verändern. Das machen wir dan so:
InitB3DDaten.pbi
Code:
;
; Capter 9
;
; offt ist es aber wichtig.... den drehpunkt zwar an einem
; Object festzumachen. Aber die Rotation des Objectes soll
; das angehängte object nicht beeinflussen. Dann muss man
; das Pivot manuell an die position des Objectes anpassen.
; Dabei stellt sich dann natürlich heraus. Das die Scalierungen
; nicht mer passen. Daher werden wir 2 verschiedene Scalierungen
; vorbereiten.
bbcamerazoom(cam,1.5)
Define XYZ_achsenkreutz=bbcreatecube()
bbscalemesh(XYZ_achsenkreutz,0.1,0.1,2)
bbentitycolor(XYZ_achsenkreutz,$ff,0,0)
i=bbcreatecube(XYZ_achsenkreutz)
bbscalemesh(i,2,0.1,0.1)
bbentitycolor(i,$0,$ff,0)
i=bbcreatecube(XYZ_achsenkreutz)
bbscalemesh(i,0.1,2,0.1)
bbentitycolor(i,$0,$0,$ff)
bbhideentity(XYZ_achsenkreutz)
Define sonne=bbcreatesphere(16)
i=bbcopyentity(XYZ_achsenkreutz,sonne)
bbentityfx(sonne,1)
bbpositionentity(sonne,0,0,260)
bbscaleentity(sonne,10,10,10,1)
bbentitycolor(sonne,$ff,$ff,$0)
bbturnentity(sonne,15,0,0)
Define light=bbcreatelight(2,sonne)
; dazu lassen wir die Bindung an die Sonne weg
Define PlanetPivot=bbcreatepivot()
Define Planet=bbcreatesphere(16,PlanetPivot)
i=bbcopyentity(XYZ_achsenkreutz,Planet)
;bbscaleentity(Planet,0.5,0.5,0.5)
;bbmoveentity(Planet,0,0,10)
bbscaleentity(Planet,5,5,5)
bbmoveentity(Planet,0,0,100)
; sowie die Bindung an den Planeten
Define MondPivot=bbcreatepivot()
Define Mond=bbcreatesphere(16,MondPivot)
i=bbcopyentity(XYZ_achsenkreutz,Mond)
;bbscaleentity(mond,0.2,0.2,0.2)
;bbmoveentity(mond,0,0,3)
bbscaleentity(mond,2,2,2)
bbmoveentity(mond,0,0,30)
Project3DLoop-pbi
Code:
;
; Capter 9
;
; Dafür müssen wir an dieser Stelle die Objecte Manuell nachfüren.
;
If bbKeydown(#KEY_F5)
bbturnentity(Sonne,0,-0.2,0)
bbturnentity(Planet,0,2,0)
ElseIf bbKeydown(#KEY_F6)
bbturnentity(Sonne,0,0.2,0)
bbturnentity(Planet,0,-2,0)
EndIf
bbpositionentity(PlanetPivot,bbentityx(Sonne,1),bbentityy(Sonne,1),bbentityz(Sonne,1))
bbpositionentity(MondPivot,bbentityx(Planet,1),bbentityy(Planet,1),bbentityz(Planet,1))
bbturnentity(PlanetPivot,0,0.2,0)
bbturnentity(MondPivot,0,-2,0)
Im nächsten Capter werden wir uns mal den Befehl bbEntityOrder()
genauer ansehen. Dies ist ein sehr mächtiger befehl. Damit lassen
sich im gegensatz zu Ogre die Reihenfolgen festlegen in dehnen die
Objecte gerendert werden sollen. Damit lassen sich tolle Effecte machen.