Hände und Waffe vor allem rendern
Ich lerne gerade etwas über Unreal Engine 4, indem ich ein FPS-Spiel mache.
Wie kann ich die Hände und die Waffe des Spielercharakters über alles rendern?
Wenn ich derzeit an eine Wand gehe, können Hände und Pistole wie folgt in die Wand eingeklemmt werden:
Ich möchte, dass es so aussieht, dass selbst wenn der Spieler gegen eine Wand schaut, die Hände und die Waffe oben bleiben:
Wie kann ich das erreichen?
Update: Diese Lösung gefunden:
Rendern Sie die Netze am Ende des Nur-Tiefen-Prepass mit deaktiviertem Tiefentest und markieren Sie diese Pixel im Schablonenpuffer. Aktivieren Sie dann den Schablonentest im Basisdurchlauf, um diese Pixel nicht zu berühren. Am Ende des Basisdurchlaufs deaktivieren Sie den Schablonentest und rendern Ihre Vordergrundnetze mit aktiviertem Tiefentest, um ihre Eigenschaften im gbuffer zu erhalten. "
Antworten
Leider kann ich nicht in Bezug auf die unwirkliche Engine antworten, da ich keine Erfahrung damit habe, aber ich vermute, dass meine Erfahrung mit der allgemeinen Spieleentwicklung und Unity speziell in diesem speziellen Fall übertragen werden kann.
In Unity würde ich die Hände und Waffen so einrichten, dass sie getrennt von allem anderen gerendert werden, indem ich ihre Ebene auf etwas anderes als die Standardeinstellung setze.
Dann wäre die Hauptkamera so eingerichtet, dass auf dieser Ebene keine Objekte gerendert werden.
Schließlich würde ich als Kind der ersten Kamera eine weitere Kamera hinzufügen. Es müsste:
- Rendern nach der Hauptkamera (erfolgt durch Zuweisung einer anderen Priorität)
- Löschen Sie den Tiefenpuffer (und nur den Tiefenpuffer).
- und rendern nur die Dinge auf der neuen Ebene.
Ich bin mir sicher, dass es auch Möglichkeiten gibt, dies mit einem Shader zu tun, um mehr Leistung zu erzielen, aber dies wäre kein großer Leistungseinbruch, und ich kann auch keine guten Ratschläge zum Schreiben unwirklicher Engine-Shader geben.
Auch hier bin ich mit dem unwirklichen Motor nicht vertraut genug. Wenn dies völlig falsch ist, entschuldige ich mich.
Rendern Sie die Netze am Ende des Nur-Tiefen-Prepass mit deaktiviertem Tiefentest und markieren Sie diese Pixel im Schablonenpuffer. Aktivieren Sie dann den Schablonentest im Basisdurchlauf, um diese Pixel nicht zu berühren. Am Ende des Basisdurchlaufs deaktivieren Sie den Schablonentest und rendern Ihre Vordergrundnetze mit aktiviertem Tiefentest, um ihre Eigenschaften im Puffer zu erhalten.