📌 Especificaciones Técnicas y Desarrollo de Proyecto: Kellogg's
🔎 ¿Por qué este proyecto?
Se eligió este proyecto porque integra muchos elementos que abarcan las funciones básicas que suelen pedirse en proyectos más simples, combinándolos con otros más avanzados.
🎬 Descripción del Proyecto
Este proyecto está diseñado como una web app, utilizando un filtro de Image Tracker.
🔹 Al iniciar el filtro, aparece una pantalla con animaciones fade in - fade out, mostrando y ocultando elementos después de unos segundos.
🔹 La pantalla inicial se mueve hacia atrás, simulando que se abre una caja.
🔹 Dentro de la caja aparece un elemento 3D animado (con su propia animación).
🔹 Posteriormente, aparecen más elementos animados desde Lens Studio:
- Dependiendo de cada filtro los elementos animados dentro de la caja cambian
🏗️ Componentes Clave
🖼️ Image Tracker
El seguimiento de imagen se realizó mediante Image Tracking, agregando dos Scene Objects para separar los renders. Esto ayuda a crear el efecto de profundidad en la caja y organizar los demás elementos visuales.
🎭 Antirenders
Se utilizaron elementos 3D planos con el material Occluder, lo que permite generar el efecto de profundidad en la caja.
✔️ Importante:
Estos elementos se colocan antes de los demás para respetar el orden de renderizado y evitar que se pierda el efecto de oclusión.
✨ Partículas
Se usaron dos tipos de partículas para lograr distintos efectos:
🔹 GPU Particles → Para simular el cereal cayendo en el tazón y las gotas de leche salpicando.
🔹 GPU Particles Trails → Para generar el efecto de humo en el jarrito, en el caso de Chocokrispis.
🎬 Tweens (Tween Manager)
Los TweenTypes facilitaron la animación de diversos elementos:
- Tween Transform → Se usó Scale y Move para animaciones de movimiento y tamaño.
- Tween Alpha → Aplicado en los efectos fade in - fade out de elementos planos y textos.
- Tween Chain → Útil para organizar mejor las distintas etapas del filtro y facilitar el control de los Tweens mediante Scripts.
📸 Orthographic Camera
La cámara ortográfica evita la distorsión de perspectiva. En este proyecto se usó para:
✔️ La instrucción de encontrar el marcador.
✔️ La imagen del marcador.
📜 Scripts
Además de los Tweens, se implementaron Scripts para controlar diferentes elementos dentro de la escena.
🎯 Integración de Elementos
1. 🖼️ Image Tracker
El image tracker se compone de dos elementos que contienen los antirenders para dar profundidad a la caja y los elementos que compondrán la caja de cereal.
2. 🧱 Antirenders
Se utilizaron antirenders alrededor de la caja. Para crearlos basta usar planos con el material incluido en Lens que corresponde a occluder. Es necesario colocarlos antes de los demás elementos para respetar el "renderizado".


3. 🎮 Objetos en Escena
Dentro de otro objeto se agruparon los elementos que componen el resto de la escena, como los elementos que aparecen al inicio, los escenarios 3D prefabricados y las partículas que se utilizan.
![]()
4. 📦 Prefabs
Los elementos prefab se utilizaron para importar los assets 3D que se utilizan a lo largo del flujo. Para cada filtro únicamente se sustituía el prefab que correspondía a la animación 3D de cada cereal en particular con sus respectivas animaciones.

5. 💫 Tweens
Se utilizaron diferentes tipos de Tweens para generar las animaciones de todo el flujo básico, como transformación de escala, posición y opacidad.
Coordinación de animaciones con Tween Chains:
-
Transformaciones iniciales

-
Control de opacidades (alphas) del inicio

-
Transición para dar profundidad a la caja

-
Animaciones variable que depende de los elementos dentro de la caja

-
Instrucciones de marcador (opacidad y escala)

6. 📜 Scripts
TouchBlock
Bloquea los gestos de toque nativos de Lens, evitando que al hacer tap simple o doble se ejecuten acciones predeterminadas de Snapchat.
Main
Controla todo el flujo al encontrar o perder el marcador.

🔍 Al encontrar el marcador:
Se inician los tweens, las animaciones 3D y se controlan los audios. Tanto la animación del 3D prefabricado, como los audios, cuentan con delay para que se inicien los segundos necesarios después de encontrar el marcador.

❌ Al perder el marcador:
- Se detiene la animación.
- Se oculta el modelo 3D.
- Se muestra la instrucción del marcador.
- Se detienen y reinician los Tweens.
- Se detienen los audios y se limpia el storage.

7. 🌫️ Partículas
- GPU Particles:
- Gotas de leche al caer el cereal.
- Cereal cayendo.
- Gotas de lluvia (Zucaritas).
- GPU Particle Trails:
- Humo (ChocoKrispis).
8. 🎯 Orthographic Camera
Aloja los objetos fijos en pantalla. Se usa para generar la instrucción del marcador mediante:
- Imagen en pantalla
- Texto en pantalla

🧩 Elementos específicos
- Zucaritas.
Se tuvieron que implementar ajustes para la animación 3D del aro y el corredor. Esto con el fin de cuadrar sus salidas con respecto al flujo del filtro.

- Cronflakes.
Se implementó un Tween Value para controlar el material que genera el crecimiento de un elemento 3D que corresponde a un hilo de estambre. El fin fue cuadrar el tiempo de animación con el flujo del filtro.

-
Chocokrispis.
-
Se agregó una animación por medio de Tween para hacer crecer el jarro del modelo 3D prefab.

-
Se añadió un tipo de partículas GPU Particles Trails para generar el efecto "humo" que sale del jarro.

-
Se agregó un Script para hacer rotar un grupo de chocolates del prefab 3D. No fue posible hacerlo mediante Tweens porque en ese caso las rotaciones solamente llegan a 180° y se requería una animación en loop completa, esto solo se logra mediante Script.

-
-
Frootloops.
En este caso sólo se añadió al material de las partículas de cereal una textura flipbook para generar un cambio de color en los aros de cereal sin necesidad de agregar una textura para cada color.

- Cornpops.
La animación 3D de los elementos dentro de la caja estaba dividida en dos: una para la salida de cada elemento y una en loop que se quedaría para el final del flujo. Se controlaron ambas mediante script con delay para iniciar cada una.

❗ Errores
Durante el desarrollo ocurrieron dos errores importantes prevenibles:
🧩 Error en los prefabs
No cargan correctamente los modelos y/o elementos que se requieren en escena.
Solución:
Para generar los prefabs que se utilizarán, se debe tener en cuenta que el proyecto del cual partirá debe estar bien ordenado y sólo contener los elementos que se requieren en escena. El Asset Panel debe estar también ordenado por carpetas y limpio de elementos que no se ocupen.
🎨 Problemas en los shaders para los materiales 3D
El filtro en algunos equipos funciona pero no aparecen los objetos 3D. En otros casos aparece un mensaje de error y el filtro se detiene.
Solución:
Se debe tener cuidado en la asignación de shaders en los materiales para los assets 3D:
-
No asignar un material GLTF con shader gltf a un modelo FBX, OBJ o GLB.
-
No mezclar materiales diferentes a GLTF con el shader gltf.

-
Siempre deben coincidir un modelo 3D GLTF con material GLTF y shader gltf.

- Si existe alguna otra combinación se genera el error.
