Problem mit Cubemapping

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

pixelshooter

Betreff: Problem mit Cubemapping

BeitragSo, Okt 22, 2006 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab ne Textur mit Flag 128 gemacht, und eigentlich sollte sich doch die Umgebung spiegeln, aber das ding wird nur mehr oder weniger schwarz:

Code: [AUSKLAPPEN]

Graphics3D 800,600
pivot=CreatePivot()
PositionEntity pivot,0,1.5,0

camera=CreateCamera( pivot )
CameraClsColor camera,0,0,255
CameraRange camera,0.01,1000
MoveEntity camera,0,0,-500

light=CreateLight(2)
light=CreateLight(2)
PositionEntity light,0,-200,0

;robo=LoadAnimMesh( "xx.b3d" )
;PositionEntity robo,0,0,0



x = CreateTexture(1024,1024,128)
SetBuffer TextureBuffer(x)
ClsColor 0,0,0
Cls
SetBuffer BackBuffer()
robp = CreateCube()
ScaleEntity robp,100,100,100
PositionEntity robp,0,0,300
EntityTexture robp,x

robi = CreateCube()
ScaleEntity robi,100,100,100
PositionEntity robi,0,0,-300
EntityColor robi,0,255,0
robi = CreateCube()
ScaleEntity robi,100,100,100
PositionEntity robi,300,0,-300
EntityColor robi,0,255,0
robi = CreateCube()
ScaleEntity robi,100,100,100
PositionEntity robi,-300,0,-300
EntityColor robi,0,255,0
robi = CreateCube()
ScaleEntity robi,500,500,500
PositionEntity robi,0,0,0
EntityColor robi,255,0,0
EntityFX robi,16



While Not KeyHit(1)
   If KeyDown(200)
      MoveEntity camera,0,0,10
   ElseIf KeyDown(208)

   MoveEntity camera,0,0,-10
   EndIf
   If KeyDown(203) TurnEntity pivot,0,-3,0
   If KeyDown(205) TurnEntity pivot,0,3,0
   
   If KeyDown(30) TranslateEntity camera,0,0,.1
   If KeyDown(44) TranslateEntity camera,0,0,-.1
   
   UpdateWorld
   RenderWorld
   Flip
Wend

End

NightPhoenix

BeitragSo, Okt 22, 2006 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du dir schonmal andere Threads durchgelesen um in etwa zu wissen wie das Cubemapping funzt?
Ich sehe in deinem Code etwas wenig durch... das einzige was ich sagen kann ist dass dabei garantiert kein Cubemapping rauskommt.. Grobe Veränderungen sind notwendig.. mach dir nix drauß ^^ Ich habs nach ner Woche erst hingekriegt... Rolling Eyes
Es geht ja darum dass auf einem Objekt eine Texture aufgetragen wird welche die Umgebung spiegeln soll... Diese Texture ist eigentlich ein Blick durch eine zweite Kamera die sich dreht in welche Richtung man halt schaut.
Ich kann in deinem Code keine zweite Cam gefunden... Wenn du sie dazumachst dann muss diese dann versteckt werden damit deine Graka quasi nur die eine HauptKamera benutzt die du zum bewegen brauchst (HideEntity CubeCam).. dann vor der Spiegelung muss die CubeCam wieder erscheinen.. nach der Spiegelung in der Schleife wieder verschwinden.
Außerdem muss dann noch ne Steuerung der CubeCam rein... Wenn Hauptkamera dahin dreht dann CubeCam da hin dreht.

Erstmal dieser grobe Ansatz von mir Wink

MfG. NightPhoenix

skey-z

BeitragSo, Okt 22, 2006 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
schua dir mal in der onlinehilfe die befehle zum Cubemapping an www.blitzbase.de , da findest du nen code mit dem du arbeiten kannst und wie nightphönix schon sagte, hier im Forum wurde es schon zig mal diskutiert, also einmal die suche bemühen und du bekommst mind 10 threads dazu
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

pixelshooter

BeitragSo, Okt 22, 2006 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
bei hat aber schon mal sn code, definitiv ohne cams gefunzt. Und was is der Unterschied zu flag 64?

Werde in zukunft mehr die Suche benutzen, nur kam nix sinnvolles raus.

Der Code in der Onlinehilfe geht nicht, weil bei mir der "media" ordner fehlt. und wenn ich leere Texturen nehme, gehts auch nich

StepTiger

BeitragSo, Okt 22, 2006 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
du MUSST die sicht der kamera mit negativen y wert abhängig vom objekt rendern, da das cubemapping sonst nicht funktionieren kann. Cubemapping zeigt am jeweiligen Pixel den jeweiligen Punkt der Textur abhängig von position und winkel an. Dies gestattet nur eine Kamera

Kurz gefasst:
cubemapping (als spiegelung) ohne cam ist unmöglich
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.
 

Dreamora

BeitragSo, Okt 22, 2006 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
pixelshooter hat Folgendes geschrieben:
Der Code in der Onlinehilfe geht nicht, weil bei mir der "media" ordner fehlt. und wenn ich leere Texturen nehme, gehts auch nich


Der Media Ordner bezieht sich auf den Ordner im Samples Verzeichnis, der mit der Installation mit kommt.
Dort sind alle nötigen Dateien drin.


Und wie oben erwähnt: Spiegelung setzt eine "Sicht" voraus und das setzt zwingend eine Kamera voraus.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

NightPhoenix

BeitragSo, Okt 22, 2006 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
StepTiger, erinnerst du dich noch daran wie du mir damals bei meinem Cubemapping anfängen geholfen hast? Wink
Ich hab mir heute deinen Beispielcode nochmal angeschaut und hab festgestellt dass da was falsch läuft... Das habe ich nicht im Code gesehen, sondern am Ergebnis:
(habe die Objekte mal bissl verändert)

An dem Bild gibts nix auszusetzen... So sollte das sein. Das graue etwas da oben ist eine Sphere, das graue etwas weiter unten ist die Sphere gespiegelt.
user posted image

Ich verändere die Kameraposition... (Also zum einfacher verstehen: Ein Quadrat hat 4 Kanten ich war an Kante rechts und begebe mich mit meiner Kamera jetz zu Kante Unten... Shocked alles klar? ^^)

Jetzt das Problem... Im grünen Kreis (ja ein Kreis soll das sein Wink ) sieht man jetzt die falsche Spiegelung... Der rote zeigt ein weiteres Problem... Manchmal schwirren durch die Spiegelung schwarze Punkte bzw. Schnipsel (richtig Kantige Schwarze Dinger)... was isn das? ^^
user posted image

Nochma das Selbe... falsche Spiegelung.
user posted image

Jedem dürfte in den letzten 2 Bildern aufgefallen sein, dass die Spiegelung an der falschen Stelle ist... unnatürlich halt)

Weiß jemand warum die Spiegelung falsch verläuft? würde mal auf verdrehte CubeFaces tippen, oder?

MfG. NightPhoenix

P.S.: Bitte steinigt mich nicht weil ich hier Microsoft (!) Paint verwendet habe!!! .. peinlich Embarassed ^^

user posted image

StepTiger

BeitragSo, Okt 22, 2006 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
hast recht! eigentlich kein ding! dreh die kameras rum und es dürfte funktionieren.

kamera 1 nach links
kamera 2 nach vorn
kamera 3 nach rechts
kamera 4 nach hinten
kamera 5 nach oben
kamera 6 nach unten

dürfte gehen Smile hab mich wohl irgendwo vertan
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.

BladeRunner

Moderator

BeitragMo, Okt 23, 2006 6:00
Antworten mit Zitat
Benutzer-Profile anzeigen
MS Paint ist ein simples aber dennoch effizientes Programm. Warum also peinlich ?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

NightPhoenix

BeitragMo, Okt 23, 2006 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur Spaß BladeRunner Wink

@StepTiger, willst du die Kameras umstellen oder soll ich mich mal daran machen? ^^ Is ja dein Beispielcode

MfG. NightPhoenix

StepTiger

BeitragMo, Okt 23, 2006 11:53
Antworten mit Zitat
Benutzer-Profile anzeigen
mach nur ^^
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.

pixelshooter

BeitragSa, Okt 28, 2006 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
bei flag 64 kommt bei mir nur geflimmer raus (natürlich jhab ich die cams wieder weg gemacht)

ist es eigentlich schneller mehrere cams zu machen oder eine zu drehen?

NightPhoenix

BeitragSo, Okt 29, 2006 10:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine zu drehen... sonst musst du 6 Cams verstecken und wieder sichtbar machen.... außerdem geht das glaube garnicht mit mehreren, oder? ^^

Außerdem: Wozu brauchst du Flag 64? das ist Spherical Mapping... Das hat nix mit Cubemapping zu tun... Du brauchst Flag 128+256
MfG.

StepTiger

BeitragSo, Okt 29, 2006 11:28
Antworten mit Zitat
Benutzer-Profile anzeigen
mehrere sind wesentlich schneller, jedoch erreichst du dann auch nur eine niedrigere Auflösung.

Mehrere cams müssen nur ein mal gerendert werden
Arrow schneller

Das hide und showentity macht nix aus.

Dafür solltest du dich eventuell mit dem Befehl
CameraViewport auseinandersetzen.
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.

NightPhoenix

BeitragSo, Okt 29, 2006 11:51
Antworten mit Zitat
Benutzer-Profile anzeigen
StepTiger....
Das mit den Kameraeinstellungen krieg ich echt nicht hin... Habs mal versucht, aber das geht irgendwie nicht... Das blöde Ding bleibt da, oder wird noch schlimmer versetzt

Hier mal die Richtungen:
Code: [AUSKLAPPEN]

TurnEntity cubecam(0),0,90,0
TurnEntity cubecam(1),0,0,0
TurnEntity cubecam(2),0,-90,0
TurnEntity cubecam(3),0,-180,0
TurnEntity cubecam(4),-90,0,0
TurnEntity cubecam(5),90,0,0


Ist da was falsch?

TheProgrammer

BeitragSo, Okt 29, 2006 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

wo wir gerade beim Thema sind möchte ich auch mal ein kleines Cubemapping-Problem von meiner Seite ansprechen:

Wenn ich mich unter der Wasseroberfläche befinde, soll die Wassertexture mir alles, was darüber ist, zeigen.

Code: [AUSKLAPPEN]
PositionEntity cube_cam,EntityX(t\water)-EntityX(camera),EntityY(camera)-2,EntityZ(camera)
      
SetCubeFace t\tex,0
RotateEntity cube_cam,0,-90,180
RenderWorld
CopyRect 0,0,WATER_ReflectionDetails,WATER_ReflectionDetails,0,0,BackBuffer(),TextureBuffer(t\tex)
SetCubeFace t\tex,1
RotateEntity cube_cam,0,0,180
RenderWorld
CopyRect 0,0,WATER_ReflectionDetails,WATER_ReflectionDetails,0,0,BackBuffer(),TextureBuffer(t\tex)
SetCubeFace t\tex,2
RotateEntity cube_cam,0,90,180
RenderWorld
CopyRect 0,0,WATER_ReflectionDetails,WATER_ReflectionDetails,0,0,BackBuffer(),TextureBuffer(t\tex)
SetCubeFace t\tex,3
RotateEntity cube_cam,0,180,180
RenderWorld
CopyRect 0,0,WATER_ReflectionDetails,WATER_ReflectionDetails,0,0,BackBuffer(),TextureBuffer(t\tex)
SetCubeFace t\tex,5
RotateEntity cube_cam,-90,0,180
RenderWorld
CopyRect 0,0,WATER_ReflectionDetails,WATER_ReflectionDetails,0,0,BackBuffer(),TextureBuffer(t\tex)


Bloß wird irgendwie alles spiegelverkehrt angezeigt. Kennt jemand eine Möglichkeit, alles umgekehrt zu rendern?

Mfg
TheProgrammer
aktuelles Projekt: The last day of human being

NightPhoenix

BeitragSo, Okt 29, 2006 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich würde das prompt mit keinem Cubemapping lösen, sondern mit EntityAlpha 0.7 bei einer dunkelblauen Textur für das Wasser. Damit hast du Echtzeit Transparenz im wahrsten Sinne Rolling Eyes Mehr brauch man ja eigentlich nicht mehr sagen, oder? ^^
Du musst halt nur sobald deine Figur unter Wasser ist das Cubemapping ausschalten und ein Alpha wert setzen, Wellenbewegungen und blauer Nebel für Unterwasser.
So würde ich es machen Wink
Allerdings hast du dann ja keine Verzerrung durch die Bewegungen.. mmh.. naja =)
MfG.

TheProgrammer

BeitragSo, Okt 29, 2006 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Verzerrungen hätte ich da schon gerne dringehabt. Wink Gibt es denn keine andere Möglichkeit, wie man das irgendwie lösen könnte?
aktuelles Projekt: The last day of human being

NightPhoenix

BeitragSo, Okt 29, 2006 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst dir ja mal die Cubemap Demo im Samples Ordner anschauen... .da gibt es auch Unterwasser Cubemapping
Finde den Code nur extrem unübersichtlich Confused
MfG.

TheProgrammer

BeitragSo, Okt 29, 2006 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, ich finde da keine Cubemapping Demo. Nur ne Wasser-demo, aber ohne Cubemapping. Kannst du mir mal bitte genau beschreiben, wo sich das befinden soll? ^^
aktuelles Projekt: The last day of human being

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group