Warum wird zur Unterscheidung nicht der Begriff "Ufer" anstelle von Küste verwendet?
Warum wird zur Unterscheidung nicht der Begriff "Ufer" anstelle von Küste verwendet?
Aber an jenem Morgen war es Magie gewesen. Und es hörte nicht auf, Magie zu sein,
nur weil man [inzwischen] eine Erklärung dafür hatte ... (Terry Pratchett)
Brandstifter benötigen keine Streichhölzer, sie zündeln mit Worten.
Wer Brandstifter im Internet duldet und nicht wieder und wieder widerspricht,
darf sich nicht wundern, wenn auch bald sein wahres Leben brennt. (frei nach Max Frisch)
Wäre möglich. Dann am besten noch das "breit" streichen und im Deutschen steht dann "Fluss/Ufer" da.
Ich trage mal meine Erkenntnisse der letzten Tage zusammen auch wenn ich wenig Hoffnung habe das irgendjemand kapiert was ich schreibe und dann noch eine Lösung sieht.
Aber oftmals hilft die Zusammenfassung ja auch dem Ersteller weiter
1. Einleitung zur Klarstellung was die Grafikprobleme verursacht.
Straßen, Flüsse und Features werden alle über NIF-3D-Modelle definiert. Um die Straßen (S) und normalen Flüsse (F)
über meine Fluss-Modelle (NEU) zu schieben habe ich in S und F einen Stencil-Buffer mit dem Wert 100 angelegt und
in NEU werden die Pixel nur überschrieben, wenn der Bufferwert != 100 ist.
2. Das Problem
Unter bestimmten Kammerawinkeln verschwindet NEU und wird nicht mehr angezeigt!
Als Ursache konnte ich die fehlerhafte Weiterverarbeitung des Stencilbuffers bei F identifizieren. Dessen Wert wird bei bestimmten Kamerapositionen auf die Wasserfläche übernommen! Vermutlich wurde im Code an der Stelle das Löschen dieses Buffers unterlassen weil die Coder nicht daran gedacht haben dass dies mal notwendig sein sollte.
3. Darstellung des Problems.
Ich habe zum Testen mal ein einfacheres Model von NEU erstellt, das zwei unterschiedliche Stencil-Filter enthält.
enthält. Im ersten Knoten wird mit "Stencil != 100" gefiltert. Im zweiten Knoten mit "Stencil == 99".
Weiterhin habe ich in river04d.nif den Stencil-Wert nun auf 99 verringert.
Die zwei Stencil-Knoten:
Auf diesen Bildern kann man nun erkennen wie das bei den Problematischen Kamerapositionen aussieht. Man sieht plötzlich die grüne Textur. (Offensichtlich bin ich hier also schon weiter als beim letzten Mal. Dort war noch nichts angezeigt worden )
Am besten wäre immer noch die Lösung, bei der ich es schaffe den Stencilbuffer auf den Wasseroberflächen auf 0 zu belassen. Dafür gibt es ja auch wieder ein Nif....
Abgesehen davon, dass du weit jenseits meines eigenen Kenntnishorizonts arbeitest, finde ich das alles schon ziemlich beeindruckend!
Ja, ist schon ein recht speziellens Problem. Blöd, da kann man kaum nach Hilfe fragen
Schön, ich habe auch einen potentiellen Kandidaten gefunden
• Art/Terrain/water/water.nif geht leider nicht..
• Art/Terrain/waves/[ein paar Varianten] produziert folgendens:
Auf den Wellenkämmen wird die Wüstentextur gezeichnet (sieht im Spiel bewegt recht lustig aus.)
=> D.h. diese Modelle werden im richtigen Augenblick gezeichnet und ich kann vermutlich eine unsichtbare Ebene mit einem neuen Stencil-Wert reinpacken.
Pie's Antikes Europa (PAE): Genieße CIV in der Antike.
PAE - Mythos Antike: Die Geschichte der drei furchtlosesten Herrscher des PBEM 442.
Kingdom of Africa: Auf Abwegen im PB 73
Also gibt es keine derartigen Grafikprobleme, wenn du diesen Stencil-Buffer rausnimmst? Dafür können dann aber Straßen und Flüsse nicht mehr ordentlich über deine Flüsse gelegt werden?Straßen, Flüsse und Features werden alle über NIF-3D-Modelle definiert. Um die Straßen (S) und normalen Flüsse (F)
über meine Fluss-Modelle (NEU) zu schieben habe ich in S und F einen Stencil-Buffer mit dem Wert 100 angelegt und
in NEU werden die Pixel nur überschrieben, wenn der Bufferwert != 100 ist.
Was unterscheidet ein Ufer/Wasser-Feld denn von einem Landfeld, und was unterscheidet ein Fluss-Terrain von Wald?
Bei ersterem die Heightmap?
Genau. Weil diese Objekte früher gezeichnet werden verschwinden sie dann unter dem Modell für den Flussverlauf. Dieses Modell ragt weit in Nachbarfelder hinein. Das Problem ist daher meiner Meinung nach recht bedeutsam. Das Problem betrifft auch den Kreis, welcher die selektierte Einheit umgibt. Der würde bei maritimen Einheiten ohne die Lösung auch unter dem Fluss-Feature verschwinden.
Ein Ufer-Feld ist technisch gesehen ein Küstenfeld. Da bei Terrains nur Texturen geändert werden können, nutze ich hier ein Feature auf dem Feld, um ein 3D-Modell über das Küstenfeld (+Umgebung) zu legen. Auf die Heightmaps habe ich keinerlei Einfluss.Was unterscheidet ein Ufer/Wasser-Feld denn von einem Landfeld, und was unterscheidet ein Fluss-Terrain von Wald?
Bei ersterem die Heightmap?
Der Unterschied zum Wald-Feature ist relativ groß. Wald-Feature werden ausgehend von den Ecken der Plots definiert und
jeder Baum besitzt einen Ankerpunkt über den seine Z-Position bestimmt wird (OFFSET-Werte im NIF).
Beim Fluss-Feature gibt es den OFFSET-Mechanismus nicht, weil das für der TileArtType=TILE_ART_TYPE_NONE nicht vorgesehen ist.
Daher werden hier alle Höhenanpassungen (auch bei den Bäumen) über die Option "ContourGeometry" im NIF vorgenommen.
Ich bin gestern Abend einer Lösung leider nicht näher gekommen.
Ah, ich hab was verstanden. Beim Rauszzoomen auf Wolkenhöhe verschwinden in Civ auch Straßen und alte Flüsse. Und genau das passiert auch mit dem neuen Fluss, weil er den gleichen Wert hat.
Ich hab noch ein hoffentlich kleineres Problem. Bei den Flussvarianten fehlt eine Variante für einen Zufluss eines anderen breiten Flusses (z.B. Main in Rhein) und, falls sich das mit dieser Variante nicht machen lässt, auch eine für eine Deltaverästelung (z.B. Nildelta).
Pie's Antikes Europa (PAE): Genieße CIV in der Antike.
PAE - Mythos Antike: Die Geschichte der drei furchtlosesten Herrscher des PBEM 442.
Kingdom of Africa: Auf Abwegen im PB 73
Verästelungen wollte ich erst einbauen, wenn das ganze läuft. Bis dahin müsstest du dir folgendermaßen behelfen.
Code:Mündung | Küste | Mündung nach | ohne | nach Osten | Deko | Westen --------------------------------- Mündung nach Norden
Geändert von Ramkhamhaeng (31. August 2015 um 11:33 Uhr)
Pie's Antikes Europa (PAE): Genieße CIV in der Antike.
PAE - Mythos Antike: Die Geschichte der drei furchtlosesten Herrscher des PBEM 442.
Kingdom of Africa: Auf Abwegen im PB 73
Also bei Gelegenheit die Engine neu schreiben
Es gibt einen Ordner mit Shadern, aber die sind anscheinend nur für die Animationen verantwortlich. Wobei ich kaum glaub, dass die Heightmaps in der .exe hardcoded sind.
Heightmaps sind tga-Dateien, aber hardcoded sind ihre Namen/Anzahl.
Habe eine Frage zu
- Drehen sie das Mausrad oder drücken Sie [BILD AUF]/[BILD AB] um den Zoomfaktor der Kamera zuändern
Ist es richtig das einige Probleme mit dieser Funktion zutun haben?
Wenn ja warum wird dann nicht festgelegt wie weit man bei PAE herauszoomen kann?
Warum nicht das herauszoomen z.b auf 5 Stufen beschränken und die Grafiken entsprechend anpassen?
Markus1978
Markus1978
PAE-Neuling
Storys:
Abgeschlossene Storys: Wo: Civ4 - Einzelspieler-Storys Titel: PAE Julius Caesar - Sieg oder Niederlage Ergebnis: Niederlage
Abgeschlossene Storys: Wo: Civ4 - Einzelspieler-Storys Titel: PAE Szenario: PAE_LimesGermanicusSmall - Chaos ohne Ende wie man es nicht macht! Ergebnis: Sieg
Davon abgesehen dass der Vorschlag illusorisch ist: Die Probleme haben nicht direkt mit dem Kamerawinkel zu tun. Sie werden nur unter gewissen Kamerawinkeln sichtbar.
Geändert von Ramkhamhaeng (07. September 2015 um 14:04 Uhr)
Die zwei Hauptprobleme konnte ich nun mit Workarounds lösen
• Die Felder werden beim Start nun korrekt angezeigt.
• Flüsse und Straßen liegen über dem Feature, aber das Verschwinden wird nun verhindert.
Details zur Implementierung stehen im Readme unter Terrain/features/RiverPackV8. Auszug mit der Lösung für das zweite Problem:
Code:6. Benutzen von NiStencilProperty für Straßen, normale Flüsse, etc. Da Features von der Rendering-Engine erst sehr spät gezeichnet werden, übermalen sie in der Regel den Untergrund, wenn sie über ihm liegen (bei aktiviertem Z-Buffer). Es gibt allerdings neben dem Z-Buffer noch den Stencil-Buffer und man kann Nif-Modelle mit ihnen ausstatten! Den Flussfeatures wurden damit ein Filter gegeben, der sie auf Pixeln mit einem Stencil-Wert > 1 nicht zeichnet. Damit dies aber eine Wirkung erzielt müssen die anderen Modelle ebenfalls mit einem NiStencilProperty-Knoten ergänzt werden. Das führt zu vielen geänderten Modellen!! Für Straßen, Flüsse und den Einheiten-Selektor habe ich es bereits durchgeführt. Leider gibt es einige Bugs, welche die Verwendung des Stencilbuffers sehr schwierig gestalten. Per try&error wurden folgende Probleme festgestellt. Darunter steht die aktuelle Implemantation, welche diese Fehler versucht zu umgehen. 6.1 In Nifskope scheinen einige Menüpunkte falsch benannt zu sein. Beim Feld "Stencil Function" haben TEST_GREATER, TEST_GREATER_EQUAL, TEST_LESS und TEST_LESS_EQUAL invertierte Auswirkungen, d.h TEST_LESS wirkt wie TEST_GREATER und umgekehrt. Weiterhin fehlen die „Stencil values“ GL_DECR_WRAP und GL_INCR_WRAP. 6.2 Setzt man Stencils bei Straßen und Flüssen so wird in OpenGL die Stencil-Funktion nicht zurück gesetzt! Das führt dazu, dass der letzte verwendete Stencil danach auch auf die Wasseroberflächen angewendet wird, was zu merkwürdigen Effekten führt, wenn man über die Karte scrollt. Je nachdem welche Straßenmodell/Flussmodell als letztes gezeichnet wird, wechselt der Stenciv-Filter. 6.3 Bei Flüssen kommt die Einschränkung hinzu, dass pro Nif nur der letzte gesetzte Stencil zum Einsatz kommt! D.h. im Unterschied zu Straßen kann man nicht einfach einen zweiten, deaktivierten Stencil-Knoten hinzufügen, um das Problem von 9.2 zu beheben. Es wird immer nur der letzte im Nif gesetzte gewählt. Aufgrund dieser Probleme ist es nicht ganz einfach einen Stecil-Filter zu kreieren, der auf Straßen und Flüssen wirkt, aber nicht auf der Wasseroberfläche. Lösungs-Idee: Das Problem von 6.3 kann man entschärfen, indem man dort das River-Base-Mesh verdoppelt und die Stencil-Funktion GL_INCR wählt! Dadurch erhält man dann folgende Stencil-Werte: 0 - Default-Wert, wenn kein Stencilfilter zum Einsatz kam. Kommt auf Land und der Wasseroberfläche vor. 1 - Wert auf der Wasseroberfläche sofern ein Model aus routes/rivers gezeichnet wird. 2 - Wert von Straßen und den BTS-Flüssen >2 - Teilweise überlagern noch mehr Schichten mit dem GL_INCR-Filter und es enstehen höhere Werte. • Straßen-Nifs enthalten zwei Stencil-Buffer. Der erste setzt die Straßen-Pixel auf 2. Der zweite sorgt dafür, dass der erste auf Wasseroberflächen deaktiviert wird. • River-Nifs mit Mündungen enthalten den GL-INCR-Filter und eine doppelte Untergrundfläche. - NiStringExtraData draf nur bei der zweiten Untergrundfläche den String "RiverBase" enthalten. „RiverBase“ sorgt dafür, dass immer die Detail-Textur gezeichnet wird. Ohne sieht es pixelig aus! - Der Stencil-Wert auch erhöht werden, wenn der Z-Buffer-Test fehl schlägt. • Neues Feature-Nif zeichnet Pixel nur für die Stencil-Werte [0,1]. Dafür muss die (falsch be- schriftete) Option "TEST_GREATER" verwendet werden. • In Art/Units/selection effekt/ muss ein Wert >1 gesetzt werden.
Der von Markus hier beschriebene Fehler in der Zivilopädie tritt bei mir nicht auf.
Bugs:
• Man kann nicht auf die andere Seite des Flusses gucken (Feature versperrt die Sicht)
• Die Beleuchtung passt nicht zusammen, wenn man das Flussfeld sieht, aber das Küstenfeld daneben nicht. (sollte sich erledigen, wenn der erste Bug behoben ist.)
• Die BTS-Flüsse ragen teilweise nicht weit genug ins Wasser um den Fluss zu erreichen.
Bilder vom aktuellen Status:
Download:
https://drive.google.com/file/d/0B0S...ew?usp=sharing
Installation: Vor der Installation sollte man sein PAE-Mod-Verzeichnis sichern. Danach muss das Zip-Archiv in das Assets-Verzeichnis aus dem Zip über das von der Mod kopiert werden.
Geändert von Ramkhamhaeng (06. September 2015 um 18:13 Uhr)