SetCubeMode (das Flippen einer Cubemap)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

INpac

Betreff: SetCubeMode (das Flippen einer Cubemap)

BeitragMo, Mai 10, 2004 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
hossa!

Als ich mal wieder ein bissl mit den Features von B3D spielen wollte, und ich zuvor SP2 gespielt hatte, kam mir Idee, ich könnte doch das wunderschöne Glas aus SP2 nachsimulieren. Das Glas sieht dann wie folgt aus:
man sieht, wie Glas so an sich hat, alles hinten dran - ist vollkommen transparent, nur ein bestimmter shader daran angewandt, zB wird das ganze dann etwas verzerrt, sodass zB. Riffelglas entsteht.

So, nun hab ich mir Gedanken gemacht, und bin auf das Ergebinis gekommen, ich könnte das ganze mit Cubemapping erledigen, nur eben, dass die FXCam immer um 180 Grad Yaw zusätzlich zu den Standart-Rotationswerten zum Rendern in eine Cubemap gedreht wird.

Das ergebnis ist allerdings, dass die CubeMap denn zwar das hinter dem Objekt zeigt, allerdings dann alles spiegelverkehrt.

So, nun hatte ich gedacht, warum nicht die fxcam auf -1,1,1 scalen. Das hat wunderbar geklappt, die Cubemap wurde nun korrekt dargestellt, es war wie ein transparentes Objekt.

Nur: Dadruch wurde das BackFaceCulling umgedreht: was voher gerdenrt wurde, wird jetzt nicht mehr gerendert.
Das lässt sich natürlich lösen, indem ich die komplette Szene vor dem Rendern in die Cubemap flippe oder Backfaceculling ausschalte.
Aber so geht das ja nicht, wäre unflexibel, rechenaufwändig, und ich müsste jedes kreierte Mesh in einem Handle haben.

So.
Also dacht ich mir, ich kann ja die Texture scalen, auf -1,1..
klappt aber nicht bei Cubemaps.

So.
Also dacht ich mir (Wink), ich kann ja die UVs flippen
klappt aber bei Cubemaps ebenfalls nicht Evil or Very Mad, da das ganze anscheinend selbst seine UV-koordinaten managet.

Des ist sehr sehr doof.

Hat jemand ne Idee, um das Problem trotzdem zu lösen?

PS: Warum ich das ine ine Cubemap rendere, wenn ich auch einfach das Mesh transparent machen kann? Aja, weil ich ja später gewisse "Pixelshader" (natürlich in B3D gecodet, mit WritepixelFast etc) auf die Texture anwenden kann.

hossa
  • Zuletzt bearbeitet von INpac am Fr, Jun 11, 2004 15:32, insgesamt einmal bearbeitet

Markus2

BeitragMo, Mai 10, 2004 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum nimmste dann nicht nen selbst gemachten Cube wo du die
Seiten selber Texturieren kannst ?
Beim Spheremapping hatte ich ein ähnliches Problem ...
Mit dieser negativen Texturescalierung klappte es weil ich dann
auf Spheremapping verzichtet habe ...
 

INpac

BeitragMo, Mai 10, 2004 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm, ich hab selbst schon probiert, cubemapping zu faken, oder einfach nur eine simple texture für diesen effekt zu benutzen, aber das führte nur zu fehlern, es sah einfach nicht mehr aus, als wäre das Entity transparent.


naja, werde dann mal weiter schauen, ob sich da vllt doch noch ne lösung findet - wäre sehr cool.

Markus2

BeitragMo, Mai 10, 2004 23:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannste nicht mal nen Pic zeigen wie es aussehen soll ?
Und was heißt SP2 ?
Vieleicht könntest du auch das Glas mit Raytracing berechnen ?
Ich weiß ja nicht genau was du vor hast ...
 

INpac

BeitragFr, Jun 11, 2004 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
hi.
ich muss den thread einfach noch mal aufgreifen, weil's mir endlich gelungen ist..
Vorerst:
SP ist Splinter Cell 2

Nochmal mein Ziel erklärt:
Ich wollte Verzerrungseffekte darstellen wie in SP2. Also Ich habe ein Glas-Mesh, bestehend aus 4 Vertices, also eine kleine Plane.
Nun kann ich die Verzerrungen nicht durch EntityAlpha dastellen Wink, also suchte ich einen Weg, mit dem ich auf einen Buffer zugreifen kann, um damit rumzuspielen, im Buffer wäre dann ein bild drin, das das, was hinter dem Glas ist darstellt Confused kompliziert erklärt, aber recht simpel..


So, zur gloreichen Lösung kam ich heute Morgen, als ich mir die offi. Hilfe zu SetcubeMode ansah.
Da standen 3 Modis:
- normales Cubemapping
- reelle Spiegelung
- Refraction

Modus 3 bringt die Lösung, er lässt die Geometrie des Meshes im Schatten stehen, und rendert einfach das, was hinter dem Obj. liegt.

Das ist fantastisch!

Bis jetzt sieht es einfach so aus, als ob ich eine plane habe, die EntityAlpha .1 hat, und etwas dunkelgefärbt ist - außerdem sieht es pixeliger aus, durch die CubemapSize von 256...

Der nächste Schritt wäre jetzt eben, einen beliebigen Filter auf den Buffer der Texutre anzuwenden, wichtig dabei ist, das jedes Cubesface beachtet wird, also 6 Durchläufe pro Update!

So kann man dann ganz tolle Verzerrungseffekte machen...


Wenns jemanden interessiert....

Wink

eizdealer

BeitragFr, Jun 11, 2004 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste doch mal ein Screen, ich denke damit wäre wenigstens klar wie die Wirkung ist Wink

FreakForFreedom

BeitragSa, Jan 08, 2005 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe selber mal INpac's Idee ausprobiert... ist ganz lustig der effect...
Aber ich weiss nicht.. kann man die FXCam nicht einfach auf 1,1,-1 scalen und dann hinter das "glas" positionieren? oder wurde das schon probiert?
Bei mir klappts ganz gut... (ein kleiner Vergröserungseffekt ist da... sieht ganz lustig aus)... Question Question Question

EDIT: hmm, obwohl, so anders als setcubemode 2 sieht das auch nicht aus.. nur ein bisl verzerrter... also gleich wieder löschen und setcubemode 2 benutzten Rolling Eyes Rolling Eyes Wink

EDIT2: INpac, wie würdest du es mit den Pixelshader den machen?
Ich habe gelesen (auf blitzcoder.com), das Pixelshader in bb eigentlich gar nicht möglich sind... Question Question Question

EDIT3: hmm, hat vieleicht jmd anderes ne idee, wie man Pixelshader auf eine cubemaptextur packen könnte? Wäre nett, wenn mir da jmd helfen könnte... (probiere schon seit stunden und bin echt voll an der Pfanne zu drehen...^^)
Mfg
F.F.F.
"Try and ERROR!"
 

INpac

BeitragSo, Jan 09, 2005 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Huch, ein reanimierter Thread!

Ja, Pixelshader sind ja eben nicht verfügbar in B3D, aber was du machen könntest wär mit den schnellsten Grafik-Befehlen wie CopyRect und vllt sogar WritepixelFast die Texture zu manipulieren um irgend einen Effekt zu erzeugen.

Glaub, ich kann mich dran erinnern, dass ein Scalen der Cam für ScaleX = -1 die Normals aller Polygone umdreht, und man einen "FlipWorld()"-Effekt erhält... ist aber leider nicht weiter brauchbar Wink

Also nochmal zum Zusammenfassen: Wenn man Glas o.ä. als Texture und nicht etwa als transparentes Entity behandeln will, kann man CubeMode 3 benutzen, und von der aktuellen Main-Camera-Position in die Cubemap rendern.

Habe damit und der BlurTexture()-Function (siehe bloomfilter.bb) lustige Effekte erzeugen können, zB Riffelglas, dass nach oben und unten verzerrt..

FreakForFreedom

BeitragSo, Jan 09, 2005 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, danke für deine schnelle Antwort, INpac...
Aber wieso wundert dich das? Dieser Threat ist doch sehr interessant (finde ich).. also ist er es auch würdig, reanimiert zu werden Wink Laughing
^^
Ich werds mal ausprobieren... 8)
Mfg
F.F.F.
"Try and ERROR!"

FreakForFreedom

BeitragSo, Jan 09, 2005 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hätte dann noch ne Frage: Wie kann ich jetzt auf das Cubemapobject noch eine 2.Textur raufpacken? Es soll so wie ein Kirchenfenster dann aussehen... Leider funtz das textureblend hier irgendwie nicht... (es passiert einfach nichts...)
Mfg
F.F.F.
"Try and ERROR!"

FreakForFreedom

BeitragSo, Jan 09, 2005 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
/Post gelöscht, da mein **** Browser ihn irgendwie nochmal beim aktualisieren gesendet hat Sad grml /

sry für die 3 posts...

Wäre aber trotzdem cool, wenn mir da jmd helfen könnte... ich habe mein entity, das Fenster, und es mit einer cubemap textur überzogen, die auf cubemode 3 steht... Aber nun will ich noch ne 2.textur über mein Fenster ziehen.... jedoch wenn ich das mache (mit textureblend usw.) bringt das nichts... kann mir da pls einer helfen?
Und wenn ich mit dem Texturbuffer der cubemaptex rumspiele, bringt das auch nichts, dann ist eine seite meines fensters ohne cubemapping Sad
Thx im Vorraus

EDIT: schon ok... habe selber das Problem gelöst.. wens interessiert:
Multitexturing war die Lösung Smile
Mfg
F.F.F.
"Try and ERROR!"

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group