{
 "id": "vehicle.two-wheel.motorcycle/sport-bike",
 "version": 2,
 "name": "Sport Bike",
 "summary": "Original-faced fully faired 600 cc sport motorcycle reconstructed from sheet.jpg, metre scale, articulated game nodes.",
 "tags": [
  "bike",
  "motorcycle",
  "sport",
  "two",
  "vehicle",
  "wheel"
 ],
 "style": "realistic",
 "status": "candidate",
 "frame": {
  "contract": "library/two-wheel-+Z-front-+X-left",
  "up": "+Y",
  "unit": "m",
  "front": "+Z"
 },
 "size": {
  "measured_m": {
   "w": 0.72,
   "l": 2.047,
   "h": 1.14
  },
  "source": "measured",
  "class_band": "vehicle.two-wheel.motorcycle",
  "band_axis": "length",
  "band": [
   1.9,
   2.4
  ],
  "in_band": true,
  "scale_to_class": 1.0
 },
 "bounds": {
  "geometry": {
   "min": [
    -0.36,
    0.0,
    -1.047
   ],
   "max": [
    0.36,
    1.14,
    1.0
   ]
  },
  "footprint": {
   "kind": "rect",
   "minX": -0.36,
   "maxX": 0.36,
   "minZ": -1.047,
   "maxZ": 1.0,
   "source": "measured"
  },
  "collider": {
   "parts": [
    {
     "type": "box",
     "x": 0.0,
     "y": 0.57,
     "z": -0.023,
     "hx": 0.36,
     "hy": 0.57,
     "hz": 1.024
    }
   ],
   "source": "guessed"
  }
 },
 "placement": {
  "role": null,
  "notes": null,
  "source": null
 },
 "sockets": [
  {
   "name": "wheel_f",
   "role": "wheel",
   "parent": "Wheel_F",
   "pos": [
    0.0,
    0.3,
    0.7
   ],
   "rot": [
    0,
    0,
    0,
    1
   ],
   "spin_axis": "X",
   "radius": 0.3,
   "steer": true,
   "source": "measured"
  },
  {
   "name": "wheel_r",
   "role": "wheel",
   "parent": "Wheel_R",
   "pos": [
    0.0,
    0.315,
    -0.7
   ],
   "rot": [
    0,
    0,
    0,
    1
   ],
   "spin_axis": "X",
   "radius": 0.315,
   "steer": false,
   "source": "measured"
  },
  {
   "name": "foot_l",
   "role": "foot",
   "parent": null,
   "pos": [
    0.255,
    0.382,
    -0.285
   ],
   "rot": null,
   "source": "authored"
  },
  {
   "name": "foot_r",
   "role": "foot",
   "parent": null,
   "pos": [
    -0.255,
    0.382,
    -0.285
   ],
   "rot": null,
   "source": "authored"
  },
  {
   "name": "hand_l",
   "role": "hand",
   "parent": null,
   "pos": [
    0.295,
    0.843,
    0.386
   ],
   "rot": null,
   "source": "authored"
  },
  {
   "name": "hand_r",
   "role": "hand",
   "parent": null,
   "pos": [
    -0.295,
    0.843,
    0.386
   ],
   "rot": null,
   "source": "authored"
  },
  {
   "name": "light_head",
   "role": "light",
   "parent": null,
   "pos": [
    0.0,
    0.78,
    0.798
   ],
   "rot": null,
   "source": "authored"
  },
  {
   "name": "light_tail",
   "role": "light",
   "parent": null,
   "pos": [
    0.0,
    0.948,
    -1.039
   ],
   "rot": null,
   "source": "authored"
  },
  {
   "name": "seat_rider",
   "role": "seat",
   "parent": null,
   "pos": [
    0.0,
    0.82,
    -0.395
   ],
   "rot": null,
   "source": "authored"
  }
 ],
 "nodes": {
  "body": [
   "Frame"
  ],
  "wheels": [
   "Wheel_F",
   "Wheel_R"
  ],
  "steer": [
   "Fork"
  ],
  "kickstand": [
   "Kickstand"
  ]
 },
 "paint": {
  "encoding": "material factor",
  "material": "Paint",
  "default": [
   0.6,
   0.02,
   0.02
  ],
  "paints": [
   [
    0.6,
    0.02,
    0.02
   ],
   [
    0.82,
    0.84,
    0.8
   ],
   [
    0.012,
    0.035,
    0.19
   ],
   [
    0.038,
    0.044,
    0.051
   ],
   [
    0.014,
    0.13,
    0.068
   ],
   [
    0.92,
    0.49,
    0.014
   ]
  ],
  "names": [
   "Race red",
   "Pearl white",
   "Midnight blue",
   "Graphite",
   "British green",
   "Solar yellow"
  ],
  "colour_space": "linear",
  "how": "set the Paint material's color (linear RGB) to recolour; nothing else uses Paint"
 },
 "render": {
  "tris": 78999,
  "verts": 78767,
  "materials": 7,
  "draw_calls": 21,
  "textures": [
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     512,
     512
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     512,
     512
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     512,
     512
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     512,
     512
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     512,
     512
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     512,
     512
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     1024,
     1024
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     128,
     128
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     128,
     128
    ],
    "fmt": "ktx2"
   },
   {
    "px": [
     64,
     64
    ],
    "fmt": "ktx2"
   }
  ],
  "gpu_mb_decoded": 18.9,
  "bytes": 572700,
  "codec": "draco",
  "extensions": [
   "KHR_draco_mesh_compression",
   "KHR_materials_clearcoat",
   "KHR_materials_emissive_strength",
   "KHR_materials_ior",
   "KHR_materials_transmission",
   "KHR_texture_basisu"
  ]
 },
 "rig": null,
 "animations": [],
 "gameplay": {
  "source": "measured",
  "wheelbase": 1.4
 },
 "techniques": [
  "baked-pbr",
  "draco",
  "paint-factor",
  "textured"
 ],
 "provenance": {
  "author": "gpt-6-astra (Blender)",
  "source": "jobs/sport-bike-v2",
  "kit": "library-author",
  "job": "sport-bike-v2",
  "feedback": "Art direction critique of v1 (previous_final.png, previous_side.png): the fairing reads as flat detached slabs (the side panel hangs like a plate below the engine) and the nose is a blob; the bike looks like a toy. Rebuild the bodywork as continuous double-curved shells that hug the frame like the sheet: a sharp nose with twin slim headlamps and a tall smoked screen, side fairings wrapping the radiator and engine down to a belly pan under the engine with tight gaps, the tank flowing into a thin upswept tail; aluminium twin-spar frame visible between tank and swingarm, underseat exhaust, rear-sets; aggressive stance (seat 0.82 m, nose down). Match the sheet's side silhouette by overlaying your side render on it. Keep the contract of the previous version (node names, pivots, Paint material factor, paints in nodes.json, game weight). Start from the previous build script and change what the critique names; deliver the same files.",
  "imported": "2026-10-07",
  "file_origin": "~/forge-build/forge-assets/jobs/sport-bike-v2/sport-bike.glb",
  "parent": {
   "id": "vehicle.two-wheel.motorcycle/sport-bike",
   "version": 1,
   "release": "sha256:fb3c03089102c513ee86c4f729c237e6adb7a71d5bb035596cd43b9592b5f712"
  },
  "variant": {
   "kind": "rerun",
   "note": "Art direction critique of v1 (previous_final.png, previous_side.png): the fairing reads as flat detached slabs (the side panel hangs like a plate below the engine) and the nose is a blob; the bike loo"
  }
 },
 "licence": {
  "kind": "owned",
  "game_use": true,
  "raw_redistribute": false,
  "evidence": "Forge Astra Blender job sport-bike-v2 (Nano Banana Pro sheet, CC0 Poly Haven textures: blue_metal_plate, fabric_leather_02, rubber_tiles)"
 },
 "quality": {
  "gates": "fail: decoded texture memory 19 MB > 12 MB budget",
  "judge": null
 },
 "files": {
  "glb": "sha256:d3295b028569d3d26ce7833f77c42905fc3ad380f317976105f2401fdc3d529c"
 },
 "deps": [],
 "release": "sha256:04c19073b78b3b84aeb67df23f6f73cb7ab54381b66d5ee5345329df7258b908"
}
