Im Spiel herrscht an den meisten Orten (bis auf die unmittelbare Umgebung von Windsäcken am Flughafen) Windstille. Rauch steigt senkrecht nach oben und verbläst nicht - und das ist in der Realität nicht so. Das Spiel würde viel an Realismus gewinnen, wenn Rauch auch eine horizontale Komponente erhielte.
Das könnte man simulieren, indem man den individuellen Rauchgeneratoren nicht nur eine Ausstoßgeschwindigkeit entlang der Z-, sondern auch entlang der X- und Y-Achsen einträgt. Aber das würde nicht gut aussehen: sobald man zwei gleiche Häuser gegenüber auf verschiedenen Straßenseiten stehen hat, würde bei dieser Methode der Rauch des einen Hauses genau in die entgegengesetzte Richtung des anderen ziehen. Verschiedene Modelle verschiedener Modder würden hier auch unterschiedlich aussehen, solange es keine verbindliche Konvention gibt. Kurz gesagt: es würde ein unansehnliches Chaos entstehen.
Aber es geht auch anders. Daran, daß die Rauchgeneratoren und ihre Achsen fest an ihren Objekten/Fahrzeugen hängen, führt kein Weg vorbei. Um hier den Eindruck von Wind zu erzeugen, müßte man die Vektoren aller Rauchquellen mit einem weiteren globalen Vektor parallel zur XY-Ebene überlagern. Wenn die Ausrichtung/der Kurs eines Modells und damit der XYZ-Achsen seiner Rauchgeneratoren bekannt ist , dann sollte man mit einfachen Winkelfunktionen und Multiplikationen hier einen Windvektor hineinmischen können.
Das würde in etwa so aussehen:
Sei (X, Y, Z) der Vektor des Rauches aus dem Rauchgenerator.
Diese Werte sind bekannt, da sie in jedem Rauchgenerator definiert werden.
Sei (Xglobal, Yglobal, 0) der allen Rauchquellen zu addierende Vektor.
Diese Werte wären global zu definieren.
Seien α, β, γ die Winkel zwischen den X-, Y, - und Z-Achsen eines Modells und denselben Achsen der Welt.
Diese Werte müssen in der Game-Engine vorhanden und somit bekannt sein.
Sei (Xeff, Yeff, Zeff) der resultierende effektive Vektor, der unter Einwirkung des Windes (XGlobal, YGlobal, 0) anstelle (X, Y, Z) für den Rauchgenerator zu verwenden ist.
Dann ist:
Xeff = X + Xglobal * cos α + YGlobal * sin α
Yeff = Y + YGlobal * cos β + XGlobal * sin β
Zeff = Z (da der Wind keine vertikale Komponente hat).
Mathematisch ist das also nicht allzu schwer darstellbar. Gut aussehen würde es sicher auch.
Möglich ist, daß das zunächst, ohne Update durch UG, einmal nur für statische Gebäude möglich ist, da ein Rauchgenerator als Teil der .mdl nicht regelmäßig neu geladen wird.
Kann man das dem Spiel beibringen?