I built the first complete version of 3D Learning Lab in one focused day. The deployed interactive learning experience became an EMEA Award Winner. Coding agents helped with planning, setup, implementation, debugging, testing, iteration, and documentation. They moved fast because I kept the product definition small.
My rule was simple. The learner had to understand one relationship through one spatial action. Every scene, object, gesture, and line of feedback had to serve that outcome. That constraint solved the hardest problem in rapid 3D work: the urge to build an impressive world before proving that the interaction teaches anything.
Hour one: I reduced the idea to one learning action
I started with a sentence the learner should say after the interaction. It described a relationship, not a feature. Rotating a model is a feature. Explaining how two parts connect after changing the viewpoint is a learning outcome.
Then I wrote the action that reveals that relationship. The learner observes, changes one thing, sees a response, and explains what changed. That four step loop became the entire first version.
I also wrote a removal list. No account, content library, avatar, open world, complex progress system, or decorative environment entered the one day scope. Each extra system would create work without answering the learning question.
Hours two to four: I gave the agent one complete loop
I asked the coding agent to inspect the stack, plan the smallest scene, and build a visible route from load to interaction, feedback, and reset. The agent handled renderer setup, component wiring, repetitive event code, and the first test harness. I stayed responsible for the camera, interaction mapping, pacing, and learning feedback.
I split the build into short tasks. First the scene loads. Then the camera frames the subject. Then one gesture changes the state. Then the interface explains the change. Finally, reset returns the learner to a known position. The agent reported changed files, behavior, and checks after each task.
I used the experience before approving the next handoff. This caught problems that code review missed. A control worked but moved in the opposite direction from the visual cue. The reset restored the object but not the camera. Small phases let me correct both before they spread through the scene. I use the same loop in my coding agent method.
Hours five to seven: I spent the visual budget on the lesson
The early scene looked empty, so the obvious response was to add detail. I did the opposite. I used framing, contrast, lighting, and movement to direct attention. Extra objects gave the learner more things to inspect and fewer clues about the intended relationship.
I kept geometry simple, reused materials, reduced texture sizes, limited lights, and capped render resolution on dense phone screens. I paused work when the scene left the viewport or the tab went into the background. When an asset left the scene, I disposed of its geometry, materials, and textures.
I checked the whole load path, not only the final frame. Asset weight, first useful render, shader work, draw calls, and input delay all affect the lesson. A polished scene that makes the learner wait or turns a phone hot has spent its budget in the wrong place.
“What I love about the medium of games is you have to engage with it for it to start.”
Danielle Brathwaite Shirley, artist and game maker
Hours eight to ten: I tested the action, not the spectacle
I tested the main loop with a mouse, keyboard, and touch. I resized the viewport, changed orientation, left and returned to the tab, triggered reset from every state, and used the reduced motion path. I checked whether the fallback explanation still taught the relationship when full 3D was unavailable.
Then I ignored the frame rate and watched the learner action. Is the movable part obvious? Does the camera fight the gesture? Does the response explain cause and effect? Can the learner return to the start? Does the animation reveal a relationship or only decorate it?
The reset caused the most useful revision. An instant snap erased the path the learner had taken. I gave reset a clear visual transition and restored every related state together. The learner could now see the return and trust the starting point.
What I watch on ordinary hardware
I watch time to first useful frame, input delay during the main gesture, frame stability, heat, memory, and recovery after the tab returns. I test the least powerful device available early. Lower hardware reveals waste before visual polish makes it expensive to remove.
I closed the day with a reusable build method
I ended with the product, its implementation notes, a scene budget, a list of tested states, and the next learning questions. The documentation captured why the camera range, controls, reset, and performance limits existed. A fresh agent could continue without redesigning the lesson from memory.
For later lessons, I compare the interactive explanation with a clear flat version built around the same outcome. I observe errors, explanation quality, completion time, and the points where people manipulate the scene without learning from it. 3D has to earn its extra load and interaction cost.
This gives me a repeatable sequence. Define the outcome. Storyboard one action and response. Build the full loop. Set a scene budget. Test the meaning on ordinary hardware. Record the decisions before adding another lesson. The learning principles in my personalized pathway method keep the learner in control.
- Write one outcome before you open the 3D tool.
- Build observation, action, feedback, and reset as one loop.
- Use short agent tasks with manual validation between them.
- Set performance and accessibility limits before polish.
- Keep 3D only when space improves the explanation.
Speed came from the decisions I removed
The agents compressed setup and iteration, but the one day result came from a narrow product decision. One outcome shaped the scene. One action shaped the code. One manual check closed every handoff.
If you build an interactive lesson, write what the learner should explain before you design what they should see. Choose the smallest spatial action that reveals the relationship. Then remove every object and effect that competes with it.



