CAPABILITY PLUGIN · 3D · v0.3.1

Abstract3D

Abstract3D (abstract3d) adds a scene3d capability to AbstractCore: image-to-3D and text-to-3D generation, with a validated local TripoSR backend and GLB as the primary output. Installed next to AbstractCore, it registers itself as llm.scene3d and as the scene3d output of generate(). Status: alpha, one centered object per image. It is part of the framework install (abstractframework 0.6.2 pins Abstract3D 0.3.1) and of AbstractCore’s light install; the local TripoSR backend installs with pip install "abstract3d[triposr]".

pip install "abstract3d[triposr]"      # validated local image-to-3D
abstract3d i23d ./object.png --output-dir ./out/object --device mps --format glb

From a photo or a prompt to a mesh

Image-to-3D (i23d) reconstructs one object from one photo. Text-to-3D (t23d) is composed: AbstractVision generates the image, then the 3D backend reconstructs it. Every run writes a bundle with the mesh, the input, a preview and its metadata.

Validated default

abstract3d:triposr (stabilityai/TripoSR): 20 to 60 seconds per object on Apple Silicon, permissive license, a baked 2048 base-color texture by default.

i23dt23dglb

Experimental backends

Step1X-3D (geometry only), Hunyuan3D-2.1 and Hunyuan3D-2mv (license-gated: the Tencent license excludes the EU, UK and South Korea) and TRELLIS.2 (needs gated DINOv3 access you request yourself).

step1xhunyuan3d21trellis2

Where it runs

Validated on macOS with Apple Silicon (mps). NVIDIA and AMD hosts are implemented (abstract3d[gpu], --device cuda) but not validated; CPU-only generation is impractically slow.

mpscuda

What you get

Python

Scene3DManager

One manager API with i23d() and t23d(), a backend id per call, and a public catalog of validated, experimental and blocked model families (abstract3d catalog).

Output

Bundles

scene.glb, scene.obj, input.png, preview.png, contact_sheet.png and metadata.json; textured TripoSR bundles add texture.png and a UV preview.

Textures

Projection texture bake

Color is exact where a photo observed the surface and reconstructed elsewhere, with mirror completion for symmetric subjects and optional extra reference views, real or generated.

Mesh

Deterministic mesh operations

abstract3d.mesh_ops analyzes, transforms, composes, converts, repairs and renders previews of any supported mesh file, with no model runtime (abstract3d[mesh]).

Tools

Eight AI tools

abstract3d.tools: generate, analyze, transform, compose, convert, repair, preview and catalog, as AbstractCore tool definitions an agent can call.

Plugin

AbstractCore capability

Registered through the abstractcore.capabilities_plugins entry point: llm.scene3d.i23d(...), or generate(..., output={"modality": "scene3d", ...}).

Install and generate

pip install abstract3d                   # base: remote image composition only
pip install "abstract3d[triposr]"        # validated local TripoSR
pip install "abstract3d[apple]"          # Apple Silicon: TripoSR, Step1X and local image composition
pip install "abstract3d[gpu]"            # NVIDIA / AMD hosts
abstract3d catalog --validated-only --json

# image to 3D
abstract3d i23d ./object.png --output-dir ./out/object --device mps --format glb

# text to 3D (image composed through AbstractVision first)
abstract3d t23d "a ceramic teapot with a curved spout and matte glaze" \
  --output-dir ./out/teapot --backend triposr --device mps \
  --image-provider mlx-gen --image-model AbstractFramework/flux.2-klein-4b-8bit
from abstract3d import Scene3DManager

scene3d = Scene3DManager(backend_id="triposr")

image_result = scene3d.i23d("./object.png", output_dir="./out/object-triposr", format="glb", device="mps")
text_result = scene3d.t23d("a mid-century lounge chair with walnut legs", output_dir="./out/chair", device="mps")

Checked against Abstract3D 0.3.1 (src/abstract3d/scene3d_manager.py, lines 13-70); needs the TripoSR weights and an Apple Silicon Mac for device="mps"; not executed for this page.

resp = llm.generate(
    "A glossy red cube.",
    output={"modality": "scene3d", "provider": "triposr", "format": "glb"},
)

Checked against AbstractCore 2.19.0 (abstractcore/core/output_specs.py, the scene3d output) and Abstract3D 0.3.1; needs abstract3d[triposr], its weights and an llm from create_llm; not executed for this page.

Object-centric only: one centered subject per image. Multi-object scenes, cluttered backgrounds and strong occlusion are out of scope. Details: model strategy, benchmarks.