InputReference art
The official pack image from almarai.com was the reference for every image model. FLUX.2 Max refused the full pack, so it got a crop without the logo and text.
Step 1 · Image modelsClean front view
Same prompt and same reference for each model: the character alone, full body, front view, relaxed A-pose, plain grey background. The pick (pink border) feeds steps 2 and 3.
Step 2 · TurnaroundBack and side views
The picked front view plus the pack art, sent back to the same model for the other angles. "Left" shows the character's left side (it faces the left edge). These views also suit Tripo's multi-view mode.
Step 3 · Image-to-3D modelsTextured 3D models
Drag to orbit, scroll to zoom; the models take a few seconds to load. TRELLIS.2 received the front view only; Rodin received all four views. Hunyuan3D 3.1 failed twice on the provider side (no capacity), not because of the input.
Step 4 · BlenderRigged and animated
The Rodin model with a 14-bone rig made in Blender 5.2 by rig.py: body, leaf crown, two-bone arms and legs, and two eyelid bones. The eyelids are small added shells that hide above the eyes and rotate down to blink; the mouth closes with a mouthClose blend shape. Four loops; pick one below.
Step 5 · Lens planNijoom recipe lens (image tracking)
The user points the camera at a Nijoom pack. Its front face opens as a portal into a strawberry-milk world inside the box, the mascot jumps out through it, and while it talks four recipe cards appear around the pack. The frames are AI concept images (GPT Image 2.5 Flare, with the pack and our mascot as references), not lens captures; the recipe text is placeholder copy.




| Step | What the user sees | How we build it (Lens Studio 5.22.1) |
|---|---|---|
| 1 · Scan | "Point at your Nijoom pack" hint; it comes back whenever the pack is lost. | Image marker tracking on the pack's front print, with the real print width set so the content is to scale. Hint from the ARLab template's Hints manager. |
| 2 · Portal opens | The box edges light up, then the printed front dissolves into a window onto a strawberry-milk world: hills, milk waves, giant strawberries, clouds. The world looks far deeper than the box and shifts with parallax as the phone moves. | A 3D world placed behind the marker plane. An invisible occluder shell around it, with an opening the size of the pack face, renders first, so the world shows only through the opening. A plane with the pack's own print covers the face and fades out with a dissolve mask; a glow mesh traces the opening and the box edges. |
| 3 · Mascot comes out | The mascot runs up inside the world and jumps out through the opening toward the camera, with a milk splash over the rim, sparkles and a pop sound. | The rigged mascot (rig_rodin.fbx) follows a path from inside the world, through the opening, to the table in front of the pack (the pack's bottom edge is the floor line). Inside the box the occluder hides it like the world; once through it is in front of everything. Splash and sparkle VFX at the rim. Needs a Jump animation added to the rig. |
| 4 · Recipes | Four cards pop in one by one, two on each side of the pack, while the mascot talks; the portal stays softly open. The cards bob gently; tapping one makes it grow and dims the others. | Four cards fixed to the marker, turned to face the camera. The Talk loop plays with one voice line per card. The Almarai logo stays static in the template's logo slot. |
Still needed
- The four recipes (a title and one line each) and the language: Arabic, English, or both.
- A real pack, measured with a ruler: width, height and depth in cm. Until then the lens uses an estimate of about 5.3 × 8.6 × 3.5 cm (W × H × D), from a 150 ml fill, the 0.61 front shape in the photo and the depth of small brick cartons (0.66–0.81 of the width). Amazon lists 6 × 5 × 10 cm, but that is 300 cm³, about 2 times the volume of the carton. Also needed: a flat, sharp image of the face we track. Which face, the Arabic or the English one? The lens can track both.
- A voice-over for the mascot (recorded lines), or text only.
- A smaller mascot file. A Snapchat lens must stay under 8 MB, and the rigged mascot alone is about 14.6 MB, mostly textures.
- The portal world itself: the frames above are concepts, so the 3D world still has to be made, and it shares the 8 MB budget.
- A Jump animation for the mascot, for the exit through the portal.
- Almarai's approval of the recreated mascot.
Step 6 · Lens build · 2 October 2026What we built
The lens is built and plays in the Lens Studio 5.22.1 preview. These frames are lens captures from the preview on a test photo, not concepts. The plan above changed with the owner's feedback during the build: the table below shows each change.









| Time | What happens | How |
|---|---|---|
| Scan | The scan hint shows until the pack is found, and stays 1 s more for recordings (Scan Hold: set it to 0 for the live lens). It comes back when the pack is lost. | Image marker on the pack front. LensController states scan → portal. |
| 0–0.7 s | The outline traces from the top centre down both sides. | Glow band built in script around the window. |
| 0.6–1.1 s | Sparkles spread round the edge, then stop once the outline is complete. | VFX on the outline; the world has its own motes. |
| 0.8–2.0 s | The printed front burns away; the world shows through the window. | The camera image of the print, with a dissolve; a depth-only occluder hides the world outside the window. |
| 1.4 s | Six 3D strawberries leap out, spring into loose places above and below the pack, and keep floating: they drift, turn and hop, one at a time. | BerryBurst.ts: a damped spring, then slow waves. Fixed to the pack. |
| 2.0 s | The mascot squashes, jumps about half its height, lands and rings out. | Squash and stretch in script; the feet stay on the floor; the shadow shrinks in the air. |
| 3.2 s | It waves for 2 s. | The Wave loop of the Blender rig. |
| 4.6 s | Four recipe cards pop in, two on each side, with a small overshoot and wobble, then bob. | RecipeCards.ts: image planes fixed to the pack, parallel to its front. |
| 6.0–9.0 s | The bubble "Let's make something yummy!" grows out of its tail at the mascot's mouth, inside the portal; the mascot talks; at the end the bubble swells a little and shrinks away. | The Talk loop; the bubble follows the mouth and faces the camera. |
| Always | The world moves: milk flows and glints, the sun's rays turn and its glow breathes, three cloud walls drift, motes twinkle. The mascot turns a little toward the camera and steps sideways to stay in the window. | Shaders on the world layers; the world keeps the screen's up (it turns only about the pack's normal). |
Plan and build
| Part | Plan (Step 5) | Built |
|---|---|---|
| Scan | The template's hint. | Its own hint: the pack image, scanner brackets and a sweeping line. A Scan Hold input keeps it 1 s after the find for recordings. |
| Portal | Edges glow, the front dissolves. | As planned, plus sparkles that run round the outline and stop when it is complete. |
| Mascot | Comes out through the portal to the table. | Stays inside the world (owner change): it jumps, waves, then talks. A fake shadow under its feet. |
| Recipes | Cards turned to the camera; tap to grow. | Cards fixed to the pack, two per side (owner: no turning to the camera). Tap is not built yet. Placeholder recipes. |
| Talk | One voice line per card. | A speech bubble inside the portal at the mouth, with the Talk loop. No voice yet. |
| New | — | A strawberry burst during the reveal; the strawberries then float around the pack. A living world: milk, sun, clouds, motes. |

Step 7 · The world insideA strawberry-milk world in depth
The world is seven curved walls at different distances behind the window, so it shifts with parallax when the phone moves: a clear sky with the sun, three cloud walls, and three milk layers on a milk floor. Every effect animates what the art already holds: the sun is the painted sun, and the strawberries in the milk stay still.


| Effect | What it does |
|---|---|
| Milk | Slow ripples travel toward the camera on the floor and the milk layers; small glints twinkle on the bright sun path. Only milk-coloured pixels move, so fruit never smears (checked offline: lens/diag/milk_check.py). |
| Sun | Soft rays turn slowly round the painted sun, its glow swells and fades about every 5 s, and a heat shimmer moves under it. Still one sun. |
| Clouds | The big banks sway slowly; the small puffs drift one way and wrap out of sight; every edge changes shape slowly. |
| Splash | The front splash fades into the floor at its base (the owner found a hard edge there). |
| Motes | 255 small twinkles float in the air of the world. |
Step 8 · Tracking and test photosA fit you can trust
The portal follows the marker through One Euro filters (still when the pack is still, quick when it moves) and holds for 0.5 s when tracking drops. The world turns only about the pack's normal, so it stays level on screen. Generated photos redraw the pack print, so they never fit exactly: the test photos are exact Blender renders of the pack, restyled into photos, plus the owner's hand photo made wider with its real print put back.




Step 9 · New assetsMade after the plan
All with GPT Image 2.5 Flare on Replicate unless named, from our own art as references. Each run is in the image ledger.






almarai/Lens Icon/Nijoom Marker/.Step 10 · Build reportTime, cost, next steps
From the session log and the ledger. The full report is almarai/Nijoom Marker Lens Report.md. Costs are estimates from published rates; the exact bills are on the Replicate dashboard and the Claude account.
Still needed
- The portal world (built: Step 7).
- A Jump animation (built in script, no rig change).
- A smaller mascot file:
rig_rodin.glbis 15.0 MB, more than the 8 MB lens limit on its own. Then export the lens and check its size. - The four real recipes and the language; voice-over or text only; tap a card to grow it.
- A real pack measured with a ruler, and a flat, straight-on photo of its print for a better marker.
- A phone test with a real pack, then tracking tuning.
- Before publish: Scan Hold to 0, remove the old sky texture and the AI preview handler.
- Almarai's approval of the recreated mascot.
Tried and dropped (owner)
- Strawberry sprites bobbing in the milk, and a separate sun glow (it read as two suns).
- A slow trickle of strawberries after the burst; outline sparkles that keep going after the outline is complete.
- Turning the whole world upright on a flat pack (only the in-place roll stays).
- Cards and strawberries that turn to the camera.