[B3d] 360°-Screenshots

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Mr.Keks

Betreff: [B3d] 360°-Screenshots

BeitragFr, Apr 21, 2006 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image
Folgende Funktion erstellt so tolle 360°-Bilder einer Szene. Allerdings hat sie noch eine Menge Macken. Man muss die Kamera danach manuell wieder auf normale Werte setzen. Außerdem werden einige Sonderentities wie Sprites und Planes nicht korrekt dargestellt...

Code: [AUSKLAPPEN]
Function PanoramaScreenshot(cam,pfad$,steps=1440,extrawidth=800,break=100)
   gw = GraphicsWidth()
   gh = GraphicsHeight()
   Repeat
      i = i + 1
      If FileType(pfad$+i+".bmp") = 0
         screen = CreateImage(steps,gh/2)
         For x = 0 To steps-1
            CameraViewport cam,0,0,extrawidth,gh/2
            ScaleEntity cam,Float(extrawidth)/Float(gw),Float(extrawidth)/Float(gh)*1.5,1
            RotateEntity cam,0,360.00*x/Float(steps),0,1
            RenderWorld
            CopyRect 0,0,1,Gh/2,x,0,BackBuffer(),ImageBuffer(screen)
         Next
         SaveBuffer ImageBuffer(screen),pfad$+i+".bmp"
         Return 1
      EndIf
      If i >= break Then Return 0
   Forever
   FreeImage screen
   
   CameraViewport cam,0,0,Gw-1,gh-1 ; das hier funktioniert noch nicht so wie es soll ^^
   ScaleEntity cam,Float(gw),Float(gh)/1.5,1
End Function
MrKeks.net

5k41

BeitragFr, Apr 21, 2006 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
bau doch zumindest noch ein, dass am anfang local x=Entityx(cam) usw. steht und am ende die cam wieder auf x,y,z gesetzt wird... das gleiche sollte man auch mit pitch yaw roll machen...

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Mr.Keks

BeitragFr, Apr 21, 2006 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Gute Idee!

BlitzBasic: [AUSKLAPPEN]
Function PanoramaScreenshot(cam,pfad$,steps=1440,extrawidth=800,break=100)
cx# = EntityX(cam)
cy# = EntityY(cam)
cz# = EntityZ(cam)
cpi# = EntityPitch(cam)
cya# = EntityYaw(cam)
cro# = EntityRoll(cam)

gw = GraphicsWidth()
gh = GraphicsHeight()
Repeat
i = i + 1
If FileType(pfad$+i+".bmp") = 0
screen = CreateImage(steps,gh/2)
For x = 0 To steps-1
CameraViewport cam,0,0,extrawidth,gh/2
ScaleEntity cam,Float(extrawidth)/Float(gw),Float(extrawidth)/Float(gh)*1.5,1
RotateEntity cam,0,360.00*x/Float(steps),0,1
RenderWorld
CopyRect 0,0,1,Gh/2,x,0,BackBuffer(),ImageBuffer(screen)
Next
SaveBuffer ImageBuffer(screen),pfad$+i+".bmp"
Exit
EndIf
If i >= break Then Return 0
Forever
FreeImage screen

CameraViewport cam,0,0,Gw-1,gh-1 ; das hier funktioniert noch nicht so wie es soll ^^
ScaleEntity cam,Float(gw),Float(gh)/1.5,1
PositionEntity cam,cx,cy,cz
RotateEntity cam,cpi,cya,cro
Return 1
End Function
MrKeks.net

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group