3D in Bild rendern

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

pirahni

Betreff: 3D in Bild rendern

BeitragSo, Jan 08, 2012 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,
nach einiger Zeit kehre ich also wieder zurück und niemand hat meine Abwesenheit bemerkt Sad Egal!
Ich komme heute mit einem Anfängerproblem zu euch, was wahrscheinlich daran liegt, dass ich im Umgang mit Blitz3D nicht mehr so gut bin. Ich möchte ein Objekt aus vielen Perspektiven (gedreht immer in 22,5° Schritten) in einem Bild haben. Das Objekt ist eine Kugel.
Ich habe mir dazu dieses Programm geschrieben, welches jedoch so ziemlich keine der geplanten Funktionen erfüllt. (Es gibt nur ein einziges gerendertes Bild und der Hintergrund ändert die Farbe nichtmal)
Code: [AUSKLAPPEN]
Graphics3D 640,480,32,2

camera = CreateCamera()
PositionEntity camera,0,0,-5
tex=CreateTexture(512,512)

;Textur erzeugen
SetBuffer TextureBuffer(tex)
For i=0 To 255
  Color 255, 255-i, 255-i
  If (i=127) Or (i=255) Or (i=0) Then Color 0,0,0
  Line i,0,i,512
  Line 512-i,0,512-i,512
Next
Color 0,0,0
Line 0,127,512,127
Line 0,128,512,128

;Bilder erzeugen
img=CreateImage(256*16, 256*16)
imgklein=CreateImage(256, 256)

;Kugel erzeugen
sphere=CreateSphere()
EntityTexture(sphere, tex)

For i=0 To 15
  For j=0 To 15
    ;Kleines Bild rendern
    SetBuffer ImageBuffer(imgklein)
    RotateEntity(sphere, 360/16*i, 360/16*j, 0)
    ClsColor Rand(128),Rand(128),Rand(128)
    RenderWorld()

    ;Großes Bild zusammenfügen
    SetBuffer ImageBuffer(img)
    DrawImage imgklein, i*256, j*256
  Next
Next

;Auf Bildschirm zeichnen
SetBuffer FrontBuffer()
DrawImage img,0,0
;SaveBuffer ImageBuffer(img), "X:/bla.png"


Über Hilfe bin ich sehr dankbar.

Propellator

BeitragSo, Jan 08, 2012 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
1) ClsColor ändert die Farbe von Cls, du führst Cls jedoch nie aus.

2) Zum debuggen, speichere mal alle Bilder in ein Array
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis.

ZEVS

BeitragSo, Jan 08, 2012 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei dieser Gelegenheit sei auf CameraClsMode/CameraClsColor hingewiesen. Die normale CLS-Color wird in deinem Code einfach überschrieben...

Midimaster

BeitragSo, Jan 08, 2012 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe es mal statt mit dem Buffer mit GrabImage versucht. Dabei hat sich gezeigt, das die echte 3D Kugel viel zu weit in der Mitte sitzt, als dass sie im imgklein beim Rendern erscheinen würde:
BlitzBasic: [AUSKLAPPEN]
For i=0 To 15
For j=0 To 15
SetBuffer FrontBuffer()
Flip 1
Cls
RotateEntity(sphere, 360/16*i, 360/16*j, 0)
ClsColor Rand(128),Rand(128),Rand(128)
RenderWorld()
GrabImage imgklein,250,200
SetBuffer FrontBuffer()
DrawImage imgklein,500,0
WaitKey()
;Großes Bild zusammenfügen
; SetBuffer ImageBuffer(img)
; DrawImage imgklein, i*256, j*256
Next
Next


dadurch, dass jetzt das Foto ab 250/200 geschossen wird ist auch was drauf!
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

pirahni

BeitragSo, Jan 08, 2012 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich danke allen (insbesondere Midimaster) für die Hilfe. Funktioniert jetzt. Danke Very Happy

ZaP

BeitragSo, Jan 08, 2012 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Interessant hierzu wäre vielleicht auch noch CopyRect. Cool
Starfare: Worklog, Website (download)

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group