Unity HDRP - Weapon Clipping

Unity HDRP – Weapon Clipping – Czyli jak naprawić przenikanie broni.

Weapon Clipping to nic innego jak przenikanie broni przez ściany, w widoku pierwszoosobowym. Dzisiaj postaramy się naprawić ten problem.

Czym jest Weapon Clipping i jak go naprawić?

Weapon clipping to nic innego jak mesh naszej broni przenikający przez ściany i inne powierzchnie w grze.

Większość gier stosuje bardzo prosty trick jak to naprawić, a mianowicie traktuje nasze pukawki jako element HUD i przez to broń renderowana jest nad wszystkimi obiektami, implementacja tego typu rozwiązania w Unity wymaga dodatkowej kamery i użycia render texture.

Innym sposobem jest połączenie obrazu z dwóch kamer i renderowanie świata gry na jednej a modelu broni na drugiej. Nie jest on najlepszy z tego względu, że w Unity jeżeli renderujemy dane elementy na dwóch osobnych kamerach, to nie mogą one wchodzić ze sobą w interakcje jeżeli chodzi o cienie.

Jeszcze innym pomysłem może być podnoszenie broni przez postać do siebie, ale nie zawsze mamy moce przerobowe, aby bawić się w dodatkowe animacje.

Ze znanych sposobów zostaje jeszcze skalowanie modelu i zmienianie jego pozycji, tak aby w widoku gry nic się nie działo, a żeby broń fizycznie była mniejsza i nie przenikała przez ściany.

Poniżej linkuje film który pokazuje te metody.

Dlaczego to nie działa przy HDRP?

Zacznijmy od tego że HDRP jest dość specyficzne i przez to że każda kamera posiada określoną ilość render passów, czyli w uproszczeniu kroków przez które musimy przetworzyć obraz. Dwie kamery potrafią zabić z tego powodu wydajność.

Dlaczego więc nie skalować modelu? Z prostego powodu, nie jest dobrą praktyką skalowanie modelu który może być przy okazji skalowany przez animacje.

Jak naprawić ten problem?

weapon clipping
weapon clipping

Krok 1 – Dodajemy nową warstwę

Na starcie musimy stworzyć nową warstwę jaka będzie przypisana do wszystkich przedmiotów jakie chcemy renderować na wierzchu.

Po stworzeniu warstwy upewnij się, że jest ona przypisana do modelu.

Krok 2 – Stworzenie i konfiguracja Custom Pass

Kolejnym krokiem jest stworzenie Custom passa.

Dodajemy dwa DrawRenderersCustomPassy

I ustawiamy wszystkie opcje jak na screenie poniżej.

Krok 3 – Dostosowanie modeli

Na wszystkich modelach, które mają mieć poprawione renderowanie w materiale musimy odznaczyć opcje Receive Decals.

Krok 4 – Dostosowanie Pipeline

Jeżeli po wykonaniu wszystkich kroków w Inspectorze Custom Passa pojawią się błędy, to musimy udać się do ustawień i w zakładce Quality dla wszystkich presetów ustalić lit shader mode na Both.

Jeżeli nadal renderowanie nam nie działa, restart silnika powinien pomóc.

Podsumowanie

Konfiguracja tego systemu nie jest jakaś trudna do wprowadzenia a zaoszczędzi nam kilka siwych włosów na głowie. Unity podaje w oficjalnej dokumentacji sposób na naprawę tego problemu przez narzędzie Graphic Compositor, natomiast po wielu testach wyszło mi że włączenie tego toola zjada wydajność podobnie jak dodanie dwóch kamer na scenie.

Efekt końcowy naszych działań:

Udostępnij:

O autorze:

Odpowiedz