s&box/field-guide
 field-guide / getting-art-in
02/10
26.07
"A complete Blender-headless → s&box pipeline"

Two-stage flow: Blender headless emits Y-up OBJ, then pure Python writes vmats/vmdls and a C# model catalog.

26.07
"Blender OBJ export face order is not deterministic"

bpy.ops.wm.obj_export can reorder face lines across runs on the same mesh — diff the manifest, not the raw OBJ bytes.

26.07
"Decimating AI meshes without wrecking them"

Census tris × instances first — silhouette fails before UVs; inject usemtl after scripted OBJ export.

26.07
"Disabling per-instance shadows on ModelRenderer"

ModelRenderer.CastShadows doesn't exist as a settable property — use renderer.SceneObject.Flags.CastShadows instead.

26.07
"Forge delivery fails but the preview GLB is still downloadable — recover it"

Forge delivery job errors out but the build stage's previewGlbUrl stays downloadable — recover the GLB through Blender into your standard delivery shape instead of re-spending.

26.07
"High-key chalky sky is capped by two defaults — texture AND tonemapping must both change"

A near-white chalky sky stays mid-grey or blue — fixing the sky texture alone isn't enough because the default tonemapping curve crushes highlights.

26.07
"Importing Kenney / CC0 kits into s&box"

CC0 kits import like any OBJ+vmdl; city kits share colormap.png, nature kits need per-color vmats, and facing is a per-model yaw guess.

26.07
"My model has no collision even though it loads fine"

RenderMeshFile alone compiles clean with zero physics — ModelCollider needs PhysicsMeshFile/PhysicsHullFile in the vmdl.

26.07
"My model imported upside down / sideways / facing the wrong way"

Blender +X becomes world −Y after OBJ import; yaw +90° faces +X — and Blender +Y rotation tips the +X edge down.

26.07
"My scaled-up tree's collider didn't scale"

CapsuleCollider and ModelCollider ignore WorldScale; BoxCollider follows it — bake scale into import_scale instead.

26.07
"s&box units are inches"

1 m = 39.37 engine units — design in SI, convert once at the engine boundary, and audit every consumer.

26.07
"s&box won't load my OBJ/GLB"

Scenes never load raw OBJ/GLB — always wrap with a .vmdl and remap materials under both bare and .vmat names.

26.07
"Unknown shader field? Check the engine's own templates before grepping projects"

Shader field support is unknown and no .shader source exists — check the install's templates/ folder for authoritative syntax instead of grepping sibling projects.

26.07
"Using AI-generated 3D models in a real s&box game"

AI mesh generators (Tripo, Meshy, Rodin) deliver textured OBJ+vmdl — but modeldoc32 headers, ~1m normalize, corrupt textures, bare texture paths, and missing colliders will ERROR the asset until patched.

26.07
"Vector3.Right is (0, -1, 0) — not +X"

Source engine convention: Forward = +X, Left = +Y, Right = -Y. Using Vector3.Right for '+X' silently slides geometry the wrong way.