---
title: "Most AI video tools output slop. I built a deterministic Three.js + LLM pipeline instead"
url: https://daily.dev/posts/most-ai-video-tools-output-slop-i-built-a-deterministic-three-js-llm-pipeline-instead-xq4ivoygt
source_url: https://daily.dev/posts/most-ai-video-tools-output-slop-i-built-a-deterministic-three-js-llm-pipeline-instead-xq4ivoygt
type: freeform
source: "Varun Dev"
author: "Varun Dev"
published: 2026-06-24T10:11:41.457Z
updated: 2026-06-24T10:11:59.796Z
tags: ["webdev", "llm", "threejs"]
reading_time: 2
upvotes: 0
comments: 0
language: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Most AI video tools output slop. I built a deterministic Three.js + LLM pipeline instead

**[Varun Dev](https://daily.dev/sources/ebbuxpsgx5yyxfu0ghtny)** · [@var_dev_sh](https://daily.dev/var_dev_sh) · 2 min read · 0 upvotes · 0 comments

## Summary

A developer built Unstill, a deterministic 3D video generation pipeline to avoid the frame-drift issues common in AI video generators. The architecture separates concerns: an LLM authors a pure-data scene file (no code generation), a unified Three.js + GSAP + Matter.js engine renders it for both live preview and video export, and Remotion handles MP4 export with TTS narration synced per chapter. The key technical insight is making all motion a pure function of timeline.time() rather than accumulated delta-time, enabling Remotion to parallelize rendering across workers with zero drift and ensuring pixel-identical output between preview and export. Quality is improved through structured-output schemas, domain accuracy packs, and a visual-critique self-correction loop.

## Content

🔧 Most "AI video generators" output slop with drifting frames. I'm a dev — I wanted deterministic, frame-perfect 3D. So I built my own engine. Here's the architecture (with a teardown of an actual engine it generated 👇).

TL;DR: I built Unstill — you give it a prompt, an LLM authors a pure-data scene, a custom Three.js + GSAP engine renders it interactively, and Remotion exports a narrated MP4. The hard part wasn't the LLM — it was making the live preview and the exported video pixel-identical.

How it works:

1. The LLM doesn't render — it authors data. It outputs a file: pure data describing objects, tweens, camera moves, and chapters. No code-gen, no pixels — so output is validatable, repairable, and version-controllable.
2. One engine, two outputs. A Three.js + GSAP + Matter.js engine renders that data for BOTH the live studio preview and the video export. The catch: "looks right in preview, broken in the MP4." The fix was making all motion a pure function of timeline.time() (no accumulated dt), so any frame renders identically and Remotion can parallelize the render across workers with zero drift.
3. Remotion for the MP4 — with AI narration (TTS) synced per chapter, captions, and a coded like/subscribe/bell outro shared between preview and export so they never diverge.
4. Quality is a loop, not a prompt. Structured-output schemas + domain accuracy packs + a visual-critique pass that re-renders and self-corrects.

Here's a 4-stroke engine it generated end-to-end 👇

▶️ [https://www.youtube.com/watch?v=TWUhj6Hmv3M](https://www.youtube.com/watch?v=TWUhj6Hmv3M)

What's your thought on this?

#threejs #webgl #javascript #typescript #react #nextjs #ai #machinelearning #webdev #devtools

---

Tags: [#webdev](https://daily.dev/tags/webdev), [#llm](https://daily.dev/tags/llm), [#threejs](https://daily.dev/tags/threejs)

[View this post on daily.dev](https://daily.dev/posts/most-ai-video-tools-output-slop-i-built-a-deterministic-three-js-llm-pipeline-instead-xq4ivoygt)
