SetCubeMode (das Flippen einer Cubemap)
Übersicht

INpacBetreff: SetCubeMode (das Flippen einer Cubemap) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ( ![]() klappt aber bei Cubemaps ebenfalls nicht ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() ![]() 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.... ![]() |
||
![]() |
eizdealer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Poste doch mal ein Screen, ich denke damit wäre wenigstens klar wie die Wirkung ist ![]() |
||
![]() |
FreakForFreedom |
![]() Antworten mit Zitat ![]() |
---|---|---|
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)... ![]() ![]() ![]() 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 ![]() ![]() ![]() 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... ![]() ![]() ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() ![]() ^^ Ich werds mal ausprobieren... 8) |
||
Mfg
F.F.F. "Try and ERROR!" |
![]() |
FreakForFreedom |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
/Post gelöscht, da mein **** Browser ihn irgendwie nochmal beim aktualisieren gesendet hat ![]() 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 ![]() Thx im Vorraus EDIT: schon ok... habe selber das Problem gelöst.. wens interessiert: Multitexturing war die Lösung ![]() |
||
Mfg
F.F.F. "Try and ERROR!" |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group