FoliMesh

Packs de assets 3D estilo Realista para PlayCanvas

Al subir un GLB al editor de PlayCanvas se crea un asset de tipo container con toda la jerarquía del modelo, listo para usarse como template; en código sin editor, el mismo archivo se carga con app.assets.loadFromUrl(url, 'container') y asset.resource.instantiateRenderEntity(). Cada árbol, palmera, cactus, arbusto y roca incluye LOD0–LOD3, así que, al no existir un componente LOD nativo, un script corto compara la distancia a la cámara y activa los render components de cada nivel. El acabado realista usa el flujo PBR metal/roughness: corteza con base colour, normal y roughness, y hojas en tarjetas con alpha test que escriben profundidad, no necesitan ordenación y proyectan sombras correctas. Corteza y follaje son materiales separados, lo que mantiene draw calls predecibles y encaja con el instanciado por GPU mediante meshInstance.setInstancing() en Bosque templado o Bosque de coníferas. Rocas y acantilados y el Kit del desierto van bien en supervivencia y mundos abiertos; en móvil, empieza por LOD1 o LOD2.

Packs

Sobre el estilo Realista

Los modelos realistas usan el flujo PBR metal/roughness, que glTF 2.0, Unity, Unreal, Godot y three.js leen directamente.

  • Corteza: mapas de color, normales y rugosidad en el tronco y las ramas.
  • Hojas: tarjetas con alpha test (masked) y texturas de grupos de hojas, no alpha blend: escriben profundidad, no necesitan ordenación y proyectan sombras correctas.
  • Corteza y hojas usan materiales separados, así el número de draw calls es predecible y el instancing por GPU funciona bien.
  • LOD0 es para primeros planos; LOD1–LOD3 eliminan ramas y tarjetas de hojas, y el último nivel es lo bastante ligero para la distancia.

Ideales para juegos en primera y tercera persona, supervivencia, mundos abiertos y simuladores en PC y consola. En móviles, usa LOD1 o LOD2 como nivel más cercano y vigila el overdraw del follaje.

Uso en PlayCanvas

PlayCanvas trata el GLB como un asset container. En el editor, sube el GLB (el FBX se convierte a GLB al importar) y obtendrás una plantilla con la jerarquía del modelo; en código solo de motor usa app.assets.loadFromUrl(url, 'container') y asset.resource.instantiateRenderEntity().

  • LOD: no hay un componente LOD integrado, así que un pequeño script compara la distancia a la cámara y activa o desactiva los componentes render de las entidades LOD0–LOD3.
  • Los árboles estáticos pueden compartir un batch group para fusionar draw calls; en bosques grandes usa instancing por hardware con meshInstance.setInstancing() y un vertex buffer de transformaciones.
  • Hojas: el MASK de glTF establece alphaTest en el StandardMaterial; usa cull mode none para hojas de doble cara.
  • Malla de colisión: componente collision de tipo mesh más un rigidbody estático, con el componente render desactivado.

Lo mismo en otros estilos

Lo mismo para otros motores