Autor Wątek:  Mapowanie podsypki  (Przeczytany 2957 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 337
Mapowanie podsypki
« dnia: 15 Sierpnia 2012, 13:14:08 »
Dotychczas poprzeczne mapowanie podsypki wykonywane było z podziałem tekstury na 3 części. Od 0 do 0.33 mapowane jest lewe pochylenie, od 0.33 do 0.67 jest górna płaszczyzna, a od 0.67 do 1 prawy bok. Przy standardowym (tzn. z Księżyca wziętym) profilu 0.2 0.5 1.1 i np. 512 pikselach na szerokość daje to:
  • 0.33*512/1.118=151.13 pikseli na metr na boku
  • 0.34*512/2.435=71.49 pikseli na metr na górnej powierzchni
Po zmianie profilu na 0.6 0.9 0.9 jest jeszcze większe zróżnicowanie:
  • 0.33*512/1.082=156.2 pikseli na metr na boku
  • 0.34*512/3.235=53.81 pikseli na metr na górnej powierzchni

Dodatkowo górna powierzchnia zawiera szyny, pomiędzy którymi powinna zostać zachowana stała odległość, niezależnie od szerokości tej powierzchni.

W efekcie przygotowując teksturę podsypki trzeba ją odpowiednio skalować, jak również każdy profil wymaga innego zestawu tekstur. Padła propozycja, aby mapować teksturę podsypki ze stałą rozdzielczością px/m. Wadą tego rozwiązania będzie brak możliwości robienia zielonych brzegów na łączeniu z terenem. A przynajmniej będzie trudniej z nimi trafić, bo mapowanie nie będzie od 0 do 1, tylko zostanie wyliczone w zależności od całkowitej długości przekroju.

Do uzgodnienia jest kwestia, jak to powinno być mapowane, żeby było dobrze, tzn. żeby prościej było robić tekstury albo aby wyglądały one lepiej, albo żeby się dało używać tej samej tekstury na różne profile. Wiadomo, że podkłady mają określoną długość i raczej się ich nie skaluje przy zmianie rozstawu torów. W drodze wyjątku dla podsypki 0.2 0.5 1.1 można zachować dotychczasowe mapowanie.
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline Tolein

  • Wiadomości: 483
  • Kanapowy Toromistrz
    • Zobacz profil
  • Otrzymane polubienia: 1
Odp: Mapowanie podsypki
« Odpowiedź #1 dnia: 15 Sierpnia 2012, 13:56:16 »
Mapowanie tekstury ze stałą rozdzielczością px/m wydaje mi się całkiem oczywiste (nie wiem czy o mnie tu piszesz, czy nie), żeby nie rodziły się sytuacje w których tłuczeń nagle magicznie zmienia gradację dlatego, że zmienił się profil poprzeczny nawierzchni (inna kwestia, że może dochodzić do sytuacji nadmiernego rozpikselowania tekstury).
Co do podkładów, to się nie zgodzę, bo owszem, zmieniają one swoją szerokość w zależności od rozstawu szyn, tzn. nie wiem jak zmienia się całkowita ich szerokość, ale na pewno mają one odpowiednie profilowanie, przystosowane do danego rozstawu szyn, nie wspominając o kotwach do docisków sb albo innych mocowaniach, dla docisków k, etc, które przecież "przesuwają się" wraz ze zmianą rozstawu szyn.

JA bym zastanowił się nad inną jeszcze kwestią: aktualnie podsypka to taki nasyp o przekroju trapezu równoramiennego, która nagle się zaczyna i równie nagle kończy. Mam tu na myśli tą linę prostą (krzywą na łukach), która wyraźnie odcina podsypkę od terenu dookoła, bo podsypka ma teksturę z tłuczniem, a teren dookoła z trawką albo czymś w ten deseń. Może warto zastanowić się nad jakimś rozwiązaniem tego "problemu", tak żeby wyglądało to nieco bardziej realnie i tu od razu wychodzę z propozycją: na "brzegu" podsypki stwórzmy odcinek przejściowy, w którym tekstura podsypki przechodzić będzie w teksturę terenu dookoła. Chodzi mi o to, że począwszy od brzegu przylegającego do tekstury podsypki przez tłuczeń powoli prześwitywać będzie trawka, czy coś innego, zależnie jaki teren jest dookoła torów, aż do przeciwległego brzegu, gdzie to tekstura trawy jest dominująca, tylko pojawiają się coraz mniej liczne grupki ziaren tłucznia, aż po pojedyncze kamienie i brzeg tekstury, gdzie zaczyna się już 100% trawa.
Podejrzewam, że przygotowanie tekstury dla każdej kombinacji terenu/podsypki może być nieco uciążliwe, dlatego można to rozwiązać w ten np. sposób, że tekstura tego pasa przejściowego byłaby przypisana do podsypki i zawierać będzie w sobie kanał alfa, czy kolor tła, który pojawiać się będzie tam, gdzie tłuczeń nie występuje. I ta właśnie miejscami przezroczysta warstwa podsypkowa będzie nakładana na teksturę terenu, czyli np. teksturę trawy. Taką gotową teksturę przejściową można generować automatycznie, a następnie zapisać jako kolejny plik tekstury na dysku, albo używać w programie takiej wygenerowanej na bieżąco.

Można też pomyśleć nad innym zagadnieniem, mianowicie nad zbiorową podsypką pod cała nawierzchnię torową. W chwili obecnej, z tego co widzę, podsypka jest tworzona niezależnie pod każdy tor, a jeśli autora denerwuje "zielony pasek" pomiędzy torami, to sobie go "zalepia" teksturą podsypki. W rzeczywistości, pomijając już fakt, że podsypka wcale nie jest symetryczna, miedzy torami podsypka ma inny kąt nachylenia, niż przy krawędzi, albo w ogóle nie występuje tam spadek, tylko podsypka ciągnie się w poziomie do kolejnego toru (patrz załącznik).

Dlatego też może należy zastanowić się nad bardziej skomplikowanym sposobem teksturowania podsypek. Oddzielna tekstura dla podsypki z podkładami, oddzielna dla "odcinka przejściowego" i oddzielna dla podsypki bez podkładów (tak żeby zapełniać dziury), wszystkie zrobione tak, żeby dało się łatwo sklejać je ze sobą w dowolnej konfiguracji. Być może należy też zastanowić się nad bardziej skomplikowanym, dającym więcej możliwości, sposobem generowania modelu podsypki, albo po prostu tworzyć boxa podsypki zbiorczej pod te trapezowe podsypki indywidualne torów.

Warto też przemyśleć kwestie zastosowania modeli podkładów i docisków szyn, oczywiście z pełnym LoDem, żeby nadmiernie nie obciążać sprzętu i uwzględnić ich wykorzystanie w kontekście wcześniej przedstawionych zagadnień.

Jeszcze jeden problem wart poruszenia, związany z podsypką o teksturowaniu ze stałym współczynnikiem px/m, to kwestia tego, że przy nieregularnej długości odcinków szyn, należałoby przekazywać informację przesunięciu mapowania tekstury do następnego w kolejności fragmentu toru/ów, a to generuje chyba pewien problem.
« Ostatnia zmiana: 15 Sierpnia 2012, 14:25:30 wysłana przez Tolein »
"Podejrzewam, że:
1. poświęcają na to niewiele czasu,
2. mają ograniczoną liczbę zwojów mózgowych, przez co są w stanie wykonywać tylko proste i powtarzalne czynności,
3. wydaje im się, że mogą nawet podbić kosmos, ale życie weryfikuje im to negatywnie."

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 337
Odp: Mapowanie podsypki
« Odpowiedź #2 dnia: 15 Sierpnia 2012, 14:49:53 »
Mapowanie podsypki mogę poprawić praktycznie od ręki, ale całego systemu z wykorzystaniem np. plików E3D do generowania podkładów się nie zrobi bez głębszego przemyślenia, więc się na to nie porywam. Wychodzę z założenia, że jeśli dla kogoś to będzie ważne, to będzie on w stanie opracować odpowiedni system modelowania podsypki. Mi zależy głównie na powstaniu nowych tekstur podsypki, a przy okazji można jakieś drobiazgi ulepszyć.

O ile wiem, każdy rozstaw torów ma własne wytyczne na kształt podkładów betonowych, na drewnianych jest potencjalnie duża dowolność (np. w Bydgoszczy jest linia tramwajowa wybudowana pierwotnie jako 1435, a następnie przekuta na 1000 i podkłady wystają z jednej strony).

Ja nie umiem zrobić tekstur przejściowych i niespecjalnie mnie to pasjonuje. Używanie przezroczystości skutkuje upierdliwymi efektami ubocznymi.

Przesunięcie mapowania wzdłużnego dla kolejnych odcinków mam zamiar zrobić, ale określenie reguł nie jest proste. Np. na jakich wartościach mapowania można je urwać z drugiej strony, aby nie wyszło pół podkładu?
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline Tolein

  • Wiadomości: 483
  • Kanapowy Toromistrz
    • Zobacz profil
  • Otrzymane polubienia: 1
Odp: Mapowanie podsypki
« Odpowiedź #3 dnia: 15 Sierpnia 2012, 16:26:34 »
No dlatego też optowałem za uwiązaniem długości toru do wielokrotności długości rozmieszczenia podkładów, wyłączając oczywiście sytuacje wyjątkowe, jak np. rozmieszczenie podkładów na krótkich odcinkach pomiędzy zwrotnicami. Związane z tym zmiany w geometrii torowiska byłyby minimalne, a korzyścią byłoby dużo łatwiejsza lokalizacja podkładów i innych elementów. Natomiast rozwiązanie kwestii odcinków niestandardowych można łatwo rozwiązać, tzn. np. tekstura zawsze jest skalowana, tzn. wyświetlana jest
dla l1%l0 < l0 / 2          n = (l1 - l1%l0) / l1
dla l1%l0 > l0 / 2          n = (l1 - l1%l0) / l1 +1
gdzie l1 to długość odcinka teksturowanego toru, l0 to długość tekstury (px / px/m), a n to tiling, tzn. ile razy tekstura jest powtarzana na długości toru.

Ale nawet bez tego chyba nie powinno być problemu - nawet jeśli wyjdzie pół podkładu na końcu jednego odcinka, to przecież drugie pół będzie na kolejnym odcinku, choć domyślam się, że martwisz się o ewentualne sytuacje, gdzie tor urywa się nagle i zostać może połowa podkładu. Natomiast oczywistym jest, że w sytuacjach takich jak wspomniana wcześniej, gdzie pojawia się niestandardowej długości odcinek toru pomiędzy zwrotnicami, i tak trzeba będzie te podkłady przeskalować.

Co do przeźroczystości - nie miałem na myśli tworzenia obiektów teksturowanych z alfą, tylko nałożenie na siebie dwóch obrazów - warstw: tła, na którym jest trawa, czy inna tekstura otoczenia oraz warstwy z przeźroczystością, gdzie jest coraz rzadziej występujący tłuczeń, a przestrzeń między nim jest przeźroczysta. Z nałożenia tych dwóch warstw uzyskujemy obraz - teksturę przejściową obiektu. I chodzi mi  tu cały czas o warstwy w sensie takim, w jakim je mamy do dyspozycji w photoshopie, a nie warstwy takie jak w platformówkach, dające efekt 2.5D.

Ed. 1 - odnośnie
Cytuj
Natomiast oczywistym jest, że w sytuacjach takich jak wspomniana wcześniej, gdzie pojawia się niestandardowej długości odcinek toru pomiędzy zwrotnicami, i tak trzeba będzie te podkłady przeskalować.
Przeskalowanie tekstury podsypki z podkładami sprawia, że podkład nam zmienia trochę wymiary, co nie jest pożądane (z punktu widzenia obrony realizmu w symulatorze). Natomiast jeśli dołożymy modele podkładów, to z bliska takiej sytuacji nie zaobserwujemy - wszak nie-przeskalowany model podkładu zakryje nam przeskalowany podkład w teksturze, a z daleka (w odległości, w której modele podkładów nie będą wyświetlane) nie zauważymy tych artefaktów z uwagi na odległość.
Pojawia się z kolei inny problem - model podkładu zakryje część przeskalowanego tłucznia i efekt może to nieco dziwnie wyglądać - tłuczeń sąsiadujący z podkładem odpowiednio się obok niego układa, a tak pojedyncze ziarna będą "ucięte przez podkład" w pół.
« Ostatnia zmiana: 15 Sierpnia 2012, 16:35:29 wysłana przez Tolein »
"Podejrzewam, że:
1. poświęcają na to niewiele czasu,
2. mają ograniczoną liczbę zwojów mózgowych, przez co są w stanie wykonywać tylko proste i powtarzalne czynności,
3. wydaje im się, że mogą nawet podbić kosmos, ale życie weryfikuje im to negatywnie."

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 337
Odp: Mapowanie podsypki
« Odpowiedź #4 dnia: 15 Sierpnia 2012, 16:43:04 »
Ja rozumiem, że masz dalekosiężne plany, ale mi chodzi o mapowanie tekstury podsypki w poprzek toru, a nie wzdłuż.

  Dodano: 16 Sierpnia 2012, 11:52:28
Obecne tekstury podsypki są kwadratami o boku 256 pikseli i mapowane są wzdłuż na 4 metry. Wychodzi więc 64px/m. Standardowy profil 0.2 0.5 1.1 ma w poprzek długość równą 1.118+0.5+1.435+0.5+1.118=4.671, przy założeniu, że na pochyleniu mapowanie jest prostopadłe a nie widziane z góry. Zakładając, że poprzeczne mapowanie będzie miało taką samą gęstość, co wzdłużne (64px/m), tekstura podsypki się zawinie. Skrajne 34cm podsypki zostanie powielone z obu stron, czyli nie da się zrobić zielonego paska udającego połączenie z trawą (no chyba że będzie on miał 35cm i z każdej strony będzie dobrze wyglądał). Aby tekstura się nie zawijała, wymagane by było albo zwiększenie mapowania wzdłużnego z 4 metrów do co najmniej 4.671 metrów, w postaci modyfikacji wpisów wszystkich torów...

Drugi profil ma na szerokość 1.082+0.9+1.435+0.9+1.082=5.399 metra, czyli zawijanie było by jeszcze większe. Należało by jeszcze rozważyć profil projektowy 0.67 1.0 1.0, którego rozmiar poprzeczny jest równy 1.204+1+1.435+1+1.204=5.843.

Aczkolwiek, jeśli podkłady są co 60cm, to powielanie tekstury na odcinku 4 metrów daje niecałkowitą liczbę podkładów na teksturze. Gdyby powielanie było na 6 metrów, podkładów można by zamieścić 10 (kwadratowa tekstura). Przy powielaniu 3 metry musiało by być 5 podkładów, a tekstura musiała by mieć rozmiar 2:1. Można by to też skrócić do powielania 0.6 metra z jednym podkładem i teksturą 16:1.

Oczywiście można zachować dotychczasowy stan i się z niego cieszyć, ale w praktyce to i tak mamy wszystkie scenerie do poprawienia.
« Ostatnia zmiana: 16 Sierpnia 2012, 11:52:28 wysłana przez Ra »
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni