wie Wärmebild bei Splinter Cell



  • @nman

    endlich mal einer der was von grafikprogrammierung versteht 🙂



  • Du Hirsch. Hast das Beispiel genau angeschaut. Ist Höchstw*****einlich 16Bit.

    Und du kannst wohl mit GammaRamp die Farben beeinflussen ob 8Bit oder 32Bit.



  • Selber Hirsch.
    Gammaeinstellungen beinflussen das *ganze* Bild.

    Wäre nett wenn einer mal nen Screenshot posten würde 😉



  • Ok, wird gemacht, bis gleich :D.

    cya 🙂

    EDIT: http://magiccreating.netfirms.com/misc/splintscreen.jpg
    Ist nicht sonderlich gut, z.B. fehlen Teile des HUDS 😉

    [ Dieser Beitrag wurde am 09.01.2003 um 18:32 Uhr von MagiC Creator editiert. ]



  • Ich kann auf die Seite nicht connecten 😞

    Edit : Hat zwar gedauert, aber nun hab ichs 🙂

    [ Dieser Beitrag wurde am 09.01.2003 um 18:36 Uhr von Headhunter editiert. ]



  • Vor ein paar Sekunden hat's noch funktioniert... ich lad's schnell noch auf meinen Tripod-Webspace :D.

    cya 🙂



  • Bei mir hat das Laden des Bildes geklappt!
    Das sieht ganz danach aus, als ob die auf eine Textur rendern würden, die eine niedrigere Auflösung als der Back-Buffer hat (verschwommen).
    Dass man alles sieht, kann man ganz einfach erreichen, indem man den Z-Buffer ausschaltet und mit Alpha-Blending arbeitet.



  • Ok:
    http://magiccreating.netfirms.com/misc/splintscreen.jpg
    oder http://mitglied.lycos.de/kellnerdominik/misc/splintscreen.jpg

    cya 🙂

    EDIT: Link ausgebessert...

    [ Dieser Beitrag wurde am 09.01.2003 um 18:40 Uhr von MagiC Creator editiert. ]



  • Hier gibts bessere Screenies 🙂
    http://www.gamershell.com/game/Tactical_Splinter_Cell.shtml

    Den Screenshots nach handelt es sich um eine *wirkliche* Wärmekamera, es handelt sich also um mehr als um eine bloße Render2Textur Funktion.
    Man sieht auch ganz deutlich, dass der eine Terrorist der halb hinter der Wand ist korrekt angezeigt wird (sichtbare Teil hell, das was hinter der Wand ist dunkler)

    Ich denke es handelt sich um einen cleveren Raycaster. Zuerst wird das ganze Level in zartblau gerendert. Das kann man ganz einfach dadurch erreichen dass man die Texturen komplett austauscht, oder man setzt einfach den colorwert der Vertice auf blau.
    Auch alle Spieler werden blau gesetzt (jedoch ein bissel heller als der Rest)

    Je nach Entfernung Objekt->Spieler wird die Farbe des Gegners auf eine der Regenbogenfarben gesetzt. D.h. : Gegner sehr weit weg : Farbe hellblau. Gegner Mittelweit : Grüner Gegner, sehr nah : rot. Jedoch wird ein Minimalwert nie unterschritten, so dass der Gegner auf jeden Fall heller ist als der Rest der Welt/des Levels.

    Die Entfernungsberechnung ist sehr einfach zu implementieren, und kann auch recht gut optimiert werden, so dass die Performance akzeptabel bleibt.
    Man verwendet dafür eine vereinfachte Raycastingtechnik, man kann also ziemlich easy testen ob ein Hindernis zwischen dem Spieler und dem Gegner liegt. Falls ein Hindernis vorhanden ist, wird die Leuchtintensität des Terroristen einfach was runtergerechnet.

    Optimiert werden kann das ganze z.B. dadurch, dass man Playermodels mit sehr wenigen Polygonen verwendet. Viele Details entfallen ja eh durch die Wärmesicht. Weiterhin reicht es sehr wenige Rays zu casten. Wenn man die ganze Szene noch in ne ziemlich kleine Textur rendert, kann man sie nachher schön skalieren, und der Unschärfeeffekt tritt auf.

    So stell ich mir das vor, kann auch sein dass ich total falsch liege...



  • Ich würd sagen, die berechnen aus Sichtvektor und Normale das Dotprodukt und daraus dann die Texturekordiaten. Die Textur ist dann einfach ein Blau-Grün-Gelb_rot Verlauf. Das ganze könnte man in ne Texture rendern und dann z.b. vielmal versetz auf Screen bringen, wodurch sich der Blur ergeben würde. Wenn man das mit einer zweiten verrauschten Schwarzweiss Textur "MODULATE"d, hat man noch das rauschen. Also so würde ich das zumindest versuchen, wenn ich das machen sollte. 😉



  • Das wär doch was nen Splinter-Cell look alike contest. 😃



  • Es wird langsam lästig. Ich komme wieder wenn es eine Registrierungspficht gibt.

    [ Dieser Beitrag wurde am 10.01.2003 um 00:27 Uhr von Nils Holgerson editiert. ]



  • Das ist niemals Raycasting! Wenn die das in Echtzeit schaffen würden, dann müssten Sie schon einen Preis dafür gewinnen! 😉 Man weiß ja, wie komplex solche Berechnungen sind. Dann kommen noch animierte Figuren hinzu usw..



  • Also jetzt wo ich die Screens seh, halte ich das eher für ne stumpfe RGB Trennung mit ein bisschen Alpha-Blending.
    Die schalten die Rot und Grün Kanäle weg (einzelne Pixel - Und in Abhängigkeit der Entfernung) und spielen ein bisschen mit den Textur-Filtern damits so verschwommen aussieht.

    [ Dieser Beitrag wurde am 10.01.2003 um 10:03 Uhr von Cpp_Junky editiert. ]



  • Tomas : Es *muss* Raycasting sein, wieso sonst wird der eine Terrorist (korrekterweise) an der einen Seite dunkler dargestellt ?
    Natürlich reicht es sehr wenige Rays zu verschießen, das hab ich bei meinem eigenen Lightmapper auch so gemacht. Wenn man das dann noch skaliert & irgendeinen HW-Filter drüberschmeißt sieht das ziemlich schick aus 🙂

    Ich habe ja schon gesagt, es reicht wenn man sehr dtailarme Playermodels für die Wärmesicht verwendet. Wenn man pro Playermodel 100 Rays schießt (was imo recht viel ist) kriegt man den Effekt ziemlich locker hin.

    Für die Raymethode spricht schon die Tatsache, dass weite Player dunkler sind als nahe Player. Player hinter Wänden werden auch gezeichnet. Da kommt doch fast nur Raycasting in Frage (gemischt mit Alphablending natürlich 😉



  • Nee nee, mit Sicherheit nicht...
    Das geht auch noch anders. Es muss keinesfalls Raycasting sein. Man kann z.B. mit Shadern arbeiten. Vertex-Shader können ja auch per Software emuliert werden, das ist kein Problem. Da kannst Du dann auch die Farbe anhand von der Entfernung setzen. Für die Durchsichtigkeit nimmt man wie gesagt Alpha-Blending und schaltet den Z-Buffer ab.



  • Achso, ja, mit Nebel geht es sogar ganz ohne Shader. Da kannst Du es auch erreichen, dass weiter entfernte Objekte dunkler sind.



  • Wieso bist du unangemeldet ??

    Das sind sicherlich keine Shader. Es gibt immer noch das Problem dass der eine Kerl hinter der Wand nur halb-hell ist 🙂

    Außerdem konnte schon Alien Vs Predator I Wärmebilder darstellen, und da gabs noch keine Shader 🙂 Ich weiß aber nicht (mehr) wie detailliert das dort war..



  • Der ist nur halb-hell weil die Wand mit Alpha-Blending drübergezeichnet wurde! Bin unangemeldet, weil ich in der Schule bin...



  • Dito, hab grad ne Freistunde 😉

    Und wie erklärst du dir, dass die ganz nahen Gegner rot sind, und die weiter entfernten blau oder grün ? Mmh, kann man mit ner simplem Entfernungsberechnung machen (Distance Gegner.vertex zu Player.position).

    Aber was ist hiermit :
    Gegner würde grün gezeichnet, da er 10m weiter weg ist. Jedoch ist er halb hinter der Wand, die eine Hälfte wird blau gezeichnet. Hmm, da brauchst du aber Raycasting 🙂

    Sonst klingt deine Erklärung aber sehr plausibel !

    So, jetzt geh ich aber in die Pause (=>in die Kälte 😮)


Anmelden zum Antworten