For the complete documentation index, see llms.txt. This page is also available as Markdown.

Colliders

Saiba como adicionar colliders a modelos 3D importados para o Decentraland.

Para permitir colisões entre um modelo 3D e os usuários da sua scene, você deve dar colliders ao modelo. Sem um collider, os jogadores conseguem atravessar modelos como se eles não estivessem lá. Colliders também são necessários para fazer um objeto responder aos pointer events do jogador ou bloqueá-los, ou para ser intersectado por raycasts ou bloqueá-los. Por motivos de performance, os colliders geralmente são modelados separadamente como uma geometria invisível mais simples que tem menos vertices do que a geometria visível.

💡 Dica: Instale o plugin Blender Decentraland Tools. Ele inclui várias funções úteis para ajudar você a editar e exportar modelos 3D, Wearables e Emotes.

O modelo pode usar uma geometria invisível como colliders, ou (a partir do SDK7) você pode, em vez disso, atribuir à geometria visível o comportamento de collider. Veja Colliders em modelos 3D . Você também pode atribuir diferentes layers de colisão às diferentes geometrias, para controlar separadamente a física do jogador, os pointer events e outras layers personalizadas, veja Colliders em modelos 3D .

Colliders não afetam como modelos e Entities interagem entre si; eles sempre podem se sobrepor. Colliders afetam apenas como o modelo interage com o avatar do jogador.

Para que um objeto seja reconhecido por uma scene do Decentraland como um collider, tudo o que ele precisa é ser nomeado de uma certa maneira. O nome do objeto deve incluir o sufixo “_collider” no final.

Por exemplo, para criar um collider para um poste de luz, você pode criar um objeto simples em forma de caixa que envolva seu tronco. Os jogadores na scene não verão essa caixa, mas ela bloqueará seu caminho.

Neste caso, podemos nomear a caixa “LampPostcollider” e exportar tanto a árvore quanto a caixa como um único modelo __gltf. A tag *__collider* alerta o engine do mundo do Decentraland de que o objeto caixa pertence à coleção de colliders, tornando a mesh do collider invisível.

Sempre que um jogador visualizar o modelo do poste de luz na sua scene, ele verá o modelo complexo da sua lâmpada. No entanto, quando entrar nele, colidirá com a caixa, não com a árvore.

Restrições Espaciais do Jogador

Quando você projeta modelos feitos para os jogadores andarem ao redor, você precisa ter em mente as seguintes medidas de referência:

  • Os jogadores podem subir um degrau de até 30 centímetros de altura sem pular

  • Os jogadores podem subir rampas com um ângulo de até 45 graus sem pular

  • Os jogadores podem saltar até 1,8 metros de altura

  • Os avatars medem cerca de 1,9 metro de altura, mas considere que eles podem estar com hats ou outros wearables na cabeça.

Sempre que um jogador visualizar o modelo da árvore na sua scene, ele verá o modelo complexo da sua árvore. No entanto, quando entrar na sua árvore, colidirá com a caixa, não com a árvore.

Adicionar um Collider a uma Escadaria

Escadas são um caso de uso muito comum para objetos collider. Para que os jogadores subam escadas, deve haver um objeto _collider correspondente que os jogadores consigam pisar.

Recomendamos usar um objeto rampa para os colliders da sua escada; isso oferece uma experiência muito melhor ao subir ou descer. Quando eles subirem suas escadas, parecerá uma subida ou descida suave, em vez de exigir que eles “saltem” cada degrau individual.

Usar um objeto rampa também evita criar geometria desnecessária, economizando espaço para outros modelos mais complicados. Tenha em mente que a geometria do collider também é levada em conta ao calcular as limitações da scene

  1. Crie um novo objeto em forma de rampa que se assemelhe ao tamanho e às proporções das escadas originais.

  1. Dê ao objeto rampa um nome semelhante a Stair_collider. Ele deve terminar em _collider.

  2. Sobreponha o objeto rampa às escadas para que ocupem o mesmo espaço.

  1. Exporte ambos os objetos juntos como um único glTF modelo.

Agora, quando os jogadores visualizarem as escadas na sua scene, eles verão o modelo mais elaborado das escadas, mas quando as subirem, colidirão com a rampa.

Otimizando Colliders

  • Prefira usar Box, Sphere e Capsule meshes de colisão, porque isso terá melhor performance no carregamento e em runtime.

  • Considere aproximar uma mesh de colisão complexa por várias meshes de colisão Primitive (Box/Sphere/Capsule)

Exemplo: o collider para Ring pode ser composto por vários colliders Capsule ou Box

  • Coloque a mesh de colisão dentro da Hierarchy do objeto ao qual ela está relacionada. Por exemplo, Spaceship_collider pode ser um filho dentro do pai Spaceship (do ponto de vista da Hierarchy)

Colliders Convexos vs Côncavos

Se usar um collider de mesh arbitrária for a única possibilidade, então torne a mesh de colisão Convexa (não Côncava). Isso evitará situações físicas estranhas, como stuttering, ficar preso dentro do collider ou atravessá-lo. Observe que muitas vezes é possível imitar uma mesh côncava com várias meshes convexas.

Nomenclatura de Colisão

Use nomes significativos. O nome deve dar contexto de onde o asset é usado ou a que parte do objeto ele se relaciona.

Para a nomeação de assets, usamos uma mistura de PascalCase e snake_case, que podemos chamar de PascalSnake_case. As regras básicas aí são - uma nova palavra ou a palavra após o separador (_) começa com Letra maiúscula.

Collision Mesh é a mesh usada como referência para criar um collider no Explorer

  • Ela segue os mesmos princípios que as Meshes acima, mas tem _collider sufixo no final Exemplos: 🟢 Prefira nomes - Tram_Wheel_LeftFront_collider 🔴 Evite nomes - Primitive.001_Collider, collider (1), Cylinder.007_collider,

Melhores Práticas para Colliders

  • Use sempre o menor número possível de triângulos ao criar colliders. Evite fazer uma cópia de um objeto complexo para usar como collider. Colliders simples garantem uma boa experiência do usuário e mantêm sua scene dentro das limitações de triângulos.

  • Os objetos collider não devem ter nenhum material, já que os jogadores da sua scene nunca o verão. Colliders são invisíveis para os jogadores.

  • Todos os nomes de objetos collider devem terminar com _collider. Por exemplo, Tree_collider.

  • Se você usar um _plane_** como collider, ele bloqueará apenas em uma direção.** Se você quiser que colliders bloqueiem dos dois lados, por exemplo em uma parede, você precisará criar dois planes com suas normals apontando em direções opostas.

  • Ao duplicar objetos collider, preste atenção aos seus nomes. Alguns programas acrescentam um _1 ao final do nome do arquivo para evitar duplicatas, por exemplo tree_collider_1. Objetos nomeados assim serão interpretados pelo Decentraland World Engine como objetos normais, não colliders.

  • Você pode evitar adicionar uma mesh collider se adicionar um MeshCollider invisível ao entity, que aproxima a forma do modelo 3D.

  • Você também pode evitar adicionar uma mesh collider se configurar o GLTFContainer para usar a geometria visível como collider. Veja Colliders em modelos 3D .

  • Se você estiver criando um modelo 3D com muitas formas de mesh que cada uma precisa do seu collider, há alguns addons úteis que podem ajudar. Para Blender, você pode usar a opção de renomeação em lote dentro do Blender ****para adicionar automaticamente um _collider sufixo a todos os nomes de mesh de um grupo. Mais sobre esta ferramenta na seção “Usando o Blender para renomear assets”

Atualizado