Formato de ficheiro USD para 3D: Por que razão é incrível

Categorizado como 3D, Open Source Etiquetas: , , , , , , ,
Save and Share:

O USD (Universal Scene Description ou Descrição de Cena Universal) é um formato de ficheiro desenvolvido pela Pixar para intercâmbio de cenas de gráficos 3D entre aplicações de criação de conteúdo digital. É um formato de ficheiro de código aberto e extensível que pode armazenar informações sobre geometria 3D, shading, iluminação, física e outros domínios relacionados com gráficos. Também pode compor e substituir dados de várias fontes, criando um único grafo de cena que pode ser editado de forma não destrutiva.

O USD é utilizado em muitas indústrias, como design, arquitetura, animação e gaming, e é suportado por muitas aplicações de software, como Blender, Cinema 4D, Houdini, Maya e SceneKit da Apple. O USD é também o núcleo do pipeline de gráficos 3D da Pixar e a base da plataforma Omniverse da Nvidia.

A especificação Universal Scene Description (USD) utiliza vários formatos de ficheiro:

  • .usd – Pode ser codificado em ASCII ou binário
  • .usda – Codificado em ASCII
  • .usdc – Codificado em binário
  • .usdz – Um ficheiro de pacote formatado como um arquivo zip não encriptado e de compressão zero. Pode conter ficheiros .usd, .usda, .usdc, .png, .jpeg, .m4a, .mp3 e .wav.

O Blender (ou qualquer outro software 3D) facilita a sua vida ao permitir que faça muitas tarefas utilizando apenas a sua interface, mas assim que começa a introduzir outro software no seu pipeline, os problemas começam a surgir a torto e a direito. Por isso, vamos falar sobre os maiores problemas com que provavelmente já se depara hoje e como a Pixar criou a solução para os superar até ao infinito e mais além.

Vídeo sobre o formato de ficheiro USD por KaizenTutorials

O Problema

Se alguma vez texturizou um modelo no Substance, importou o seu trabalho para o Unreal ou tentou partilhar um projeto com alguém a trabalhar num software diferente, provavelmente percebeu o quão irritante isto pode ser. Ter de lidar com diferentes tipos de ficheiro, workflows de exportação adequados para cada software individual e perder dados preciosos no processo pode fazê-lo sentir como se estivesse a bater com a cabeça na parede de propósito repetidamente.

E acredite quando digo que isto é algo que todos os artistas 3D em todo o lado experienciam – quer esteja a trabalhar como criador a solo com o seu próprio pipeline personalizado ou num grande estúdio como a Pixar tendo de se conformar com restrições de pipeline rigorosas para manter um workflow adequado para todas as outras 1232 pessoas que lá trabalham. O problema mantém-se o mesmo.

Por Que É Que Isto Acontece

Mas faz sentido, certo? Cada software utiliza um tipo de ficheiro proprietário que funciona para as suas necessidades. Portanto, um ficheiro do Blender, por exemplo, foi codificado para funcionar no Blender, mas não no Substance. Obviamente, numa empresa, cada artista necessita que um ficheiro seja compatível com a sua própria ferramenta de eleição para tornar fácil e, por vezes, até possível continuar a trabalhar num projeto.

É por esta razão que ter de exportar para um tipo de ficheiro mais universal como FBX ou OBJ é uma obrigação ao mudar para um software diferente ou entregar o seu projeto à pessoa seguinte. Mas mesmo estes tipos de ficheiro têm muitas limitações, como a incapacidade de armazenar adequadamente simulações, iluminação e muitos outros aspetos dos seus projetos do Blender.

Apresentando o USD

Então, qual é a resposta para este problema? Universal Scene Description (USD) para abreviar! Publicado pela primeira vez como software de código aberto pela Pixar em 2016 como o seu novo pipeline central, o USD era principalmente uma forma de os seus artistas facilitarem a movimentação de dados entre si e as ferramentas que utilizam.

Desde o seu lançamento, o USD está constantemente a sofrer alterações e melhorias, o que é comum para software de código aberto, tal como o Blender, que também é consistentemente atualizado e expandido.

O Que É o USD?

O USD é muitas coisas e, se eu mergulhar realmente fundo nele, pode realmente ser uma coisa muito técnica e complicada de descrever. Mas, simplificando, o USD é uma forma de fazer com que aplicações como Blender, Unreal, Houdini, Substance, Maya, Nvidia Omniverse e muitas mais falem e se entendam umas às outras.

Dentro da indústria da computação, existe realmente uma palavra sofisticada para isto – interoperabilidade. Um pouco difícil de dizer! Por mais sofisticado que isso soe, na verdade não é tão complicado como pode pensar. Pode começar a utilizá-lo hoje no seu próprio computador ou mesmo com vários amigos ou colegas em todo o mundo.

Como o USD É Diferente

Tradicionalmente, um pipeline é uma coisa muito unidirecional onde cada pessoa só consegue trabalhar em algo depois de a pessoa anterior ter terminado. Ou, para si pessoalmente, só pode passar para o próximo passo no processo, como texturização, se a modelagem estiver completamente concluída.

Poderia comparar isto com fazer um bolo – à medida que constrói e cria este bolo, tem de terminar cada passo antes de poder começar o seguinte. Não pode assar o bolo antes de misturar a massa e não pode construí-lo antes de assar os bolos no forno. Cada passo depende do anterior estar concluído.

Mais importante ainda, depois de colocar a cobertura e o recheio ou de decidir que a massa tinha de ser de chocolate, não há volta a dar. Não pode “des-assar” o bolo, mudar o sabor para baunilha ou retirar a cobertura. E isto é o que chamamos de workflow destrutivo.

O USD, no entanto, é mais como Legos. Cada bloco representa uma parte de uma cena 3D – personagens, objetos, ambientes, o que for – e pode montar, desmontar e modificar estes blocos independentemente.

Num pipeline tradicional, mudar um bloco envolveria ter de ajustar o resto da estrutura. Mas com o USD, cada bloco de construção pode ser trabalhado independentemente e eu posso simplesmente mudar um bloco para uma cor diferente, por exemplo, sem necessidade de reconstruir todo o modelo.

É uma abordagem não destrutiva que permite experimentação e workflows colaborativos sem ficar preso por limitações de pipeline.

O Objetivo do USD

O objetivo em tudo isto com o USD é criar uma forma de os dados se moverem livremente entre aplicações, para dar aos artistas e equipas a liberdade de se concentrarem na criação e não na exportação e ficarem presos à espera uns dos outros para poderem continuar a trabalhar. Os artistas não deveriam ter de recomeçar se a equipa de conceito decidir mudar as coisas mais tarde. E não deveria haver problemas com formatos de ficheiro provenientes de outros programas que não funcionam no seu software de eleição.

A um nível de serviço, é isso que o USD parece ser – um formato de ficheiro altamente interoperável que é facilmente trocável entre diferentes softwares. E para ser justo, é isto que será para a maioria dos utilizadores de Blender, já que muitos de nós tendem a trabalhar a solo. Mas o USD é mais do que apenas um tipo de ficheiro…

É uma forma de montar e organizar qualquer número de assets em sets virtuais, cenas, planos e mundos – utilizando-os de aplicação para aplicação e editando-os de forma não destrutiva, muitas vezes em tempo real.

Como Trabalhar com USD

Então, vamos ver como podemos trabalhar com USD num workflow de Blender. Na sua forma mais básica, o USD tem sido uma opção de exportação no Blender desde a versão 3.6. Portanto, se tiver um ficheiro em que está a trabalhar e quiser guardá-lo como um ficheiro USD, pode ir a Ficheiro > Exportar > Universal Scene Description e irá aparecer uma janela de pedido para guardar o ficheiro.

Tem algumas opções, mas as principais a notar são:

  • Apenas Seleção – Incluirá apenas os objetos selecionados na sua exportação
  • Animação e Cabelo – Irá incluir/excluir dados de animação e partículas de cabelo para os seus objetos

Aqui está um ótimo exemplo de como o USD funciona. Este é um ficheiro da biblioteca de amostras USD da Nvidia que foi feito numa série de softwares como 3ds Max e Substance. Se o abrir no Blender importando-o, funciona quase 100% imediatamente!

Como pode ver, contém todos os dados, incluindo luzes, profundidade de campo, a câmara, materiais e muito mais. A única coisa que não é exportada corretamente é a iluminação HDRI que temos de configurar nós próprios. Mas é incrível pensar que isto parece quase idêntico dentro do renderizador Arnold do 3DS Max, e acabou de ser exportado para o Blender e funciona tão bem usando um único tipo de ficheiro!

Tem hierarquia adequada, materiais e basicamente tudo está configurado. É mesmo, mesmo fixe! De qualquer forma, isto mostra como o USD funciona entre diferentes aplicações e que funciona como um formato de ficheiro interoperável.

Um Exemplo Prático de USD

Mas vamos dar uma olhada a um exemplo mais prático. Para este exemplo de pipeline, vou utilizar um workflow típico de utilização do Blender para modelar um objeto para um jogo.

O pipeline tradicional seria algo como isto:

  1. Criar modelo no Blender
  2. Desembrulhar UV do modelo
  3. Exportar como FBX, uma vez que o Painter não consegue utilizar ficheiros do Blender
  4. Importar FBX para o Substance Painter
  5. Adicionar materiais no Substance
  6. Exportar texturas como imagens
  7. Importar FBX para o motor de jogo
  8. Configurar texturas manualmente
  9. Criar renders

Com o USD, podemos simplificar significativamente este processo e manter um workflow em grande parte não destrutivo. O pipeline permanece muito semelhante, sendo o Blender e o Substance os principais componentes.

Mas como o USD não funciona nativamente em tempo real entre estas aplicações (principalmente porque o Blender ainda tem suporte USD limitado), vou utilizar o Nvidia Omniverse para criar essa ligação por nós.

Através do Omniverse, posso ter acesso a uma branch mais compatível com USD do Blender construída pela Nvidia. Posso ativar o conetor Omniverse para o Substance Painter para realizar o LifeLink. E posso usar o USD Composer para colmatar a lacuna entre as aplicações e visualizar o produto final.

Com isso configurado, podemos agora abrir o nosso projeto do Blender na branch personalizada do Blender. Se depois premirmos N e formos para o lado direito aqui, obtemos o add-on Nucleus, permitindo-nos exportar isto como um ficheiro USD.

Se depois formos ao USD Composer e abrirmos esse ficheiro USD, obtemos uma espécie de ligação em direto entre as aplicações. Posso agora fazer qualquer alteração à mesh, reexportá-la e tê-la automaticamente a ser detetada dentro do USD Composer.

Melhora ainda mais! Assim que importamos o modelo, podemos abrir o Substance Painter, ativar o conetor Omniverse e ir a Import Mesh para importar automaticamente o nosso objeto do USD Composer para o Substance. Neste ponto, se fizermos alterações no Blender, podemos ainda reexportar e detetar isso no USD Composer, que liga automaticamente ao Substance Painter.

No entanto, assim que adicionamos texturas dentro do Substance Painter, fazer isto novamente irá remover essas texturas. Portanto, assim que estiver satisfeito, adicione os seus materiais no Substance Painter e, com o Life Link ativado, estes irão aparecer automaticamente no USD Composer.

Quaisquer alterações que faça depois exportam e atualizam automaticamente no USD Composer. Realmente, mesmo fixe!

Para mim, este workflow é quase inacreditável. Ser capaz de fazer alterações no Blender e no Substance Painter em tempo real e ter tudo isso a funcionar automaticamente ao longo do processo e a refletir-se no render final é outra coisa.

Se estiver interessado em experimentar tudo o que o Nvidia Omniverse tem para oferecer, pode descarregá-lo gratuitamente através da ligação na descrição. E se quiser saber mais sobre todos os casos de utilização técnica que o USD e o Omniverse juntos fornecem, pode encontrar outra ligação de download gratuito para isso, bem como uma ligação para assistir às sessões do dia aberto do USD virtualmente ou presencialmente no GTC em março.

Recomendo vivamente que verifique isso porque este é verdadeiramente o futuro dos workflows 3D.

Mais Sobre USD

Além deste exemplo divertido, o USD tem muito mais para oferecer. E se fizer bom uso das suas capacidades, tornar-se-á muito mais eficiente como artista. Então, o que mais pode fazer?

Bem, além do facto de um formato de ficheiro universal tornar a sua vida muito mais fácil, é absolutamente o futuro. Desde agosto de 2023, o USD tornou-se uma organização oficial sem fins lucrativos chamada The Alliance of Open USD (AO USD) para abreviar – com Pixar, Apple, Adobe, Autodesk e Nvidia como membros fundadores.

Acho que isto realmente mostra o quão investidas estas empresas estão e como realmente veem isto como o futuro de um formato de ficheiro interoperável – que todos deveriam ser capazes de usar muito facilmente.

Além de ser um formato de ficheiro, o USD armazena quase tudo – desde luzes e câmaras a caches de simulação e dados de cena – numa estrutura em camadas chamada “prims” (abreviação de primitivos). Contém todos esses dados para descrever cenas e assets complexos num formato legível por uma vasta gama de aplicações.

Agora, sabendo disso, o nome “Universal Scene Description” realmente faz muito sentido!

Se estiver familiarizado com as coleções do Blender, o USD funciona de forma semelhante. Pode aninhar qualquer coisa dentro de múltiplas coleções aninhadas, com o benefício adicional de que o USD trata todas estas camadas como instâncias. Portanto, é capaz de carregar e ler muito rapidamente todos os dados de uma forma otimizada.

Isto funciona de forma semelhante à instanciação de coleções no Blender, o que é bom porque as instâncias requerem menos computação do que objetos duplicados reais. É também muito semelhante à pré-compilação no After Effects ou à composição no Nuke – basicamente agrupa coisas dentro de grupos/camadas aninhadas, o que torna mais fácil e rápido para o computador trabalhar com o ficheiro.

Um ótimo exemplo desta otimização é o mais recente projeto de amostra USD da Nvidia chamado “Da Vinci’s Workshop”. Utilizando a sua aplicação USD Composer (que é perfeita para visualizar projetos USD com iluminação em tempo real), consigo reproduzir esta biblioteca maciça de 67 GB de assets, texturas e luzes com milhões de polígonos a perto de 120 FPS sem qualquer lag ou problemas. Isto é possível devido à forma eficiente como o USD carrega os ficheiros e as texturas de uma forma extremamente otimizada.

Da mesma forma, para animações que costumavam ser exportadas como ficheiros Alembic, o caching USD é agora muito mais rápido. Os ficheiros Alembic são geralmente enormes, muito pouco otimizados e lidos lentamente pelo seu computador – resultando geralmente numa reprodução instável. Com o USD, atingir um FPS estável não é de todo um problema e o tamanho do ficheiro é muito menor.

Mais Benefícios

Outra funcionalidade realmente interessante é que pode aceder às camadas dentro do seu projeto USD de fora do ficheiro com bastante facilidade. Por exemplo, se houver uma camada prim que contenha os dados de que uma esfera é verde dentro de um ficheiro USD, simplesmente mudando essa cor para vermelho num editor compatível com USD como o USD Composer, podemos mudar a cor da esfera sem nunca abrir o ficheiro no Blender! Agora isto é incrivelmente poderoso.

Embora este seja obviamente um exemplo básico, mostra o potencial. Outro grande benefício é que o USD ainda lhe permite trabalhar apenas numa única camada de um ficheiro complexo num determinado software. Portanto, mesmo que o seu ficheiro contenha um projeto completo com câmaras, luzes, etc., ainda é capaz de abrir apenas uma parte dele – por exemplo, um único modelo – dentro do Substance Painter, e trabalhar apenas nessa parte do projeto sem afetar mais nada.

Isto também se aplica se várias pessoas estiverem a trabalhar no mesmo ficheiro – outra grande vantagem do USD. Dez pessoas poderiam trabalhar no mesmo ficheiro, pelo que as alterações feitas pelo artista número um são imediatamente visíveis para o artista número dois, permitindo-lhes adaptar o seu trabalho em conformidade. Ser capaz de colaborar com pessoas remotamente é incrivelmente poderoso.

O Futuro dos Pipelines 3D

É seguro dizer que o USD é muito mais do que apenas um formato de ficheiro. É uma plataforma de tecnologia abrangente e um ecossistema que, na sua missão, se alinha realmente com o Blender: a liberdade de criar sem limitações.

O USD ainda está em desenvolvimento. O sonho é real – um formato de ficheiro de software universal utilizável por qualquer software na indústria, editável em tempo real por vários artistas.

Devemos todos estar gratos à Pixar por abrir caminho com este desenvolvimento incrível e a empresas como a Nvidia e a Apple por contribuírem com a sua parte.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *