Le rendu natif à la première personne prend en charge une fonctionnalité souvent requise pour créer des expériences avec une caméra à la première personne. Il permet notamment de restituer certains objets avec un champ de vision qui diffère de celui qui restitue le reste de la scène. Par exemple, le rendu des mains, des bras ou des armes d'un personnage est idéal pour l'affichage à la première personne, afin que ces éléments ne rentrent pas dans les murs quand on s'en rapproche.
Le rendu à la première personne offre les caractéristiques suivantes :
Rendu des primitives à la première personne avec un champ de vision personnalisé.
Appliquez un facteur d'échelle aux primitives à la première personne afin de les réduire efficacement et de les rapprocher de la caméra, ce qui permet d'éviter la plupart des cas où la géométrie à la première personne entrerait en collision avec la scène, un phénomène souvent appelé « détourage ». Ceci permet aux primitives à la première personne d'être toujours rendues au-dessus de la scène.
Comprend une solution d'ombrage complète, dans laquelle la géométrie à la première personne reçoit les ombres de la scène, projette des ombres sur elle-même, et les joueurs peuvent voir leur propre ombre projetée sur la scène.
Intègre la technologie Hardware Ray Tracing (HWRT), qui permet aux joueurs de se voir reflétés dans la scène et de projeter des ombres ray-tracées.
Intégration avec les matériaux :
Contrôle par vertex de l'effet de première personne. Cette sortie facultative permet d'interpoler entre l'espace du monde et ce qui est considéré comme étant dans l'espace à la première personne. Elle est utile lorsqu'il est nécessaire que certaines parties de la géométrie se trouvent dans l'espace du monde pour se connecter au monde, par exemple lorsque les pieds du personnage sont posés sur le sol.
Utilisez le graphique de matériau pour interroger les paramètres de rendu à la première personne et transformer des positions arbitraires depuis l'espace du monde vers l'espace à la première personne.
Cela fonctionne pour la plupart des types primitifs. Cela inclut les maillages statiques, les maillages surfacés et les effets de particules Niagara.
Implémentation du rendu à la première personne
Pour le développement de jeux à la première personne, la caméra du joueur doit généralement rendre la géométrie à la première personne de manière à avoir un champ de vision personnalisé qui n'entre pas en contact avec le monde. L'implémentation du rendu à la première personne dans Unreal Engine peut être considérée comme un morphing de la géométrie à la première personne de manière à obtenir l'effet recherché d'un champ de vision personnalisé et un comportement anti-détourage. Ce morphing survient après l'application du décalage de position dans le monde, mais avant que le vertex ne soit projeté dans l'espace de détourage.
Par conséquent, la géométrie existe techniquement dans l'espace du monde, mais, dans l'ensemble, elle semble rendue avec une matrice de projection différente. Cependant, la géométrie est désormais très petite et légèrement inclinée. Cela permet d'obtenir un bon résultat du point de vue de la caméra, mais ce n'est pas adapté aux autres perspectives. Cela ne doit donc pas projeter d'ombres sur la scène ou être visible dans les reflets en ray tracing matériel, ce qui est impossible par nature.
L'avantage de mettre en œuvre le rendu à la première personne de cette manière est qu'il permet aux primitives à la première personne d'être rendues dans le même passage que les autres primitives, évitant ainsi la nécessité ou la complexité de passages de rendu supplémentaires qui auraient un impact sur la mémoire et les performances.
Paramètres de primitives à la première personne
Les composants incluent un paramètre qui permet de déterminer comment ils sont rendus par la caméra à la première personne lorsque leur type de primitive est réglé sur première personne ou espace du monde.
Ce paramètre comprend la sélection suivante :
Aucun : cette primitive n'interagit pas avec le rendu à la première personne.
Première personne : cette primitive est rendue en tant que première personne et est affectée par les propriétés de première personne sur la caméra pour le champ de vision de la première personne et le changement d'échelle de la première personne, qui sont utilisées pour rendre le composant avec différents champs de vision et une plage de profondeur plus petite de sorte que le détourage avec la scène puisse être évité. La primitive ne projette pas d'ombre sur la scène et n'est pas visible dans le monde en ray tracing.
Représentation de l'espace du monde : cette primitive représente une primitive de première personne dans l'espace du monde. Cette primitive s'afficherait pour les autres joueurs et est utilisée pour projeter une ombre sur le sol et pour les reflets avec le ray tracing matériel, entre autres choses. Elle est invisible pour la caméra à la première personne propriétaire. Cela définit implicitement Projet ombre masquée sur False et Propriétaire Pas visible sur True dans les coulisses, ce qui est nécessaire pour que l'ombre à la première personne fonctionne correctement avec des textures d'ombre virtuelle.
Ombres à la première personne
Il y a deux choses à prendre en compte quand on paramètre un personnage joueur pour le rendu à la première personne :
Activer les lumières pour les ombres projetées afin que les primitives configurées en mode Première personne puissent projeter des ombres sur elles-mêmes.
Configurer les composants qui représentent l'espace du monde des primitives à la première personne pour les ombres et les reflets de scène.
Auto-ombrage à la première personne
Ombrage en première personne est une solution d'ombrage spécifique pour les primitives rendues en perspective à la première personne. Il permet aux composants de primitives de la première personne de projeter des ombres sur eux-mêmes, par exemple sur une arme qui se projette sur elle-même et sur le bras du joueur, mais pas sur la scène. Cela permet d'éviter que la géométrie qui est morphosée et inclinée selon la perspective de la caméra à la première personne ne soit visible dans les ombres de la scène.
Actuellement, l'auto-ombrage à la première personne est implémenté avec le traçage d'espace écran. Cette méthode est relativement peu gourmande en ressources, mais elle ne s'applique qu'aux projecteurs d'ombres à l'écran. Pour la plupart des configurations à la première personne, cela ne pose pas de problème en pratique, puisque tous les acteurs d'ombre pertinents sont généralement affichés à l'écran. Gardez à l'esprit que d'autres limitations habituelles du rendu à l'espace écran s'appliquent également au rendu à la première personne, comme le tampon de profondeur d'une seule couche (les rayons peuvent aller derrière la géométrie).
Ci-dessous, vous trouverez des exemples d'éclairage directionnel pour lesquels l'option Ombres à la première personne est activée.
L'option Ombres à la première personne est actuellement contrôlée (à partir de la version 5.6) avec des variables de console. Cela a permis de contrôler plus facilement l'effet sur les textures comportant de nombreux éclairages. L'effet n'affecte les performances que si la lumière chevauche la géométrie à la première personne. En supposant donc qu'il n'y ait que peu ou pas de lumières en chevauchement, il est préférable de l'activer sur tous les éclairages locaux. Cependant, cette façon de contrôler la fonctionnalité peut changer à l'avenir. Pour configurer l'ombre portée de la première personne, suivez les étapes ci-dessous :
Réglez
r.FirstPerson.SelfShadowsur1. Cela active la fonctionnalité de projection d'ombre (Cast Dynamic Shadows) comme déterminé par la variable de console suivante :Réglez
r.FirstPerson.SelfShadow.LightTypessur :0, ce qui permet d'activer l'option Auto-ombrage à la première personne uniquement sur les éclairages directionnels.1, qui l'active sur l'éclairage local2, qui l'active sur tous les éclairages (locaux et directionnels)
L'activation de l'option Ombres à la première personne a un impact minime sur la performances. Le fait d'activer un grand nombre de lumières qui se chevauchent peut avoir un impact négatif sur les performances. Faites attention aux sources lumineuses sur lesquelles vous activez cette option. Pour en savoir plus sur les limitations de cette fonctionnalité, consultez la section Limitations ci-dessous.
Ombres de représentation de l'espace du monde à la première personne
Lorsque vous avez un personnage joueur à la première personne dont la propriété Type de primitive à la première personne est définie sur Première personne, les ombres ne sont pas projetées sur la scène à partir de ces composants. Avoir un maillage vu par le monde et les autres joueurs est nécessaire pour projeter une ombre. Son type de primitive doit être réglé sur la représentation de l'espace du monde. Une fois le paramètre défini, ce maillage projettera des ombres sur la scène, et rendra cette primitive visible dans les reflets en ray tracing matériel.
Configuration d'une caméra à la première personne
Lorsque vous configurez une caméra pour le rendu à la première personne, la complexité dépend du type de jeu ou d'expérience que vous créez. Vous pouvez suivre la configuration de base ci-dessous pour créer un personnage joueur à la première personne. La configuration avancée vous aide à définir les éléments de votre personnage qui seront visibles par le monde ou par les autres joueurs dans un jeu multijoueur.
Par exemple, dans une configuration simple, il vous suffit de configurer un personnage avec uniquement les composants visibles dans la vue à la première personne. Il peut s'agir d'un maillage squelettique avec uniquement des bras pour porter une arme. Dans une configuration avancée, vous pouvez ajouter à cela des jambes visibles à la première personne et un maillage de personnage complet visible dans le monde pour la projection des ombres et les reflets.
Configuration de base d'une caméra à la première personne
Le processus de création d'une caméra à la première personne est assez simple ; les primitives peuvent être balisées comme étant à la première personne et les caméras peuvent être configurées pour appliquer un champ de vision et une mise à l'échelle personnalisés à ces ressources indépendamment du reste de la scène.
Les étapes à suivre peuvent être divisées en deux catégories :
Configuration des composants et paramètres initiaux.
Configuration des propriétés de ces composants pour adapter l'apparence des composants de primitives et du jeu à la première personne
Configuration des composants de caméra et de première personne
Pour configurer la caméra et ses composants à la première personne, procédez comme suit :
Créez un nouvel acteur Caméra.
Dans le panneau Détails, cliquez sur Ajouter et sélectionnez le composant Primitive désiré (maillage statique, maillages squelettiques, système de particules, etc.) pour l'ajouter à cet acteur.
Bien que ce ne soit pas nécessaire, c'est une bonne idée de le faire, car cela permet de s'assurer que la caméra est le propriétaire des primitives à la première personne, ce qui est une propriété importante pour les configurations plus avancées où les indicateurs Propriétaire Pas visible et Uniquement le propriétaire le voit sont requis.
Une fois le composant de primitive sélectionné, utilisez le panneau Détails pour trouver la propriété Type de primitive à la première personne sous les propriétés Rendu > Avancé. Utilisez le menu déroulant pour sélectionner Première personne.
Dans le panneau Details, cliquez sur le Composant de caméra et cochez les cases en face d'Activer le champ de vision à la première personne et de Activer échelle à la première personne sous les propriétés Options de caméra.
Avec le composant de caméra sélectionné, vous pouvez observer les résultats dans la fenêtre d'aperçu de la caméra située en bas à droite du hublot de l'éditeur.
Configuration des paramètres de changement d'échelle et de champ de vision à la première personne
Quand vous avez activé les propriétés du Composant de caméra pour Activer le champ de vision à la première personne et Activer échelle à la première personne, vous pouvez utiliser les paramètres similaires dans la catégorie Paramètres de caméra pour effectuer des ajustements.
Ces paramètres fonctionnent pour cette caméra sur toutes les primitives dont le type de primitive à la première personne est réglé sur Première personne. Sinon, la caméra les affichera dans l'espace du monde. Utilisez la fenêtre d'aperçu de la caméra dans le hublot pour vérifier les modifications. Le hublot de l'éditeur indique toujours que les primitives à la première personne sont inchangées. C'est parce que la caméra implicite utilisée pour le hublot ne dispose pas de propriétés à la première personne configurées.
Vous pouvez régler la valeur Champ de vision à la première personne pour modifier le champ de vision horizontal (en degrés) de toutes les primitives que cette caméra à la première personne rend. Lorsque vous réglez le curseur de champ de vision, vous pouvez observer le champ de vision de la primitive changer dans la fenêtre d'aperçu de la caméra.
Vous pouvez ajuster la valeur de l'échelle à la première personne afin de réduire les primitives « première personne » vers la caméra, de manière à ce qu'elles soient suffisamment petites pour ne pas intersecter la scène pour cette caméra à la première personne. Du point de vue de la caméra, la primitive devrait avoir la même apparence, même si elle est désormais plus petite. Si la valeur de changement d'échelle est trop faible, la primitive disparaît. En effet, elle a été suffisamment réduite pour intersecter le plan de détourage proche.
Lorsque vous ajustez l'échelle pour obtenir une configuration correcte avec votre caméra et vos primitives, vous devez trouver une valeur d'échelle suffisamment petite pour ne pas provoquer de détourage avec la scène, mais suffisamment grande pour ne pas disparaître à cause du Near Clip Plane. En pratique, il suffit souvent de réduire la géométrie de la première personne autant que nécessaire pour la faire entrer dans les limites du volume du joueur.
En fonction de votre contenu et de votre configuration, il peut être nécessaire d'ajuster la valeur par défaut du Near Clip Plane pour l'éditeur. Vous pouvez régler ce paramètre dans les paramètres du projet, sous Moteur > General avec l'option Near Clip Plane, mais cela permet de l'ajuster de manière globale pour l'ensemble du projet.
La configuration avancée de la caméra à la première personne et de ses composants est similaire à la manière dont vous configureriez cette vue avec la configuration de base décrite ci-dessus. Pour utiliser la configuration avancée ci-dessous, vous devrez prendre en compte la façon dont le personnage est représenté dans le monde pour un jeu multijoueur ou comment il est représenté dans les scènes de jeu à l'aide de fonctionnalités de ray tracing matériel. Cela permettra d'assurer la cohérence entre la façon dont le joueur est vu par le monde (ou les autres joueurs) autour de lui. Cela affecte également la manière dont le joueur voit son personnage dans les ombres et les reflets.
Prenez en compte les éléments suivants lorsque vous utilisez le flux de travail avancé à la première personne :
Ajout de primitives de représentation dans l'espace du monde pour la projection d'ombres sur le monde.
les pieds d'un personnage à la première personne et faire en sorte que les pieds soient reliés aux ombres projetées par le joueur sur le sol.
Reflets du joueur lorsqu'il se voit avec des reflets en ray-tracing matériel.
Toutes ces fonctionnalités nécessitent une représentation appropriée des primitives à la première personne dans le monde. C'est ce que verraient les autres joueurs dans un jeu multijoueur en regardant le personnage joueur. Autrement, on peut le comparer à la version du personnage joueur à la troisième personne. Dans Unreal Engine, il s'agit de la représentation de l'espace du monde à la première personne. Elle permet de projeter des ombres sur la scène et c'est la façon dont le joueur est représenté dans la scène en ray tracing.
Géométrie à la première personne
La géométrie à la première personne doit inclure un maillage pour le bas du corps et les jambes. Ce maillage peut être entièrement dans l'espace du monde ou utiliser un dégradé d'interpolation dans le matériau pour que les pieds soient entièrement dans l'espace du monde, et le reste du corps dans l'espace à la première personne (consultez la section Intégration avec les matériaux ci-dessous).
Cette configuration à elle seule améliorera le réalisme, puisque les joueurs peuvent désormais voir leurs propres jambes en vue à la première personne.
Configuration des composants à la première personne et de leurs représentations dans l'espace du monde
Dans Configuration de base d'une caméra à la première personne, le paramètre Type de primitive à la première personne des composants que vous souhaitez voir uniquement par la caméra à la première personne est défini sur Première personne. Pour toute géométrie que vous voulez afficher dans l'espace du monde par des fonctionnalités telles que les reflets matériels en ray tracing ou d'autres joueurs dans les jeux multijoueur, vous pouvez définir le type de primitive sur espace du monde. Cela permet de s'assurer qu'elles peuvent projeter des ombres sur le monde et avoir une représentation du joueur dans les reflets en ray-tracing.
Dans la scène ci-dessous, il y a deux choses à prendre en compte lors du paramétrage d'un composant pour la représentation de l'espace du monde :
Le composant n'est plus visible pour la caméra à la première personne dans la fenêtre aperçu de la caméra.
Le composant projette une ombre sur le monde.
En arrière-plan, cette option de représentation de l'espace du monde utilise la fonctionnalité « Propriétaire Pas visible » pour masquer la géométrie à la caméra, mais cela nécessite que les primitives appartiennent à la caméra, ce qui peut être réalisé en les transformant en composants enfants de l'acteur caméra.
Une fois que vous avez configuré votre personnage avec une primitive de maillage à la première personne et une primitive à maillage de représentation de monde, les pieds du maillage à la première personne doivent s'aligner avec sa représentation du monde. Vous trouverez ci-dessous un exemple de cette configuration qui permet d'observer uniquement les primitives à la première personne, puis de combiner les primitives de représentation du monde et de la première personne pour projeter des ombres sur la scène et « connecter » les ombres aux pieds de votre personnage.
Seule la primitive de maillage à la première personne définie à la « première personne » est affichée. Ce maillage ne projette pas d'ombre sur la scène. | Les deux maillages de primitives définis sur la première personne et la représentation du monde sont affichés ensemble. Le maillage de représentation du monde est invisible pour la caméra à la première personne, mais il projette des ombres sur le monde. Ceux-ci doivent s'aligner sur le maillage de la primitive à la première personne. |
Pour le monde, ou pour tout autre joueur dans une configuration multijoueur, le maillage et les composants de votre personnage doivent être réglés sur l'espace du monde.
Dans l'exemple ci-dessous, on voit une caméra de type « monde » qui voit le personnage à la première personne se refléter sur une surface réfléchissante. Vous pouvez également voir la vue de la caméra à la première personne et comment le maillage de représentation de l'espace du monde est affiché lorsqu'il est défini sur Aucun, première personne, ou espace monde, et comment cela affecte sa capacité à projeter des ombres sur la scène ou à être rendu par la caméra à la première personne.
Intégration avec les matériaux
Le graphique de matériau comprend les nœuds suivants, qui prennent en charge les configurations de rendu à la première personne :
Nœud de sortie Première personne
Le nœud de sortie Première personne utilise une valeur alpha pour interpoler entre l'espace du monde et l'espace à la première personne en utilisant des valeurs comprises entre 0 et 1 sur une fréquence par vertex. Cela est très utile si la géométrie à la première personne doit se connecter au reste de la scène. Par exemple, il est possible que le maillage des pieds de la géométrie du personnage à la première personne soit connecté au sol. Pour cela, vous pouvez appliquer un dégradé de 0,0 (espace du monde) à 1,0 (espace à la première personne) sur la longueur des jambes (qui serait défini comme une primitive à la première personne).
Sinon, vous pouvez aussi utiliser Définir les attributs de matériau pour définir la même propriété sans avoir besoin d'ajouter le nœud de sortie à la première personne au matériau. Ceci est utile dans les cas où vous souhaitez définir la valeur à partir d'une fonction de matériau, car les fonctions de matériau ne permettent pas l'utilisation de nœuds de sortie personnalisés.
Nœud Transformer la position
Le nœud Transformer la position prend en charge la transformation de positions arbitraires en espace à la première personne. Cela est notamment utile pour calculer l'endroit où un point apparaîtrait à l'écran dans le cas d'un rendu à la première personne.
Avec le nœud sélectionné, utilisez le panneau Détails pour définir les éléments suivants :
Source : espace du monde relatif de la caméra
Il s'agit du format source de la position qui sera transformée.
Destination : espace à la première personne (espace du monde relatif à la caméra)
Il s'agit du type de transformation à appliquer à l'expression d'entrée.
Alpha d'interpolation à la première personne (facultatif) : de 0 à 1
Cela interpole entre l'espace du monde translaté et l'espace de la première personne, où 0 est l'espace du monde et 1 est l'espace de la première personne. Ce nœud peut être utilisé pour tous les matériaux, y compris les matériaux de post-traitement, où il permet de transformer n'importe quelle position arbitraire en vue à la première personne afin qu'on ne puisse pas connaître la valeur du nœud de sortie à la première personne. Cette valeur est fournie par l'utilisateur pour ce qui est logique pour son jeu, mais, dans la plupart des cas, il convient de laisser la valeur par défaut.
Ce nœud sert par exemple pour le calcul de la position du réticule à la première personne, par exemple pour le matériau de post-traitement d'une arme avec joystick droit/touche R3. Dans ce cas, vous pouvez partir du principe que toutes les positions à prendre en compte (points sur l'arme et joystick droit/touche R3) seront entièrement à la première personne.
Est un nœud à la première personne
Le nœud Est un nœud à la première personne permet d'appliquer différents effets au matériau selon que le type de primitive de la première personne est défini sur Première Personne ou non.
Le graphique de matériau ci-dessous est une configuration simple utilisant le nœud IsFirstPerson pour définir une couleur pour la géométrie rendue dans l'espace du monde (rouge) par rapport à l'espace à la première personne (vert).
Dans la scène ci-dessous, vous pouvez voir comment ce matériau, avec son nœud Est un nœud à la première personne, est utilisé pour déterminer la couleur du fusil utilisé pour sa représentation dans l'espace du monde et dans la vue à la première personne. La primitive de fusil à la première personne (vert) est visible dans la caméra du joueur (en bas à droite) et est rendue avec les paramètres à la première personne de la caméra. Le fusil de représentation dans l'espace du monde (rouge) est invisible à la caméra du joueur, mais il est utilisé pour la projection des ombres sur le sol. Il sera visible dans les reflets et les ombres en ray tracing matériel dans le monde du ray tracing.
Afficher le nœud de propriété
Le nœud Afficher la propriété peut être utilisé pour interroger le champ de vision à la première personne et le changement d'échelle à la première personne de la vue actuelle.
Le champ de vision à la première personne renvoie les angles horizontaux et verticaux du champ de vision à la première personne, en radians.
L'échelle à la première personne renvoie le facteur d'échelle appliqué aux primitives à la première personne afin d'éviter qu'elles n'entrent en collision avec la scène.
Une fois le nœud sélectionné, utilisez le panneau Détails pour définir le menu déroulant Afficher la propriété sur la vue que vous souhaitez interroger.
Nœud de texture de scène
Le nœud de Texture de scène peut échantillonner le tampon graphique pour savoir si un pixel donné a été dessiné par une primitive à la première personne utilisant un matériau opaque.
Avec le nœud sélectionné, utilisez le panneau Détails pour définir le menu déroulant Identifiant de la texture de la scène afin de définir la texture de scène sur IsFirstPerson.
Pour en savoir plus, consultez la section Limitations ci-dessous.
Limitations et remarques
Le champ de vision personnalisé à la première personne, la mise à l'échelle anti-détourage, les contrôles d'interpolation par vertex et la plupart des fonctionnalités d'intégration de graphique de matériau fonctionnent sur toutes les plateformes et dans toutes les configurations.
Bit de tampon graphique à la première personne
Certaines fonctionnalités avancées de rendu à la première personne requièrent que les pixels à la première personne soient marqués avec un bit dans le tampon graphique.
La première conséquence est que ces fonctionnalités ne fonctionnent pas avec le moteur de rendu portable ou avec le rendu direct.
La deuxième conséquence est que l'éclairage statique doit être désactivé dans les paramètres du projet. En désactivant l'éclairage statique pour le projet, certains bits du tampon graphique sont libérés pour être utilisés dans le rendu à la première personne.
Cela pourrait changer à l'avenir, mais à partir de la version 5.6, il faut faire des contreparties. Les utilisateurs les plus chevronnés peuvent également décider d'apporter des modifications locales à leur version de Unreal Engine et de sacrifier une fonctionnalité différente du tampon graphique qui n'est pas nécessaire pour leur projet.
Les fonctionnalités concernées sont les suivantes :
Auto-ombrage à la première personne
Utilisation de primitives de représentation de l'espace du monde pour la projection des ombres sur la scène.
Affichage des primitives de représentation de l'espace du monde se reflétant dans la scène.
Utilisation du nœud de texture de scène pour savoir si un pixel donné est à la première personne.
Toutes ces fonctionnalités disposent d'un élégant repli au cas où le bit de tampon graphique à la première personne ne serait pas disponible : les ombres et les reflets ne seront simplement pas présents et le nœud de texture de scène renverra toujours la valeur 0,0 (false).
Prise en charge des fonctionnalités générales
Sans Texture d'ombre virtuelle (ou ombres en ray-tracing), il n'y aura pas d'ombres à la première personne au sol.
La structure capillaire et les coiffures à base de mèches ne sont pas prises en charge.
Ressources supplémentaires
Modèle à la première personne
Le modèle à la première personne est configuré pour utiliser le rendu natif à la première personne. Vous pouvez explorer la variante Jeu de tir à la première personne lors de la création du modèle à la première personne pour voir cette fonctionnalité en action.
Pour plus d'informations sur ce modèle, consultez le modèle à la première personne.