Las funciones de renderizado y simulación del pelo pretenden ser una implementación mínimamente viable de la importación, el renderizado y la simulación del pelo por mechones. Esta actualización no proporciona una solución para el renderizado capilar. El modelado o renderizado del pelo tendrá que realizarse en una herramienta de DCC externa, como Maya, usando su herramienta XGen o el complemento Shave and a Haircut. Se pueden usar también otras herramientas como Ornatrix, Yeti o Houdini.
Este documento describe un esquema informal de los archivos de Alembic con el objetivo de estandarizar la importación de información sobre renderizado capilar y guía del pelo en Unreal Engine para su uso con las funciones de simulación y renderizado del pelo. La intención es que, a medida que se generan los renderizados capilares, se ajusten a este esquema y Unreal Engine los importe directamente. Al importarlos, los atributos compatibles con UE4 tanto para el renderizado como para la física se asignarán a esos atributos en el archivo de Alembic.
Objetivos
- Define un esquema de metadatos informal de Alembic específico para el renderizado capilar con el fin de facilitar la importación de pelo en Unreal Engine.
- Examina los atributos que son compatibles con Unreal Engine para el pelo y asígnalos en Alembic.
Curvas
La forma general del pelo se extrae del esquema estándar de curvas de Alembic:
Alembic::AbcGeom::ICurves
Anchura
Los atributos de renderizado capilar exportados con esta especificación permiten al importador recuperarlos y usarlos al compilar el renderizado capilar. Sin embargo, el atributo de anchura tiene un comportamiento especial. Por ejemplo, en una aplicación de DCC como Maya, los valores de anchura se exportan directamente a las curvas, por lo que no es necesario exportar un atributo personalizado groom_width; el importador convertirá los valores de anchura de Maya al atributo groom_width. Ten en cuenta que, si el atributo groom_width está presente en tu renderizado capilar, no se sobrescribirá durante la importación. Si no se especifica el atributo groom_width o no se puede convertir uno a partir de los valores de anchura, el constructor de Unreal Engine vuelve a usar un valor de 1 centímetro para la anchura.
El ancho de la curva se puede almacenar por ICurve usando:
(GeometryScope::kConstantScope)
Puede almacenarse por curva usando:
(GeometryScope::kUniformScope)
O puede almacenarse por vértice de control usando:
(GeometryScope::kVertexScope)
Ten en cuenta que el importador es compatible con kUniformScope, pero aún no se ha probado.
Convenciones de nomenclatura
Los nombres de las propiedades deben estar en minúsculas, sin espacios ni caracteres especiales.
Todas las propiedades deben empezar por el siguiente prefijo:
groom_<attr>
Por ejemplo, groom_id, groom_color o groom_width utilizan las convenciones de nomenclatura adecuadas.
Ámbito y precedencia
Las propiedades de este documento tienen un ámbito asignado. El ámbito controla en qué nivel puede definirse la propiedad de renderizado capilar.
Los ámbitos disponibles son:
| Ámbito | Descripción |
|---|---|
| Constante | Estos parámetros tienen un único valor para todas las curvas con un objeto AbcGeom::ICurves. |
| Uniforme | Estos parámetros tienen un valor por curva en un objeto AbcGeom::ICurves. |
| Vértice | Estos parámetros tienen un valor por curva por vértice de control. |
Propiedades generales
Esta sección describe las propiedades que se aplican al renderizado capilar en su conjunto. Estas propiedades deberían añadirse al nodo superior: IXForm o ICurves.
| Nombre | Tipo | Opcional | Descripción | Valor |
|---|---|---|---|---|
groom_version_major |
int16 | No | Se usa para identificar a qué versión principal del esquema de renderizado capilar se ajusta este archivo. | 1 |
groom_version_minor |
int16 | No | Se usa para identificar a qué versión secundaria del esquema se ajusta este archivo. | 5 |
groom_tool |
cadena | Sí | El nombre y la versión de la herramienta que ha generado este archivo. Útil para depuración y seguimiento de errores. | |
groom_properties |
cadena | Sí | Cadena que describe los parámetros usados para generar este renderizado capilar. Son opciones específicas de las herramientas que se usan para la depuración. |
Parámetros de geometría
Todos los parámetros de geometría son opcionales, pero cuentan con un comportamiento interno al que recurrir si no están presentes en el renderizado capilar exportado.
| Nombre | Tipo | Ámbito | Opcional | Descripción | Rango |
|---|---|---|---|---|---|
groom_ guide |
int8/16/32 | Constante/Uniforme | Sí | Las guías se generan a partir de los mechones importados y la configuración de diezmado. | 0 = No es una guía / 1 = Guía |
groom_group_id |
int32 | Constante/Uniforme | Sí | Se agruparán todos los mechones. | [0, INT_MAX] |
groom_root_uv |
float32/64[2] | Uniforme | Sí | UV raíz de la superficie subyacente a la que están vinculadas las raíces. Admite coordenadas de textura UDIM. |
[-FLOAT_MAX, FLOAT_MAX] |
groom_id |
int32 | Uniforme | Sí | Los mechones no tendrán identificadores. Esto está pensado para su uso en la depuración y con el atributo groom_closest_guides. |
[0, INT_MAX] |
groom_color |
float32/64[3] | Vértice | Sí | Vuelve al color negro. | [0, FLOAT_MAX] |
groom_roughness |
float32 | Vértice | Sí | Vuelve al color negro. | [0, FLOAT_MAX] |
groom_closest_guides |
int32[3] | Uniforme | Sí | Destinado a un uso especializado en el que los datos de interpolación se calculan fuera de Unreal Engine. | [0, INT_MAX] |
groom_guide_weights |
float32[3] | Uniforme | Sí | Destinado a un uso especializado en el que los datos de interpolación se calculan fuera de Unreal Engine. | |
groom_clumpid |
int32 | Uniforme | Sí | ID del grupo. | |
groom_group_name |
cadena | Constante/Uniforme | Sí | Nombre del grupo. |