{"ok":true,"resource":{"id":"sand3d--articraft--articraft-rec_playground_swing_6edca7e80524464b97cb99105847602c","sourceId":"sandflow-sand3d","sourceAssetId":"articraft:rec_playground_swing_6edca7e80524464b97cb99105847602c","name":"ARTICRAFT Rec Playground Swing 6Edca7E80 (Sand3D Program)","category":"industrial","publisher":"Sandflow","formats":["py","usda","glb"],"fileCount":2,"sizeBytes":1833508,"kind":"3d-code","license":"CC-BY-4.0","revision":"ba1baf9d89ddf57433d7c47cb461f6d8883067a1","sourceUrl":"https://huggingface.co/datasets/Sandflow/sand3d-articraft","entryUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0002/articraft-rec_playground_swing_6edca7e80524464b97cb99105847602c.usda","thumbnailUrl":"https://sandflow-sand3d-explorer.hf.space/r/articraft-rec_playground_swing_6edca7e80524464b97cb99105847602c.png","detailImageUrl":"https://sandflow-sand3d-explorer.hf.space/r/articraft-rec_playground_swing_6edca7e80524464b97cb99105847602c.png","sourcePreviewUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0002/articraft-rec_playground_swing_6edca7e80524464b97cb99105847602c.png","capabilities":["Sand3D (Code)","UsdPhysics","Kinematics Joint Articulation","Parametric Reconstruction"],"capabilityEvidence":"sand3d-program-analysis","runtimeValidation":"not-tested","classificationEvidence":"family-taxonomy-mapping","storageStatus":"hf-mirror-tree-verified","packageHash":"c3a996ad2bdd59fdc7a994afde40ec8c7cff6a018a67015b5be3151c480a534f","contentHash":"e6145c8eca8398f6266c8a19b886ed7f8d15ac84123195444a77ccfef9fad015","checkedAt":"2026-11-06T14:00:00.000Z","aiGenerated":false,"attribution":"Sandflow Sand3D Library; CC-BY-4.0","evidence":{"license":{"spdx":"CC-BY-4.0","url":"https://creativecommons.org/licenses/by/4.0/","location":"datasets/Sandflow/sand3d-articraft/LICENSE"},"commercialPermitted":true,"notes":"Parametric 3D object from Sandflow/sand3d-articraft (9,209 objects). Pinned revision 1d07bda."},"outputFiles":[{"path":"usda/0002/articraft-rec_playground_swing_6edca7e80524464b97cb99105847602c.usda","format":"usda","sizeBytes":50000,"sha256":"c3a996ad2bdd59fdc7a994afde40ec8c7cff6a018a67015b5be3151c480a534f","url":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0002/articraft-rec_playground_swing_6edca7e80524464b97cb99105847602c.usda"}],"sand3d":{"datasetRepo":"Sandflow/sand3d-articraft","subcollection":"articraft","totalInDataset":9209,"entryFunction":"tire_style_playground_swing","nJoints":3,"fScore":1,"program":"import sand3d as s3d\nimport math\n\n\ndef tire_style_playground_swing():\n    frame = frame_part()\n    left = hanger_part(\"left_hanger\", -214, 180, 895)\n    center = hanger_part(\"center_hanger\", 0, -280, 895)\n    right = hanger_part(\"right_hanger\", 214, 180, 895)\n    tire = s3d.at(tire_part(), on=s3d.local(center, 0, -280, -1455))\n    center = s3d.group(\"center_hanger\", center, tire)\n    for name, child, x in (\n        (\"frame_to_left_hanger\", left, -214),\n        (\"frame_to_center_hanger\", center, 0),\n        (\"frame_to_right_hanger\", right, 214),\n    ):\n        f = s3d.local(frame, x, 0, 2350)\n        child = s3d.at(child, on=f)\n        s3d.joint(name, child, f, kind=\"revolute\", axis=\"+X\", range=(-31.5127, 31.5127))\n        if x == -214:\n            left = child\n        elif x == 0:\n            center = child\n        else:\n            right = child\n    return s3d.assembly(\"tire_style_playground_swing\", frame, left, center, right)\n\n\ndef frame_part():\n    out = []\n\n    def dark(o):\n        return s3d.material(o, \"steel\", color=\"#384a5c\")\n\n    out.append(\n        dark(\n            s3d.extrude(\n                \"top_beam\", s3d.circle(120), 2700, both=True, on=s3d.Frame((0, 0, 2450), (1, 0, 0))\n            )\n        )\n    )\n    for name, x, y in (\n        (\"left_front_leg\", -1350, 850),\n        (\"left_back_leg\", -1350, -850),\n        (\"right_front_leg\", 1350, 850),\n        (\"right_back_leg\", 1350, -850),\n    ):\n        d = math.dist((x, 0, 2450), (x, y, 0))\n        out.append(\n            dark(\n                s3d.at(\n                    s3d.extrude(name, s3d.circle(100), d, both=True),\n                    x=x,\n                    y=y / 2,\n                    z=1225,\n                    ry=math.degrees(math.acos(-2450 / d)),\n                    rz=math.degrees(math.atan2(y, 0)),\n                )\n            )\n        )\n    span = 850 * ((2450 - 780) / 2450)\n    for name, x in ((\"left_side_brace\", -1350), (\"right_side_brace\", 1350)):\n        out.append(\n            dark(\n                s3d.extrude(\n                    name, s3d.circle(70), 2 * span, both=True, on=s3d.Frame((x, 0, 780), (0, 1, 0))\n                )\n            )\n        )\n    for tag, x in ((\"left_mount\", -214), (\"center_mount\", 0), (\"right_mount\", 214)):\n        for side in (-1, 1):\n            off = 41.5\n            for suffix, depth, h, z in ((\"tab\", 55, 50, 2350), (\"strap\", 40, 81, 2355.5)):\n                o = s3d.at(\n                    s3d.extrude(\n                        tag + (\"_left_\" if side < 0 else \"_right_\") + suffix,\n                        s3d.rect(8, depth),\n                        h,\n                        both=True,\n                    ),\n                    x=x + side * off,\n                    z=z,\n                )\n                out.append(s3d.material(o, \"aluminium\", color=\"#8f999f\"))\n    return s3d.group(\"frame\", *out)\n\n\ndef hanger_part(name, x, y, z):\n    dz = z - 2350\n    d = math.hypot(y, dz)\n    yaw = math.degrees(math.atan2(y, 0))\n    pitch = math.degrees(math.acos(dz / d))\n    p = s3d.material(\n        s3d.at(s3d.extrude(\"top_pin\", s3d.circle(24), 75, both=True), ry=90),\n        \"aluminium\",\n        color=\"#8f999f\",\n    )\n    l = s3d.material(\n        s3d.at(\n            s3d.extrude(\"hanger_link\", s3d.circle(32), d, both=True),\n            y=y / 2,\n            z=dz / 2,\n            ry=pitch,\n            rz=yaw,\n        ),\n        \"steel\",\n        color=\"#b8bec4\",\n    )\n    b = s3d.material(\n        s3d.at(s3d.extrude(\"bottom_pin\", s3d.circle(24), 75, both=True), y=y, z=dz, ry=90),\n        \"aluminium\",\n        color=\"#8f999f\",\n    )\n    return s3d.group(name, p, l, b)\n\n\ndef tire_part():\n    ring = s3d.material(\n        s3d.at(s3d.torus(\"tire_ring\", 580, 220), y=280, z=-305), \"rubber\", color=\"#1a1a1a\"\n    )\n    pieces = [ring]\n    for name, x, y in (\n        (\"rear_bracket\", 0, 0),\n        (\"left_bracket\", -214, 460),\n        (\"right_bracket\", 214, 460),\n    ):\n        for side in (-1, 1):\n            label = \"_left\" if side < 0 else \"_right\"\n            ox = x + side * 41.5\n            pieces.append(\n                s3d.material(\n                    s3d.at(\n                        s3d.extrude(name + label + \"_tab\", s3d.rect(8, 55), 50, both=True),\n                        x=ox,\n                        y=y,\n                    ),\n                    \"aluminium\",\n                    color=\"#8f999f\",\n                )\n            )\n            pieces.append(\n                s3d.material(\n                    s3d.at(\n                        s3d.extrude(name + label + \"_strap\", s3d.rect(8, 40), 103, both=True),\n                        x=ox,\n                        y=y,\n                        z=-73.5,\n                    ),\n                    \"aluminium\",\n                    color=\"#8f999f\",\n                )\n            )\n    return s3d.group(\"tire_seat\", *pieces)","usdaPath":"usda/0002/articraft-rec_playground_swing_6edca7e80524464b97cb99105847602c.usda","programSha256":"e6145c8eca8398f6266c8a19b886ed7f8d15ac84123195444a77ccfef9fad015","explorerUrl":"/resources/explorer?oid=articraft-rec_playground_swing_6edca7e80524464b97cb99105847602c","glbUrl":"https://sandflow-sand3d-explorer.hf.space/glb/articraft-rec_playground_swing_6edca7e80524464b97cb99105847602c.glb"},"downloadUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/tree/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0002","mirror":{"repository":"SZFSPC/techidaily-resources","revision":"ba1baf9d89ddf57433d7c47cb461f6d8883067a1","checkedAt":"2026-11-06T14:00:00.000Z","verification":"official-huggingface-dataset-parquet-manifest"}},"analysis":{"suitability":"candidate-needs-runtime-validation","useCase":"scene-building","evidence":{"formats":"sand3d-python-program-and-openusd-manifest","capabilities":"sand3d-program-analysis","category":"family-taxonomy-mapping"},"limitations":["Runtime compatibility and physical behavior have not been tested by TechIDaily.","Sand3D programs export OpenUSD with UsdPhysics joints; requires sand3d library and Python 3.13 for direct execution.","Mirror verification checks Git tree identity and sampled delivery, not an independent rehash of every payload.","Follow source-specific licensing and attribution. Other rights may apply; no endorsement is implied.","Parametric Python reconstruction available (3 articulated joints, F-score: 1)."],"requiredNextSteps":["Check materials, scale, performance and required file conversion in your target renderer."]}}