Renderuj ręce i broń przed wszystkim

Aug 24 2020

Obecnie uczę się o Unreal Engine 4, tworząc grę FPS.

Jak mogę wyrenderować ręce i broń postaci gracza na wszystkim?

Obecnie, gdy podchodzę do ściany, ręce i pistolet mogą wbijać się w ścianę w następujący sposób:

Chcę, żeby wyglądało to tak, że nawet gdy gracz stoi twarzą do ściany, ręce i pistolet pozostają na górze:

Jak mogę to osiągnąć?

Aktualizacja: znalazłem to rozwiązanie:

Renderuj siatki na końcu wstępnego przejścia tylko do głębi z wyłączonym testowaniem głębokości i oznaczaniem tych pikseli w buforze wzornika. Następnie włącz test szablonu w przebiegu podstawowym, aby nie dotykać tych pikseli. Na końcu podstawowego przejścia wyłączasz test szablonu i renderujesz swoje siatki pierwszego planu z włączonym testowaniem głębokości, aby uzyskać ich właściwości w buforze gbuforowym. "

Odpowiedzi

1 EdMarty Aug 24 2020 at 15:25

Niestety nie mogę odpowiedzieć w kwestii nierealnego silnika, ponieważ nie mam z nim doświadczenia, ale domyślam się, że moje doświadczenie z generalnym tworzeniem gier, a konkretnie z Unity, może się w tym przypadku przenieść.

W Unity ustawiłbym ręce i broń tak, aby były renderowane oddzielnie od wszystkiego innego, ustawiając ich warstwę tak, aby była inna niż domyślna.

Następnie główny aparat zostałby ustawiony tak, aby nie renderował rzeczy na tej warstwie.

Na koniec dodałbym kolejny aparat jako dziecko pierwszego aparatu. Musiałby:

  • renderowanie po głównym aparacie (robione przez nadanie mu innego priorytetu)
  • wyczyść bufor głębokości (i tylko bufor głębokości)
  • i renderuj tylko rzeczy na nowej warstwie.

Jestem pewien, że są też sposoby, aby to zrobić przy użyciu modułu cieniującego, aby uzyskać większą wydajność, ale nie byłby to duży hit wydajnościowy, a także nie jestem w stanie udzielić niczego, co byłoby bliskie dobrej rady, jak pisać nierealne shadery silnika.

Ponownie, nie jestem wystarczająco zaznajomiony z nierealnym silnikiem, więc jeśli jest to całkowicie nie na miejscu, przepraszam.

1 EluThingol Sep 06 2020 at 20:45

Renderuj siatki na końcu wstępnego przejścia tylko do głębi z wyłączonym testowaniem głębokości i oznaczaniem tych pikseli w buforze wzornika. Następnie włącz test szablonu w przebiegu podstawowym, aby nie dotykać tych pikseli. Na końcu przejścia podstawowego wyłączasz test szablonu i renderujesz swoje siatki pierwszego planu z włączonym testowaniem głębokości, aby uzyskać ich właściwości w buforze gbuforowym.