Wie würde man einen realistischen „Infrarot-Vision“ -Effekt konstruieren?

20

Wie würden Sie einen realistischen Infrarot-Vision-Effekt mit Shadern erstellen? Mit realistisch meine ich eine, die realistisch aussieht , wie dieses Beispiel .

Ich habe eine Idee, eine Textur zu erstellen, um zu bestimmen, wie viel Wärme ein Material abgibt, und dann mithilfe des Skalarprodukts von Normal und Sichtvektor zu bestimmen, wie viel Wärme den Betrachter erreicht, aber ich bin mir nicht einmal sicher, ob dies das thermische Sehen ist Ich wollte überprüfen, ob es einen besseren Ansatz gibt, bevor ich anfange, etwas zu implementieren, das möglicherweise völlig falsch ist.

Mikael Högström
quelle
3
nah mit infrarot kann man davon ausgehen, dass alles ein diffuser strahler mit unterschiedlicher intensität ist, also dividiere einfach mit dem quadrat den abstand, um näher liegende gegenstände heller erscheinen zu lassen
ratschenfreak
Packen Sie einfach die thermischen Werte in die Textur. oder haben Sie eine separate Textur, wenn Sie es weiterentwickeln möchten.
Tordin
1
@ratchetfreak: Sie müssen nur für Punktquellen (oder Dinge, die Sie als Punktquellen approximieren) durch das Quadrat der Entfernung dividieren. Bei erweiterten Objekten sollten Sie die Luminanz (Lesen: Helligkeit pro Pixel) konstant halten, während der vom Objekt abgedeckte Raumwinkel (Lesen: Anzahl der Pixel auf dem Bildschirm) aufgrund der Perspektive als umgekehrtes Quadrat der Entfernung abfällt.
Ilmari Karonen

Antworten:

25

Es gibt IR und dann gibt es IR. Der Bereich der Lichtwellenlängen, der üblicherweise als " Infrarot " bezeichnet wird, erstreckt sich vom Rand des menschlichen Sichtbereichs (ca. 700 nm) bis zu 1 mm = 1.000.000 nm.

Philipps Antwort ist richtig für "nahes Infrarot" -Licht (ca. 700 bis 1.400 nm), das im Grunde wie normales sichtbares Licht ist, außer dass es für das bloße menschliche Auge unsichtbar ist. Um das Sehen im nahen Infrarot zu modellieren, müssen Sie lediglich die Objekttexturen und Lichtquellenfarben durch alternative ersetzen, die ihre Reflexionsgrade und Lichtintensitäten bei anderen Wellenlängen als gewöhnlich modellieren

Aufgrund des Wortlauts Ihrer Frage und des Videos, auf das Sie verlinkt haben, scheint Sie jedoch eher der Bereich "thermisches Infrarot" (8.000 bis 15.000 nm) zu interessieren, der dem Peak des Wärmestrahlungsspektrums der meisten alltäglichen Objekte entspricht einschließlich des menschlichen Körpers. Diese Strahlung verhält sich in den meisten Fällen immer noch wie "Licht" und kann mithilfe von Standard-Computergrafiktechniken modelliert werden (im Gegensatz zu Radiowellen , bei denen die Wellenlängen so lang werden, dass die Standardannahmen der Strahlenoptik zu brechen beginnen), aber die Welt wie gesehen im thermischen Infrarot hat seine Besonderheiten:

  • Wie oben erwähnt, leuchten die meisten Objekte im thermischen IR. Für sichtbares Licht kann man im Allgemeinen davon ausgehen, dass es nur wenige tatsächliche Lichtquellen gibt, während alles andere nur das von anderen Quellen emittierte Licht reflektiert. Beim thermischen IR ist abhängig von der (den) gewählten Wellenlänge (n) oft das Gegenteil der Fall.

  • Umgekehrt absorbieren die meisten Oberflächen auch thermisches IR ziemlich effizient. Dies erwärmt sie wiederum und lässt sie selbst mehr IR emittieren. Tatsächlich ist es so, als ob fast jede Oberfläche phosphoreszierend wäre .

  • Das von den meisten Oberflächen emittierte thermische IR-Spektrum (dh "Farbe") hängt hauptsächlich von ihrer Temperatur ab. Das intrinsische Emissionsvermögen des Oberflächenmaterials hat zwar auch einen Effekt, ist jedoch relativ begrenzt.

Im Vergleich zum normalen Lichtsehen erfordert die Modellierung eines realistischen thermischen Infrarotsehens eine stärkere Betonung der globalen Beleuchtung und der sich dynamisch ändernden Emissionsgrade. Abhängig von Ihrer Einstellung können Sie hier möglicherweise ein wenig schummeln: Bei statischen Szenen können beispielsweise die Funktionen für die globale Strahlungswärmeübertragung einmal vorberechnet und in eine statische Lichtkarte eingebrannt werden , genau wie Sie dies tun würden, um die globale Beleuchtung vorzutäuschen das sichtbare Spektrum.

Wenn Sie die Ansicht durch eine Thermografiekamera in Ihrem Spiel simulieren möchten, empfehle ich mindestens Folgendes:

  • Zeichnen und / oder berechnen Sie spezielle IR-Emissions- und / oder Reflexionsgrad-Texturen für Ihre Objekte. Achten Sie besonders auf das Emissionsvermögen warmer Gegenstände (wie Menschen oder Maschinen), die ihrer Oberflächentemperatur entsprechen sollten. Das Reflexionsvermögen ist relativ unwichtig.

  • Sie möchten wahrscheinlich nur einen einzigen Spektralkanal verwenden (dh alles in Schwarzweiß zeichnen), der dem gesamten thermischen IR-Fluss entspricht. Sie können das Bild nachbearbeiten, indem Sie die resultierenden Graustufenwerte in einen Falschfarbverlauf umwandeln, um die für Wärmebilder verwendete herkömmliche Dichteschneidung zu simulieren .

  • Überlegen Sie sich, die Temperatur Ihrer Oberflächen explizit zu verfolgen, sodass beispielsweise ein Punkt auf dem Boden, auf dem eine Person lag, eine Weile warm bleibt (und daher im IR leuchtet), auch nachdem die Person weggezogen ist. Es gibt verschiedene Möglichkeiten, wie Sie damit umgehen können (z. B. Temperaturverfolgung pro Scheitelpunkt, Hinzufügen von Abziehbildern für vorübergehende lokale Temperaturänderungen usw.), wobei zwischen Realismus und Berechnungskosten unterschiedliche Kompromisse eingegangen werden. Sie wahrscheinlich nicht brauchen , um es zu machen sehr realistisch, aber auch diesen Effekt vorhanden, die überhaupt eine nette Geste wäre.

Ilmari Karonen
quelle
+1 wirklich gute Antwort! Besonders gut gefällt mir Ihr letzter Punkt, an den ich gar nicht gedacht habe, und ich glaube, Sie haben Recht. Dies würde zu einer sehr netten Note führen, die sogar dazu beitragen könnte, die Aufmerksamkeit des Benutzers von der Tatsache abzulenken, dass der Rest möglicherweise nicht ganz realistisch ist.
Mikael Högström
Beide waren gute und hilfreiche Antworten, aber Ihre haben mir ein wenig geholfen, indem Sie mich darauf hingewiesen haben, verschiedene Wellenlängen des IR-Spektrums zu betrachten und die Emissionsgrade dynamisch anzupassen. Aber woher zum Teufel wusstest du das alles über etwas, das so weit von Game Dev entfernt ist? Ich habe im wirklichen Leben mit IRVs gearbeitet und wusste nicht die Hälfte davon :)
Mikael Högström
Wikipedia. :) Nein, im Ernst, ich wusste, dass nahes IR nicht dasselbe ist wie thermisches IR, und ich war an Raytracing und anderen ausgefallenen Rendering-Techniken interessiert, daher wusste ich, dass sie Anwendungen zur Modellierung der Strahlungswärmeübertragung hatten. Den größten Teil des Restes habe ich nur nachgesehen. Das mit dem thermischen Abdruck war etwas, worüber ich einmal ein YouTube-Video gesehen habe, glaube ich.
Ilmari Karonen
11

Was Sie normalerweise von der Welt aus sehen, ist der visuelle Teil des Lichts, der von Objekten reflektiert wird. Ein grünes Objekt reflektiert nur grünes Licht, ein rotes Objekt nur rotes Licht und ein blaues Objekt nur blaues Licht. Infrarot kann als vierte Farbe betrachtet werden, die Ihre Augen nicht wahrnehmen können. Eine Infrarotkamera macht Infrarotlicht für Sie sichtbar, indem sie es mit einem Sensor wahrnimmt und das Infrarotbild in sichtbare Wellenlängen umwandelt.

So wie einige Materialien in Rot, Grün oder Blau mehr oder weniger hell sind, sind sie auch im IR unterschiedlich hell. Die IR-Helligkeit kann, muss aber nicht unbedingt der Helligkeit im sichtbaren Licht entsprechen.

Hier ist eine Szene im sichtbaren und im IR. Beachten Sie, dass die Blätter der Bäume im IR viel heller sind als die Stämme, die IR-Helligkeit der verschiedenen Teile der Fassade des Gebäudes jedoch im sichtbaren und im IR-Licht ähnlich ist.

Sie können zwei Versionen aller Ihrer Texturen erstellen: eine RGB-Textur für sichtbares Licht und eine alternative monochrome Textur für Infrarot. Im normalen Modus verwenden Sie die RGB-Textur und im IR-Modus verwenden Sie die IR-Textur.

Sie können auch in Betracht ziehen, im IR-Modus verschiedene Lichtquellen zu verwenden. Die Sonne erzeugt so viel IR-Licht wie sichtbares Licht. Künstliche Lichtquellen (wie Halogenlampen oder Leuchtdioden) erzeugen jedoch nur wenig oder fast kein IR-Licht, sodass sie nichts im Infrarotbereich beleuchten. Andererseits gibt es Lichtquellen, die im IR viel stärker sind (wie offenes Feuer) oder nur im IR sichtbar sind (heiße Objekte, die nicht heiß genug sind, um rot zu leuchten. Oder künstliche IR-Lichtquellen. Wussten Sie, dass Sie dies getan haben? Tragen Sie eine IR-Schutzbrille, können Sie eine TV-Fernbedienung als Taschenlampe verwenden?). Unterschiedliche Lichtverhältnisse bei normalem und IR-Licht könnten ein interessantes Gameplay-Element sein.

Philipp
quelle
Nie wirklich IR-Lichtquellen in Betracht gezogen. Ich schätze, Sie könnten mit dem Zurücksetzen der IRVs ein paar nette Effekte erzielen, wenn Sie direkt auf eine IR-Quelle schauen ...
Mikael Högström,
Das Foto oben ist UV, bietet aber dennoch einige coole Effekte für UV- oder Infrarot-Nachtsicht. Das hat mich zum Nachdenken gebracht, weil ich kürzlich einen Wärmebild-Shader getestet habe, der ziemlich cool aussieht.
SICGames2013
2
@ SICGames2013 Warum denkst du, ist es ultraviolett? Ich habe es aus dem Wikipedia-Artikel über Infrarotlicht erhalten . Die Bildbeschreibung besagt, dass die Wellenlänge von 700-1000 nm angezeigt wird.
Philipp
Der Bereich 700-1000 ist Infrarot, aber das Bild oben sieht nur wegen des Purpurs ultraviolett aus. Infrarotkameras wie Sony oder Militärtypen haben entweder einen weißgrauen Kontrast oder sind nur tiefer im Infrarotspektrum und erfassen Körperwärme. Abbildung des Temperaturbereichs einer Person über eine Farbpalette. Mit Sony Nachtsicht ist es grau, aber jetzt, an einem Tag, bringen sie eine grüne Färbung auf. Militärische Nachtsichtbrillen sind grün getönt, damit der Benutzer die Bilder besser sehen kann, nachdem die Elektronen auf den Phosphorschirm am hinteren Ende der Röhre gestoßen sind.
SICGames2013
1
@ SICGames2013 Wenn Sie ernsthaft glauben, dass es das Ultraviolettspektrum zeigt, weil das Bild einen violetten Farbton aufweist, haben Sie die Bedeutung von "infra" oder "ultra" in diesen Begriffen nicht verstanden.
Philipp