3D Printing From 2D AI Outputs

How I turned AI images from plnty.app into 3D-printed toys using Higgsfield/Meshy, Blender, and Bambu Studio—with GLB, STL, and a reusable skill.

Paper halftone close-up of an AI-generated cyclops toy, with one eye, sculpted armor, and raised hands.

I had M.U.S.C.L.E. Men and Monsters in My Pocket toys as a kid. Small, strange characters with enough personality to make a whole world out of a handful of them. I wanted to make a few of my own.

To turn my AI-generated images into 3D-printed toys, I made front, side, and back references in plnty.app, generated a detailed GLB with Meshy through Higgsfield, repaired it into a printable STL with Polymend, and sliced it in Bambu Studio for printing. The result was two little gray figures in my hand. The same characters now tumble out of the top drawer on this website.

I turned the successful image-to-model process into my 2D to 3D Print skill, so the workflow could be repeated with the next character. The downloadable skill is the practical companion to this article: it carries the generation settings, failure checks, and Blender inspection steps, and it now ends with print-ready files instead of a GLB that still needs converting and repairing by hand.

The useful part of this experiment is that the image was a starting point. Once the character existed as a three-dimensional mesh, I could make different versions for different jobs.

The toys I wanted to make

I was after that chunky pocket-figure feeling: oversized hands, heavy boots, a face you could recognize immediately, and lots of little sculpted details. The characters are new designs inspired by the toys I grew up with. The fish king, boar warrior, and cyclops belong together without being the same figure with a different head.

The initial salmon-pink treatment helped establish a consistent molded-toy look. Later, the hot pink, green, and blue experiments gave the digital versions another direction. The actual prints shown here are gray. The material, scale, and surface finish of a physical print are separate decisions from the color of an AI image.

Start with three views

I used plnty to develop the characters and make front, side, and back views. The screenshot below shows that process for the boar warrior; the three individual images below it are the fish king references I used for its reconstruction.

The plnty canvas showing front, side and back AI-generated views of a salmon-pink boar warrior.
Working in plnty: one character, carried across three angles. The browser chrome has been cropped out of this screenshot.

Front view

Front reference of the salmon-pink fish king, showing its crown, round eyes, open mouth, armor and outstretched hands.

Side view

Side reference of the fish king, showing the depth of its fin-shaped ear, torso, bent arms and chunky boots.

Back view

Back reference of the fish king, showing its crown, studded armor, scaled skirt and boots.
The fish king’s three source images, submitted as separate files. Select any view to inspect it at full size.

The views need to agree on the things that define the character: its pose, proportions, clothing, head shape, and accessories. If a crown changes between angles or an arm moves to a different position, the reconstruction has conflicting evidence. More images are only useful when they describe the same object. A fourth image can also be a close-up of one feature, which I tested later with the cyclops.

I kept the backgrounds simple and the whole figure visible. I supplied the original image files rather than small chat previews. These are generated views, so I treated them as a design reference rather than precise measurements of an existing object.

What failed before it worked

The path above sounds much cleaner than it felt at the beginning. My first request was to turn the references into an STL through Higgsfield. If that was not possible, I suggested making a GLB and exporting it from Blender. I spent several attempts trying to reach the printable-file end of the process before I had a model that looked right.

I did produce STL files. I was not happy with the figures inside them. That distinction matters if you are trying this yourself: a successful export and a convincing reconstruction are different milestones.

A modeled approximation missed the character

The first route used Blender geometry through Higgsfield’s 3D Jutsu to construct an approximation of the fish king. It gave me a model and an STL, but the sculpt did not capture the supplied character accurately enough. I had reused an approach that worked for simpler desk objects on the website. The face, fingers, fins, and layered armor of this organic figure asked much more of it.

The lesson was to check how the geometry was actually being made. Working inside a 3D tool did not mean I was using image-to-3D reconstruction. Exporting or repairing that approximation could not recover the likeness it was missing.

Reference textures hid missing sculpted detail

Next, I tried a model built from the front silhouette, with rounded depth and front/back reference images projected onto it. It could suggest the figure from certain views, but the depth was inferred. Much of the face and armor detail lived in the images on the surface rather than in the mesh.

That was especially unsuitable for the STL handoff. STL carried the underlying shape and left those photographic details behind. The saved checks reported one connected component and zero non-manifold edges in the exported mesh. Those were useful structural checks, but they did not tell me whether the figure resembled the reference. A mesh can pass those checks and still be the wrong model.

Front view

Saved front render of the rejected silhouette-based fish king, with facial and armor detail projected onto a rounded body.

Side view

Saved side render of the same rejected fish king, revealing a flattened body and stretched bands of reference texture across its depth.
The rejected silhouette-based attempt, viewed from the front and side. The front texture suggests a sculpt; the side exposes the flattened volume and stretched surface detail. Its STL export reported one connected component and zero non-manifold edges, but those checks did not measure likeness. These are saved GLB renders, not photographs of a print.

Compare these views with the original character references above. The side view is the giveaway: the painted face and armor do not turn into the rounded, fully sculpted figure I wanted. This is why I would inspect a full rotation before spending time on the print export.

The turning point was changing the immediate goal

I decided to focus on creating a very accurate GLB and stop worrying about the STL for the moment. The improvement came when I switched to actual Meshy multi-image reconstruction through Higgsfield and inspected the result from several angles. Merely changing the output extension would not have solved the earlier problems; I needed better source geometry.

That became the order I would recommend repeating: judge the likeness and volume first, preserve the detailed GLB, then make the print export. At the time I handled the accepted model’s STL export manually in Blender and repaired it in a separate tool. It was not a one-click Higgsfield-to-printer success; it is now, because those two steps became Polymend and the skill runs it.

Tool access and failed jobs were separate problems

There was also confusion about which tool could run the generation. The connector listed Meshy in its model catalog, but its image-generation call rejected the 3D model. That was a mismatch between the tool I was calling and the job I wanted to submit. The official Higgsfield CLI provided the working route.

Even after the fish king succeeded, the cyclops failed in another session. It later succeeded with the same three source images and geometry settings after fresh uploads and a shorter material prompt. The successful attempt also happened later, so I cannot say whether the uploads, wording, or a temporary provider problem made the difference. I did not establish that those failures were caused by insufficient credits.

The useful habit is to save the job ID, inspect its status, and check charges or refunds before trying again. A timeout while waiting is not proof that a job failed. The skill below records those checks, keeps material prompts concise, and finishes with the print preparation. It preserves what I learned without presenting an unexplained retry as a guaranteed fix.

The skill behind the workflow

Once I had a result I liked, I wanted to preserve the process—not just the finished model. I packaged it as 2D to 3D Print, an authored skill that an AI agent can follow when I bring it another set of character references. The boar and cyclops gave me a chance to reuse that process and improve the instructions when something failed.

Try the 2D to 3D Print workflow

Download the skill for the generation settings, detail recipes, failure checks, Blender inspection steps, and the print-file step used here.

Download the skill

The ZIP includes the workflow instructions, setup guidance for Claude Code and local ChatGPT desktop/Codex work, a Blender inspection helper, and a copy of Polymend’s repair engine. It keeps six parts of the job together:

  1. Check the route and inputs. Use separate, consistent reference images; confirm that the available tool can submit a real Meshy 3D generation through Higgsfield. If the connector only lists the model, use the supported official CLI route.
  2. Generate the detailed source. Validate the current model settings, request a textured GLB, preserve the reference pose, and save the job record. Prioritize the character’s likeness before making a small web version or a print export.
  3. Push detail when three views fall short. Add a close-up of one feature as the fourth reference, then choose the texture recipe or the clean-detail recipe from the tests below.
  4. Handle failures deliberately. Inspect the existing job and credit transactions before retrying. Keep the original records and avoid duplicate paid submissions when a wait times out.
  5. Inspect the result in Blender. Check front, side, back, and three-quarter views, preserve the original GLB, and describe visible differences from the references. The inspection report also counts the open and non-manifold edges that a slicer will flag.
  6. Make the print files. Repair the mesh and write an STL and a 3MF at the height you asked for, on your own machine, with the bundled Polymend step. The agent reports what was fixed and anything it left alone.

To use it, download and unzip the package, follow its README for your agent’s setup, and attach the original reference files. A starting request is:

Use the 2D to 3D Print skill to create a detailed, textured GLB from these front, side, and back references. Preserve the pose and material, inspect the result from all four angles in Blender, and make print files at 43.2 mm.

You’ll need your own Higgsfield account and credits, a supported generation tool or authenticated CLI, Blender, and Node.js 20 or newer, in an environment where the agent can work with local files. The download contains instructions, a readable inspection helper, and Polymend’s engine as readable JavaScript; it does not include credentials, source images, generated models, or those applications.

The skill ends with a reviewed GLB and the print files made from it. The website’s simplified models are a separate step. The detailed source serves either destination.

From images to a real mesh

The result I liked came from Meshy’s multi-image-to-3D generation through Higgsfield. In my setup, the successful submission used Higgsfield’s official CLI and the multi_image_to_3d route. The official CLI documentation is the starting point for that route.

I deliberately focused on getting a detailed, convincing GLB first. Print cleanup came later. The recorded settings for the accepted fish king were:

SettingMy run
InputsSeparate front, side, and back images
Texture / PBR materialsEnabled
RemeshingEnabled, triangle topology
Target polygon count300,000
SymmetryAutomatic
Rigging / animationDisabled

The texture prompt asked for the salmon-pink molded-vinyl material, a softly glossy finish, and no extra colors, lettering, floor, or background. The images carried the shape and pose. Higgsfield identified the provider as Meshy, but did not expose an underlying Meshy version, so I cannot give a more specific model name.

The accepted fish king contained 312,111 triangles, with embedded 2048-pixel material images, in a roughly 20 MB GLB. That was close to my target rather than exactly 300,000 triangles. I inspected front, side, back, and three-quarter renders in Blender. The crown, hands, face, armor, and skirt had real depth, although some proportions and fine details still differed from the references.

The original detailed fish king GLB. Click to load, then drag to rotate and pinch or scroll to zoom. Keyboard users can focus the model and use the arrow keys. Download the GLB.

Testing close-ups, textures, and prompts

The cyclops showed me the potential limit of only three photo references. Its first GLB had the right silhouette, but the eye was a plain dome with no iris, the teeth were fused into bars, and the skin was smooth. I also had close-up images of the face and skin, so I ran three more generations to see whether they could carry that detail into the model.

Front view

Front reference of the salmon-pink cyclops warrior, with one eye, fin ears, studded armor, a flower medallion belt and a scalloped skirt.

Side view

Side reference of the cyclops warrior, showing the open mouth in profile, a banded forearm reaching forward and chunky boots.

Back view

Back reference of the cyclops warrior, showing the studded head, quilted back armor, belt and scalloped skirt.

Face close-up

Hot-pink close-up of the cyclops face: a domed eye with a raised iris and pupil, thick eyelids, and separate rounded teeth inside a curled lip.

Skin close-up

Hot-pink close-up of the figure’s surface, covered in a fine leathery grain of small irregular cells and creases.
The cyclops inputs: three full views, plus close-ups of the face and the skin. The close-ups came from a hot-pink version of the same character.

The generator accepts up to four reference images. Every test used the front, side, and back views with the face close-up as the fourth. What changed was how I described the surface.

RunSurface inputEye and teethSkin
OriginalThree views and a short prompt; no close-upsPlain dome; fused teethSmooth
Test ASkin close-up as a texture image; no promptRaised iris and pupil; separate rounded teethWrinkles and grain
Test BThe same texture image plus a short promptPupil; separate teethSmooth
Test CA detailed 557-character prompt; no texture imagePupil; separate pointed teethSmooth, with bolder features

Original

Front of the original cyclops head: the eye is a smooth dome and the teeth are joined into vertical bars.

Test A

Front of the Test A head: the eye has a raised iris ring and pupil, the teeth are separate, and the skin shows fine wrinkles.

Test B

Front of the Test B head: the eye has a small pupil, the teeth are separate thin fangs, and the skin is smooth.

Test C

Front of the Test C head: the eye has a pupil, the teeth are separate and pointed, and the surfaces are smooth and clean.

Original

Three-quarter view of the original head, with the fused teeth filling the open mouth.

Test A

Three-quarter view of the Test A head, showing the iris, individual teeth and a grained surface.

Test B

Three-quarter view of the Test B head, showing separate fangs and smooth skin.

Test C

Three-quarter view of the Test C head, showing separate pointed teeth and smooth skin.
All four models in the same plain salmon material, with the same camera and lights, so only the sculpted shape differs. These are renders of the meshes, not prints. Test A’s own texture came out hot pink, like its texture image. Select any view to inspect it at full size.

What the tests showed

The face close-up did the most. All three tests that included it produced a pupil and separate teeth. The original, made from three views alone, had neither. The extra image did not disturb the pose or proportions.

The texture image and the prompt compete. Test A, with the skin close-up and no prompt, was the only model with grain and wrinkles in the mesh. When I added a short prompt in Test B, that grain was gone and the model came back in the salmon color the prompt named rather than the hot pink of the image. Meshy’s documentation says that when both are supplied, the prompt is used to texture the model, which matches what I saw.

A detailed prompt changed the character of the surface, not its texture. Test C did not add skin grain. Its surfaces came out cleaner, and the beads, belt medallion, seams, and boot bands read more strongly to me. That is my impression from the renders. A rough measurement of relief depth across the four meshes found them within a few percent of each other.

Prompt length mattered. My first detailed prompt was 772 characters. That job was rejected a few seconds after it started, and the credits were refunded. The same job completed at 557 characters. Meshy documents an 800-character limit, so I cannot say for certain that length was the cause.

I had an AI agent draft the prompt from the reference photos. The rules were to lead with the material, describe raised detail rather than pose, and leave out color, because a single-color print ignores it:

Molded soft rubber toy, satin finish, crisp raised relief. One large domed eyeball with a clearly raised iris ring and small central pupil bump, framed by thick folded eyelids. Open mouth with a thick curled lip holding separate rounded teeth and long curved tusks with deep gaps between them, never fused. Whole body covered in fine leathery pebbled reptile grain of small irregular cells and shallow creases. Raised studs, bead necklace, banded forearms, scalloped skirt, flower medallion belt, studded boot bands. No added lettering, background or floor.

Original

Full front view of the original cyclops model, with smooth surfaces.

Test A

Full front view of Test A, with a faintly grained surface across the torso and limbs.

Test B

Full front view of Test B, with smooth surfaces.

Test C

Full front view of Test C, with smooth surfaces and pronounced beads, seams and boot bands.
The same four models at full height, again in one shared material. The pose, armor, and proportions held steady across every run.

Two recipes I would reuse

Both start with three views and one feature close-up as the fourth image. After that I would pick one route, because they cannot be combined in a single job.

AspectTexture recipeClean-detail recipe
Surface inputA close-up photo of the surface as the texture image; no promptA detailed prompt under about 550 characters; no texture image
Result in my testGrain and wrinkles in the mesh (Test A)Cleaner surfaces and more pronounced features (Test C)
When I would use itSurface texture matters and the print can resolve it: a 0.2 mm nozzle and slow, detailed settingsStronger contrast between features, a larger nozzle, or quicker prints

Each test was a single generation at 30 Higgsfield credits, so some of the difference could be ordinary variation between runs. I have not printed these test versions yet; the cyclops in the print photo below is the original model. The nozzle guidance is what I expect from the meshes, not a measured print result. Both recipes are now part of the 2D to 3D Print skill.

From GLB to a file your slicer accepts

Expect your slicer to report errors in an STL made straight from one of these models. When I first brought the figures into Bambu Studio, they arrived with warnings. This is one of the cyclops exports just after import, with the warning in the lower right corner of the window:

Bambu Studio with gray figurines on the build plate. The selected cyclops figure has a warning panel in the lower right corner of the window. It reads: Info: 61 open edges. Error: 22 non-manifold edges. Error: reversed faces detected, which may affect rendering. Tips: To repair the model, please use a third-party tool before importing it into Bambu Studio.
Bambu Studio after importing an unrepaired cyclops STL. The figure looks fine on the plate, but the panel in the corner lists 61 open edges, 22 non-manifold edges, and reversed faces, and suggests repairing the model in another tool. Select the image to read it at full size.

These are small faults in the surface of the mesh. An open edge belongs to only one triangle, which leaves a gap beside it. A non-manifold edge is shared by more than two triangles, so the slicer cannot tell which side is inside the model. A reversed face points inward when it should point out. None of this was visible in my renders.

The faults come from the generated model, not from the Blender export. I checked twelve exported figures and every one had them: between 6 and 54 non-manifold edges and between 16 and 114 open edges, mostly stray single triangles attached to the surface. The crocodile warrior’s GLB had the same counts before the export as its STL had after. My original fish king export had 26 non-manifold edges and 59 open edges by the same count.

For the first figures I exported an STL by hand in Blender (File → Import → glTF 2.0, then File → Export → STL with Selection Only), uploaded it to a repair site, downloaded the fixed file, and only then sliced it. That was three tools and a round trip for every model, and the repair happened on someone else’s server. So I built the repair I wanted and made it free: Polymend. Drop in a GLB or STL and it fixes the small faults a slicer objects to, shows you before and after side by side with every change marked, and gives back an STL, a 3MF, or both. It runs entirely in your browser; the file is never uploaded. You can try it right here:

Polymend removes stray triangles stuck to the surface, patches small holes, turns wrongly facing triangles, and leaves everything else alone; it never moves an existing point of the model, and it says plainly when something was left. It reads the GLB directly, so the Blender export is no longer needed either. All twelve of my figures went from 16 to 114 open edges and 6 to 54 non-manifold edges to zero, imported into Bambu Studio without a warning, and passed a second slicer’s mesh check as well.

The skill now does this step itself. The download carries Polymend’s engine, and the agent runs it on the reviewed GLB at the height you ask for, on your own machine, then hands you the STL and 3MF with a short report of what was fixed. Nothing is uploaded and there is nothing left to do by hand before slicing.

Three small gray 3D-printed figures, a cyclops warrior, a boar warrior and a crowned fish king, resting in Ryan’s open hand.
The physical result: the cyclops, boar warrior, and fish king in my hand. Layer lines are still visible, but the faces, armor, boots, and small accessories survived at pocket-toy size.

To try the repair yourself, drop my unrepaired fish king export (15.6 MB) on the Polymend box above. It has 59 open edges and 26 non-manifold edges; the repair removes 27 stray triangles, patches one hole and turns three triangles, and takes about a second. I would still look over thin parts such as fingers and teeth after any automatic repair, and keep the unrepaired export.

Printing at 43.2 mm

I imported the STL into Bambu Studio and set the figure height to 43.2 mm, matching the M.U.S.C.L.E. Men scale I was aiming for. I printed on a Bambu X2D using PLA. I also tried PETG for a color I wanted, but it did not perform as well on these figures. That is the outcome of this experiment, not a claim that PETG cannot print small models.

At this size, the outside surfaces matter a lot. A beautifully detailed screen model is being reduced to a figure that fits between two fingers. I adjusted the settings to reduce visible layer lines while leaving the less-visible internal work faster:

SettingWhat I used or adjusted
Figure height43.2 mm, with uniform scaling
Layer height0.12 mm
First layer0.20 mm for reliable adhesion
Variable layer heightAdaptive, with Smooth Mode enabled
Outer wall speed50 mm/s
Outer wall acceleration1,500–2,000 mm/s²
Inner walls and infillKept faster than the exterior
Wall generatorArachne
Top surface patternMonotonic line
SeamAligned or painted toward a hidden edge

Ironing the topmost solid layers is another option for smoother flat tops; it is not a way to smooth every curved surface on a figurine. I would also inspect the sliced layers around the fingers, crown, chin, and arm overhangs before committing to a print. Orientation and support decisions need to follow the particular figure and your printer profile. This table is my surface-quality approach, not a complete slicer preset.

The tradeoff is time. For the same height at a uniform layer thickness, moving from 0.20 mm to 0.12 mm means roughly two-thirds more layers. Adaptive heights and the thicker first layer change the exact count, and slower exterior walls add time too. Keeping inner walls and infill faster puts more of that extra time into the surfaces you actually see.

Print your own fish king

My fish king, repaired and scaled by Polymend · 15.6 MB. It is already 43.2 mm tall and standing on the bed, so import it and choose your print settings.

Download the STL

The photo is the useful comparison with the original images. These are small layered prints, with their own finish and limitations. But the characters made the trip: I can recognize the faces and armor, and hold all three figures in one hand.

A second life in the drawer

Making the 3D file opened up another use that had nothing to do with the printer. I brought the same three characters into the desk scene on my homepage.

The original detailed GLBs would have been excessive for toys that appear only a few pixels high. I made separate web derivatives at roughly 800 triangles per character. All three simplified GLBs total about 208 KB. The detailed source models stayed intact for other uses.

Each click of the top drawer launches three figures. They receive a random character and a hot pink, green, blue, or coral color, then bounce and scatter around the rug. They keep piling up until the page reloads. The toy layer uses an isometric floor, approximate furniture collision shapes, depth masks, and lighting tuned to the scene’s lamp and rug highlights.

Looping capture of the website’s top drawer opening and launching colorful miniature figures onto the floor.
The homepage drawer interaction. This recording loops; on the actual site, the toys persist until you reload.

The drawer movement is a separate piece of the illusion. Higgsfield’s Kling 3.0 generated an opening clip, and I used only its first second so the drawer stops at a small crack. The site plays that portion as a short, reversible hover animation, with matching light and dark image sheets. The figures originate inside the opening and render in front of the moving drawer face.

That distinction matters: the desk is still artwork with animation layered over it, while the little figures are actual 3D meshes. The collision and shadow approximations make the two feel like they occupy the same space. You can try the top drawer on the homepage.

Repeat the workflow

To turn another set of AI images into a 3D print, I would repeat these five steps:

  1. Create consistent reference images of the same character from the front, side, and back.
  2. Use the 2D to 3D Print skill to submit a textured Meshy reconstruction and preserve the generation record. If small features matter, add a close-up and pick one of the two detail recipes.
  3. Inspect the GLB from every angle. Check the actual sculpted shape, not just the surface texture or whether the mesh passes structural checks.
  4. Let the skill make the print files with Polymend, or drop the GLB on polymend.xyz yourself. Keep the original detailed GLB for other uses.
  5. Set the scale and inspect the sliced layers in Bambu Studio. My figures were 43.2 mm high and printed in PLA; supports and other settings depend on the model and printer.

For a different starting point, my guide to 3D printing The Met’s open-access scans follows existing museum models through the GLB-to-STL handoff.

The 2D to 3D Print skill is what makes the whole run repeatable. I can bring it a new character’s views and start from the lessons recorded here, then decide whether the result belongs on a print bed, in a browser, or somewhere else.

My favorite part is how far the original image traveled. A little creature on a canvas became something I could turn around in Blender, hold in my hand, and scatter across a website. Each version needed its own decisions, but I did not have to start the character over every time.