Les fonctionnalités de rendu et de simulation de la pilosité sont destinées à fournir une implémentation minimale viable de l'importation, du rendu et de la simulation de la pilosité basés sur des mèches. Cette mise à jour ne fournit pas de solution d'arrangement capillaire. La mise en forme, ou arrangement capillaire, doit être effectuée dans un outil CCN externe tel que Maya à l'aide de son outil XGen ou le plug-in Shave and a Haircut. Il est également possible d'utiliser d'autres outils tels que Ornatrix, Yeti ou Houdini.
Ce document comprend un schéma informel destiné aux fichiers Alembic dans le but de normaliser l'importation des informations relatives à la structure capillaire et à la pilosité dans l'Unreal Engine en vue de les utiliser avec les fonctionnalités de rendu et simulation de la pilosité. Ainsi, lorsque vous générez des structures capillaires, la conformité à ce schéma permet à l'Unreal Engine d'importer ces structures directement. Lors de l'importation, les attributs pris en charge par UE4 pour le rendu et la physique correspondront à ces attributs dans le fichier Alembic.
Objectifs
- Définissez un schéma de métadonnées Alembic informel et propre aux structures capillaires pour faciliter l'importation de la pilosité dans l'Unreal Engine.
- Examinez les attributs pris en charge par l'Unreal Engine pour la pilosité et mappez-les sur Alembic.
Courbes
La forme générale de la pilosité est lue à partir du schéma de courbe standard Alembic :
Alembic::AbcGeom::ICurves
Largeur
Les attributs de structure capillaire exportés à l'aide de cette spécification permettent à l'importateur de les récupérer et de les utiliser lors de la création de la structure. L'attribut de largeur présente cependant un comportement particulier. Par exemple, dans une application de CCN telle que Maya, les valeurs de largeur sont exportées directement sur les courbes ; il n'est donc pas nécessaire d'exporter un attribut groom_width personnalisé, car l'importateur convertit les valeurs de largeur de Maya en attribut groom_width. Notez que si l'attribut groom_width est présent dans votre structure capillaire, il n'est pas écrasé lors de l'importation. Si aucun attribut groom_width n'est spécifié, ou s'il s'est avéré impossible de le convertir à partir des valeurs de largeur, le constructeur de l'Unreal Engine se rabat sur une valeur de largeur de 1 centimètre.
La largeur de la courbe peut être stockée par ICurve en utilisant :
(GeometryScope::kConstantScope)
Ou elle peut être stockée par courbe en utilisant :
(GeometryScope::kUniformScope)
Ou elle peut être stockée par vertex de contrôle en utilisant :
(GeometryScope::kVertexScope)
Notez que l'importateur prend en charge kUniformScope, bien que ce dernier n'ait pas été testé.
Conventions d'affectation de noms
Les noms de propriété doivent être en minuscules, et ne comporter ni espaces ni caractères spéciaux.
Toutes les propriétés doivent commencer par le préfixe suivant :
groom_<attr>
Par exemple, groom_id, groom_color ou groom_width utilisent des conventions d'affectation de noms appropriées.
Étendue et précédence
Dans ce document, les propriétés possèdent une étendue propre. L'étendue contrôle le niveau auquel il est possible de définir la propriété de structure capillaire.
Les étendues disponibles sont les suivantes :
| Étendue | Description |
|---|---|
| Constante | Ces paramètres ont une valeur unique pour toutes les courbes avec un objet AbcGeom::ICurves. |
| Uniforme | Ces paramètres ont une valeur par courbe dans un objet AbcGeom::ICurves. |
| Vertex | Ces paramètres ont une valeur par courbe et par vertex de contrôle. |
Propriétés générales
Dans cette section, nous vous décrivons les propriétés qui s'appliquent à la structure capillaire dans son ensemble. Ces propriétés doivent être ajoutées au nœud le plus haut : IXForm ou ICurves.
| Nom | Type | Facultatif | Description | Valeur |
|---|---|---|---|---|
groom_version_major |
int16 | Non | Utilisée pour identifier à quelle version majeure du schéma de structure capillaire ce fichier est conforme. | 1 |
groom_version_minor |
int16 | Non | Utilisée pour identifier à quelle version mineure du schéma ce fichier est conforme. | 5 |
groom_tool |
chaîne | Oui | Nom et version de l'outil qui a généré ce fichier. Utile pour déboguer et suivre les problèmes. | |
groom_properties |
chaîne | Oui | Chaîne décrivant les paramètres utilisés pour générer cette structure capillaire. Il s'agit d'options propres à l'outil, utilisées à des fins de débogage. |
Paramètres de géométrie
Tous les paramètres de géométrie sont facultatifs, mais disposent d'un comportement interne sur lequel se rabattre s'ils ne sont pas présents avec votre structure capillaire exportée.
| Nom | Type | Étendue | Facultatif | Description | Plage |
|---|---|---|---|---|---|
groom_guide |
int8/16/32 | Constante/Uniforme | Oui | Les guides sont générés à partir des mèches importées et des paramètres d'allègement. | 0 = Pas un guide / 1 = Guide |
groom_group_id |
int32 | Constante/Uniforme | Oui | Toutes les mèches seront regroupées. | [0, INT_MAX] |
groom_root_uv |
float32/64[2] | Uniforme | Oui | UV racine de la surface sous-jacente à laquelle les racines sont liées. Prend en charge les coordonnées de texture UDIM. |
[-FLOAT_MAX, FLOAT_MAX] |
groom_id |
int32 | Uniforme | Oui | Les mèches n'auront pas d'identifiants. Ce paramètre est destiné à être utilisé dans la phase de débogage et avec l'attribut groom_closest_guides. |
[0, INT_MAX] |
groom_color |
float32/64[3] | Vertex | Oui | Revient au noir. | [0, FLOAT_MAX] |
groom_roughness |
float32 | Vertex | Oui | Revient au noir. | [0, FLOAT_MAX] |
groom_closest_guides |
int32[3] | Uniforme | Oui | Destinée à une utilisation spécialisée où les données d'interpolation sont calculées en dehors d'Unreal Engine. | [0, INT_MAX] |
groom_guide_weights |
float32[3] | Uniforme | Oui | Destinée à une utilisation spécialisée où les données d'interpolation sont calculées en dehors d'Unreal Engine. | |
groom_clumpid |
int32 | Uniforme | Oui | ID de touffe. | |
groom_group_name |
chaîne | Constante/Uniforme | Oui | Nom du groupe. |