¿Qué es un archivo USD?
Un archivo con extensión .usd es un formato de archivo de descripción de escena universal que codifica datos con el fin de intercambiar y aumentar datos entre aplicaciones de creación de contenido digital. Desarrollado por Pixar, USD brinda la capacidad de intercambiar activos elementales (como modelos) o animación.
Formato de archivo USD
Los archivos USD pueden tener formato binario (también conocido como archivos Crate) o archivos respaldados por ASCII. Ambos formatos de archivo son intercambiables donde las referencias se pueden vincular a activos .usd sin cambiar las fuentes. El formato de archivo USD consta de un conjunto de bibliotecas de C++ con enlaces de Python para secuencias de comandos. Permite el ensamblaje y la organización de cualquier cantidad de elementos de escena 3D, como decorados virtuales, escenas y tomas, para transmitirlos de una aplicación a otra.
Tipos de datos USD
Los tipos de datos fundamentales admitidos por el formato de archivo USD se enumeran en la siguiente tabla.
| Token de tipo de valor | Tipo C++ | Descripción |
|---|---|---|
| bool | bool | |
| uchar | uint8_t | entero sin signo de 8 bits |
| int | int32_t | entero con signo de 32 bits |
| uint | uint32_t | entero sin signo de 32 bits |
| int64 | int64_t | entero con signo de 64 bits |
| uint64 | uint64_t | entero sin signo de 64 bits |
| mitad | GfHalf | coma flotante de 16 bits |
| flotante | flotante | coma flotante de 32 bits |
| doble | doble | coma flotante de 64 bits |
| código de tiempo | SdfTimeCode | doble que representa un tiempo resoluble |
| cadena | std::cadena | cadena stl |
| token | TfToken | cadena interna con comparación rápida y hashing |
| asset | SdfAssetPath | representa una ruta resoluble a otro activo |
| matriz2d | GfMatriz2d | matriz 2x2 de dobles |
| matrix3d | GfMatrix3d | matriz 3x3 de dobles |
| matrix4d | GfMatrix4d | matriz 4x4 de dobles |
| quatd | GfQuatd | cuaternión de doble precisión |
| quatf | GfQuatf | cuaternión de precisión simple |
| quath | GfQuath | cuaternión de precisión media |
| doble2 | GfVec2d | vector de 2 dobles |
| float2 | GfVec2f | vector de 2 floats |
| mitad2 | GfVec2h | vector de 2 mitades |
| int2 | GfVec2i | vector de 2 enteros |
| doble3 | GfVec3d | vector de 3 dobles |
| float3 | GfVec3f | vector de 3 floats |
| half3 | GfVec3h | vector de 3 mitades |
| int3 | GfVec3i | vector de 3 enteros |
| doble4 | GfVec4d | vector de 4 dobles |
| float4 | GfVec4f | vector de 4 flotadores |
| half4 | GfVec4h | vector de 4 mitades |
| int4 | GfVec4i | vector de 4 enteros |
Ejemplo de USD
Un ejemplo de un archivo USD en formato de archivo ASCII simple es el siguiente.
#usda 1.0
class "_class_Planet"
{
bool has_life = False
}
def Xform "SolarSystem"
{
def "Earth" (
references = @./planet.usda@</Planet>
)
{
bool has_life = True
string color = "blue"
}
def "Mars" (
references = @./planet.usda@</Planet>
)
{
string color = "red"
}
def "Saturn" (
references = @./planet.usda@</Planet>
variants = {
string rings = "with_rings"
}
)
{
string color = "beige"
}
}
#usda 1.0
class "_class_Planet"
{
}
def Sphere "Planet" (
inherits = </_class_Planet>
kind = "model"
variantSets = "rings"
variants = {
string rings = "none"
}
)
{
variantSet "rings" = {
"none" {
bool has_rings = False
}
"with_rings" {
bool has_rings = True
}
}
}