Turntable generator
Render a 3D model from every angle and export it as a GIF, a sprite sheet or frames
Overview
The turntable generator takes a 3D model from your library and either spins it or plays one of its animation clips. The frames it captures can be saved as an animated GIF, a sprite sheet, a zip of PNG frames or a single frame.
Rendering happens inside AssetHoard on your own GPU. The model isn't uploaded anywhere.
Opening the generator
Right-click a model in your library and choose Export > Turntable...
The option appears for models in these formats:
.gltfand.glb.fbx.obj.dae.stl
Models inside a .unitypackage, .zip or another archive work the same way as loose files, textures included.
If the package has been moved since you imported it, the generator shows Original package moved or unavailable.
The top of the window shows the model's triangle count and whether it has textures.
Spin or animation
The Source setting decides what changes from one frame to the next.
- Turntable spin. The camera circles the model. With 12 frames, each frame is 30 degrees further round than the last. This is the default, and the only option for models without animation.
- Animation. Available when the model has animation clips. The camera stays still and the frames are taken at even steps through the clip you pick.
In animation mode, Frames is renamed Samples across clip, and Start angle becomes Viewing angle.
Directional character sheets
Because the camera holds its angle during an animation, you build a directional sheet one
direction at a time. Export the clip, change the viewing angle (for example by 45 or 90
degrees), and export again. The default file name includes the clip name but not the angle,
so add the direction yourself (for example knight_walk_north) when you save each
one.
Clips that move the character
Some clips move the character through space, like a run cycle, a jump or an entrance. Left alone, the character would leave the frame. AssetHoard spots these clips and keeps the character in place, so it animates on the spot. They're marked re-centred in the clip list.
A clip counts as moving when the character's root travels more than 12% of the model's size in any direction.
Animation export is experimental. On some rigs the framing or sprite size can still come out wrong. The banner in the generator has a feedback link that fills in the model, clip, format, resolution and frame count for you. That's the information we need to reproduce it, so please use it.
Settings
| Setting | Options | What it does |
|---|---|---|
| Source | Spin, Animation | Spin the model, or play one of its clips. Animation is hidden for models without clips. |
| Clip | the model's clips | Which clip to play. Shows each clip's length, and whether it's been re-centred. |
| Frames | 8 to 72 | How many frames to capture: 8, 12, 16, 24, 36, 48 or 72. In spin mode this also sets how far the camera turns between frames. |
| Resolution | 32 to 1024 px | The size of each square frame. For a sprite sheet, this is the size of each cell. |
| Start angle | 0 to 359° | Where the spin starts. In animation mode, this is the fixed angle the clip is viewed from. |
| Camera elevation | -10 to 70° | How far above (or slightly below) the model the camera sits. |
| Spin direction | CW, CCW | Clockwise or anticlockwise. Only affects spins. |
| Background | Transparent, Solid | A transparent background keeps full alpha in PNG output. Solid lets you pick a colour. |
| Outline | off, 1 to 6 | Draws an outline around the model in any colour, at the thickness you choose. |
| Speed | 2 to 30 fps | Playback speed for the preview and the GIF: 2, 4, 6, 8, 12, 15, 24 or 30 frames per second. |
| Export as | 4 formats | GIF, sprite sheet, frame zip or single PNG. See Exporting. |
The model always fills 88% of the frame, leaving a 6% margin on each side. This isn't adjustable.
When you pick a clip, the speed is set to whatever plays the clip back in real time for your frame count, rounded to the nearest option. The preview also opens partway through the clip, because many clips start on a neutral or empty pose.
The preview
The preview opens paused, so you can adjust the camera and settings before anything moves. The controls along the bottom are previous frame, play and pause, next frame, a scrub bar and the speed. The label in the top left shows the frame number, plus either the camera angle or the clip name and time.
The Spin / Sheet toggle in the top right switches between two views:
- Spin is the live 3D preview.
- Sheet shows every frame laid out exactly as the sprite sheet will be. It updates when you change an appearance setting, and playback pauses while it's showing.
Switching views doesn't reload the model. With Single frame selected as the format, a dashed outline shows the area that will be saved. A checkerboard behind the model means the background is transparent.
Exporting
| Format | You get | Notes |
|---|---|---|
| Animated GIF | one .gif | Loops at the chosen speed. GIF transparency is on or off per pixel, so transparent GIFs have hard edges. |
| Sprite sheet | .png + .json | A roughly square grid of frames, plus an atlas file describing where each frame is. |
| Frame sequence | one .zip | One PNG per frame, named name_000.png, name_001.png and so on. |
| Single frame | one .png | Just the frame currently showing in the preview. |
Clicking export opens a save dialog. The file name defaults to model_turntable, or model_clip_turntable in animation mode.
A progress bar shows the render and then the encoding. You can cancel at any point during the render. The generator stays open after saving, since you'll often want to export a few angles or clips in a row. A notification shows the saved file, and clicking it opens the folder.
Need real transparency? Use a sprite sheet or a frame zip. PNG keeps soft, anti-aliased edges against a transparent background. GIF can't.
How sprite sheets are laid out
Every cell in a sprite sheet is the same size, and every frame is lined up on the same centre point, so the character doesn't jump around or change size between frames when you play the sheet in an engine.
Cells are normally the resolution you chose. If a pose reaches further than that, like a punch, a kick or a long tongue, the cell grows to fit it, plus a small gutter. The character isn't shrunk and nothing is cropped. This also means a spin sheet and an animation sheet of the same model draw the character at the same size.
The atlas .json saved next to the sheet looks like this:
{
"image": "knight_turntable.png",
"size": { "w": 1024, "h": 768 },
"cell": { "w": 256, "h": 256 },
"columns": 4,
"pivot": { "x": 0.5, "y": 0.5 },
"fps": 12,
"frames": [
{ "index": 0, "frame": { "x": 0, "y": 0, "w": 256, "h": 256 } }
]
} - cell is the size of every cell, and columns is how many cells there are per row.
- pivot is the shared centre point as a fraction of the cell, where 0.5, 0.5 is the middle.
- frames lists each frame's position and size on the sheet.
- fps is the speed you set in the generator.
How it works
Loading. The model loads once. Its shape appears first, so you can start adjusting settings straight away, and textures appear as they finish loading. An export waits for textures before it captures, so you won't get an untextured first frame.
Framing. The camera is placed so the model stays the same size through a full spin. Before capturing, AssetHoard renders a few small test frames from the angles the export will use and measures how much of the frame the model actually covers. That stops long or flat models from ending up small in the middle of a mostly empty frame.
For animations, AssetHoard samples each clip and finds the centre of the body across the whole clip. It ignores brief extremes, so a single stretched pose doesn't make the character smaller in every frame. GIFs and frame zips share one fixed frame size, so the character is sized to fit its widest pose. Sprite sheets are sized to the character's resting pose, and cells grow for wider poses instead.
Outlines. The outline is a slightly enlarged copy of each mesh drawn behind it in a flat colour. It's solid in any colour, including black, looks the same on any background and follows the model's pose during animations.
Good to know
- Animation export is still experimental. If a sheet comes out badly framed or sized, the feedback link in the generator tells us exactly what to look at.
- In GIFs and frame zips, a pose that reaches well beyond the model's normal outline can be cut off at the edge. Sprite sheets don't have this problem, because their cells grow to fit.
- Exports are new files. The model in your library isn't changed.
- Don't have AssetHoard installed yet? A simpler version runs in your browser as the free turntable generator, for GLB, glTF and OBJ files.