[LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Eure Foren für alle Diskussionen rund ums Thema Modding.
Stegei
GIANTS Software | CTO
Posts: 1444
Joined: Sat Jun 09, 2007 10:51 am

[LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by Stegei » Thu Dec 08, 2016 3:07 pm

Dieses Tutorial erklärt, wie die Anzahl Richtungen der Bodentexturen der Felder erhöht werden kann, gegenüber der standardmässigen 45 Grad Abstufung.

Die Anpassung funktioniert im LS17 im Grundsatz gleich wie im LS15. Der Unterschied ist, dass man für einige Einstellungen allerdings selbst eine Lua Datei hinzufügen muss, da nun standardmässig eine Mod-Map keine Scripte mehr hat. Zudem, muss man dort noch einige neue dazugekommenen Variablen verändern, da das Terrain Detail noch mehr Informationen speichert.
  1. Map i3d anpassen, damit die Density Map genügend Channel hat um die Daten zu speichern:
    <DetailLayer name="terrainDetail" numDensityMapChannels="11" ...
    ändern zu
    <DetailLayer name="terrainDetail" numDensityMapChannels="12" ...
  2. Map i3d anpassen, damit der Shader die Daten des neuen Channels erhält. In der gleichen Zeile wie im vorhergehenden Schritt, das Attribut
    combinedValuesChannels="0 3 0;5 2 0;3 2 1"
    ändern zu
    combinedValuesChannels="0 3 0;5 3 0;3 2 1"
  3. groundShader.xml anpassen:
    Die Zeile 207
    angle = ceil(angle*3-0.0001)/4*3.14159;
    anpassen zu
    angle = ceil(angle*7-0.0001)/8*3.14159;
  4. Map Lua (ModMap.lua) Script erstellen umd die Script Variablen anzupassen:

    Code: Select all

    ModMap = {}
    local ModMap_mt = Class(ModMap, Mission00)
    
    function ModMap:new(baseDirectory, customMt)
        local mt = customMt
        if mt == nil then
            mt = ModMap_mt
        end
        local self = ModMap:superClass():new(baseDirectory, mt)
    
        -- Number of additional channels that are used compared to the original setting (2)
        local numAdditionalAngleChannels = 1;
    
        self.terrainDetailAngleNumChannels = self.terrainDetailAngleNumChannels + numAdditionalAngleChannels;
        self.terrainDetailAngleMaxValue = (2^self.terrainDetailAngleNumChannels) - 1;
    
        self.sprayLevelFirstChannel = self.sprayLevelFirstChannel + numAdditionalAngleChannels;
    
        self.ploughCounterFirstChannel = self.ploughCounterFirstChannel + numAdditionalAngleChannels;
    
        return self
    end
  5. Die ModMap.lua in der modDesc.xml eintragen:
    Die entsprechende Zeile der Map in der modDesc.xml anpassen. Z.b. folgende Zeile
    <map id="SampleModMap" className="Mission00" filename="$dataS/scripts/missions/mission00.lua" configFilename="maps/map01.xml" defaultVehiclesXMLFilename="defaultVehicles.xml">
    anpassen zu
    <map id="SampleModMap" className="ModMap" filename="ModMap.lua" configFilename="maps/map01.xml" defaultVehiclesXMLFilename="defaultVehicles.xml">
  6. Die cultivator_density.gdm der Map muss entsprechend auf 12 Channels erweitert werden. Dazu konvertiert man am einfachsten die .gdm in eine png und löscht die gdm. Damit kann der Editor die Density Map automatisch auf 12 Channels erweitern beim nächsten Laden. Die Informationen sind dann allerdings ggf. etwas falsch. Z.B. werden Felder die 90° gedreht waren danach 45° gedreht sein, da die Daten danach anders interpretiert werden.

    -Dazu von gdn.giants-software.com den GRLE Converter v7.0.1 herunterladen und entpacken.
    -Die cultivator_density.gdm der Map auf die Datei "convert.cmd" drag&droppen.
    -Sicherstellen, dass eine cultivator_density.png Datei erstellt wurde am gleichen Ort wie die cultivator_density.gdm
    -Die cultivator_density.gdm löschen
    -Die map mit dem Editor öffnen und sicherstellen, dass nun alles richtig angezeigt wird.
    -Die map speichern.
    -Sicherstellen, dass nun eine neue cultivator_density.gdm erstellt wurde
    -Und zum Schluss die cultivator_density.png wieder löschen.

Die verwendeten Zahlen ermöglichen 8 verschiedene Richtungen, statt den standardmässigen 4. Wenn mehr benötigt werden, müssen die Werte bei numDensityMapChannels, combinedValuesChannels, dem Shader und numAdditionalAngleChannels im Script entsprechend angepasst werden.

Herbert32
Posts: 363
Joined: Wed Aug 13, 2014 1:32 pm

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by Herbert32 » Thu Dec 08, 2016 8:37 pm

Welche Werte müssen in der i3d stehen wenn ich 256 Winkel haben möchte. Von 4 auf 8 ändert die Channels bei 11 auf 12 und bei 2 auf 3. Wie geht das weiter bei 256? Jeweils 63 bei numDensityMapChannels und 127 bei combinedValuesChannels?

anthu
Posts: 2395
Joined: Thu Nov 06, 2014 8:03 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by anthu » Thu Dec 08, 2016 8:37 pm

Super STEGEi, Danke

hab mir jetzt mal eine modmap angepasst mit 3 zusätzlichen winkelchannels
jeder channel mehr halbiert die Winkeldarstellung
d-h- +1 22,5grad, +2 11,25grad und +3 5,625grad

meine einstellungen:
1.+2.:

Code: Select all

numDensityMapChannels="14"
combinedValuesChannels="0 3 0;5 5 0;3 2 1"
(11+3=14 / 5 2 0 auf 5 5 0

3.:

Code: Select all

angle = ceil(angle*31-0.0001)/32*3.14159;
hier muß man die 2.Zahl jeweils verdoppeln pro channel und dieerste zahl ist eins niedriger.
d.h.: 3/4 auf 7/8 (+1) auf 15/16 (+2) auf 31/32 (+3) .....

4.:

Code: Select all

    local numAdditionalAngleChannels = 3;
da 3 zusätzliche channels

5.:
in der moddesc:

Code: Select all

<maps>
  <!-- <map id="SampleModMap" className="Mission00" filename="$dataS/scripts/missions/mission00.lua" configFilename="maps/map02.xml" defaultVehiclesXMLFilename="defaultVehicles.xml"> -->
	<map id="SampleModMap" className="ModMap" filename="ModMap.lua" configFilename="maps/map02.xml" defaultVehiclesXMLFilename="defaultVehicles.xml">
 
map01.xml auf map02.xml geändert, weils die sosnovka-mod-map bei mir ist bzw die i3d und xml so heißt
bzw, die modMap.lua aus pkt4. hab ich dort hin kopiert, wo die moddesc.xml ist.

6.:
genauso wie stegei es beschrieben hat.
btw, man kann auch eine bereits angespielte map bzw savegame weiterverwenden. einfach die cultivator_density.gdm aus dem savegame in den grle konverter ziehen, diese umwandeln, die entstandene cultivator_density.png in das savegame kopieren und die cultivator_density.gdm löschen.
spiel starten,
spass haben

btw, nichtnur die texturen passen sich an.
der helfer reagiert ebenso auf die channeländerungen. d.h. meinen kann ich nun alle 5.625grad fahren lassen.

glg
andreas

anthu
Posts: 2395
Joined: Thu Nov 06, 2014 8:03 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by anthu » Thu Dec 08, 2016 10:26 pm

Herbert32 wrote:Welche Werte müssen in der i3d stehen wenn ich 256 Winkel haben möchte. Von 4 auf 8 ändert die Channels bei 11 auf 12 und bei 2 auf 3. Wie geht das weiter bei 256? Jeweils 63 bei numDensityMapChannels und 127 bei combinedValuesChannels?
Ich denke du brauchst 5 channels dazu
versuchs mal mit:

16
5 7 0
127 / 128
5

weil:
+1 22,5grad, +2 11,25grad und +3 5,625grad +4 2,8125grad und schliesslich +5 sind 1,4065grad
und 1,4065grad mal 256 ist 360grad

Lg andreas

User avatar
D4rkfr34k
Posts: 95
Joined: Sat Jan 08, 2011 9:52 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by D4rkfr34k » Thu Dec 08, 2016 11:54 pm

Mit der neueb .lua wird es aber wahrscheinlich nicht auf Konsole laufen?

Mfg

Herbert32
Posts: 363
Joined: Wed Aug 13, 2014 1:32 pm

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by Herbert32 » Fri Dec 09, 2016 6:38 am

Danke @anthu. Hab von der falschen Seite angefangen zu rechnen. Hast recht, 5 Channels mehr passen.

tec
Posts: 131
Joined: Wed Oct 20, 2010 6:11 pm

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by tec » Fri Dec 09, 2016 8:30 pm

Also nach einigen Tests habe ich es im GE mit den Winkeln hinbekommen, nur ingame gibt es nur eine Richtung (Nord-Süd), wobei der Helfer die Winkel erkennt nur der Layer bleibt eine Einbahnstraße.
Ich habe alle Werte von anthu übernommen...

anthu
Posts: 2395
Joined: Thu Nov 06, 2014 8:03 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by anthu » Sat Dec 10, 2016 12:06 am

tec wrote:Also nach einigen Tests habe ich es im GE mit den Winkeln hinbekommen, nur ingame gibt es nur eine Richtung (Nord-Süd), wobei der Helfer die Winkel erkennt nur der Layer bleibt eine Einbahnstraße.
Ich habe alle Werte von anthu übernommen...
welche Grafikeinstellung hast du im Game?
bei niedrig gibts nureinen bodenwinkel (nord-süd) erst bei hoch oder sehrhoch kannst du sie sehen.
lg
andreas

tec
Posts: 131
Joined: Wed Oct 20, 2010 6:11 pm

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by tec » Sat Dec 10, 2016 7:31 am

Danke, daran lag es... war auf low, auf medium geht es

arii
Posts: 74
Joined: Tue Oct 25, 2016 3:19 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by arii » Mon Dec 12, 2016 10:04 pm

ich habe folgendes fehler

Error: Running LUA method 'update'.
dataS/scripts/vehicles/specializations/Cultivator.lua(155) : attempt to index field 'fieldJobManager' (a nil value)
Error: Running LUA method 'update'.
dataS/scripts/vehicles/specializations/Cultivator.lua(155) : attempt to index field 'fieldJobManager' (a nil value)
Error: Running LUA method 'update'.
dataS/scripts/vehicles/specializations/Cultivator.lua(155) : attempt to index field 'fieldJobManager' (a nil value)
Error: Running LUA method 'update'.
dataS/scripts/vehicles/specializations/Cultivator.lua(155) : attempt to index field 'fieldJobManager' (a nil value)
Error: Running LUA method 'update'.
dataS/scripts/vehicles/specializations/Cultivator.lua(155) : attempt to index field 'fieldJobManager' (a nil value)
Error: Running LUA method 'update'.
dataS/scripts/vehicles/specializations/Cultivator.lua(155) : attempt to index field 'fieldJobManager' (a nil value)
Error: Running LUA method 'update'.
dataS/scripts/vehicles/specializations/Cultivator.lua(155) : attempt to index field 'fieldJobManager' (a nil value)
Error: Running LUA method 'update'.
dataS/scripts/vehicles/specializations/Cultivator.lua(155) : attempt to index field 'fieldJobManager' (a nil value)
Error: Running LUA method 'update'.

und kannn nicht pflügen

arii
Posts: 74
Joined: Tue Oct 25, 2016 3:19 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by arii » Tue Dec 13, 2016 7:02 pm

Edit

der fehler war das ich alle felder gelöscht habe man sollte mindestens ein field im map haben das mit dem bodenbearbeitung klappt

User avatar
JD_Farmer
Posts: 29
Joined: Mon Dec 05, 2011 12:45 pm
Location: Denmark
Contact:

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by JD_Farmer » Thu Dec 15, 2016 8:16 pm

anthu wrote:
Herbert32 wrote:Welche Werte müssen in der i3d stehen wenn ich 256 Winkel haben möchte. Von 4 auf 8 ändert die Channels bei 11 auf 12 und bei 2 auf 3. Wie geht das weiter bei 256? Jeweils 63 bei numDensityMapChannels und 127 bei combinedValuesChannels?
Ich denke du brauchst 5 channels dazu
versuchs mal mit:

16
5 7 0
127 / 128
5

weil:
+1 22,5grad, +2 11,25grad und +3 5,625grad +4 2,8125grad und schliesslich +5 sind 1,4065grad
und 1,4065grad mal 256 ist 360grad

Lg andreas
Hi!

I hope it's okay in english :)

The values 127 / 128 has to be used how? I get the other values, but what have to be written in the shader? :hmm:
I hope You can help me :)

Kind Regards
Be aware! Crazy dane is behind the keyboard! :!:

anthu
Posts: 2395
Joined: Thu Nov 06, 2014 8:03 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by anthu » Thu Dec 15, 2016 9:59 pm

@jd farmer
it was in LS15 already so for each channel more you must count +1
but in the line

Code: Select all

angle = ceil(angle*3-0.0001)/4*3.14159;
you must double the "4", also "8" and the "3" is one lower
also:

Code: Select all

angle = ceil(angle*3-0.0001)/4*3.14159;            --> degree all 45grd  = standard
angle = ceil(angle*7-0.0001)/8*3.14159;            --> degree all 22,5grd
angle = ceil(angle*15-0.0001)/16*3.14159;            --> degree all 11,25grd
angle = ceil(angle*31-0.0001)/32*3.14159;            --> degree all 5,625grd
angle = ceil(angle*63-0.0001)/64*3.14159;            --> degree all 2,8125grd
angle = ceil(angle*127-0.0001)/128*3.14159;            --> degree all 1,40625grd
ok?
lg
andreas

topdown
Posts: 7
Joined: Mon Nov 02, 2009 9:12 pm

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by topdown » Sun Dec 18, 2016 12:46 pm

Hallo zusammen,

ich habe das mal gemäß der ausführlichen Anleitung ausprobiert.

Sobald ich aber jetzt die Map mit dem Editor öffne, kömmt folgende Fehlermeldung in der Log:

Error: GDM file has wrong number of channels (11 should be 14)
Error: Can't load resource 'C:/Users/.../Documents/My Games/FarmingSimulator2017/mods/KR_Pomorze/maps/map01/cultivator_density.png'.
Error: Failed to load terrain detail layer 'terrainDetail'.

Dabei habe ich aber die Anzahl der Channels in der map.i3d entsprechend auf 14 gesetzt *grübel*....

Jemand eine Ahnung was ich falsch gemacht habe?

Vielen Dank vorab.

MfG,
Topdown

User avatar
Yeti_222
Posts: 450
Joined: Thu Apr 30, 2009 8:39 pm
Location: Bayern/Oberpfalz

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by Yeti_222 » Sun Dec 18, 2016 1:07 pm

Stegei hat doch alles erklärt.

Die cultivator_density.gdm der Map muss entsprechend auf 12 Channels erweitert werden. Dazu konvertiert man am einfachsten die .gdm in eine png und löscht die gdm. Damit kann der Editor die Density Map automatisch auf 12 Channels erweitern beim nächsten Laden. Die Informationen sind dann allerdings ggf. etwas falsch. Z.B. werden Felder die 90° gedreht waren danach 45° gedreht sein, da die Daten danach anders interpretiert werden.

-Dazu von gdn.giants-software.com den GRLE Converter v7.0.1 herunterladen und entpacken.
-Die cultivator_density.gdm der Map auf die Datei "convert.cmd" drag&droppen.
-Sicherstellen, dass eine cultivator_density.png Datei erstellt wurde am gleichen Ort wie die cultivator_density.gdm
-Die cultivator_density.gdm löschen
-Die map mit dem Editor öffnen und sicherstellen, dass nun alles richtig angezeigt wird.
-Die map speichern.
-Sicherstellen, dass nun eine neue cultivator_density.gdm erstellt wurde
-Und zum Schluss die cultivator_density.png wieder löschen.
Mein System:
Win 10 Prof 64bit
Prozessor AMD Ryzen 5 2600X 6x 3,6 GHz
Board ASUS ROG STRIX B450-F GAMING
Grafik Asus GTX 1060 OC 6 GB DDR 5
Speicher 16 GB DDR 4 3200 MHz

Post Reply