Assets
A Turian utiliza um pipeline de importação: os arquivos que você joga na pasta assets/ de um projeto são fontes (sources). Na importação, cada fonte recebe um GUID estável (salvo em um arquivo sidecar <arquivo>.meta) e é compilado (cooked) em um artefato de runtime sob .cache/assets/. O jogo finalizado (shipped) lê esses artefatos de um arquivo .oap empacotado e nunca toca na pasta assets/ solta. As referências entre assets (as texturas de um material, a mesh de um MeshRenderer) são armazenadas como GUIDs, portanto sobrevivem a renomeações e movimentações.
Importando modelos (glTF / GLB / OBJ)
Colocar um .gltf, .glb ou .obj na pasta assets/ importa sua geometria. Para glTF/GLB, a Turian também lê os materiais e texturas do arquivo e gera assets do engine a partir deles — um único modelo é uma fonte que produz muitos assets:
- um
.materialpor material glTF, mapeando o modelo metallic-roughness do glTF no shader PBR nativo (base color, metallic, roughness, emissive + strength, normal scale, occlusion, alpha mode/cutoff, double-sided → cull); - um asset de textura por imagem referenciada.
Esses assets gerados são registrados no arquivo .meta do modelo e mantêm seus GUIDs em diferentes reimportações, para que as referências na cena permaneçam válidas. Extensões de material não suportadas geram avisos, mas nunca erros fatais.
A geometria é compilada para uma mesh binária canônica no momento da importação, para que o runtime a carregue por meio de um único caminho rápido e independente de formato — o parsing de OBJ/glTF/cgltf acontece apenas no editor, nunca no jogo finalizado.
Editando sub-assets gerados
Selecione um modelo importado no Asset Browser; o Inspector lista seus materiais/texturas gerados em Generated Assets. Clique em um material para abri-lo e ajustá-lo (por exemplo, sua cor base). As edições persistem entre as reimportações — o importador apenas (re)gera materiais ausentes. Um Reimport completo limpa o cache para regenerar tudo a partir da fonte.
Configurações de importação
Selecionar uma textura ou modelo mostra um painel Import Settings (estilo Unity):
- Image — tipo de textura (default / normal map / sprite / UI / HDR), espaço de cor, mipmaps, compressão, filtro, wrap, tamanho máximo.
- Model — importar materiais, importar animações, fator de escala.
As configurações são armazenadas no .meta; clicar em Apply recompila (re-cooks) o asset.
Texturas externas vs embutidas
- Imagens externas (um glTF que aponta para arquivos
.png/.jpgirmãos) tornam-se assets de textura comuns com seu próprio.meta— assim você pode selecioná-los e substituí-los como qualquer outro asset. - Imagens embutidas (pedaços binários GLB ou URIs de dados base64) são extraídas em assets de textura somente em cache durante a importação.
De qualquer forma, o material gerado vincula cada mapa por GUID. Formatos comuns (PNG, JPEG, ...) são decodificados para RGBA8.
Formatos de textura
| Formato | Caminho |
|---|---|
| PNG / JPEG / BMP / TGA / WebP | Decodificado para RGBA8 (stb_image). |
KTX2 (.ktx2) |
Formatos de bloco de GPU carregados diretamente — passthrough de BCn, descompactação Zstandard e Basis Universal (ETC1S / UASTC) transcodificado para BC7. Os níveis de mipmap (mip levels) são preservados. |
O suporte a KTX2 reside em um módulo ktx2 independente e autônomo do engine (com um transcodificador Basis Universal embutido), integrado por trás de loadTexture para que os materiais e importadores permaneçam independentes de formato.
Materiais PBR
Um .material é um pequeno asset JSON que referencia um shader por GUID e armazena valores para os parâmetros expostos por esse shader. O shader nativo PBR (Metallic-Roughness) expõe:
| Parâmetro | Tipo | Notas |
|---|---|---|
base_color |
color | tonalidade albedo (RGBA) |
metallic, roughness |
scalar | 0–1 |
emissive, emissive_strength |
color / scalar | |
normal_scale, occlusion_strength |
scalar | |
alpha_cutoff |
scalar | para transparência mascarada |
albedo_map, metallic_roughness_map, normal_map, emissive_map, occlusion_map |
texture | vinculado por GUID |
Como um material gerado é um asset normal, você pode editá-lo no Inspector ou substituir a mesh por um material diferente sem alterar o modelo. Quando você define a mesh de um MeshRenderer para um modelo e seu material ainda está vazio, a Turian o preenche com o material gerado principal do modelo de forma automática.
Você também pode criar materiais do zero através do Asset Browser, incluindo presets nativos (Default, Metal, Plastic, Emissive, Glass).
Exemplo
O exemplo 3d-model-materials mostra três objetos lado a lado: um cubo OBJ com o preset nativo Metal, a WaterBottle da Khronos como glTF (mapas .png externos) e a mesma garrafa como GLB (mapas embutidos extraídos na importação). É estruturado para escalar para cenas grandes como Sponza ou Bistro — coloque o modelo em assets/models/, abra o projeto e adicione-o a uma cena.
Consulte também a Referência de Componentes para o componente MeshRenderer e as Configurações do Projeto para a cena de inicialização.