Mehrere Texturen für Terrain



  • irgendwie hab ich einwenig das Gefühl wir reden aneinander vorbei...

    Oder du nimmst eine große Textur für das gesamte Terrain, die halt schon so aussieht, wie sie aussehen soll.

    Genau da besteht ja der Kern der Sache: Genau so soll es nicht gemacht werden. (sofern möglich)

    Du kannst doch auch die gewünschten Primitives einzeln texturieren

    Ich will keine Primitives texturieren sondern einzelnen Vertices/Faces eines Meshs unterschiedliche Texturen zuweisen und wie/ob das geht würde ich gerne wissen.



  • Schreib dir einen Satz von Shadern der anhand der Worldspace y-Koordinate der Face-Normale zwischen deinen Texturen blendet. So wirds normalerweise gemacht. Evtl. kann man auch sehr einfach was mit Volumentexturen basteln...



  • Flori() schrieb:

    Faces eines Meshs unterschiedliche Texturen zuweisen

    Mach SetTexture und rendere dann das Face.


  • Mod

    du kannst per vertex oder mittels einer blendmap zwischen verschiedenen texture layern blenden, so bist du geometrie unabhaengig (da terrain oft LODs verwendet und du kein shading/blending unterschied haben moechtest nur weil es weniger vertices werden).

    siehe:
    http://udn.epicgames.com/Three/TerrainAlphamaps.html



  • ich danke rapso und dot schonmal für ihre Vorschläge

    Bevor ich mich da jedoch ans probieren mache hätt ich zunächst noch eine Frage zu der von mir bisher verwendeten "Lösung". Ich habe ein Bild als Textur geladen, das 4geteilt ist in 4 verschiedene Texturen. Nun habe ich die Texturkoordinaten folgendermaßen vergeben:

    Vertex[i].u = (x%6)*0.1f;
    if( Vertex[i].Pos.y > 150.0f )
      Vertex[i].u += 0.5f;
    Vertex[i].v = (z%6)*0.1f;
    

    Das Ergebnis sind allerdings häßliche Streifen an den Rändern, die wohl durch den Sprung von 0.5f zurück auf 0.0f kommen. Hier ein Bild:
    http://www.bilder-hochladen.net/files/big/4stq-3f.jpg

    Hat vllt dazu jemand eine Idee (ob man was gegen die Streifen unternehmen kann)?


  • Mod

    mach das modulo weg und stell dein texture mode auf wrapping/repeat um, dann machst dass die graphikkarte automatisch, per texel.



  • Naja die kommen wohl daher dass das mit dem Wrapping so nichtmehr wirklich funktioniert, ist die Textur denn überhaupt Tileable? Aber wenn das ganze statisch sein soll kannst dus evtl. wirklich so machen wie ich vorgeschlagen hab: Pack deine Texturen in die Schichten einer Volume Texture. Deine Vertices bekommen dann einfach 3D Texcoords wobei u und v bleiben was sie immer waren und mit w wählst du deine Schicht aus. Damit funktioniert das Wrapping und du bekommst als Folge des Texture Filtering automatisches Blending zwischen den verschiedenen Texturen...



  • rapso schrieb:

    mach das modulo weg und stell dein texture mode auf wrapping/repeat um, dann machst dass die graphikkarte automatisch, per texel.

    Nachdem er jetzt offenbar einen Texture Atlas verwendet gibts natürlich kein Hardware Wrapping mehr...



  • Fuers erste waer wohl doch erstmal das effektivste, einfach jedes Face mit der passenden Textur zu zeichnen, wie es die Frage urspruenglich ja besagte...


  • Mod

    dot schrieb:

    Naja die kommen wohl daher dass das mit dem Wrapping so nichtmehr wirklich funktioniert, ist die Textur denn überhaupt Tileable? Aber wenn das ganze statisch sein soll kannst dus evtl. wirklich so machen wie ich vorgeschlagen hab: Pack deine Texturen in die Schichten einer Volume Texture. Deine Vertices bekommen dann einfach 3D Texcoords wobei u und v bleiben was sie immer waren und mit w wählst du deine Schicht aus. Damit funktioniert das Wrapping und du bekommst als Folge des Texture Filtering automatisches Blending zwischen den verschiedenen Texturen...

    damit wuerde mipmapping nicht mehr funktionieren und blenden wuerde auch nur zwischen den 2 benachbarten layern klappen, also recht eingeschrenkt nutzbar bei terrain.

    Nachdem er jetzt offenbar einen Texture Atlas verwendet gibts natürlich kein Hardware Wrapping mehr

    das hatte ich ueberlesen.
    dann muss man im pixelshader einmal frac(...) auf die koordinaten anwenden.



  • rapso schrieb:

    damit wuerde mipmapping nicht mehr funktionieren und blenden wuerde auch nur zwischen den 2 benachbarten layern klappen, also recht eingeschrenkt nutzbar bei terrain.

    Korrekt, aber es ist sehr einfach zu Implementieren, am Besten würde man das natürlich im Shader machen, aber ich vermute mal dass er noch die FFP verwendet...


Anmelden zum Antworten