I’m a polyglot full-stack developer who builds whatever feels interesting.
Lately: AI × 3D × interactive experiences.
Here’s one of my recent experiments — a physics toy for spectacularly bad landings.
More strange things coming.
3 Steps to Being Able to Produce Hollywood Level AI Animations (and not slop):
1. The quality of your animation doesn't start with the images or the prompt
It starts with the idea and camera angles, then the images and video. A boring idea can't be revived with interesting looking images or cool scenes
and without knowing basic fundamentals of camera movement / shots, the flow of the film will feel stale and slow (or too fast)
This will not only stop you from burning credits
2. Add lighting into your scenes
Adding a light source in your location images and referring to it will give your film a much higher quality feel and prevent an empty feeling film where seedance has to guess where the lighting is coming from
For example in a kitchen scene add a lamp in the image with a golden glow coming off it
3. Don't leave direction up to the Claude
No matter how good of a skill you have or level of model, it is terrible at directing
To properly direct Wispr flow your idea shot by shot into Claude then add in a base acting direction for each character that the prompts always need to follow
Also along with the scene and the tone of how your characters speak and move. This will prevent you from having stale feeling or AI looking movement and dialogue in your film
Made a 90-second horror short, The One in the Mirror, starting with a simple 3D blockout and turning it into an AI-generated film.
MiniMax H3 Turbo handled the video generation in 8 sampling steps, with reference images keeping the character and apartment consistent across shots.
A man living alone hears his door unlock every night at midnight. He changes the lock. It keeps happening. Then he notices the door in his mirror.
I made a 130-second French Revolution zombie trailer using 3D previs + AI video.
The workflow: Script → asset references → Three.js blockout → MiniMax H3 R2V → edit.
The details that mattered: • Keep every shot under 10 seconds. • Block camera moves, actions and spatial relationships. • Match reference images to the actual camera angle. • Review contact sheets and regenerate problem shots.
Top: AI footage. Bottom: 3D previs.
Sharing the character, environment and prop sheets below. Follow along as I refine the workflow.
Still some rough edges: I used Turbo 4/8-step LoRAs, and the results were mixed. Some references didn’t carry through, camera moves drifted, and character consistency occasionally broke. More iteration needed.
@oathlightstudio Previs fixes always come first. Rerolling is the final step, and if it still fails, the answer is still to go back and refine the previs. The MiniMax H3 Turbo LoRA setup sacrifices quality for iteration speed—swapping it for SD 2.5 or Kling 4 would handle this much better.
@DanielZambrini Time spent on the 3D previs was pretty even across the board. It was fully generated using Codex / GPT-6.1 sol-low—the agent designed most of it autonomously. I just fed it the story, did some wishful-thinking prompting, and let it take the wheel.
I made a one-minute animated spy scene using a Three.js previs as the reference for MiniMax H3.
The most interesting part was seeing what survived the translation from 3D blocking to generated animation. Camera framing carried through reasonably well. Character placement needed more supervision. One shot swapped the leads, and another put the same woman on both sides of the frame.
Here’s the process, including the fixes.
Script and visual references
The scene is set in Berlin in 1944. An interrogation turns into a private bargain when an officer asks a woman involved in a rescue network about his daughter.
I wrote the English dialogue first, then developed a visual guide for a mature American 2D animation style: restrained expressions, muted colors, painted backgrounds, and warm desk lighting.
I generated character turnarounds, empty environment references, and prop sheets. These became the reference library for the video shots.
A complete scene in Three.js
I built the room, characters, props, lights, and cameras in Three.js, with one unit representing one meter.
The previs included the actions that mattered to the conversation: pulling back a telegram, placing a pistol on the desk, sliding over a key, and removing an armband.
I also revised the camera edit. The early version had too many push-ins, so I replaced most of them with held shots, listener reactions, and a couple of focus transfers. The dialogue became easier to follow when the camera stopped moving so often.
Dialogue and timing
I generated the English voices with Drama and arranged the recordings on a 60-second timeline.
The previs followed that timeline, so camera cuts, gestures, and pauses had specific timings before video generation started.
Seven reference clips
I split the scene into seven segments to stay below H3’s 15-second limit.
The requested durations were 11, 7, 6, 9, 11, 8, and 10 seconds. Each segment had its own previs video, dialogue recording, and reference list.
I used Mediabunny to export the clips from the browser and package them for generation. The extra frames at the ends were trimmed during assembly.
H3 generation in ComfyUI
I used Colab CLI to open a G4 session, installed ComfyUI with the official MiniMax H3 workflow, and loaded the LightX2V Ref2Video Turbo v1.0 LoRA.
The working renders used eight sampling steps at 864 × 480 and 24fps.
For each segment, I supplied the previs, the relevant reference images, the dialogue audio, and a prompt describing the shot, speaker assignments, and actions. I generated the clips sequentially and downloaded them for review.
The off-screen speaker problem
Near the end of one segment, an officer outside the room says, “Sir. The car is here.”
The generated shot made the man inside the room move his mouth to that line. I tried more explicit off-screen voice instructions, including telling the visible character to keep his lips closed. That still didn’t resolve it.
I went back to the Three.js scene, added a corridor and a supporting officer, animated him opening the door, and added a doorway shot. I then made a turnaround for him and regenerated the segment.
The resulting clip showed the officer at the door during his line. The hallway still retained more of the 3D previs look than I wanted, but the staging was much clearer.
Fixing character placement
Another segment was supposed to look past the man’s shoulder toward the woman. H3 reversed their positions.
For the retry, I made the woman the first character reference, explicitly assigned her to the focused background, and limited the man to the foreground back-of-head silhouette. I also removed the room illustration from that request because it could compete with the previs composition.
The shot with two copies of the woman needed a simpler approach. She didn’t need to be visible there, so I removed her image reference and rendered a single shot of the man listening to her off-screen voice, followed by him placing the pistol on the desk.
Both retries corrected the character-count and placement problems.
Music and assembly
I generated a background cue with Lyria CLI, asking for sparse low strings, occasional piano, and enough space for the dialogue.
I made a 60-second version, lowered it under the voices, reduced it further during the doorway announcement, and faded it before the ending.
I assembled everything with FFmpeg, using the original voice recordings for the final dialogue track. The preview has English subtitles and a 1080p export, although the generated source clips are 480p.
I also rendered a full comparison with the 3D previs above the generated footage, sharing the same audio.
That comparison is probably the most useful thing to watch. You can see which camera choices carried through, which actions drifted, and where the model introduced things that weren’t in the plan.
For this experiment, the previs gave me a concrete way to revise the scene. When an instruction kept failing, I could change the staging, export another reference, and try again. The off-screen line was the clearest example: I eventually stopped rewriting the instruction and gave the speaker a shot.
I haven't actually built out a proper previs template or specific skills for this yet—I just let the model design the shots on its own based on the plot. Everything you see here was designed by the AI itself across those 3 rounds of prompting; I didn't micromanage any of the details.
I only used my basic starter template, which is really just a sandbox I normally use for testing random 3D ideas.
I made a 105-second adaptation of The Little Match Girl using a 3D blockout, AI-generated references, and reference-to-video.
The most useful part of the process was designing the film before generating the final shots.
Here's the workflow:
1. Story to production plan
I split the story into seven chapters, then wrote a visual world guide and an inventory of characters, environments, and props.
2. Build the film in 3D
I blocked out the scenes and worked on framing, camera movement, and spatial continuity.
This took several passes. The early cameras were repetitive, and details like looking through a window needed careful positioning.
3. Create the reference library
I generated 23 separate reference images:
5 character turnarounds
10 empty environments
8 key props on white backgrounds
4. Export the camera reference
I exported each chapter as a silent, 15-second blockout video. These became the motion and composition references for generation.
5. Generate remotely
I started a G4 GPU instance through the Colab CLI, installed ComfyUI, exposed the interface through ngrok, and downloaded the models directly on the server.
Then I used MiniMax H3 R2V with each blockout video and its relevant reference images, generating and reviewing one chapter at a time.
6. Assemble locally
I downloaded all seven results, joined them into a 105-second film, and generated a score using my own lyria-cli tool.
Finally, I made a synchronized comparison: blockout on top, generated footage below.
The results still drift from some camera angles and cut timings. But the comparison makes it easy to see which directing decisions survived generation and which need another pass.
The asset board and comparison video are attached.
I think I only prompted Codex for 3 rounds:
First pass gave me all 45° high-angle push-ins.
Second pass added more cuts, but mostly medium shots from the right.
Third pass I just told it to vary the camera angles more.
Then I reviewed the animatic on the full timeline—once it looked good, I sent it straight to ComfyUI on Colab. The 3D previs is built in Three.js using my own template.
https://t.co/Y8o4Um4Hue