Texturierungsproblem
-
Hallo zusammen
Ich kämpfe momentan mit einem merkwürdigen Problem. Ich habe zwei Bilder:
Kein Filter: http://www.kyrosoft.ch/TextureProblem/filter_none.JPG
Linear Filer: http://www.kyrosoft.ch/TextureProblem/filter_linear.JPGWie man sehen kann, gibt es beim linearen filtering sehr hässliche Artefakte, welche vermutlich dadurch entstehen, dass der Sampler eben noch Pixel für die Farbinterpolationen hinzuzieht, welche gar nicht mehr zum aktuellen "Objekt" gehören. Wenn man sich folgende Textur ansieht, wird es wohl klarer:
Textur: http://www.kyrosoft.ch/TextureProblem/Texture.JPG
Wie könnte man dieses Problem denn lösen resp. wie macht man denn das fachmännisch, so dass dieses Problem nicht entsteht? Ich stehe gerade recht auf der Leitung
Mfg Samuel
-
vermutlich moechtest du dass der rand den selben texel zweilmal benutzt zum interpolieren, entsprechend setzt du den einfach noch einmal ueber den rand hinweg.
-
wie macht man denn das fachmännisch, so dass dieses Problem nicht entsteht?
Man definiert die Texturkoordinaten eben so, dass kein Texel ausserhalb des spezifiziert Bereichs einfluss nehmen kann indem man am Rand genau im Texelzentrum sample't.
-
@rapso
OK, das leuchtet ein (hatte gehofft, es gibt einen einfacheren Weg) :p Aber wie mache ich denn das bei den Abrundungen an den Kanten?@hellihjb
Möglicherweise habe ich dich falsch verstanden, aber ist dies nicht nur für eine bestimmte Auflösung möglich?
-
Also ich kenne das Problem auch. Ich hab das ganze so gelöst das ich das 4Eck fürs Interface einfach in jede Richtung um 0.5 erhöht so das die Randpixel zu 100% dem zu zeichnenden Objekt gehören. Da sis glaube auch das was hellihjb meinte.
-
Ishildur schrieb:
@rapso
OK, das leuchtet ein (hatte gehofft, es gibt einen einfacheren Weg) :p Aber wie mache ich denn das bei den Abrundungen an den Kanten?wenn deine textur fertig ist, gehst du jeden pixel durch und pruefst ob er schon einen validen farbwert hat (z.b. indem du dir im alpha channel merkst das etwas gesetzt ist).
falls nicht, dann setzt du die durchschnittsfarbe seiner (validen)nachbarn.
du kannst das in mehreren durchgaengen machen bis alle "invaliden" pixel valide sind.
das ist ein beispiel dafuer.
keywords fuer google sind dilate or dilation (mit image/texture/pixel etc)@hellihjb
Möglicherweise habe ich dich falsch verstanden, aber ist dies nicht nur für eine bestimmte Auflösung möglich?ja, dafuer musst du
a) die aufloesung wissen
b) regular grid geometrie haben, weil du ansonsten ueber die schraegen kanten hinweg nicht im texelcenter bist.
c) wissen welche api dafuer benutzen wird.bei msdn gibt es ein paar dinge zu pixelcenter, falls du es dir anlesen willst