cubemap echtzeitreflektions problem

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

rctuner

Betreff: cubemap echtzeitreflektions problem

BeitragMo, Apr 09, 2007 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,
ich hab diesen code hier mal im forum gefunden und damit angefangen zu experementieren.
Wieso wirt die Spiegelung auf dem cube falsch dargestellt??
Es sieht so aus als hätte der Würfel einen Knick in der Mitte. Vielleicht wegen den Dreiecken aus dem eine Seite beseteht?

Code: [AUSKLAPPEN]
Graphics3D 1024,768,0,2
AppTitle "Cubemapping"

Global cam=CreateCamera()
PositionEntity cam,0,3,-15

Global cube_cam=CreateCamera()
HideEntity cube_cam

Global cube = CreateCube()
;ScaleEntity cube,10,0.2,10
ScaleEntity cube,10,0.1,10
PositionEntity cube,0,-13,10

Global tex_size=512
Global tex=CreateTexture(tex_size,tex_size,1+128+256)
SetCubeMode tex,1

EntityTexture cube,tex

sp=CreateSphere()
ScaleEntity sp,1,5,1
PositionEntity sp,0,3,7

sky=CreateSphere()
ScaleEntity sky,300,300,300
FlipMesh(sky)
EntityColor sky,255,0,255

SetBuffer BackBuffer()

While Not KeyDown(1)
   
   If KeyDown(203) Then MoveEntity sp,0.3,0,0
   If KeyDown(205) Then MoveEntity sp,-0.3,0,0
   
   If KeyDown(208) Then MoveEntity sp,0,0,0.3
   If KeyDown(200) Then MoveEntity sp,0,0,-0.3
   
   cubemap()
   
   UpdateWorld()
   RenderWorld()
   Flip
Wend
End



Function cubemap()
   Pitch=EntityPitch(cam)
   yaw=EntityYaw(cam)
   roll=EntityRoll(cam)
   
   PointEntity cam,cube
   
   PositionEntity cube_cam,EntityX(cam,1),-EntityY(cam,1)+2*EntityY(cube,1),EntityZ(cam,1)
   HideEntity cube
   HideEntity cam
   ShowEntity cube_cam
   CameraClsMode cube_cam,False,True
   CameraViewport cube_cam,0,0,tex_size,tex_size
   
   
   
   SetCubeFace tex,0
   RotateEntity cube_cam,0,90,0
   RenderWorld
   CopyRect 0,0,tex_size,tex_size,0,0,BackBuffer(),TextureBuffer(tex)
   
    SetCubeFace tex,1
   RotateEntity cube_cam,0,0,0
   RenderWorld
   CopyRect 0,0,tex_size,tex_size,0,0,BackBuffer(),TextureBuffer(tex)
   
    SetCubeFace tex,2
   RotateEntity cube_cam,0,-90,0
   RenderWorld
   CopyRect 0,0,tex_size,tex_size,0,0,BackBuffer(),TextureBuffer(tex)
   
   SetCubeFace tex,3
   RotateEntity cube_cam,0,180,0
   RenderWorld
   CopyRect 0,0,tex_size,tex_size,0,0,BackBuffer(),TextureBuffer(tex)
   
   SetCubeFace tex,4
   RotateEntity cube_cam,-90,0,0
   RenderWorld
   CopyRect 0,0,tex_size,tex_size,0,0,BackBuffer(),TextureBuffer(tex)
   
   SetCubeFace tex,5
   RotateEntity cube_cam,90,0,0
   RenderWorld
   CopyRect 0,0,tex_size,tex_size,0,0,BackBuffer(),TextureBuffer(tex)
   
   
   
   ShowEntity cube
   HideEntity cube_cam
   ShowEntity cam
   RotateEntity cam,Pitch,yaw,roll
End Function


EDIT
ich hab gerade rausbekommen dass das problem nur auftritt wenn ich den würfel scalliere. Aber es sollte doch trotzdem funktionieren?? wo ist der fehler?
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

Dreamora

BeitragMo, Apr 09, 2007 19:55
Antworten mit Zitat
Benutzer-Profile anzeigen
was ist falsch. Vielleicht vergisst du das die Reflektion falscher aussehen wird wenn die Fläche grösser ist weil die Kamera halt nur ein Punkt ist und richtige Reflektion über grössere Flächen halt so nicht erreichbar ist.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

rctuner

BeitragMo, Apr 09, 2007 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
wie könnte ich dann ein Meer darfstellen?

die kamera wird doch immer verschoben, oder versteh ich da was falsch
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

Dreamora

BeitragMo, Apr 09, 2007 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn das Meer nur den Himmel spiegeln soll dann indem du direkt den himmel als cubemap vorliegen hast und darauf anwendest

aber spiegelungen drin von objekten am strand oder schiffen: keine chance mit der technik.

da musst du effektiv mirror plane nehmen und zusätzlich noch etwas für culling probleme auffahren an stränden und so (hat nen code dafür im englischen forum)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

rctuner

BeitragMo, Apr 09, 2007 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
wird bei createmirror die komplette welt kopiert und dargestellt?
also hätte ich dann die doppelte anzahl an polygonen?
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

Dreamora

BeitragMo, Apr 09, 2007 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Jupp

Aber das macht nicht so einen Unterschied, denn da Cubemap 7 Mal rendern statt nur 1 bedeutet wird ein Mirror in so machen Fällen vermutlich dennoch besser weg kommen als cubemap. Speziell wenn wir von lahmarsch Grafikkartensprechen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

StepTiger

BeitragMo, Apr 09, 2007 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Mirror spiegeln nicht alles. Sie Spiegeln nur, wovon der Objektursprung unter dem Mirror ist. Je nachdem, ob du tauchen möchtest, kann das hässlich aussehen.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

rctuner

BeitragMo, Apr 09, 2007 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
dreamora, wo finde ich den code im englischen forum? ich hab schon überall nach etwas vergleichbarem gesucht ohne erfolg.
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

Dreamora

BeitragMo, Apr 09, 2007 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun wonach suchst du denn genau?

Denn was du im englischen Forum findest ist eine Verwendung von verschiedenen Tricks kombiniert mit Culling Tricks um die Probleme zu beseitigen die sonst auftreten mit objekten die gleichzeitig über und unter der Oberfläche sind (schiffe, inseln und so)

kann dir leider keinen direkten link anbieten. Könnte jedoch sein das er im projektforum war. bin mir nicht sicher das das dann ins Codearchiv kam, denke eher weniger (aber die 3d sektion ist ja nicht so gross)

Ist auf jeden Fall schon monate her.

Wirst schon einige zeit suchen mit 20min wirst du da nirgends hin kommen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Arrangemonk

BeitragMo, Apr 09, 2007 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.myblitz3d.narod.ru/blitz/mirrors.zip

das hab ich mal gefunden
villeicht hilft das weiter^^
ingeneur

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group