Articulate.
Articulate Lab · Pipeline

Where 3D parts come from

Every catalogue part in the trailer — hinges, wheels, springs, couplers — is either sourced, built parametrically, or AI-generated. Choosing wrong costs hours. This page is the decision rule and the hard-won format traps, written from live sessions driving Blender through the MCP bridge.

The decision

Three routes, in order of preference. Most parts should be sourced; the exception proves the rule.

RouteUse whenAvoid whenCost
Source itThe part exists in the real world and someone has modelled it — fittings, wheels, couplers, appliances, hingesNothing suitable is licensed for commercial useFree
Build it parametricallyThe part is yours, dimensioned by SPEC, or must be driven by variables in the configuratorIt's a complex organic or branded shapeTime only
Generate it (AI)Organic / irregular / one-off visual dressing where exact dimensions don't matterAny precision mechanical part≈ $0.40 / generation
Anthony's rule, locked Day 1: "The part exists — copy it, don't rebuild it." The trailer's wheels are copies of the tow car's wheels for exactly this reason. Modelling from scratch what a catalogue already contains is wasted effort.

The sources

SourceAPI?LicensingVerdict
3D Warehouse (Trimble)Yes — public, no keyGeneral Model licence; check per-modelBest for mechanical/architectural parts
SketchfabYes — token in credentials.mdCC0 / CC-BY / CC-NC clearly flaggedBest for licence clarity
PolyHavenYesCC0 throughoutHDRIs, textures, some props
GrabCADNoUnclear for commercial reuseLogin-gated, native CAD only — avoid
CGTrader / TurboSquidNoPaidNever clone a paid model. Buy it or build it.

Formats — the trap that costs the most time

The single biggest time-waster is downloading a part in a native application format. These are locked to the software that made them and will never open in Blender, on any machine, without that application installed.

FormatNative toBlender?Do this instead
.skpSketchUpNo3D Warehouse API → glb
.SLDPRTSolidWorksNoAsk for STEP or STL
.f3d / .iptFusion / InventorNoExport STEP
.glb / .gltfopen standardYes — nativeAlways prefer this
.dae / .obj / .stl / .fbxopen / interchangeYesAll fine

Measured, not assumed

The Blender SketchUp importer addon exists but ships Windows binaries only (.pyd/.dll) in every release including 0.27.0 — there is no macOS or Linux build. A modern .SLDPRT isn't even an OLE container, so no open-source reader touches it. Both checked directly, not guessed.

3D Warehouse: get the glb, never the .skp

3D Warehouse renders every uploaded model to glTF server-side. You never need SketchUp. The download button offers .skp; the API offers glb. Take the glb.

The catch: /binaries/glb returns INVALID_URL. The real link is the contentUrl field inside the entity record.

# 1. search
curl -s -G "https://3dwarehouse.sketchup.com/warehouse/v1.0/entities" \
  --data-urlencode "q=trailer coupler" \
  --data-urlencode "contentType=3dw" -H "Accept: application/json"

# 2. read the entity, take binaries.glb.contentUrl
curl -s "https://3dwarehouse.sketchup.com/warehouse/v1.0/entities/<ID>" \
  -H "Accept: application/json" | jq -r '.binaries.glb.contentUrl'

# 3. download — arrives as a real .glb
curl -sL -o part.glb "<contentUrl>"

Check binaryNames in the search result for glb before bothering. Most models have it; a few older ones only have zip.

Sketchfab via API

Token lives in credentials.md §Sketchfab. Search is open; download needs the token. Licence is returned as a slug on the model record — read it before downloading, not after.

curl -s -G -H "Authorization: Token $TOKEN" \
  "https://api.sketchfab.com/v3/search" \
  --data-urlencode "type=models" --data-urlencode "q=leaf spring" \
  --data-urlencode "downloadable=true"

# then: /v3/models/<uid>          -> licence.slug, faceCount
#       /v3/models/<uid>/download -> signed glb url (300s expiry)

Watch what else comes in the box

Marketplace models are frequently whole scenes, not parts. One "solar panel" imported a motor, a mounting wall and a patch of grass onto the trailer roof. Another "5×10 panel" was five separated strips. Always render the import in isolation before placing it.

Licence discipline

LicenceCommercialObligationUse on BYOT?
CC0YesNoneYes
CC-BYYesCredit the authorYes — with attribution
CC-BY-NCNo—Never. Demo / study only
Paid marketplacePer licencePurchaseBuy it, or build generic

Segregate by licence in the scene, not in your memory. Non-commercial reference geometry lives in its own collection so it can be excluded from export with one checkbox. The trailer's tow car sits in Reference_CC-NC/ for precisely this reason — and it is 446 of the scene's 647 objects.

When AI generation wins — and when it loses

Image→mesh generation (Rodin via fal.ai, Hunyuan3D, Higgsfield) is proven in this pipeline: a rendered concept became a 23,332-triangle GLB inside Blender for about $0.40, with no clicks.

Good fitBad fit
ShapeOrganic, irregular, sculpturalFlat faces, true spheres, drilled holes on exact centres
PurposeVisual dressing, concept, backgroundA configurator part whose dimensions are load-bearing
TopologyDoesn't matterMust be clean and named for swapping
A tow ball mount is square tube, a drop plate, a true sphere and drilled holes. Generating one produces a lumpy approximation of all four. The real part was on 3D Warehouse, free, at 7,431 triangles with exact geometry. Spend the $0.40 where a generator has an actual advantage.

Poly budget

Sourced parts arrive at whatever density their author chose, and it is frequently absurd for a web configurator. Check the triangle count before you commit.

TargetBudgetNote
Whole configurator model≈ 150k trisEverything the browser loads
A single swappable fitting1k – 10kA coupler at 37k is 4× a reasonable one at 6.7k for no visible gain
Studio still / flybyNo hard limitBut Cycles time scales with it

For reference: the parametric trailer body is roughly 2,000 triangles. A single imported reference car is ~476,000. Hide or decimate reference geometry before rendering, and never export it.

Sourcing checklist

1. Does it exist?

Search 3D Warehouse and Sketchfab before modelling anything that is a real catalogue product.

2. What licence?

Read the slug before downloading. CC-NC never reaches a commercial surface.

3. What format?

glTF first. Never accept a native CAD format — go back and take the neutral export.

4. How heavy?

Check the triangle count against the budget above.

5. What else came with it?

Render it isolated. Delete the grass, the motor and the ground plane.

6. Is it named and collected?

Rename to the part convention and file it in the right collection, or it is lost in a 600-object outliner within the hour.

7. Log the attribution.

CC-BY credits go in the SPEC, at the time of import — not when someone asks at ship time.