Jaka jest różnica między współrzędnymi tekstury „wygenerowanej” i „normalnej”?

Nov 20 2020

Nie mogę zrozumieć z dokumentacji różnicy w węźle współrzędnych tekstury (w Shaderze) między wygenerowanym i normalnym , a nawet celu samego węzła współrzędnych tekstury , który mam jako pierwszy węzeł.

Odpowiedzi

9 AllenSimpson Nov 20 2020 at 01:40

Pomocne może być wizualizowanie tego w ten sposób:

Kiedy renderujemy scenę, dla każdego piksela w aparacie rzutujemy promień, a jeśli stykamy się z powierzchnią obiektu, pytamy „Jaki kolor należy zgłosić dla tego piksela przy danych właściwościach materiału, oświetleniu, okluzji itp?"

Jest to dość proste, gdy materiał ma jednolity kolor, ale co z różnymi materiałami?

Materiał proceduralny może być traktowany jako „pole” w sensie fizyki, istnieje i ma wartość w każdej pozycji w twojej scenie. Kiedy odwzorowujesz tę teksturę na obiekt i patrzysz na nią w rzutni, wyświetlasz przekrój tego pola, który pokrywa się z powierzchnią twojego obiektu.

Węzeł współrzędnych tekstury definiuje jedynie przestrzeń współrzędnych X, Y, Z używaną do odwzorowania tekstury. Na przykład współrzędne obiektu używają ustawienia skali Blendera i ustawiają początek obiektu na 0,0,0. Wygenerowane współrzędne używają obwiedni obiektu jako przestrzeni współrzędnych w zakresie od 0,0,0 do 1,1,1.

Normalne współrzędne są trochę dziwne. Obecnie rozumiem, że są one mniej oparte na pozycji, a bardziej na rotacji każdej indywidualnej twarzy (a dokładniej na normalnym kierunku). Może ktoś rozszerzy, jak to może być dla Ciebie przydatne, moja wiedza na ten temat jest ograniczona.

6 RobinBetts Nov 20 2020 at 05:42

Aby rozwinąć trochę dobrą odpowiedź Allena Simpsona :

Wygenerowane współrzędne zwracają położenie aktualnie ocenianego punktu cieniowania, powiedzmy P , obliczone w przestrzeni tekstury `` Wygenerowano '', która niezależnie od rozmiaru cieniowanego obiektu mierzy 0-1 wzdłuż boków ramki ograniczającej, pochodzenie na minimum. Obwiednia jest równoległa do lokalnych osi obiektu (które mogą być pochylone względem siatki, jeśli obrócono siatkę w trybie edycji).

(To jest ustawienie domyślne; „Wygenerowaną” przestrzeń faktycznie można skalować i przesuwać w panelu Przestrzeń tekstur na karcie Dane obiektu .. ale myślę, że to trochę dziedzictwo?)

Dwa z tych wyjść współrzędnych tekstury węzła, Normal i refleksji , nie należy zwracać lokalizację z P ; wrócą kierunki od P : lokalizacje na urządzeniu kula na środku P .

Normalna w węźle Współrzędne tekstury zwraca wektor z punktu P , w kierunku interpolowanej (po wygładzeniu) normalnej powierzchni, do wierzchołka żółtej strzałki o długości 1 jednostki Blendera. Jest mierzony w przestrzeni obiektu: jego komponenty X, Y i Z są równoległe do X, Y i Z Obiektu.

Normalny w węźle Geometria zwraca to samo, ale w przestrzeni świata. Te odbite powraca wyjściowe kierunek obecnie badane promienia wejściowego, dalej, po odbiciu z powierzchni w P . Jest również mierzony wzdłuż osi wyrównanych ze światem.