Problem mit Texturen ; LS13-Icons

  • Moin gschätzte Leserschaft,

    Ich habe da mal eine Frage zu den Texturen der Icons im LS13. Ich wollte in meinem Map-Projekt teilweise eigene verwenden und habe mir mal die entsprechenden Zeilen in der i3d zusammengesucht :


    Die "Ausgangstextur" :


    Die Dateizuordnung in der i3d :

    Code
    <File fileId="2" filename="models/objects/triggers/triggerIcon_diffuse.png" relativePath="true"/>


    Die materials-Definitionszeilen :

    Code
    <Material name="triggerIcon_mat" materialId="473" ambientColor="1 1 1">
          <Emissivemap fileId="2"/>
        </Material>


    OK, das Teil nennt sich Emissivemap ...


    Die Objektdefinitionen :

    Code
    <TransformGroup name="vehicleSellingPoint" translation="-698.277 15.0639 -967.966" nodeId="6326">
              <Shape name="sellTrigger" translation="-6.93856 -5.0842e-008 4.59501" rotation="-180 -85.809 -180" static="true" trigger="true" collisionMask="3145728" nodeId="6327" materialIds="426" shapeId="1" castsShadows="true" receiveShadows="true" nonRenderable="true">
                <Shape name="sellIcon" clipDistance="200" nodeId="6328" materialIds="473" shapeId="200"/>
              </Shape>
              <Shape name="sellAreaTrigger" scale="12 5 8" static="true" trigger="true" collisionMask="81797120" nodeId="6329" materialIds="426" shapeId="182" nonRenderable="true"/>
            </TransformGroup>


    Kleines Suchspiel :D


    So, nun meine Frage, wo und wie wird definiert welches Icon nun aus der 'emissivemap'? geladen wird ? - Ich meine dafür müssten irgendwo min. 2 Koordinaten definiert sein, aber wo .... :hmm: .....

  • Ich habe keine Ahnung, ehrlich.

    Aber mal wahllos aus der SampleModMap (noch eine alte von Patch 1.4 habe gerade nichts anderes da)

    Das sind doch massig Koordinaten. Ist bei jedem TriggerShape anders.

    Aber wie gesagt Patch 1.4, kann sein dass das in neuen Maps gar nicht mehr drin ist, sondern in der shapes Datei.

    Ansonsten: Lade Dir doch mal die IfkoWorld, Kevin hat doch glaube ich auch eigene Icons. Und schau mal dort in die i3d.

  • Danke Patrick :thumbup: - Die Vermutung dass das nun in der shape-Datei steht hatte ich auch schon, ohne es zu wissen hätte ich mal auf die erste Zeile getippt, der Rest sind ja nur die eigentlichen Koordinaten des Objekts. Dass dies aber nun in der "verHEXten shape-Datei" drinsteht kann ich mir irgendwie nicht vorstellen .... :hmm:

    Ich schau mir mal an wie das Kevin gelöst hat, oder vielleicht meldet er sich ja hier und kann uns aufklären :D

  • Ich komm hier nicht so ganz mit, Geni ... :pinch: (evtl. noch Müde vom Weekend? hmm..)

    Was willst du mit den Icons machen?

    Diese auf der Game-PDA Map platzieren, also willst du wissen wie und wo man diese definieren muss, damit die im Game erscheinen?
    Kann mir jetzt nicht so ganz Vorstellen was du sonst darüber wissen möchtest :hmm:
    Das wüsste ich nämlich sonst ;)

    Kevin benutzte übrigens zusätzlich noch diese hier:

    LS 2013: Custom Info Trigger v 1.3 by FSM Team Scripte Mod für Landwirtschafts Simulator 2013
    | modhoster.de


    Falls ich dich jetzt Richtig verstanden habe und du wissen willst wo diese für`s Game definiert werden, einfach mal kurz die Map.lua Öffnen:

    2014-06-04_15h52_38.jpg

    [expander][code local iconSize = self.missionPDA.pdaMapWidth / 15;

    -- Phone Booths
    self.missionPDA:createMapHotspot("Bank", Utils.getFilename("$dataS2/missions/hud_pda_spot_bank.png", self.baseDirectory), 1024 - 230, iconSize, iconSize * (4 / 3), false, false, false, 0, true);
    self.missionPDA:createMapHotspot("Bank", Utils.getFilename("$dataS2/missions/hud_pda_spot_bank.png", self.baseDirectory), 1024 - 144.65, iconSize, iconSize * (4 / 3), false, false, false, 0, true);
    self.missionPDA:createMapHotspot("Bank", Utils.getFilename("$dataS2/missions/hud_pda_spot_bank.png", self.baseDirectory), 1024 + 513.75, iconSize, iconSize * (4 / 3), false, false, false, 0, true);
    self.missionPDA:createMapHotspot("Bank", Utils.getFilename("$dataS2/missions/hud_pda_spot_bank.png", self.baseDirectory), 1024 + 723.9, iconSize, iconSize * (4 / 3), false, false, false, 0, true);
    self.missionPDA:createMapHotspot("Bank", Utils.getFilename("$dataS2/missions/hud_pda_spot_bank.png", self.baseDirectory), 1024 - 162, iconSize, iconSize * (4 / 3), false, false, false, 0, true);
    [/code][/expander]

    also ...

    Code
    -- Phone Booths
        self.missionPDA:createMapHotspot("Phone", Utils.getFilename("$dataS2/missions/hud_pda_spot_phone.png", self.baseDirectory), 1024 + 89.6, 1024 - 417.9, iconSize, iconSize * (4 / 3), false, false, false, 0, true);

    ... ich mache das immer so, dass ich mir einen Stein Dupliziere diesen auf 0.2(x3) Scaliere, danach da hin platziere wo später das Icon hin soll.
    Die TL Werte (X Z)des Steinchens gebe ich danach in der Lua ein: "... self.baseDirectory), 1024 - 162" :this:
    Somit definiert man die Dinger.

    Bin mal gespannt ob ich deine Frage richtig gedeutet habe .. hmm ..

  • Danke für Dein Hirnschmalz Chris :thumbup:

    Ich wollte auf meiner Map (im PDA) spezielle Orte kennzeichnen und habe mir deshalb mal die Standard-Icons vorgenommen um herauszufinden wie das genau geht. Es fehlt mir wie gesagt das Puzzlesteinchen wo der Engine gesagt wird welchen Bereich des Texturfiles (emissivebillboardblabladingenskirchen?) auf das Objekt gelegt werden soll ;)

    Die Koordinaten in der map.lua sagen nur wo auf der PDA-Map das Symbol eingeblendet werden soll, aber nicht welcher Bereich der Textur. - Das Kevin das mit einem separaten Script gelöst hat ist schonmal ein sehr gute Hilfe ....


    .... allerdings würde mich grundsätzlich interessieren wie das gemacht wird, ich habe da nämlich noch was anderes im Sinn ;)

  • Das verlinkte Script von Chris ist was komplett anderes.. Das ist nur für die Hilfe Icons, die auf meiner Map platziert sind, nicht für die PDA Icons..

    Geni, die PDA Icons haben nix mit deiner Textur aus dem ersten Post zu tun... Wie du schon erkannt hast, werden die in der sampleModMap.lua defeniert. Dort steht dann ja auch der Pfad zum Bildchen, das auf dem PDA ingame zu sehen ist.

    Nehmen wir nun zum Beispiel die Schafe her:

    function CLASSNAME DER LUA:loadMap01Finished(node, arguments)
    self.missionPDA:createMapHotspot("Sheep", Utils.getFilename("$dataS2/missions/hud_pda_spot_sheep.png", self.baseDirectory), 435, -25, iconSize, iconSize * (4 / 3), false, false, false, 0, true);
    end;

    Das ist der Code dazu. Bei 'Utils.getFilename' steht der Pfad zum Bild. Der Ordner dataS2 ist aber verschlüsselt. D.h. von dort kannst du nichts entnehmen, müsstest dir eben selber was Basteln.. Hinter dem Pfad stehen noch Zahlen. Das sind die Translatewerte Breite/Länge (X/Z), wo das Bild auf dem PDA sein soll.

    So machte ich es auch mit den Schweinen..

    function CLASSNAME DER LUA:loadMap01Finished(node, arguments)
    self.missionPDA:createMapHotspot("Pig", Utils.getFilename("huds/hud_pda_spot_pig.png", self.baseDirectory), 161, -19, iconSize, iconSize * (4 / 3), false, false, false, 0, true);
    end;

    Wie du siehst, der Pfad führt nimmer in das Standardverzeichnis. Das "Pig" kann man auch belebig anpassen, ich denke das ist nur für die übersicht im Script da, zumindest fand ich noch keinen anderen Nutzen dafür raus.. ^^

    Sollte noch was offen sein, fragen.. ^^ Hoffe man versteht wie ich das meine.. ^^

    MFG Ifko :thumbup:

    Edit: Ich sehe grad, das der gute Chris das ja schon erklärt hat... Hätte den ganzen Post lesen sollen... ^^

    2 Mal editiert, zuletzt von Ifko[nator] (4. Juni 2014 um 19:30)

  • Das verlinkte Script von Chris ist was komplett anderes.. Das ist nur für die Hilfe Icons, die auf meiner Map platziert sind, nicht für die PDA Icons..

    Hätte das besser Erläutern sollen, das dies nur Infotrigger sind und nichts mit der PDA zu tun haben, Sorry!
    War mir einfach nicht so sicher, was du gemeint hast .. :S

    Hier ist übrigens noch ein gutes TUT wie du diese Verändern und Verschieben kannst:

    PDA Icons Anpassen

    Jetzt weiß ich aber was du gemeint hast..


    Hierbei:

    Es fehlt mir wie gesagt das Puzzlesteinchen wo der Engine gesagt wird welchen Bereich des Texturfiles (emissivebillboardblabladingenskirchen?) auf das Objekt gelegt werden soll

    Kann ich dir aber leider auch nicht Helfen, sorry :(


    Chris

  • OK, Danke Kevin für Deine Ausführungen :thumbup: - Zumindest krieg ich so meine eigenen Icons ins Spiel, aber was mich immer noch wundert ist wo in welchem File beschrieben ist welcher Teil dieses Texturfiles auf das Objekt (Icon) gelegt wird.

    Vielleicht hilft es weiter wenn ich beschreibe was ich genau vorhabe. - Ich habe da ein Objekt in meinr Map dem ich gerne eine neue Textur verpassen würde, um kein Geheimnis auszuplaudern sag ich einfach das es sich um einen Würfel mit 1x1x1 LS-Metern geht. Die Textur dazu ist ein dds-File mit 256x256 Pixeln, diese möchte ich mittig auf den Würfel legen.

    Wenn ich in der i3d materials- und file-Pfade für den Würfel zu meiner gewünschten Textur anpasse und dann mit der LS-Engine lade, sei es im LS oder im GE, ist die Textur verschoben. Einfach gesagt ist die Mitte der Textur nicht in der Mitte des Würfels. Da ich vom 3D-Modellieren in Maya usw keine Ahnung habe, könnte es sein dass ich mit meiner Vermutung vollkommen auf dem Holzweg bin. - Texturiert wird da ja auch und irgendwo muss doch in der i3d-Datei definiert sein wie die Textur aus dem separaten Texturfile auf dem Objekt zu liegen kommt. Und das muss ja irgendwie mit Koordinaten ablaufen ...

    ... oder sonstwie ;)

  • Hallo Gemini!

    Wenn ich dich richtig verstanden habe, suchst du nach den Koordinaten des UV Meshes, welche im 3D Objekt gespeichert sind. Diese sind jedoch leider in der Shapes-Datei, auf die die i3D Datei zugreift, hinterlegt. Falls du noch einen alten Giants Editor und eine ebenfalls alte i3D Datei ( gespeichert mit GE 5.0.1 und kleiner) zur Hand hast, kannst du dir das gerne unter <Meshes> anschauen.
    An einer einfachen Fläche veranschaulicht, sieht das folgendermaßen aus.

    Code
    <Vertices count="4" normal="true" uv0="true">
    <v p="0.32 0 0.32" n="0 1 0" t0="1 0" />
    <v p="0.32 0 -0.32" n="0 1 0" t0="1 1" />
    <v p="-0.32 0 -0.32" n="0 1 0" t0="0 1" />
    <v p="-0.32 0 0.32" n="0 1 0" t0="0 0" />
    </Vertices>


    Hier sieht man eine Fläche, bestehend aus 4 Punkten und demnach, aus 2 Polygonen (Dreiecken/Tris)... wie auch immer es jeder für sich nennen mag :D
    Die Einträge, welche für die Geometrie und die UV-Koordinaten zuständig sind stehen in der Zeile 2 bis 5.

    Unter "p" sind die Koordinaten der eigentlichen Geometrie definiert, orientiert an einem X Y Z Achsensystem (in diesem Fall ist die Y-Achse, die Normalen-Achse). Sprich, ist das die eigentliche Größe/Mesh des 3D Objekts.
    Was "n" bedeutet, weiß ich leider nicht genau, ich vermute eher, dass dies mit der Darsellung einer Normal-Map oder mit dem Shading zutun haben könnte... kann aber auch irgendwas ganz anderes sein.
    Unter "t0" sind die eigentlichen Koordinaten der UV-Map in Prozent hinterlegt. Sprich hast du z.B. eine Textur mit 256x256 Pixeln, dann wissen diese 4 Punkte, wo sie auf der Textur "zu stehen" haben, damit die Textur auf dem Objekt richtig dargestellt wird. Also bei Pixel "0" ist 0%... also "0" und bei Pixel "256" ist 100%... also "1". Eine UV-Map hat keine Tiefe, daher sind auch nur 2 Koordinaten notwendig. Und UV-Koordinaten gehen immer von unten links, nach oben rechts.

    Auf die oben angegebenen Vertices (Punkte, die die Geometrie definieren) bezogen, bedeuten die "t0" - Werte in Zeile 2 folgendes.

    Code
    t0="1 0"

    Dies ist in diesem Fall der Punkt, der die untere rechte Ecke des Meshes definiert und seine UV - Koordinaten sind 1 (auf horizontaler Linie Pixel 256) und 0 (auf vertikaler Linie Pixel 0).

    Zeile 3 gibt an...

    Code
    t0="1 1"

    Dies ist in diesem Fall der Punkt, der die obere rechte Ecke des
    Meshes definiert und seine UV - Koordinaten sind 1 (auf
    horizontaler Linie Pixel 256) und 1 (auf vertikaler Linie Pixel 256).

    Zeile 4 gibt an...

    Code
    t0="0 1"

    Dies ist in diesem Fall der Punkt, der die obere linke Ecke des
    Meshes definiert und seine UV - Koordinaten sind 0 (auf
    horizontaler Linie Pixel 0) und 1 (auf vertikaler Linie Pixel 256).

    Zeile 5 gibt an...

    Code
    t0="0 0"

    Dies ist in diesem Fall der Punkt, der die obere linke Ecke des
    Meshes definiert und seine UV - Koordinaten sind 0 (auf
    horizontaler Linie Pixel 0) und 0 (auf vertikaler Linie Pixel 0).

    Somit geben uns diese 4 Punkte an, dass sie auf der Textur beginnend von unten links nach oben rechts einnehmen... also darauf zentriert liegt.
    Dies hier ist ein Bild der Rückleuchten-Corona meines Jeeps. Das Mesh sieht nicht ausgefüllt aus, weil die Textur um die Leuchte 100% transparent ist... die Textur liegt jedoch komplett auf dem Mesh auf.


    Würde ich jetzt die UV-Koordinaten verschieben wollen, damit die Textur woanders steht, könnte ich z.B. diese Einträge ändern.

    Code
    <Vertices count="4" normal="true" uv0="true">
        	<v p="0.32 0 0.32" n="0 1 0" t0="1.5 0" /> <!-- unten rechts X Y Z -->
        	<v p="0.32 0 -0.32" n="0 1 0" t0="1.5 1" /> <!-- oben rechts X Y Z -->
        	<v p="-0.32 0 -0.32" n="0 1 0" t0="0.5 1" /> <!-- oben links X Y Z -->
        	<v p="-0.32 0 0.32" n="0 1 0" t0="0.5 0" /> <!-- unten links X Y Z -->
      	</Vertices>

    Somit habe ich das UV-Mesh auf dem Geometrie Mesh um 50% (um 128 Pixel) nach rechts verschoben, sodass sich diese dann anfängt zu wiederholen.
    Das sieht dann auf dem Bild so aus...

    Bei einer einfachen Fläche, wie hier im Beispiel erläutert, ist es relativ einfach dies anzupassen... auf einer Geometrie mit vielen Vertices wird es jedoch sehr anstrengend sein, diese anzupassen, da man erst herausfinden muss, welcher Punkt denn welcher ist. Und zusätzlich, müsste man dann auch noch immerwieder die Prozente ausrechnen, um einen Punkt auf genau der Position zu platzieren, wo man es haben will.
    Für dein Vorhaben müsste das aber eigentlich anwendbar sein, da die Textur in dem Fall ja ein Decal ist und höchstwahrscheinlich auch auf einem Quadrat gemappt ist.

    So, genug Verwirrung gestiftet... der größte Rat, den ich an dich noch habe ist... einfach UV-Mapping in einem 3D Programm lernen und dann die Textur dort verschieben. Im GE kann man die Objekte ja als OBJ exportieren.

    Sodele... falls es bis hierher jemand gelesen hat... Hut ab :Tach: , ich wäre schon längst eingepennt :sleeping:
    Prost! :beer:

    ᕦ(ò_óˇ)ᕤ .:| modswanted.com |:.

  • Gibt's nen Erfolg für 200 Wörter? :easypeasy: Glaub nicht aber den hätte er jetzt! Hut ab und das beim 1./2. Beitrag!
    Ach und das MW Zeichen passt nicht nur zu ModsWanted ;)
    Schön das es dich jetzt bei uns auch gibt, eine Bereicherung! ^^
    Sorry, musste gesagt, nein eher geschrieben werden... :pardon: Am besten wieder BtT!

    MfG DerSpieler :Tach:

    STEYR - Worauf du dich verlassen kannst.

    Steyr 6300 Terrus CVT - "Maschine des Jahres 2016" (Agritechnica)

    Einmal editiert, zuletzt von DerSpieler (5. Juni 2014 um 15:15)

  • Ich habe das vor längerer Zeit auch mal gemacht und habe mir einfach das zu ändernte Icon auf der Triggericon.dds für mich abgeändert ;)
    Ist zwar ned so schön, aber ich wollte es einfach mal versuchen ob es überhaupt funktioniert.

    Hier die Textur: [gallery]14555[/gallery]

    und hier das ganze dann im GE: [gallery]14556[/gallery]

  • Mensch Mailman, was für ein Einstand, herzlich willkommen ... und vor allem ganz grossen Dank für die ausführliche Erklärung :thumbup: - Genau das war der "missing Link" den ich gesucht hatte. Da ich von modellieren/texturieren null Plan habe ist diese umfangreiche Beschreibung ein guter Einblick in die Textur-Mechanik der GIANTS-Engine.

    Schade, bisher bin ich mit "GE/Textdatei modellieren" gtu zurecht gekommen, muss mich wohl endlich mit der Modellier/Texturier-Geschichte beschäftigen :whistling: .... oder einen alten GE ausgraben ^^;)


    Also Danke nochmal für die eindeutige Erklärung und auch Danke an alle anderen die sich mit meinem Problem beschäftigt haben :thumbup:


    P.S.: @Trabby : :D , das wäre meine Notlösung gewesen ;)

  • Schade, bisher bin ich mit "GE/Textdatei modellieren" gtu zurecht gekommen, muss mich wohl endlich mit der Modellier/Texturier-Geschichte beschäftigen :whistling: .... oder einen alten GE ausgraben ^^ ;)

    Also Danke nochmal für die eindeutige Erklärung und auch Danke an alle anderen die sich mit meinem Problem beschäftigt haben :thumbup:

    Joa, ist ja kein Ding, dazu ist ja ein Forum nun mal da :D Falls du Hilfe zum UV-Mapping brauchst oder Fragen hast, kann ich gerne versuchen, da zu helfen :) ... falls die Profis hier evtl. aus Modsucht wenig Zeit haben :D

    :Tach:

    ᕦ(ò_óˇ)ᕤ .:| modswanted.com |:.

  • Crouwler 26. April 2020 um 02:37

    Hat das Thema geschlossen.