[LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Stegei
GIANTS Software | CTO
Posts: 1787
Joined: Sat Jun 09, 2007 10:51 am

[LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by Stegei »

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: 373
Joined: Wed Aug 13, 2014 1:32 pm

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by Herbert32 »

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: 4953
Joined: Thu Nov 06, 2014 8:03 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by anthu »

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: 4953
Joined: Thu Nov 06, 2014 8:03 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by anthu »

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: 101
Joined: Sat Jan 08, 2011 9:52 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by D4rkfr34k »

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

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

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by Herbert32 »

Danke @anthu. Hab von der falschen Seite angefangen zu rechnen. Hast recht, 5 Channels mehr passen.
tec
Posts: 264
Joined: Wed Oct 20, 2010 6:11 pm

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by tec »

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: 4953
Joined: Thu Nov 06, 2014 8:03 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by anthu »

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: 264
Joined: Wed Oct 20, 2010 6:11 pm

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by tec »

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 »

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 »

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: 31
Joined: Mon Dec 05, 2011 12:45 pm
Location: Denmark
Contact:

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by JD_Farmer »

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
Error: Not all attributes for human being was found! :!:
anthu
Posts: 4953
Joined: Thu Nov 06, 2014 8:03 am

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by anthu »

@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 »

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: 645
Joined: Thu Apr 30, 2009 8:39 pm
Location: Bayern/Oberpfalz

Re: [LS17]Tutorial - Feinere Unterteilung der Feldrichtungen

Post by Yeti_222 »

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 5600 6x 3,5 GHz
Board MSI X570-A PRO
Grafik Asus GTX 3070 8 GB DDR 6 256 bit
Speicher 32 GB DDR 4 3200 MHz
Post Reply