Materiały - Pliki .mat: Różnice pomiędzy wersjami

Z MaSzyna
Skocz do: nawigacja, szukaj
(Parametry tekstury)
(Nowy sposób)
 
(Nie pokazano 31 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 37: Linia 37:
 
| '''opacity'''
 
| '''opacity'''
 
| Wartość liczbowa 0-1
 
| Wartość liczbowa 0-1
| Nadpisuje wartość Opacity w [[Format T3D| submodelach]] używających tego materiału.
+
| Próg [[Przezroczystość|przezroczystości]]
* 0: oznacza blending
+
|
* inne wartości: wyznaczają próg alpha testu
+
Wartości domyślne:
| W przypadku zdefiniowania tego parametru jego wartość jest wykorzystywana również dla geometrii półprzezroczystej (zdefiniowanej w pliku .t3d z ''opacity''=0) W takiej sytuacji pomijana jest geometria z wartością kanału alpha wyższą niż zdefiniowana ''opacity'' w pliku .mat
+
* 0 - gdy tekstura podpięta pod jednostkę 1 posiada kanał alfa
 +
* 0.5 - gdy tekstura podpięta pod jednostkę 1 nie posiada kanału alfa lub nie zostałą ona w ogóle podpięta
 +
 
 +
Zobacz też [[Przezroczystość|opis działania przezroczystości]]
 
|-
 
|-
 
| '''selfillum'''
 
| '''selfillum'''
Linia 58: Linia 61:
 
| Cienie z wagą wyższą niż wartość zdefiniowana wpisem gfx.shadow.rank.cutoff w pliku eu07.ini będą pomijane przy rysowaniu.
 
| Cienie z wagą wyższą niż wartość zdefiniowana wpisem gfx.shadow.rank.cutoff w pliku eu07.ini będą pomijane przy rysowaniu.
 
|}
 
|}
 +
 +
=== Materiał domyślny ===
 +
Jeśli w podanej ścieżce nie istnieje plik .mat, ale istnieje tekstura o tej samej nazwie, to wówczas tekstura ta interpretowana jest jak materiał o definicji:
 +
<span style="color:tomato;font-weight:bold">shader:</span> default_1
 +
<span style="color:tomato;font-weight:bold">texture_diffuse:</span> sciezka_do_tekstury
 +
Dzięki temu nie jest konieczne tworzenie plików .mat dla prostych materiałów (używających tylko jednej tekstury).
  
 
=== Dostępne shadery ===
 
=== Dostępne shadery ===
Linia 322: Linia 331:
 
W takiej sytuacji ostatecznie uzywana jest tekstura spelniajaca najlepiej podane warunki, w kolejnosci:
 
W takiej sytuacji ostatecznie uzywana jest tekstura spelniajaca najlepiej podane warunki, w kolejnosci:
  
  - tekstura dla danej pogody i pory roku
+
  - tekstura dla danej [[Pogoda|pogody]] i [[Pory roku|pory roku]]
  - tekstura dla danej pogody
+
  - tekstura dla danej [[Pogoda|pogody]]
  - tekstura dla danej pory roku
+
  - tekstura dla danej [[Pory roku|pory roku]]
 
  - tekstura podstawowa
 
  - tekstura podstawowa
  
==== Pory roku ====
+
=== Tekstury losowe ===
Pora roku określana jest na podstawie ustawienia movelight.
+
Oprócz indywidualnych nazw tekstur można podać równieź ich zestaw. W takiej sytuacji wybrana zostanie losowo jedna z podanych tekstur. Przykład:
 +
<span style="color:tomato;font-weight:bold">texture1:</span> [ tekstura_a tekstura_b tekstura_c ]
 +
 
 +
=== Cechy tekstury ===
 +
 
 +
==== Nowy sposób ====
 +
Przy ścieżkach do tekstur po dwukropku mogą być podane opcjonalne cechy tekstury.
 +
texture/path:''<traits>''
 +
gdzie ''<traits>'' jest zbiorem symboli cech.  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Nazwa
+
! Symbol cechy
 
! Opis
 
! Opis
 
|-
 
|-
| '''spring'''
+
| '''s'''
| Wiosna
+
| Wyłącza zawijanie tekstury w poziomie
 
|-
 
|-
| '''summer'''
+
| '''t'''
| Lato
+
| Wyłącza zawijanie tekstury w pionie
 
|-
 
|-
| '''autumn'''
+
| '''#'''
| Jesień
+
| Wyostrzanie tekstury (działa tylko na starym rendererze)
 
|-
 
|-
| '''winter'''
 
| Zima
 
 
|}
 
|}
 +
Symbole mogą występować w dowolnej kolejności i ilości.
 +
 +
W zależności od kolejności występowania odwołań do tekstur w plikach, użycie cech może dać różne rezultaty.
  
==== Warunki pogodowe ====
+
Rozpatrzmy następujący przykład:
Warunki pogodowe zależą od wartości parametru zachmurzenia scenerii ''overcast'' we wpisie [[Dyrektywa atmo|atmo]]
+
Odwołanie 1: ''sciezka/tekstury:s''
{| class="wikitable"
+
Odwołanie 2: ''sciezka/tekstury:t'' (będzie interpretowane jako ''sciezka/tekstury:s'')
|-
+
Odwołanie 3: ''sciezka/tekstury:st'' (będzie interpretowane jako ''sciezka/tekstury:s'')
! Nazwa
+
Odwołanie 4: ''sciezka/tekstury'' (będzie interpretowane jako ''sciezka/tekstury:s'')
! Opis
 
|-
 
| '''clear'''
 
| Bezchmurnie (wartość ''overcast'' między 0 a 0.1)
 
|-
 
| '''scattered'''
 
| Pierwszy stopień zachmurzenia (wartość ''overcast'' między 0.1 a 0.5)
 
|-
 
| '''broken'''
 
| Drugi stopień zachmurzenia (wartość ''overcast'' między 0.5 a 0.9)
 
|-
 
| '''overcast'''
 
| Pełne zachmurzenie (wartość ''overcast'' między 0.9 a 1.0)
 
|-
 
| '''rain'''
 
| Deszczowo (wartość ''overcast'' między 1.0 a 2.0)
 
|-
 
| '''snow'''
 
| Śnieżnie (wartość ''overcast'' między 1.0 a 2.0 w warunkach zimowych)
 
|}
 
  
=== Tekstury losowe ===
+
Jak widać, każde kolejne odwołanie do tekstury automatycznie dziedziczy cechy z pierwszego znalezionego wywołania. Wyjątkiem od powyższej reguły jest następująca sytuacja:
Oprócz indywidualnych nazw tekstur można podać równieź ich zestaw. W takiej sytuacji wybrana zostanie losowo jedna z podanych tekstur. Przykład:
+
Odwołanie 1: ''sciezka/tekstury''
  <span style="color:tomato;font-weight:bold">texture1:</span> [ tekstura_a tekstura_b tekstura_c ]
+
  Odwołanie 2: ''sciezka/tekstury:s'' (będzie interpretowane jako ''sciezka/tekstury:s'')
 +
Odwołanie 3: ''sciezka/tekstury:st'' (będzie interpretowane jako ''sciezka/tekstury:s'')
 +
Odwołanie 4: ''sciezka/tekstury'' (będzie interpretowane jako ''sciezka/tekstury'')
  
=== Parametry tekstury ===
+
W odróżnieniu od pierwszego przypadku, późniejsze odwołanie do tekstury bez cech nie spowoduje dziedziczenia, o ile pierwszym użytym odwołaniem będzie odwołanie bez cech.
Przy ścieżkach do tekstur mogą być podane opcjonalne parametry, w dowolnej kolejności i ilości:
 
  
  texture/path:st#
+
==== Stary sposób ====
 +
Przed wprowadzeniem nowego sposobu definiowania cech stosowano metodę polegającą na wpisaniu symbolu cechy bezpośrednio w nazwę pliku tekstury wg. wzoru:
 +
  ''<trait>''nazwa_tekstury
 +
gdzie ''<trait>'' jest jednym z symboli cechy:
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Parametr
+
! Symbol cechy
 
! Opis
 
! Opis
 
|-
 
|-
| '''s'''
+
| '''#'''
| Wyłącza zawijanie tekstury w poziomie
+
| Wyostrzanie tekstury (działa tylko na starym rendererze)
|-
 
| '''t'''
 
| Wyłącza zawijanie tekstury w pionie
 
 
|-
 
|-
| '''#'''
+
| '''@'''
| Włącza filtrowanie tekstury (wyostrzanie?)
+
| Włącza alfa blending dla tekstur terenu. Ta cecha znana jest także pod nazwą ''problend''.
 
|-
 
|-
 
|}
 
|}
  
=== Materiał domyślny ===
+
=== Tekstury generowane ===
Jeśli w podanej ścieżce nie istnieje plik .mat, ale istnieje tekstura o tej samej nazwie, to wówczas tekstura ta interpretowana jest jak materiał o definicji:
+
 
  <span style="color:tomato;font-weight:bold">shader:</span> default_1
+
Zamiast ścieżek do tekstur można umieszczać wywołania skryptu Pythona który powinien wygenerować teksturę, na zasadach podobnych co skrypty wyswietlaczy w lokomotywach.  
<span style="color:tomato;font-weight:bold">texture_diffuse:</span> sciezka_do_tekstury
+
Składnia wywołania wygląda następujaco:
Dzięki temu nie jest konieczne tworzenie plików .mat dla prostych materiałów (używających tylko jednej tekstury).
+
 
 +
  make:sciezka/skrypt?parametr=wartosc&parametr=wartosc&parametr=wartosc // etc
 +
 
 +
Wpis taki spowoduje (jednorazowe) wywołanie skryptu ''skrypt.py'' zlokalizowanego w katalogu ''ścieżka''. Przy uruchomieniu skrypt otrzyma dictionary ze zbiorem zdefiniowanych w wywołaniu par ''parametr-wartosc''.
  
 
[[Category:Formaty plików symulatora]]
 
[[Category:Formaty plików symulatora]]

Aktualna wersja na dzień 20:18, 16 paź 2024

Plik .mat jest plikiem tekstowym z definicją materiału, czyli shadera oraz przypiętych do niego tekstur i parametrów. Posiada prostą składnię klucz: wartość oraz warunkowe bloki wybierane w zależności od ustawień symulacji.

Opis kluczy podstawowych

Nazwa Wartości Opis Uwagi
shader Ścieżka do pliku shadera (relatywna względem folderu shaders, nazwa bez przedrostka mat_ i rozszerzenia). Ustawia shader używany do renderowania obiektu. Parametr jest obowiązkowy, jeżeli jednak nie jest podany zostanie to ustawiony zostanie shader default_0, default_1, default_2 (w zależności od ilości podanych tekstur). Nie działa wtedy ustawianie tekstur poprzez alias.
textureX Ścieżka do tekstury lub zestaw ścieżek losowych. Przypina podaną teksturę pod jednostkę wyrażoną numerem X, numerując od 1.
texture_X Ścieżka do tekstury lub zestaw ścieżek losowych. Przypina podaną teksturę pod alias X jednostki zdefiniowany przez shader
paramX Od jednej do czterech wartości liczbowych. Ustawia parametr X numerując od 1.
param_X Od jednej do czterech wartości liczbowych. Ustawia parametr pod alias X zdefiniowany przez shader
opacity Wartość liczbowa 0-1 Próg przezroczystości

Wartości domyślne:

  • 0 - gdy tekstura podpięta pod jednostkę 1 posiada kanał alfa
  • 0.5 - gdy tekstura podpięta pod jednostkę 1 nie posiada kanału alfa lub nie zostałą ona w ogóle podpięta

Zobacz też opis działania przezroczystości

selfillum Od jednej do czterech wartości liczbowych. Nadpisuje wartość SelfIllum w submodelach używających tego materiału.
size Dwie wartości liczbowe Nadpisuje wartość rozmiaru tekstury [m] we wpisie node::track. Wpisanie -1 spowoduje zignorowanie wybranego parametru.
shadow_rank Wartość liczbowa 1-3 Określa "wagę/skomplikowanie" cieni rzucanych przez obiekt pokryty danym materiałem. Cienie z wagą wyższą niż wartość zdefiniowana wpisem gfx.shadow.rank.cutoff w pliku eu07.ini będą pomijane przy rysowaniu.

Materiał domyślny

Jeśli w podanej ścieżce nie istnieje plik .mat, ale istnieje tekstura o tej samej nazwie, to wówczas tekstura ta interpretowana jest jak materiał o definicji:

shader: default_1
texture_diffuse: sciezka_do_tekstury

Dzięki temu nie jest konieczne tworzenie plików .mat dla prostych materiałów (używających tylko jednej tekstury).

Dostępne shadery

Mapy obsługiwane przez dane shadery. Przy braku część tekstur można ustawić jednorodnie dla materiału przy pomocy parametru.

Nazwa Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
default Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
default_detail Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
default_specgloss Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
normalmap Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
normalmap_specgloss Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
detail_normalmap Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
detail_normalmap_specgloss Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
parallax Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
parallax_specgloss Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
detail_parallax Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
detail_parallax_specgloss Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
reflmap Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
reflmap_specgloss Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
shadowlessnormalmap Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
shadowlessnormalmap_specgloss Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
sunlessnormalmap Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
sunlessnormalmap_specgloss Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
water Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
water_specgloss Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail
colored Diffuse Alfa Normal Depth Reflection Specular Glossiness Metalic Detail

Opis kluczy warunkowych

Bloki warunkowe zawierają definicje własności materiału, które mają być aktywne w warunkach zależnych od ustawień symulacji. Wartościami dla tych kluczy jest dowolna ilość kluczy podstawowych i ich wartości, ograniczona za pomocą nawiasów klamrowych. Przykład użycia:

// Pamiętaj o odstępach między klamrami a resztą kodu!
texture1: example/tex
winter: {
    texture1: winter/tex
}

Powyższy kod oznacza, że w przypadku ustawienia warunków zimowych w miejsce texture1 ma zostać wczytana tekstura winter/tex zamiast domyślnej example/tex.

Bloki warunkowe moga byc dodatkowo zagniezdzane, np. blok warunkow pogodowych moze wystapic wewnatrz bloku pory roku:

autumn: {
    rain: {
        texture1: autumn/rain // jesien + deszcz
    }
    texture1: autumn/tex // jesien
}
rain: {
    texture1: default/rain // deszcz
}
texture1: default/tex

W takiej sytuacji ostatecznie uzywana jest tekstura spelniajaca najlepiej podane warunki, w kolejnosci:

- tekstura dla danej pogody i pory roku
- tekstura dla danej pogody
- tekstura dla danej pory roku
- tekstura podstawowa

Tekstury losowe

Oprócz indywidualnych nazw tekstur można podać równieź ich zestaw. W takiej sytuacji wybrana zostanie losowo jedna z podanych tekstur. Przykład:

texture1: [ tekstura_a tekstura_b tekstura_c ]

Cechy tekstury

Nowy sposób

Przy ścieżkach do tekstur po dwukropku mogą być podane opcjonalne cechy tekstury.

texture/path:<traits>

gdzie <traits> jest zbiorem symboli cech.

Symbol cechy Opis
s Wyłącza zawijanie tekstury w poziomie
t Wyłącza zawijanie tekstury w pionie
# Wyostrzanie tekstury (działa tylko na starym rendererze)

Symbole mogą występować w dowolnej kolejności i ilości.

W zależności od kolejności występowania odwołań do tekstur w plikach, użycie cech może dać różne rezultaty.

Rozpatrzmy następujący przykład:

Odwołanie 1: sciezka/tekstury:s
Odwołanie 2: sciezka/tekstury:t (będzie interpretowane jako sciezka/tekstury:s)
Odwołanie 3: sciezka/tekstury:st (będzie interpretowane jako sciezka/tekstury:s)
Odwołanie 4: sciezka/tekstury (będzie interpretowane jako sciezka/tekstury:s)

Jak widać, każde kolejne odwołanie do tekstury automatycznie dziedziczy cechy z pierwszego znalezionego wywołania. Wyjątkiem od powyższej reguły jest następująca sytuacja:

Odwołanie 1: sciezka/tekstury
Odwołanie 2: sciezka/tekstury:s (będzie interpretowane jako sciezka/tekstury:s)
Odwołanie 3: sciezka/tekstury:st (będzie interpretowane jako sciezka/tekstury:s)
Odwołanie 4: sciezka/tekstury (będzie interpretowane jako sciezka/tekstury)

W odróżnieniu od pierwszego przypadku, późniejsze odwołanie do tekstury bez cech nie spowoduje dziedziczenia, o ile pierwszym użytym odwołaniem będzie odwołanie bez cech.

Stary sposób

Przed wprowadzeniem nowego sposobu definiowania cech stosowano metodę polegającą na wpisaniu symbolu cechy bezpośrednio w nazwę pliku tekstury wg. wzoru:

<trait>nazwa_tekstury

gdzie <trait> jest jednym z symboli cechy:

Symbol cechy Opis
# Wyostrzanie tekstury (działa tylko na starym rendererze)
@ Włącza alfa blending dla tekstur terenu. Ta cecha znana jest także pod nazwą problend.

Tekstury generowane

Zamiast ścieżek do tekstur można umieszczać wywołania skryptu Pythona który powinien wygenerować teksturę, na zasadach podobnych co skrypty wyswietlaczy w lokomotywach. Składnia wywołania wygląda następujaco:

make:sciezka/skrypt?parametr=wartosc&parametr=wartosc&parametr=wartosc // etc

Wpis taki spowoduje (jednorazowe) wywołanie skryptu skrypt.py zlokalizowanego w katalogu ścieżka. Przy uruchomieniu skrypt otrzyma dictionary ze zbiorem zdefiniowanych w wywołaniu par parametr-wartosc.