neue foliage hinzufügen, Shader Channel Belegung der foliage

  • Hi,


    bin gerade dabei neue Früchte in eine LS13 Map einzufügen. Jedoch hat sich der Shader und (ich denke das es damit zusammen hängt) auch die Aufteilung der Textur in foliage für die einzelnen Wachtumsstufen geändert. Meine Früchte, eher gesagt das Grass, war vorher also foliage.dds so aufgeteilt wie die foliage_meadow_diffuse.dds aus LS 2011. Ist ja soweit das gleiche Layout wie beim Getreide aus 2011. Sprich horizontal in 4 Zeile aufgeteilt.


    Im neuen LS 2013 wird die Texture aber irgendwie anders aufgeteilt. Die neue Grass Texture z.B. ist in 3 Zeilen aufgeteilt. Jede Zeile ist dann nochmal in 4 Spalten aufgeteilt. Somit ist hier meiner Meinung nach die Texture viel zu groß geraten, da sich die Texture in den Spalten wiederholt. Wenn man z.B. die niedrigste Wachstumsstufe anwählt greift er auf die untere Zeile zu, nimmt dann immer im Wechsel die 1. bis 4. Spalte. So möcht ich das nicht haben wegen zu viel Texturespeicherverbauch.


    Das Getreide wiederum ist nun in 4 Spalten aufgeteilt, wobei die erste Spalte nochmal in 2 Zeilen unterteilt ist. Auch nicht passend für mich, da ich hiermit 5 Wachstumsstufen abbilde. Ich habe aber nur 4 Stufen.


    Weiß einer von euch welche verschiedenen Einteilungen der Texture-foliage es noch gibt? Ich suche eine womit ich 4 Stufen abbilden kann. Davon soll eine ganz kurz sein (erste Stufe wenn gemäht wurde) und dann 3 weiter Stufen fürs Wachstum.


    In der i3d würde ich noch gerne Wissen was folgende Ausdrücke bedeuten:


    -useVertexBufferPool="true"
    -atlasSize="4"
    -texCoords=";0 0 1 0.25;0 0.25 1 0.25;0 0.5 1 0.5"
    -numStates="9"
    -growthNumStates="8" <---- weiß ich eigentlich, nur wundert mich warum bei wheat 8 steht, obwohl es nur 5 Stufen gibt (also eine mehr wie in LS2011 für verdorrt)



    Ich hoffe hier hat sich schon einer mit beschäftigt und kann mir weiter helfen.


    pAre

  • so da es hier anscheinend keine weiß geb ich mir mal selbst ne (Teil-)Antwort. Vlt hilft es ja mal einen anderen der das gleiche Problem hat.


    Also wie er auf die Texture drauf zugreift lässt sich über die "atlasSize" einstellen, aber auch über "texCoords".
    Was genau atlasSize bewirkt weiß ich noch nicht. Hab jetzt keine Lust mehr da Experimente anzustellen. Auf jeden Fall habe ich heraus gefunden, dass atlasSize="1" und gleichzeitig keine texCoords Einträge bewirkt, das er wie in LS11 auf die foliage zugreift. Also Aufgeteilt in 4 Spalten.


    Mit texCoords lassen sich anscheinend die Spalten einstellen und beliebig in Zeilen unterteilen. Sprich, man kann genau Steuern für welche Wachstumsstufe der Shader auf welchen Bereich der Texture zugreifen soll. Es gibt dort immer 4 Werte, z.B. (0;0;0.25;1). Wofür diese Werte einzeln Zuständig sind weiß ich nicht. Auch hier lässt gerade meine Lust nach das zu testen. Persönlich habe ich hier eigentlich mit nur 2 Werten gerechnet für die x bzw. y Koordinate der Texture.


    Aus numStates und growthNumStates bin ich immer noch nicht so ganz schlau geworden, warum die hier so hoch eingestellt sind. Ich weiß auf jeden Fall durch probieren, das numStates="5" und growthNumStates="5" dazu führt, dass die letzte Wachstumsstufe nicht mehr möglich ist.




    Wenn einer weitere Informationen dazu hat, darf er sie gerne hier hinzufügen. Für mich und andere bestimmt Interessant.


    pAre


    PS: Ich wüsste noch gern wie ich es einstellen kann, das die Terrain-Texture mehr Winkelunterteilungen wie 90° und 45° zulässt.

  • Hey Pare,


    Ich habe so eine Idee( vermutung)



    Zitat

    growthNumStates="8" <---- weiß ich eigentlich, nur wundert mich warum bei wheat 8 steht, obwohl es nur 5 Stufen gibt (also eine mehr wie in LS2011 für verdorrt)


    Ich tippe es gibt ja noch die Stufe Kraut entfernen, Verfault und (Verdorben) :S


    Sicher bin ich mir nicht aber so würde ich auf die 8 Kommen.


    Vllt hilft es ja etwas ;)


    MFG

  • Meine Überlegungen, ob das richtig oder falsch ist :S :


    atlasSize="num" - legt die zahl der texturarten fest, bei gras 4, bei kartoffeln 2 (kann man hier ganz gut im reifen zustand erkennen, es gibt 2 farben der pflanzen), alles andere nur eine


    texCoords="startX startY endX+startX endY+startY" - festlegung des bereiches in der textur, angabe im verhältniss, die ersten zwei XY ist startpunkt, beginnend unten links = 0 0, die zweiten XY ist der endpunkt + startpunkt,
    die anzahl der eingetragenen texCoords abschnitte ;; richtet sich nach den growthNumStates


    growthNumStates="num" - legt die anzahl der wachstumsstadien fest,


    position bei width, height und texCoords: 0 = gesät, 1-3 = wachstum, 4-6 = reif, 7 = verdorrt / verfault, 8 = stoppel
    fest ist: 0 und 1-3 , optional: 4-6, 7 und 8
    ich schätze es ist per script geregelt welche frucht welchen status besitzen kann:
    wenn verdorrt oder stoppel dann letzte position
    wenn verdorrt und stoppel dann verdorrt vorletzte, stoppel letzte postion


    numStates="num" - legt die Anzahl der Stadien der Pflanze fest. Jede Stadie wird einmal die growthTime durchlaufen. ist wohl gedacht um die zeit der reife bis zum verdorrt / verfault zustand zu verlängern,
    auffällig hier dass bei width, height und texCoords in den positionen der reife abschnitten werte fehlen,

  • atlasSize="num" - legt die zahl der texturarten fest, bei gras 4, bei kartoffeln 2 (kann man hier ganz gut im reifen zustand erkennen, es gibt 2 farben der pflanzen), alles andere nur eine

    mh, ich hab neues Grass eingefügt was für jede Wachtumsphase 2 Texturen hat, muss aber bei LS13 im Gegensatz zu LS11 atlasSize="1" setzten damit er die Texture in 4 Spalten einteilt. Dadurch erhalte ich auch für jede Wachstumsstufe 2 verschiedene Texturen.

    Zitat

    growthNumStates="num" - legt die anzahl der wachstumsstadien fest,


    numStates="num"
    - legt die anzahl der durchläufe der wachstumszeit fest, ist wohl
    gedacht um die zeit der reife bis zum verdorrt / verfault zustand zu
    verlängern,
    auffällig hier dass bei width, height und texCoords in den positionen der reife abschnitten werte fehlen,

    growthNumStates ist bei wheat also =8 und nicht =5 da für die Reifestufe 3 Wachstumsstufen durchlaufen werden!?
    Das numStates die Durchläufe der Wachstumszeiten festlegt, also wie oft der jeweilige growthNumState mit der growthTime durchlaufen wird, wiederspricht meinem Test, da wenn ich die numStates runter setzte (z.B. =5) ich nicht mehr alle Wachstumsstufen sehen kann. Hört dann kurz vor der Reife auf. Würde ja aber auch irgendwie nichts bringen, da man dann auch einfach die growthTime erhöhen kann.
    Oder hab ich dich falsch verstanden und du meinst was anderes?


    pAre

  • Hast du die atlasSize in Verbindung mit den texCoords verwendet?


    Die numStates meine ich ein wenig anders.
    Die numStates legt fest wieviele Stadien die Pflanze hat. Jede Stadie wird einmal die growthTime durchlaufen.


    Was du testen könntest ist die numStates erhöhen und bei width, height, texCoords, etc. nach der 7. position (nach den reife stadien) noch weitere leere positionen eintragen.


    beispiel weizen:


    numStates="14" -- vorher 9 jetzt 14


    distanceMapIds="31;32;33;34;35;35;35;35;35;35;35;35;36;37"
    distanceMapUnitSizes="128;128;128;128;128;128;128;128;128;128;128;128;128;128"
    height=";0.25;0.5;0.9;1;1;1;;;;;;0.9;0.13"
    texCoords=";0 0 0.25 0.25;0 0.5 0.25 0.5;0.25 0 0.25 1;0.5 0 0.25 1;0.5 0 0.25 1;0.5 0 0.25 1;;;;;;0.75 0 0.25 0.75;0.5 0 0.25 0.144"


    Mit dieser Änderung müsste der Weizen 5x länger Reif bleiben bevor er verdribt / verfault. Wenn meine Theorie stimmt.

  • Hab nochma geguckt, hast recht, bei atlasSize="1" teilt er die Texture in 4 Spalten auf. Jede Spalte ja ja bei mir 2 Texturen und die packt der dann auf eine foliage/kreuz gemeinsam drauf. Also mischt diese nicht.
    Wenn ich atlasSize="2" setzte teilt er die Texture in 8 Spalten. Für Wachstumsstufe 1 mischt er dann Spalte 1 und 5 abwechselnd, für 2 die Spalte 2 und 6, usw....
    Ist alles ohne texcoords getestet.


    Wenn ich jetzt also 8 Spalten haben will, muss ich mit atlasSize="2" arbeiten und um für Wachstumsstufe 1 Spalte 1 und 2 zu mischen muss ich diesen Bereich noch in texcoords definieren.


    Wenn numStates die (Wachstums)stadien angeben, was gibt dann growthNumState an?


    pAre

  • Genau, dann wäre das "0 0 0.25 1; 0.25 0 0.5 1; 0.5 0 0.75 1; 0.75 0 1 1", oder? (Einfache 4 Flächen)


    Jetzt ist mir das insgesamt trotzdem noch ein Rätsel, wie das mit dem ganzen Zeug läuft. Wieso hat auf der Standardmap grass nur 3 texCoords, dafür Weizen aber 8?
    *Birne explodiert!*

  • Hi,


    ich möchte jetzt nicht unbedingt ein neues Thema aufmachen weil mein Problem identisch ist.
    Ich habe eine neue Frucht gemacht und dafür die vorhandene (LS13) Mais Textur als Vorlage genommen.


    Die passenden Einträge (FoliageLayer und CO) habe ich mir aus der map.i3d raus kopiert und entsprechend geändert.
    Somit sollten die Werte für wachstum/verdorrt und so passen.
    Im GE kann ich die neue Frucht auch 'anpflanzen' aber wenn ich das Spiel starte bekomme ich einen LogFehler bezüglich der Sämaschine.
    Ich fürchte das LS11 Script reicht dafür nicht mehr aus, weil es jetzt ja 3 Arten von Sämaschinen gibt.


    Hat jemand schon ein funktionierendes Script für neue Früchte?


    lg
    Webby

  • Da hier das Thema bezüglich der Pflanzen in der Map bezieht habe Ich auch dazu eine Frage und ein Problem:


    Zu LS08/09 (ob es LS11 ging weis Ich nicht), konnte man das Getreide egal ob Weizen,Gerste,Hafer in reihen und schön fast geordnet ja umschreiben/ändern in der map01.i3d . Doch irgendwie geht es bei LS13 nicht mehr da die Foliage oder die Texutren anderst angesehen/angenommen werden. Diese sind ja wie ein + aufgeteilt also man hat statt einer wand ein Kreuz wodurch mehrmals der Layer wiederholt wird oder sehe Ich das Falsch?


    Kann man denn überhaupt was daran ändern das man das Getreide wie in RL in vernünfitgen reihen bekommt also auch ändern kann? Habe schon einige ausprobiert aber geht nicht.


    Hier mal ein auszug:

    XML
    <FoliageSubLayer name="wheat" densityMapTypeIndex="1" densityMapChannelOffset="4" numDensityMapChannels="4" materialId="42" cellSize="8" viewDistance="80" terrainOffset="0.1" objectMask="65520" distanceMapIds="31;32;33;34;35;35;35;36;37" distanceMapUnitSizes="128;128;128;128;128;128;128;128;128" atlasSize="1" numBlocksPerUnit="3.2" width="1.8" height=";0.25;0.5;0.9;1.4;1.4;1.4;0.9;0.13" texCoords=";0 0 0.25 0.25;0 0.5 0.25 0.5;0.25 0 0.25 1;0.5 0 0.25 1;0.5 0 0.25 1;0.5 0 0.25 1;0.75 0 0.25 0.75;0.5 0 0.25 0.144" widthVariance="0" heightVariance="0.4" horizontalPositionVariance="1" numStates="9" growthNumStates="8" growthStateTime="2.4e+007"/>
    <FoliageSubLayer name="wheat_windrow" densityMapTypeIndex="1" densityMapChannelOffset="8" numDensityMapChannels="4" materialId="22" cellSize="8" viewDistance="80" terrainOffset="0" objectMask="65520" distanceMapIds="35" distanceMapUnitSizes="128" repeatLastDistanceMap="true" atlasSize="1" numBlocksPerUnit="3" width="1.7" height="0.4;0.44;0.48;0.52;0.56;0.6;0.64;0.68;0.72;0.76;0.8;0.84;0.88;0.92;0.96" widthVariance="0" heightVariance="0.02" horizontalPositionVariance="1" numStates="15" blockShapeId="2" useShapeNormals="false" alignWithTerrain="true"/>


    Ich hoffe jemand hat da schon was rausgefunden. Vielleicht liegt es auch an den "foliage_wheat_distance_diffuse" was aber eigentlich totaler mist wäre. Egal wer was weis kann mir ja auch eine PN schicken wenn er es nicht gerne verraten will den mir ist es wichtig das auch das Getreide in gutem realen verhältnissen an zu bauen ist.


    MfG
    MF235

  • Du könntest ein eigenes shape erstellen, welches aus nur einem einzelnen Viereck besteht. Dann kannst du im wheatFoilageLayer mittels shapeId="ID" auf dieses verweisen ;)


    Schau dir mal die Schwaden an. Diese weichen ebenfalls vom standardmäßigen Layern ab - dort wird es so gehandhabt, wie oben beschrieben ;)



    Einfach mal ein bisschen spielen :)


    Soo nun ab ins Bett :sleeping:

  • ok aber nun stehen bei mir übern Kopf lauter Fragezeichen, wie mache Ich das? wo finde Ich vorlagen und so weiter und so weiter.


    Habe schon danach gegooglet aber leider nichts passendes gefunden.


    Ich fand es früher einfach das so um zu stellen wie man es möchte, ok Performance hin oder her Ich möchte eben auch Felder so aussehen lassen mit reihen und co wie in Real. Weil naja gefällt es mir nicht richtig.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!