Klappt bei 3DGS das d3d_anisotropy nicht?

Posted By: HPW

Klappt bei 3DGS das d3d_anisotropy nicht? - 09/11/08 20:21

Ich habe mich schon immer bei A7 gewundert warum d3d_anisotropy scheinbar nicht ganz das macht was es sollte.
Ist es einfach nur zu schwach in 3DGS vom Wirkungsgrad oder funktioniert es zur Zeit nicht?

Hier ist ein Screenshot der 3DGS mit d3d_anisotropy größer 1 gesetzt (getestet mit 1 bis 30, alles sieht gleich aus) und das Spiel Archlord zeigt.
Man achte auf den Bereich neben der schwarzen Markierung (Linie) auf beiden Screenshots:


Beide Spiele nutzen Anisotropy, nur bei 3DGS ändert es nichts am Pixelrauschen der schräg zur Kamera gerichteten Texturen in der Ferne. Nur genau das sollte doch der Sinn meiner auf dem Screenshot gezeigten Einstellungen sein, oder?
Das Level wurde per FBX Datei in WED importiert. Die Texturen sind 1024x1024. Ich vermute, soweit kein BUG, kommt Anisotropy in 3DGS nicht ganz mit hochauflösenden Texturen auf kleiner Skalierung zurecht?
Sollte das der Fall sein wäre eine zusätzliche Option ganz nett, bei der man die Stärke des Weichzeichnens in die Ferne ändern kann. mip_flat, mip_shaded höher zu setzen ist für mich keine Option, da dann die Texturen nicht nur in der Ferne weicher sondern auch direkt an der Kamera viel zu weich gerendert werden.

Oder mache ich da was falsch? Vielleicht kann mir dann ja jemand einen Tipp geben, wie ich das auch in 3DGS hinbekomme.

Die Skalierung der Texturen entspricht der Level Block Skalierung in WED von 0.1 und mit WED Level Blocks passiert das gleiche, deshalb wirds denke ich nicht am FBX import liegen. Ich habe auch bmp und tga Texturen ausprobiert, blieb aber ohne Erfolg.

Ich habe auch schon DDS Texturen mit dem DDS Plugin von NVidia zum Testen erstellt und in WED werden die so angezeigt wie bei Archlord (wie ich es gerne hätte), aber im 3DGS Spiel selbst ist das Pixelrauschen dennoch auf den Texturen zu sehen.
Rechts auf dem Screenshot mit der roten Schrift drauf ist die DDS Textur und links die gleiche Textur ohne Schrift im BMP format:


Im Spiel mit den gleichen Texturen und Map frisch erstellt (File->Build Map):


Hier noch meine aktuelle konfiguration im Script der Engine Variablen:
Code:
video_depth = 32;
d3d_alphadepth = 32;
d3d_triplebuffer = ON;
d3d_entsort = ON;
d3d_lightres = ON;
vec_set(d3d_pointlightfalloff, vector(1.5, 0, 0));
vec_set(d3d_spotlightfalloff, vector(1.5, 0, 0));
vec_set(d3d_spotlightcone, vector(30, 15, 1));
d3d_vbuffersize = 128;
d3d_texlimit = 2048;
d3d_autotransparency = OFF;
tex_share = 1;
sun_light = 100;
preload_mode = 1;
mip_flat = 1;
mip_shaded = 1;
mip_sprites = 1;
d3d_mipmapping = 3;
d3d_antialias = 0;
d3d_anisotropy = 2;
d3d_alpharef = 128;

Posted By: jcl

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 09:59

Eine 3D Engine kann keine Anisotropie produzieren. Anisotropie ist eine Funktion der Hardware Ihrer 3D-Karte.

Der visuelle Effekt hängt neben der Hardware von andere Faktoren ab, z.B. vom Mipmapping. Unter welchen Bedigungen der Effekt stärker oder schwächer ist, wird vom Treiber der 3D Karte bestimmt. Auf Ihren Screenshots oben kann ich allerdings gar keinen Anisotropie-Effekt sehen.
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 12:47

Ok, klingt schon mal für mich sehr verwirrend. ^^
Mich stört eigentlich nur, das in anderen Spielen das Pixelrauschen der Texturen nicht existiert und bei 3DGS es vorkommt.
Da die Screenshots alle von einem Rechner aus gemacht wurden der eine GeForce9800 GTX mit aktuellsten Nvidia Display Treibern hat.
An den Einstellungen meiner Grafikkarte habe ich nichts geändert und bei anderen Engines (Quest3D, Torque und Ogre3D) kommt das Pixelrauschen trotz hochauflösender Texturen (bei gleichem Rechner und gleichen Texturen) nicht vor.

Zur Anisotropie: Soweit ich das Feature verstehe ist es das Weichzeichnen von Texturen unter einem speziellen Filter, der dafür sorgt dass die Struktur der Textur noch erkennbar bleibt.
Mein Problem hier ist nicht das die Struktur nicht erkennbar wäre, sondern generell, dass das Weichzeichnen nicht viel bringt. Warum das so ist weiss ich auch nicht und genau deshalb frage ich ja nach. Will halt auch mal wieder was dazulernen. wink

Meine Vermutung war halt, dass aus irgendwelchen Gründen d3d_anisotropy nicht funktioniert. Könnte ja sein, dass ich irgendwelche Einstellungen in 3DGS nicht kombinieren darf oder ich die Texturen anderst erstellen muss. Also irgendwas derartiges.

Was mich halt schon stark verwundert ist, dass im WED 3D Fenster die Textur (zumindest im DDS Format) so aussieht wie ich die gerne im Engine Fenster hätte, aber in der Engine karkeine Änderungen an der Textur sichtbar werden, egal auf welchen Wert ich d3d_anisotropy setze. Selbst bei dem Wert 0 ist kein unterschied zu >= 1 zu erkennen. Wie schon erwähnt ist das in anderen Engines nicht so und dort klappt das Weichzeichnen der Texturen wie auf den Screenshots aus meinem ersten Beitrag zu sehen ist.

Wäre nett wenn mir da jemand weiterhelfen kann, bin schon irgendwie am verzweifeln.
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 13:21

Uff, hab (da ich hier an einem anderen Rechner sitze auf dem kein 3DGS installiert ist) mal im Online Manual statt in der deutschen CHM Datei auf meinem Arbeits-PC nachgesehen und jetzt bin ich fast vom Hocker gefallen als ich dort gesehen habe das es einen vierten Wert für d3d_mipmapping gibt.
Bisher habe ich immer nur die ersten drei im Manual gesehen (so auch gestern Abend).
http://www.conitec.net/beta/ad3d_mipmapping.htm
Habe ich jetzt ein altes Manual, oder ist im aktuellen deutschen Manual das noch nicht drin?
Auf jeden Fall teste ich das heute Abend noch mal mit dem vierten Wert und gebe bescheid ob es klappt.

Wie man in meinem ersten Beitrag sehen kann habe ich d3d_mipmapping momentan auf 3 stehen und da wird laut Online Manual kein Anisotropic mipmapping sondern Linear mipmapping verwendet. Hoffe nun das es die Lösung zu meinem Problem ist.

Dennoch verwunderts mich, dass bei einer DDS Textur nicht die Einstellungen des DDS Formats in der Engine verwendet wurden, sondern die allgemeinen Engine Einstellungen für BMP, PCX und TGA Texturen. Sollte das so sein?
Posted By: jcl

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 15:04

Anisotropie hat mit dem Weichzeichnen von Texturen gar nichts zu tun. Ich vermute, Sie verwechseln das mit Mipmapping. In Ihren Screenshots sieht man Mipmapping, aber keine Anisotropie.

Level-Oberflächen haben normalerweise 4 Mipmap-Stufen. Nach meiner Einschätzung sehen mehr Stufen in der Entfernung zu 'matschig' aus. Das ist allerdings Geschmackssache.

Bei DDS-Texturen jedoch wird immer das volle Mipmapping aus der Textur verwendet, so dass Sie hier die Zahl der Mipmaps selbst bestimmen können.

Wie das Ganze im Spiel aussieht, können Sie über mip_flat, mip_shaded und mip_sprites einstellen.
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 15:30

Hmmm, das wird ja immer verwirrender mit der Anisotropie.
Artikel wie hier http://en.wikipedia.org/wiki/Anisotropic_filtering deuten an "...Like bilinear and trilinear filtering it eliminates aliasing effects, but introduces less blur at extreme viewing angles and thus preserves more detail." und das hört sich für mich an als wäre es ein Weichzeichnen wie bei bi- und trilinearem Mipmapping.
Na dann hab ich halt wieder was dazugelernt. smile

Ich könnte eigentlich mal ein Video von dem Übel machen, vielleicht stimmen sie mir dann zu, das es so nicht gut aussieht und mehr Weichzeichnung bei Oberflächen die in Entfernung und in einem starken Winkel zur Kamera geneigt sind es doch viel verbessern würde. Aber selbst wenn mir ein Schauer bei der Vorstellung über den Rücken lauft, mag das wohl Geschmackssache sein. O_o
Vermutlich denke ich auch nur so weil ich das ganze wirklich hier vor Ort sehe und sie bestimmt bei anderen Projekte sowas nicht ganz so extrem gesehen haben.
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 17:09

d3d_mipmapping auf 4 zu setzen hat auch keinen sichtbaren Unterscheid gebracht.
mip_flat und mip_shaded niedriger zu setzen bringt auch bei dem Problem nichts, es hat nur die Texturen direkt vor der Kamera total verschwommen/weichgezeichnet und gerade da sollte es nicht sein, sondern nur bei Texturen die weit von der Kamera entfernt und in Richtung der Kamera geneigt sind.

DDS Texturen haben weiterhin keinen Unterschied zu BMP, PCX und TGA Texturen in der Engine, obwohl ich die DDS Textur mit 13 Mipmap Stufen abgespeichert habe und diese in anderen Engines auch die Mipmap Stufen verwendet.

Posted By: FBL

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 17:15

Warum das mit DDS nicht klappt, weiß ich nicht.

Dein anderes Problem klingt logisch.
Deine Grundtextur hat 1024x1024, d.h. deine mip maps kommen mit 512x512, 256x256 und 128x128 daher.
Deine letzte mipmap ist demnach noch immer relativ hoch aufgelöst, dadurch verliert sie ihre eigentlich Wirkung.
Du bräuchtest also denke ich einfach mehr Mipmaps, und da wäre theoretisch DDS die Lösung.

Warum das nicht geht, da kann ich dir wiegesagt nicht weiterhelfen.

Zu DDS Mipmaps gabs allerdings schonmal einen Thread, da hatte auch jemand Probleme.
Posted By: Joey

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 17:26

macht anisotropie nicht das bild schärfer, statt es zu verwischen? ich finde, das pixelige bild sieht einfach aus als fehlen die mipmaps und das rechte ist ganz normal.
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 19:21

@Firoball: Das gleiche Problem habe ich jetzt mit 512x512 nachgestellt und auch da ist es genauso pixlig, also passt das mit der Logik auch nicht ganz auf mein Problem, wäre aber dennoch logisch.

@Joey: Naja, so wie ich das gelernt bzw. verstanden habe (aus verschiedenen Quellen wie Fachbüchern und Webseiten zu DirectX) ist Anisotropie eine Verbesserung auf Weichzeichnern (bi- und trilineares Mipmapping) und daher bin ich davon ausgegangen, das es weichzeichnet und da aber so Filtert, dass noch einigermaßen scharfe Struktur der Textur zu erkennen bleibt.
Ob das nun stimmt oder ich das immer nur in den falschen Hals bekommen habe ist mal dahingestellt und da vertraue ich jetzt mal auf JCL was er hier schreibt, denn er hat die Engine ja geschrieben. wink

@All: Fällt jemanden noch was ein warum es so ist, bzw. sollte es so sein, dass die Mipmaps fehlen woran das liegen könnte?
Posted By: Pappenheimer

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 20:45

"Das Level wurde per FBX Datei in WED importiert."

Nur so eine Idee zum Testen:

Wie sieht das Ganze aus, wenn du die Datei in MED importierst, bei den Skins unter Skin Settings -> Texture Format -> Mipmaps 'ankreuzt', das dann als mdl speicherst, und dann erst in WED reinholst?
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 21:20

@Pappenheimer: Hab es eben mit Models und mit Levelblocks getestet, bei allen drei Varianten sieht es gleich aus. Nur die Models sind halt heller.
Und als Model mit DDS datei kann man Mipmaps nicht ankreuzen, nur mit der Bitmap als Textur, aber bei beiden das gleiche Aussehen.
Habe sogar 3DGS komplett frisch neu installiert aber auch das hat nichts geändert.

@All: Hier noch meine Einstellungen der Grafikkarte, damit klar ist was da als standard bei den NVidia Treibern eingestellt ist:


Jetzt würde mich auch mal brennend interessieren ob das nur bei mir so aussieht oder bei euch auch.
Wenn es wirklich nur bei mir so aussieht, dann sollte ich wirklich mal forschen ob bestimmte NVidia Karten irgendwelche Probleme in dieser Richtung haben. Nur wenn, dann kann man die beim Programmieren der Engine wohl umgehen, denn wenn andere Engines bei mir das korrekt anzeigen hat das bestimmt auch einen Grund.
Posted By: Pappenheimer

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 21:45

Schade, hatte halt gedacht, dass es daran liegen könnte wie WED den FBX-Import händelt.
ansonsten kann ich nichts dazu sagen, weil ich noch mit A6.341 arbeite und mich nie getraut habe, so große Texturen zu verwenden.
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/12/08 21:54

Wie geschrieben ist es auch bei 512x512 Pixel Texturen so. Denke diese größe sollte mittlerweile ohne Probleme in Spielen funktionieren.

Zu allem Überfluss bin ich noch auf die Idee gekommen meine DirectX Version nachzusehen, falls es da noch neuere 9er Versionen geben sollte von denen ich noch nichts weiss.
Also hier DirectXDiag:

Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/13/08 13:33

Habe jetzt auch mal eines der letzten Projekte von Anderen die ich gedownloadet habe mir angesehen und dort ist das gleiche Problem zu erkennen. Das Spiel ist die PreVa Demo und obwohl die Terrain Textur kaum Kontrast bietet und viel größer skaliert ist kann man dennoch das Problem erkennen. Jetzt weiss ich allerdings nicht wie PreVa eingestellt ist (ob es d3d_anisotropy gesetzt hat und auf was d3d_mipmapping gesetzt ist).

EDIT: Und jetzt habe ich auch noch die Car Demo von der Downloadseite von der 3DGS Homepage getestet bei der trotz sehr hoch skalierter Terrain Textur das Problem immer noch auf längeren Geraden der Strecke erkennbar ist. Danach habe ich die Warehouse Demo getestet und dort habe ich zum ersten mal einen kleinen Unterschied gesehen. Dort ist es "fast" so wie es in anderen Spielen zu sehen ist. Also scheint es wohl irgendwie möglich zu sein. Ich werde mir mal das Projekt genauer ansehen, vielleicht ist dort etwas herauszufinden.
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/13/08 14:41

Hmmm, habe mich geirrt. Leider sah es nur in der selbstablaufenden Demo so aus, als ob es nicht verpixelt. Aber als ich dann den Source getestet habe und die Kamera näher an den Boden bewegte sah man eindeutig das verpixeln. Komischerweise sieht man bei der gekachelten Textur, dass nach einer bestimmten Entfernung erst das Weichzeichnen drauf kommt, aber wenn die Textur dann noch weiter sich von der Kamera entfernt es anfängt zu pixeln. Es wirkt fast so als ob nach ca. 10 bis 20 Metern (relational gesehen in der Demo) nicht mehr noch stärker die Texturen weichgezeichnet werden.
Deshalb habe ich es bisher in jedem Projekt auch nur weit hinten gesehen. Es mag bei den meisten Gebäudeleveln garnicht erkennbar sein, aber bei weiten Aussenleveln sieht es sehr abschreckend aus, je mehr Sichtweite man hat desto verpixelter wird alles bis hin zu einem Pixelbrei. So aber nicht bei anderen Spielen, da sieht man sowas schon länger nicht mehr.
Ich denke fast, das es wirklich nur die Mipmap Stufen sind die bei 3DGS nur 4 sind und damit für weite Aussenlevels mit hochauflösenden Texturen halt nicht geeignet ist. Klar gibts noch die Möglichkeit auf Verwendung von Detailtexturen, aber manche Spiele verwenden die um noch detailiertere Darstellung kurz vor der Kamera darzustellen und nicht um die Texturstruktur erst erkennbar zu machen.

Jetzt würde mich halt nur noch bei DDS Texturen interessieren ob die richtig funktionieren. Also ob deren Mipmap Stufen verwendet werden, denn bei mir sieht das nicht so aus. Gibt es besonderheiten die zu beachten sind? Konnte aus dem Manual nur erkennen das DDS im DXT1 bis DXT5 Format abgespeichert werden müssen. Gibt es also noch andere Merkmale auf die man, bei Erstellung von DDS Texturen für 3DGS, achten muss?

Hier mal ein paar meiner Optionsmöglichkeiten:
- Mipmap Filter Type: Point, Box, Triangle, Quadratic, Cubic, Catrom, Mitchell, Gaussian, Sinc, Bessel, Hanning, Hamming, Blackman, Kaiser. (Default: Triangle)
- Blur Factor: Zahl (Default: 1)
- Override Filter's Default Width: Zahl (Default: 10)
- Mipmap Generation: Generate Mipmaps, Use Existing Mipmaps, No Mipmaps (Default: Generate Mipmaps)
- Mipmap Dropdown: All, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 (Default: All)

Übrigens werden DDS Texturen auf Level Blocks wenn ich mit der Option "Create Meshes" das Level Compiliere (Build Map) nicht dargestellt sondern nur der Block mit der (durchschnittlichen) Farbe der eigentlichen Textur aber überhaupt keine Struktur (Steine).
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/13/08 19:10

Hier habe ich noch mal einen Screenshot von jeder d3d_mipmapping Einstellung gemacht und bei allen sieht man ein starkes verpixeln der Texturen:

Posted By: PHeMoX

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/13/08 19:43

It's your 3D card... I've tested a HD2900XT rig, a X1600XT rig and a Radeon9600XT rig and got the best results on the oldest card. It's quite likely you have a relatively new 3D card.
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/13/08 21:21

Yes I have a NVidia GeForce 9800GTX. The GeForce 9 series is the newest generation of NVidia cards.
But why is it only a problem of 3DGS and not also with other engines?
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/15/08 13:23

Gibt es irgendwelche Möglichkeiten doch eine weichere Darstellung der weiter entfernten Texturen, als die kurz vor der Kamera?
Mit mip_flat, mip_shaded und mip_sprites werden bei mir nicht nur entfernte sondern auch die Texturen nah an der Kamera stark weichgezeichnet. Also sollte es schon was anderes sein.
Posted By: jcl

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/15/08 14:11

Ich werde mir was einfallen lassen - zumal ich gerade gesehen habe, dass die Software die höheren Mipmaps als 4 aus den DDS-Dateien explizit rauswirft. Das wurde vor längerer Zeit so implementiert, damit kleine Texturen, wie 256x256, in der Entfernung nicht so verschwommen aussehen. Bei grossen Texturen ist das von Nachteil.

Wir werden vermutlich eine Variable in das nächste Update einbauen, mit der die Mipmap-Begrenzung eingestellt und abgeschaltet werden kann.
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/15/08 15:42

Das wäre super. smile
Posted By: TWO

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/15/08 20:41

Wie wär's wenn A7 basierend auf der Texturen Größe die Mipmap Stufe wählt?

256x256 -> 4
512x512 -> 5
1024x1024 -> 6

OGRE macht das so und benutzt bei einer 512er Textur sogar schon 9 MMps:
21:45:43: Texture: nskingr.jpg: Loading 1 faces(PF_R8G8B8,512x512x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,512x512x1.
Posted By: HPW

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/15/08 20:57

Also ich fände es toll, wenn man als Spieleentwickler selbst wählen kann wieviele für das eigene Projekt angemessen sind. Nicht jedes Projekt benötigt gleich viele denke ich.
Als Beispiel ein Projekt was eine feste Top-Down- oder eine isometrische Kameraperspektive verwendet wird niemals 13 Mipmapstufen benötigen.
Eventuell wäre da eine Einstellungsmöglichkeit in den Map Properties im WED oder in einem Lite-C Script (je Texturgröße) von 4 bis 13 Mipmaps ganz gut und bei DDS Texturen denke ich sollten soviele verwendet werden, wie es in der DDS-Datei abgespeichert wurde.
Denke das wäre für jeden aus der Community die einfachste und schnellste Möglichkeit damit umzugehen.
Posted By: FBL

Re: Klappt bei 3DGS das d3d_anisotropy nicht? - 09/16/08 06:37

Man muß DDS Texturen auf ejden Fall reguleiren können, sonst hat man das Problem, daß ein Gemisch aus bmp und dds Texturen ein grauenhaftes Ergebnis liefert, da unterscheidliche Mipmap Anzahl.

Und das erklär dann mal nem Neuling...
© 2024 lite-C Forums