Autor Wątek:  Specular w modelach  (Przeczytany 6638 razy)

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

Offline Stele

  • Wydział Repozytorium
  • Administrator
  • Wiadomości: 10048
    • Zobacz profil
  • Otrzymane polubienia: 2571
Specular w modelach
« dnia: 28 Czerwca 2017, 21:43:17 »
Specular: właściwość materiału, odpowiadająca za stopień odbijania światła. Dla 0 obiekt absorbuje całe światło, dla 1 (255) odbija całość. Zgodnie z prawem odbicia, odbija się pod takim samym kątem względem wektora normalnego płaszczyzny jak pada, a intensywność odbieranego światła zależy od iloczynu wektorowego między kątem odbicia a kątem kamery.

Jako, że zaczynamy wprowadzać je do exe, trzeba się wziąć za modele.
Ma ktoś sensowną tabelkę z wartościami dla danych materiałów? Znalazłem tylko wytyczne dla konfiguracji shaderów w unity gdzie sugerują 40-75 dla niemetali i 155-255 dla metali. Nie za wysoko?

Będziemy potrzebować toola, który we wszystkich t3d i triangles ustawi na początek ten parametr na jakąś niska wartość. Uwaga, część triagles nie ma tej składowej materiału jawnie zdefiniowanej. Różna wartość na podstawie opacity, tak jak exe to teraz opcjonalnie robi, to dobry klucz dla masówki na początek również.
Potrzebny jest też tool do masowego wymnażania transformów w t3d. Bez jednostkowych normalnych, możemy pomarzyć o ładnym oświetleniu. Klikanie w rainstedzie masowo odpada.
« Ostatnia zmiana: 28 Czerwca 2017, 22:00:20 wysłana przez Stele »
Mój kanał youtube

Offline Balaclava

  • Deweloper
  • Wiadomości: 912
  • vel. krzysiuup
    • Zobacz profil
  • Otrzymane polubienia: 652
Odp: Specular w modelach
« Odpowiedź #1 dnia: 28 Czerwca 2017, 21:52:29 »
Mogę rozkminić jakiś algorytm, co to hurtowo zrobi. W sumie to dość prosta rzecz. Dobrze, że T3D ma fajną opisową składnię i nie trzeba tego jakoś specjalnie parsować...
EDIT: Chodzi oczywiście o ustawianie specularów. Mnożenie transformów to już dla mnie wyższa szkoła jazdy.
« Ostatnia zmiana: 28 Czerwca 2017, 22:02:40 wysłana przez KrzysztofGliwice »

Offline tmj

  • Deweloper
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
Odp: Specular w modelach
« Odpowiedź #2 dnia: 28 Czerwca 2017, 22:26:36 »
Znalazłem tylko wytyczne dla konfiguracji shaderów w unity gdzie sugerują 40-75 dla niemetali i 155-255 dla metali. Nie za wysoko?
W wersji testowej z automatycznym skalowaniem mamy 0.25 * 150 =~38 dla nieprzezroczystych i 1.5 * 150 = 225 dla szkla ktore zblizone jest pod tym wzgledem do polerowanego metalu, wiec mniej wiecej to samo co tam sugeruja, czyli brzmi sensownie :>  Chociaz 60-75 to juz moze byc dosc wysokii wspolczynnik dla niemetalu; chyba ze to jakas bardzo gladka powierzchnia.

Offline Krzysiek626

  • Zasłużony dla Symulatora
  • Wiadomości: 5904
  • EXIT
    • Zobacz profil
    • Krzysiek626
  • Otrzymane polubienia: 428
Odp: Specular w modelach
« Odpowiedź #3 dnia: 28 Czerwca 2017, 22:50:01 »
Jakiś prosty model do edycji specular na TD by się przydał, na wstępne szacowanie wyników (wyglądu, bo chyba o to chodzi). Sześcian zestawiony z różnych materiałów, metal, szkło, może drewno i beton. No chyba, że takie eksperymenty to przerost formy nad treścią.

Offline Milek7

  • Administrator ds. Technicznych
  • Wiadomości: 994
    • Zobacz profil
  • Otrzymane polubienia: 744
Odp: Specular w modelach
« Odpowiedź #4 dnia: 28 Czerwca 2017, 22:54:46 »
Zanim zaczniecie zmieniać, to weźcie pod uwagę że istotne jest jeszcze to że oprócz liniowego mnożnika wartości specular są podnoszone do potęgi wykładnika błyszczenia. Albo to można wpisać na stałe, albo też przypisywać do materiału. I jeszcze działanie tych wartości błyszczenia jest zależne od tego czy używa się modelu Phong (pow(max(dot(viewDir, reflectDir), 0.0), shininess)) czy też lekko zmodyfikowanego Blinn-Phong (pow(max(dot(normal, halfwayDir), 0.0), shininess)) (w Blinn-Phong trzeba dawać kilka razy więcej). Nie wiem jakiego używa exe tmj, w moim shaderowym exe jest blinn-phong.
« Ostatnia zmiana: 28 Czerwca 2017, 22:58:55 wysłana przez Milek7 »

Offline tmj

  • Deweloper
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
Odp: Specular w modelach
« Odpowiedź #5 dnia: 28 Czerwca 2017, 23:29:37 »
Blinn-Phong jest standardowy w starym openGL a ze exe uzywa wlasnie niego zakladam ze z nim mamy do czynienia :>  Exponent ustawilem na sztywno na 15 bo wiekszosc elementow jest pokryta farba albo czyms innym, wiec rozblyski nie sa zbyt skupione, a nie mamy w parametrach metody jego definiowania.

Offline Balaclava

  • Deweloper
  • Wiadomości: 912
  • vel. krzysiuup
    • Zobacz profil
  • Otrzymane polubienia: 652
Odp: Specular w modelach
« Odpowiedź #6 dnia: 29 Czerwca 2017, 09:58:34 »
W takim razie jak ma działać ten automat?
Ja to widzę tak, że lecimy hurtowo po wszystkich plikach i w przypadku znalezienia trójkąta/submodelu wypisuje się nazwa tekstury. Wtedy wpisujemy wartości specular i program zapamiętuje parę tekstura: wartość_specular w słowniku. W przypadku natrafienia później na tę samą teksturę wartości w pliku podmienią się automatycznie.
Są jakieś inne koncepcje?

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 120
Odp: Specular w modelach
« Odpowiedź #7 dnia: 29 Czerwca 2017, 10:35:33 »
Koncepcja dobra, byleby program wyświetlił teksturę której specular mamy nadać.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline Stele

  • Wydział Repozytorium
  • Administrator
  • Wiadomości: 10048
    • Zobacz profil
  • Otrzymane polubienia: 2571
Odp: Specular w modelach
« Odpowiedź #8 dnia: 29 Czerwca 2017, 11:50:59 »
I wszystkiego nie rozwiąże, bo w takich pojazdach przykładowo, brudne wózki i błyszczące pudło są na jednej teksturze. Ale dobry początek.

Pytanie do programistów, jak ma się materiałowa wartość specular do mapy gdy tą wprowadzimy? Jest ignorowana? Robi za mnożnik, jak teraz diffuse?
Mój kanał youtube

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 120
Odp: Specular w modelach
« Odpowiedź #9 dnia: 29 Czerwca 2017, 11:53:00 »
No właśnie dlatego w wątku o exe powiedziałem, że specular powinna trzymać tekstura, albo coś innego dopinanego do tektury tak, żeby np. zasymlować błyszczącego loka zaraz po rewizyjnej.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline tmj

  • Deweloper
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
Odp: Specular w modelach
« Odpowiedź #10 dnia: 29 Czerwca 2017, 13:33:42 »
Pytanie do programistów, jak ma się materiałowa wartość specular do mapy gdy tą wprowadzimy? Jest ignorowana? Robi za mnożnik, jak teraz diffuse?
Moze byc i tak, i tak, zalezy od tego co sie wpisze do kodu shadera. Sensowniejsze imo byloby w takiej sytuacji ignorowanie wartosci stalej i pobieranie tylko wartosci tekstury, bo w odroznieniu od diffuse wartosc specular bedzie zazwyczaj sporo nizsza niz 1.0 wiec wartosci mapy bylyby 'na wejsciu' znacznie przyciemniane, w porownaniu do wartosci zdefiniowanej parametrem. Tzn jesli wpisana jest wartosc specular 0.5, to przy mnozeniu punkt na mapie o wartosci 0.5 dawalby tylko wartosc 0.25, a model mialby odblaski o znacznie roznej sile z mapa i bez niej.

Offline Balaclava

  • Deweloper
  • Wiadomości: 912
  • vel. krzysiuup
    • Zobacz profil
  • Otrzymane polubienia: 652
Odp: Specular w modelach
« Odpowiedź #11 dnia: 29 Czerwca 2017, 15:46:23 »
Mam już dość spory kawałek algorytmu. Teraz pytanie, jaki ustawić specular dla replacableskin? Zostawić taki, jaki jest, ustawić niebłyszczący, czy dać wybór użytkownikowi?

Offline Stele

  • Wydział Repozytorium
  • Administrator
  • Wiadomości: 10048
    • Zobacz profil
  • Otrzymane polubienia: 2571
Odp: Specular w modelach
« Odpowiedź #12 dnia: 29 Czerwca 2017, 18:48:16 »
Dać wybór. Z tym, że repl replowi nierówny. Jest opcja by statyki i dynamiki traktował osobno, oraz rozróżniał pierwszego i czwartego repla? W statykach to zazwyczaj dach, a dynamikach karoseria. Czwórka to tabliczka, ale też raz ekran ledowy, a raz kawał pleksy.
Mój kanał youtube

Offline Mariusz1970

  • Zasłużony dla Symulatora
  • Wiadomości: 3899
    • Zobacz profil
  • Otrzymane polubienia: 231
Odp: Specular w modelach
« Odpowiedź #13 dnia: 29 Czerwca 2017, 18:49:20 »
Mam pytanie, mianowicie, czy dobrze zrozumialem, iz dla optymalizacji ladowania/renderowania w exe, najlepiej, aby wszystkie submodele w t3d, transformy mialy jedynke po przekatnej i oczywiscie przeliczanie wierzcholkow trojkatow pod przeksztacenia z czegos tam, na macierz jednostkowa (1 po przekatnej)?

Offline Stele

  • Wydział Repozytorium
  • Administrator
  • Wiadomości: 10048
    • Zobacz profil
  • Otrzymane polubienia: 2571
Odp: Specular w modelach
« Odpowiedź #14 dnia: 29 Czerwca 2017, 19:27:55 »
Tak. Wszystkie nieanimowane obiekty powinny mieć macierz transformacji jednostkową. A absolutnie wszystkie jedynki po przekątnej, czyli wymnożone skalowanie. Bez tego będzie zakłamane oświetlenie, bo wektory normalne też są poddawane skalowaniu transformem.
Edit: I dlatego nie powinienem się mądrzyć. ;) Myślałem, że obrót jest po bokach przekątnej.
« Ostatnia zmiana: 29 Czerwca 2017, 22:09:51 wysłana przez Stele »
Mój kanał youtube

Offline tmj

  • Deweloper
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
Odp: Specular w modelach
« Odpowiedź #15 dnia: 29 Czerwca 2017, 21:05:32 »
Tutaj uwaga, bo "jedynki po przekatnej" sa wtedy, gdy wyzerowane jest zarowno skalowanie jak i obrot, a sam obrot jest w wielu przypadkach uzasadniony (wszelkiego rodzaju przelaczniki w kabinie itp) Do wylapania skalowania technicznie rzecz biorac sprawdza sie dlugosc wektorow tworzacych (dla openGL) kolumny sub-macierzy 3x3 macierzy transformacji, co pozwala okreslic skalowanie indywidualnie wzgledem osi, lub w wersji uproszczonej sprawdza sie wyznacznik macierzy transformacji.

Offline Balaclava

  • Deweloper
  • Wiadomości: 912
  • vel. krzysiuup
    • Zobacz profil
  • Otrzymane polubienia: 652
Odp: Specular w modelach
« Odpowiedź #16 dnia: 30 Czerwca 2017, 12:41:41 »
Ok, to pierwsza działająca wersja. Działanie programu jest banalnie proste, ale niezbyt user-friendly. W konsoli wyświetla się nazwa tekstury, której możemy przypisać określony specular (dla jednej tekstury robimy to tylko raz - program pamięta nasze ustawienia i automatycznie ustawi odpowiednie wartości specular w przypadku znalezienia innego submodelu z tą samą teksturą). Zmodyfikowane pliki t3d trafiają do katalogu SPECULARS_FIXED. Dorobię jeszcze zapis ustawień do pliku i walidację danych wejściowych, przy okazji zrefaktoryzuję kod. Testujcie i podawajcie propozycje.
Program wypakować do głównego katalogu MaSzyny. Uwaga! Do uruchomienia potrzebny jest Python w wersji 3.6. Być może na wersji 2.7, czyli tej używanej przez symka również będzie działać.
« Ostatnia zmiana: 30 Czerwca 2017, 12:43:24 wysłana przez KrzysztofGliwice »

Offline Stele

  • Wydział Repozytorium
  • Administrator
  • Wiadomości: 10048
    • Zobacz profil
  • Otrzymane polubienia: 2571
Odp: Specular w modelach
« Odpowiedź #17 dnia: 30 Czerwca 2017, 19:51:30 »
Na pythonie 2.7 wysypuje. Na 3.4 śmiga.
Akceptuje wartość bez wszystkich składowych rgb.
Nie tworzy struktury katalogowej po przetworzeniu.
Jeśli dorobisz do niego jakieś gui, to fajne będą presety dla kilku materiałów by nie wklepywać liczb co rusz.
Mój kanał youtube

Offline Balaclava

  • Deweloper
  • Wiadomości: 912
  • vel. krzysiuup
    • Zobacz profil
  • Otrzymane polubienia: 652
Odp: Specular w modelach
« Odpowiedź #18 dnia: 30 Czerwca 2017, 21:25:05 »
Spróbuję zatem dorobić GUI w PyQt i skompilować to do exeka.
Cytuj
Nie tworzy struktury katalogowej po przetworzeniu.
Nie rozumiem za bardzo o co chodzi. Każdy model trafia do tej samej ścieżki, co oryginał, tylko nie względem głównego folderu, lecz względem katalogu SPECULARS_FIXED.

Teraz spostrzegłem, że program wykonuje się tylko do pewnego momentu - sprawdza tylko 2 podkatalogi, potem się wyłącza. Więc jednak nie wszystko hula jak powinno. Na dniach wleci kolejna wersja.

Offline Stele

  • Wydział Repozytorium
  • Administrator
  • Wiadomości: 10048
    • Zobacz profil
  • Otrzymane polubienia: 2571
Odp: Specular w modelach
« Odpowiedź #19 dnia: 30 Czerwca 2017, 21:28:55 »
Mi jakieś słupy trakcyjne zrobił na początek i wrzucił je do głównego folderu bez robienia podkatalogów.
Mój kanał youtube

Offline Balaclava

  • Deweloper
  • Wiadomości: 912
  • vel. krzysiuup
    • Zobacz profil
  • Otrzymane polubienia: 652
Odp: Specular w modelach
« Odpowiedź #20 dnia: 30 Czerwca 2017, 21:30:28 »
Jak się nazywają te słupy? Możesz wrzucić plik specularFixer.log? Obejrzę.
« Ostatnia zmiana: 30 Czerwca 2017, 21:32:53 wysłana przez KrzysztofGliwice »

Offline Stele

  • Wydział Repozytorium
  • Administrator
  • Wiadomości: 10048
    • Zobacz profil
  • Otrzymane polubienia: 2571
Odp: Specular w modelach
« Odpowiedź #21 dnia: 30 Czerwca 2017, 21:42:33 »
Fałszywy alarm, to jakieś bramki z roota. Może sygnałowe albo co. Nie miałem cierpliwości klepać aż by doszedł do podfolderów.
Mój kanał youtube

Offline Balaclava

  • Deweloper
  • Wiadomości: 912
  • vel. krzysiuup
    • Zobacz profil
  • Otrzymane polubienia: 652
Odp: Specular w modelach
« Odpowiedź #22 dnia: 02 Lipca 2017, 12:39:38 »
Mam pytanie, czy w miarę rozwoju exe zaistnieje potrzeba masowej zmiany innych właściwości niż specular w modelach? Jeśli tak, to zrobię coś bardziej kompleksowego. Na pewno będzie jeszcze potrzeba wymnożenia transformów we wszystkich t3d. Czy przewidujecie że będą w przyszłości konieczne kolejne masowe poprawki jak teraz?
« Ostatnia zmiana: 23 Lipca 2017, 21:05:33 wysłana przez krzysiuup »

Offline Stele

  • Wydział Repozytorium
  • Administrator
  • Wiadomości: 10048
    • Zobacz profil
  • Otrzymane polubienia: 2571
Odp: Specular w modelach
« Odpowiedź #23 dnia: 23 Lipca 2017, 21:10:14 »
Wymnażacz tyko dla anim:false i dla dynamic musi parsować mmd i nie tykać obiektów z kluczami animacji.
Może kiedyś emission mapy się dorobimy, ale to i tak w materiale się zaweźmie. Mglista przyszłość jest. :) Trzymaj kod, najwyżej będzie potrzeba rozwoju w przyszłości.
Mój kanał youtube