Rendi le mani e la pistola davanti a tutto

Aug 24 2020

Attualmente sto imparando a conoscere Unreal Engine 4 realizzando un gioco FPS.

Come posso rendere le mani e la pistola del personaggio del giocatore sopra tutto?

Attualmente, quando mi avvicino a un muro, le mani e la pistola possono agganciarsi al muro in questo modo:

Voglio che assomigli a questo, dove anche quando il giocatore è rivolto contro un muro, le mani e la pistola rimangono in cima:

Come posso raggiungere questo obiettivo?

Aggiornamento: trovata questa soluzione:

Renderizza le mesh alla fine del prepass di sola profondità con il test di profondità disabilitato e taggando quei pixel nel buffer dello stencil. Quindi abilitare il test stencil nel passaggio di base per non toccare quei pixel. Alla fine del passaggio di base, disattivi il test dello stencil ed esegui il rendering delle mesh in primo piano con il test di profondità abilitato per ottenere le loro proprietà nel gbuffer. "

Risposte

1 EdMarty Aug 24 2020 at 15:25

Sfortunatamente non posso rispondere in termini di un motore irreale, in quanto non ho esperienza con esso, ma immagino che la mia esperienza con lo sviluppo generale del gioco e Unity in particolare possa trasferire in questo caso particolare.

In Unity, avrei impostato le mani e l'arma in modo che fossero renderizzate separatamente da tutto il resto, impostando il loro livello in modo che fosse qualcosa di diverso da quello predefinito.

Quindi, la fotocamera principale sarebbe impostata per non eseguire il rendering delle cose su questo livello.

Infine, aggiungerei un'altra fotocamera come figlio della prima fotocamera. Dovrebbe:

  • render dopo la fotocamera principale (fatto dandogli una priorità diversa)
  • cancella il depth buffer (e solo il depth buffer)
  • e renderizza solo le cose sul nuovo livello.

Sono sicuro che ci sono anche modi per farlo usando uno shader per maggiori prestazioni, ma questo non sarebbe un grande successo in termini di prestazioni, e inoltre non sono in grado di dare qualcosa di simile a buoni consigli su come scrivere shader del motore irreali.

Ancora una volta, non ho abbastanza familiarità con il motore irreale, quindi se questo è del tutto fuori luogo, mi scuso.

1 EluThingol Sep 06 2020 at 20:45

Renderizza le mesh alla fine del prepass di sola profondità con il test di profondità disabilitato e taggando quei pixel nel buffer dello stencil. Quindi abilitare il test stencil nel passaggio di base per non toccare quei pixel. Alla fine del passaggio di base, disattivi il test dello stencil e rendi le mesh in primo piano con il test di profondità abilitato per ottenere le loro proprietà nel gbuffer.