{
    "id": "regolith-excavator-06689b",
    "title": "Regolith Excavator",
    "class": "vehicle",
    "triangles": 1968,
    "kit": "space-base-kit-cf65de",
    "free": true,
    "plan": "free",
    "price_usd": 0,
    "price_note": "free: every low poly model is. The /cdn links need no account and no key (an account adds the ready-to-serve zip). The HD edition, where `hd` is not null, comes with Pro",
    "owned": true,
    "page": "https://polyfork.dev/asset/regolith-excavator-06689b",
    "thumbnail": "https://polyfork.dev/files/regolith-excavator-06689b/renders/hero.png",
    "preview_glb": "https://polyfork.dev/cdn/regolith-excavator-06689b-preview.glb",
    "hd": null,
    "preview_triangles": 1968,
    "preview_fidelity": 1,
    "has_rig": true,
    "remixable": true,
    "has_night": true,
    "has_decals": false,
    "has_ik": false,
    "ik_type": null,
    "has_skeleton": false,
    "size_m": {
        "x": 2.3,
        "y": 3.07,
        "z": 6.06
    },
    "origin_y": 0,
    "mass_kg": 30000,
    "download": {
        "glb": "https://polyfork.dev/cdn/regolith-excavator-06689b.glb",
        "mjs": "https://polyfork.dev/cdn/regolith-excavator-06689b.mjs",
        "auth": "none"
    },
    "export_formats": {
        "fbx": {
            "url": "https://polyfork.dev/dl/regolith-excavator-06689b.fbx",
            "for": "Unity, Unreal, Maya, 3ds Max",
            "available": true
        },
        "usdz": {
            "url": "https://polyfork.dev/dl/regolith-excavator-06689b.usdz",
            "for": "iOS AR Quick Look, Omniverse; with UsdPhysics collision and mass",
            "available": true
        },
        "usda": {
            "url": "https://polyfork.dev/dl/regolith-excavator-06689b.usda",
            "for": "Isaac Sim, Omniverse, Blender, usdview; with UsdPhysics collision and mass",
            "available": true
        },
        "obj": {
            "url": "https://polyfork.dev/dl/regolith-excavator-06689b.obj",
            "for": "universal, geometry only, no pivots",
            "available": true
        }
    },
    "export_note": "vertex colours become NAMED MATERIALS on export, named after this asset's own colour knobs; a plain format conversion would arrive white, because only three.js reads our COLOR_0. Built on first request (about a second), cached after. These are yours: send your key as Authorization: Bearer <key>.",
    "night": {
        "workLamp": {
            "color": "#f4f1e6",
            "intensity": 1,
            "albedo": "#989ea7",
            "findable": true,
            "describe": "the twin work lamps under the cab roof lip \u2014 hard white, aimed forward over the bucket"
        },
        "tailLamp": {
            "color": "#e8452f",
            "intensity": 0.55,
            "albedo": "#73594d",
            "findable": true,
            "describe": "the two rear lamps in the counterweight \u2014 dim red, the machine seen from behind"
        },
        "glass": {
            "color": "#a8e2ee",
            "intensity": 0.6,
            "albedo": "#78c0cc",
            "findable": true,
            "describe": "the cab interior lit through the cyan visor, and the two glow strips down the house flanks \u2014 a soft cabin glow and a running light, not a lamp"
        }
    },
    "night_note": "each zone is found by its ALBEDO in COLOR_0: match those vertices exactly, make them emissive at the zone colour and intensity, and drop your scene lights. That is the whole night look.",
    "params_url": "https://polyfork.dev/cdn/regolith-excavator-06689b-params.json",
    "physics": {
        "mass_kg": 30000,
        "mass_source": "estimated",
        "material": "steel",
        "body": "dynamic",
        "dimensions_m": {
            "x": 2.3,
            "y": 2.965,
            "z": 5.899
        },
        "up_axis": "Y",
        "meters_per_unit": 1,
        "volume_m3": 12.013151,
        "collision": {
            "approximation": "convexDecomposition",
            "parts": 26,
            "colliders_url": "https://polyfork.dev/cdn/regolith-excavator-06689b-colliders.json"
        },
        "note": "For the default knob settings; a size knob changes all of it. dimensions_m and the colliders are measured from the model; mass_kg and material are an estimate of what the real object weighs. body \"static\" means fixed in place (give it a collider, no rigid body); \"dynamic\" means it moves. collision.approximation uses UsdPhysics terms: \"convexHull\" = one hull is a good fit, \"convexDecomposition\" = use the per-part hulls in colliders_url (the one hull would fill a gap, like the space under a table). Model space, metres, Y up, origin as the model ships."
    },
    "simready_metadata": {
        "simready_metadata_mass": 30000,
        "simready_metadata_rigid_body_count": 1,
        "usd_dimensions": [
            2.3,
            5.899,
            2.965
        ],
        "usd_up_axis": "Z",
        "usd_meters_per_unit": 1,
        "simready_metadata_validation__profile": null
    },
    "materials": 1,
    "draw_calls": 15,
    "description": "Tracked regolith excavator, 4.5m long, astro orange upper house on a gunmetal tracked undercarriage with a cyan cab visor and an articulated two-part boom carrying a faceted digging bucket; carries a boom knob from stowed and folded down to fully reached out.",
    "palette": [
        {
            "hex": "#737785",
            "share": 0.303
        },
        {
            "hex": "#3d3f47",
            "share": 0.161
        },
        {
            "hex": "#1d1e26",
            "share": 0.159
        },
        {
            "hex": "#dcdee0",
            "share": 0.135
        },
        {
            "hex": "#b2684b",
            "share": 0.111
        },
        {
            "hex": "#975b44",
            "share": 0.056
        }
    ],
    "style": "low-poly, flat-shaded vertex colors, no textures, single shared material, so any set of these merges to one draw call; shares palette and scale with its kit",
    "origin": "ground level (minY = 0): the model sits on y=0 as-is",
    "rigged_parts": {
        "turntable": {
            "axis": "y",
            "range": [
                -180,
                180
            ]
        },
        "boom-lower": {
            "axis": "x",
            "range": [
                -26,
                22
            ]
        },
        "boom-upper": {
            "axis": "x",
            "range": [
                -66,
                44
            ]
        },
        "bucket": {
            "axis": "x",
            "range": [
                -55,
                70
            ]
        }
    },
    "detachable_parts": [
        "antenna",
        "tanks"
    ],
    "animation": "rigged parts are named groups with the pivot at the hinge/axle: obj.getObjectByName(part) then rotation[axis] (rotate, degrees) or position[axis] (slide, meters)",
    "arm": {
        "slew": "turntable",
        "joints": [
            "boom-lower",
            "boom-upper"
        ],
        "upper": 2.11,
        "lower": 1.58,
        "tip": [
            0,
            0,
            1.58
        ],
        "tip_rest": [
            -0.34,
            1.255,
            2.69
        ],
        "base": [
            0,
            0.88,
            -0.61
        ],
        "reach": 3.69,
        "stays": [],
        "axes": {
            "slew": "y",
            "joints": "x"
        },
        "units": "metres, radians",
        "runtime": "https://polyfork.dev/cdn/walk.mjs",
        "note": "two-link chain with a slew: the same solver the legged machines use. Joint ranges in `rig` are the real limits and the tip stops at them.",
        "how": "a slew and a two-link boom: aim the tip and solve, stopping at the joint ranges in rigged_parts. three.js users import https://polyfork.dev/cdn/walk.mjs and call arm(model, { rig, detach }).reachTo(point), where rig and detach are the asset module's own exports (import { createAsset, rig, detach } from the .mjs): the arm cannot find its joints without them"
    },
    "published_at": "2026-08-14 11:32:21",
    "renders": [
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/back.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/close.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/compare.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/detail.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/front.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/hero-crop.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/hero.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/left.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/low-back.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/low.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/pose-boom-lower.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/pose-boom-upper.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/pose-bucket.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/pose-turntable.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/pose-wrist.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/proofs.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/removed-antenna.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/removed-tanks.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/right.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/top.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/under.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/variant-bucketTeeth-3.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/variant-bucketTeeth-6.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/variant-colorway-hazard-grey.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/variant-colorway-regolith-dust.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/variant-colorway-survey-blue.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/variant-counterweightRibs-false.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/variant-handrail-false.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/variant-reach-0.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/variant-reach-1.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/variant-trackLength-3.7.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/variant-trackLength-5.3.png",
        "https://polyfork.dev/files/regolith-excavator-06689b/renders/views.png"
    ],
    "license": "Use in commercial projects, no attribution. No redistribution of the files themselves. https://polyfork.dev/licensing",
    "access": {
        "as": "anonymous",
        "remix_bakes_per_hour": 40,
        "remix_bakes_left_this_hour": 40,
        "remix_note": "The budget is on generating NEW geometry. Variations anyone has already baked are served to everybody and never counted, so re-fetching a variant you or anyone else has made costs nothing.",
        "remix_bakes_per_month": 100,
        "remix_bakes_left_this_month": 100,
        "remix_allowance_resets": "2026-11-01",
        "remix_allowance_note": "A free account raises this to 300 a WEEK, and costs an email address.",
        "a_free_account_adds": {
            "how": "Authorization: Bearer <key>, created at https://polyfork.dev/account. Costs an email address.",
            "remix_bakes_per_hour": 100,
            "remix_bakes_per_week": 300,
            "downloads": "every low poly model's .mjs program and a ready-to-serve zip from /dl, and any kit as one zip (/dl/kit-<id>.zip). The .glb, .fbx, .usdz, .usda and .obj need no key"
        },
        "pro_adds": {
            "url": "https://polyfork.dev/pricing",
            "usd_per_year": 149,
            "hd_editions": "the HD edition of a model: the same program built finer, high poly with PBR materials generated in code, every knob still working. 1,428 models have one. Free accounts get its public preview (/cdn/<id>-hd-preview.glb) only",
            "cdn": "a per-account /c/<token>/ path for the HD files you can hotlink from a shipped build; it keeps up when an asset is rebuilt, and the token is not the API key",
            "remix_bakes_per_hour": 900,
            "remix_bakes_per_week": "uncapped \u2014 a free account gets a weekly allowance, Pro does not"
        }
    }
}
