Diorama 3d logo

Diorama 3d

Community
timscheuerai
diorama-3d

Build a 3D diorama graphic in three.js that tells a system as a place (a room, a factory floor, a machine line), with the roles and tools as glossy toys, labels projected from 3D, a 2-second build-in and a seamless loop, exported as a 1080 x 1350 still, MP4 and GIF. Use for a 3D or animated system graphic for a post or lead magnet; flat posters stay in graphics-designer and editable process maps in flowchart.

Overview

Publishertimscheuerai
Repositorylinkedin-funnel
Skill namediorama-3d
Stars
60
Forks
20
Bundled files
7
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 7 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by timscheuerai on GitHub. Read the source before you install it.

Installation

Install the Diorama 3d AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/timscheuerai/linkedin-funnel/tree/main/skills/diorama-3d
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/timscheuerai/linkedin-funnel.git /tmp/linkedin-funnel
mkdir -p .claude/skills
cp -r /tmp/linkedin-funnel/skills/diorama-3d .claude/skills/diorama-3d
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Diorama 3d in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Diorama 3d on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Diorama 3d is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

3D diorama

A diorama tells a system as a place the reader understands in 2 seconds: a team as an office, outbound as a lead factory, a content workflow as a machine line. It earns its place when the story has stations, roles or a flow. Dense teaching content stays a flat graphic (graphics-designer) or a flowchart (flowchart).

Ground the work

  • Read the brand page for colours, fonts and logo rules, and positioning and the LinkedIn voice for the copy. Take numbers only from proof; leave a number out rather than invent one.
  • Roles, team members and tool names come from the real source. Never fill a station with an invented role.
  • When the brief is open, offer 3 metaphors in 1 line each (for example a press, a greenhouse, a scroll stopper) and build the one the author picks. Then state the reading order: what enters, which stations change it, what comes out.

Start from the starter

sh
cp -R skills/diorama-3d/starter output/<asset-name>
npm install --no-save playwright@1.58.2 && npx playwright install chromium   # once, at the repository root
cd output/<asset-name> && ./build.sh

The starter renders as is: a slab, a diagonal belt, 3 stations with cards, toys and an in/out line, the header and a 2-step CTA. Replace STATIONS and the toys in scene.js, the copy and the author's photo in scene.html, and the palette and fonts in the :root block of scene.css. Node and ffmpeg are needed; esbuild runs through npx.

  • Plan in screen space. P(sx, h, y): sx runs left to right on screen, h from the back to the front. S(s, off, y) runs along the diagonal belt, which reads as a line from the back left to the front right. A group turned by ROT has its local x along the belt.
  • Camera. Orthographic, about 40 degrees down from the front right (CAM_DIR), fitted by fit(points) to the corners and the room each card needs. Let walls run off the edges rather than shrinking everything to fit.
  • Toys. Glossy rounded primitives (RoundedBoxGeometry, a clearcoat material) in brand colours. Build faces from the real marks of the tools in the story, as simple extrusions or voxels; put logos on signs as textures and respect their usage rules.
  • Words are HTML, never 3D text. label() projects each label from a 3D anchor and nudges collisions upward with a leader line. Place signs first, then tags. Station cards carry a number, a name and up to 3 lines, each an instruction or a fact the reader can act on.
  • Light and colour. RoomEnvironment for reflections, 1 soft shadow sun, a cool fill, and neutral tone mapping so brand colours land close to their values.

What makes it work

  • Understandable beats detailed. Fewer, bigger stations; every actor visible; the same nameplate style for every actor. Cut any prop that hides a label.
  • Fast build: header, slab and stations arrive in reading order, each over 0.4 s with ease-out and no bounce, and the whole page including the CTA is on screen by about 2.3 s.
  • Then the place works: belts fill from each machine's exit, machines move on a beat, toys bob, a short chat line can open above a speaker. Keep motion gentle, never blinking.
  • The GIF restarts on the empty stage, so every play shows the build. The still is the fully built, running scene.
  • A collab uses the partner's branding, with both faces large and on top.
  • CTA: a real next action only. For a LinkedIn lead magnet, 2 steps: "1 Connect with me" (photo and button) and "2 Comment KEYWORD", because a DM usually needs a connection first. On X, "1 Follow me" and "2 Comment KEYWORD" (copy scene.html to scene-x.html).

Render, capture, encode

  • ./build.sh [page] bundles scene.js with esbuild (module scripts do not load from file://) and renders output/scene.png, @2x and a phone-width preview with a CPU WebGL context.
  • node capture.mjs <frames-dir> 25 [scale] [page] steps window.renderAt(t) from 0 to T_END. Draft at scale 1; scale 2 takes several minutes.
  • ./encode.sh <frames-dir> <name> writes the MP4 (1080 x 1350, H.264, for a LinkedIn video post) and a GIF (720 x 900 at 15 fps) that should stay under 5 MB.
  • Every running motion repeats within T_LOOP (use divisors of it), so the loop has no seam. In built(), use dyn: true only for objects whose y updateActors sets every frame, or the drop accumulates.

Inspect

Open the full-size still and the phone preview: headline, CTA, station names and the main actors must read at phone size. Make a filmstrip of the build and the loop, for example ffmpeg -i frames/f%04d.png -vf "select='lte(n\,11)',scale=360:-1,tile=6x2" -frames:v 1 strip.png after capturing at 4 fps. Check that frame 1 is the empty stage, everything sits by about 2.3 s, no label covers a toy or another label, and nothing jumps at the restart. Fix the biggest weakness and re-render. Do not claim a visual review from the source alone.

Deliver

Return the still, MP4, GIF and the editable folder, with the dimensions and any known limitation. Keep a short README in the asset folder with the brief, the author's feedback per round and the rebuild commands. Posting needs the author's go.

Third-party code

starter/vendor/ holds three.js 0.170.0 and 2 of its addons under the MIT licence (starter/vendor/three-LICENSE).

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Diorama 3d AI skill do?

Build a 3D diorama graphic in three.js that tells a system as a place (a room, a factory floor, a machine line), with the roles and tools as glossy toys, labels projected from 3D, a 2-second build-in and a seamless loop, exported as a 1080 x 1350 still, MP4 and GIF. Use for a 3D or animated system graphic for a post or lead magnet; flat posters stay in graphics-designer and editable process maps in flowchart.

Why use Diorama 3d on TypingMind?

Because you install it once and use it with any model. Diorama 3d is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Diorama 3d in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/timscheuerai/linkedin-funnel/tree/main/skills/diorama-3d. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Diorama 3d?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Diorama 3d?

As many as you like. As long as a model supports skills, you can use Diorama 3d with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Diorama 3d AI skill free?

Yes. It is published on GitHub by timscheuerai under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇