Cesium for Unity: Crie aplicativos geoespaciais 3D para a web

Brendan Duncan é um engenheiro da equipe da Unity Technologies, com foco em gráficos web, implementando o driver gráfico WebGL e WebGPU usado pelo Unity Web Player.
O que é o Cesium para Unity?
O Cesium para Unity é um plugin poderoso que integra a plataforma geoespacial do Cesium ao motor Unity. Ele permite que os desenvolvedores transmitam terreno 3D de alta resolução, imagens e edifícios do Cesium ion ou de outras fontes. O resultado é a capacidade de criar globos virtuais fotorrealistas e visualizações geográficas detalhadas dentro de um projeto da Unity.
Os desenvolvedores podem criar e implantar seus aplicativos 3D geoespaciais diretamente na web. Esta grande atualização, começando com Cesium for Unity 1.20.0, combina o poder do conteúdo 3D global do Cesium com a acessibilidade da implantação web do Unity, eliminando a necessidade de lojas de aplicativos ou instalações do usuário.
Em sua essência, o plugin utiliza o 3D Tiles OGC Community Standard, pioneiro da Cesium. Este padrão aberto foi projetado especificamente para transmitir conjuntos massivos de dados geoespaciais em 3D. Com ele, você pode renderizar cidades inteiras, países ou até mesmo um gêmeo digital em escala real da Terra sem sobrecarregar a memória do seu sistema ou a largura de banda do seu usuário.
Combinar o Cesium para Unity com a implantação na web desbloqueia possibilidades notáveis. Os usuários podem explorar ambientes 3D do mundo real e intrincados com nada mais do que um URL, reduzindo a barreira para aplicações e experiências de uso amplo. Isso o torna uma solução ideal para ferramentas de treinamento, visualizações de planejamento urbano, experiências de mapeamento interativo e muito mais.

Principais recursos para implantação na web
O Cesium para Unity inclui recursos que são particularmente eficazes em ambientes web:
- arquitetura de streaming Isso significa que os usuários não precisam baixar conjuntos de dados inteiros no início. Em vez disso, os terrenos e as imagens são carregados progressivamente à medida que os usuários navegam pela cena. Essa abordagem mantém os tempos de carregamento iniciais curtos e o desempenho suave.
- Acesso fácil a conteúdo geoespacial 3D selecionado e pipelines de mosaico 3D, por meio da integração com os serviços em nuvem do Cesium ion. Os usuários podem acessar o terreno global, incluindo Cesium World Terrain e Google Photorealistic 3D Tiles, bem como imagens, edifícios e conjuntos de dados de fotogrametria. Tudo disponível com acesso em um clique usando a interface do usuário do Cesium ion integrada no Unity Editor e pode ser implantado diretamente para os usuários na web.
Aplicações no mundo real
A combinação do Cesium para Unity e Web abre portas para muitas aplicações geoespaciais, como:
- Urbanistas pode compartilhar modelos de cidades 3D interativos com as partes interessadas por meio de links da web simples.
- Educadores podem criar lições geográficas exploráveis que os alunos acessam de qualquer dispositivo.
- Equipes de gestão de emergência pode visualizar cenários de desastre em terrenos precisos sem instalações de software especializado.
- Aplicações de turismo podem permitir que os usuários explorem virtualmente destinos em 3D fotorrealista.
- Desenvolvedores imobiliários podem exibir propriedades em contexto geográfico.
- Pesquisadores podem criar visualizações de dados interativas que combinam conjuntos de dados científicos com representação geográfica precisa.
Começando com o Cesium para Unity para a web
Se esta é sua primeira introdução ao Cesium for Unity, siga o Guia de início rápido. Após instalar o plugin, configure seu token de acesso ao Cesium ion, adicione o componente CesiumGeoreference para definir o sistema de coordenadas do seu mundo e comece a adicionar conjuntos de blocos.
Para a construção na web, siga estas etapas essenciais:
Atualização para a v1.20.0+: Certifique-se de ter a versão mais recente do pacote Cesium for Unity.
Use o Unity 6+: Essas versões são otimizadas para os padrões modernos WebGL e WebGPU.
Ativar a multitarefa: Você deve ativar a Multitarefa C/C++ nativa nas configurações do Player para a compilação para a Web.
Aumentar os limites de memória: Os conjuntos de blocos do Cesium podem consumir muita memória. Você pode precisar aumentar o limite de memória do reprodutor da Web, que pode ser configurado para 4 GB.
Configure cabeçalhos do servidor: Ao implantar seu projeto em um servidor web, seu servidor deve incluir cabeçalhos COOP e COEP específicos para habilitar a multithreading. Este é um requisito de segurança.
É importante notar que o suporte web está atualmente categorizado como "experimental". Alguns recursos avançados ou conjuntos de blocos de memória alta podem exigir otimização cuidadosa para funcionar bem dentro das restrições de memória do navegador.
Análise técnica aprofundada: Portabilidade para a web
Compilação para WebAssembly
O núcleo do Cesium Native é escrito em C++. Para executar esse código em um navegador, ele deve ser compilado em WebAssembly usando uma cadeia de ferramentas chamada Emscripten. Um desafio principal é que o código do Cesium geralmente é direcionado para plataformas de 64 bits, enquanto o suporte ao WebAssembly do Unity é atualmente de 32 bits. Isso exige que o código seja modificado para ser independente da arquitetura. Além disso, algumas bibliotecas de terceiros usadas pelo Cesium precisam de correções para garantir a compatibilidade.
Reengenharia para multithreading
O Cesium para Unity depende fortemente do multithreading para transmitir Tiles 3D sem impactar o thread da aplicação principal. No entanto, a plataforma web da Unity só suporta multithreading para código C++ nativo, não para código C# gerenciado. Um conjunto de threads C++ personalizado foi implementado especificamente para compilações web para lidar com essa limitação. O trabalho que precisa interagir com a Unity, como a criação de malhas, é colocado em fila e executado na thread principal para evitar erros de memória, mantendo o trabalho em segundo plano em C++ nativo e minimizando o impacto na thread principal.
APIs gráficas: WebGL e WebGPU
Os navegadores oferecem duas APIs de gráficos 3D principais: o WebGL estabelecido e o WebGPU mais recente. O Cesium para Unity funciona criando objetos de malha e textura padrão do Unity, deixando o trabalho de renderização para o mecanismo. Embora sejam em grande parte equivalentes para o renderizado do Cesium, existem diferenças menores. Por exemplo, o sombreador de pontos do Cesium usa recursos disponíveis apenas no WebGPU, o que significa que o renderizado de nuvem de pontos o exige. O WebGPU também abre as portas para outros recursos avançados do Unity, como o VFX Graph.
Considerações de desempenho na web
As compilações para a web têm naturalmente perfis de desempenho diferentes dos aplicativos nativos. O Cesium já é bem adequado para essas restrições, com sistemas de nível de detalhe que ajustam automaticamente a qualidade para manter taxas de quadros suaves. Sua abordagem de streaming também é um grande benefício, pois apenas os dados visíveis são carregados.
No entanto, os desenvolvedores devem estar cientes das limitações do WebAssembly. A velocidade de execução é quase nativa, mas não idêntica, devido à criação de ambientes seguros. As compilações para a Web não podem aceder diretamente ao sistema de ficheiros e a memória está atualmente limitada a 32 bits (4 GB). Um projeto que funciona bem num computador de secretária pode necessitar de otimização, como a redução das definições de qualidade ou do âmbito, para funcionar sem problemas na Web.

O futuro do geoespacial na Web
À medida que a tecnologia de navegadores e o WebAssembly continuam a amadurecer, a lacuna entre o desempenho das aplicações web e nativas diminuirá. O Cesium para Unity está posicionado na vanguarda desta evolução, permitindo que os desenvolvedores criem experiências geoespaciais que são ao mesmo tempo poderosas e universalmente acessíveis.
Essa combinação da suíte criativa da Unity, da plataforma geoespacial do Cesium e do alcance da web, abre novas oportunidades atraentes para os desenvolvedores. De ferramentas de visualização profissional a experiências educacionais imersivas, isso fornece a base para trazer mundos 3D precisos e bonitos para navegadores em todo o mundo.




