makepad/libs/model/tests/fixtures/astra_saloon.json
Admin d2130e6550 libs: model, mesh_edit, csg, scene, sim, render, xr
Squash of 25 work commits (Sep 1–12):
  237da90  render: the sprite lane hands the screen draw back the way it found it
  895b9a7  particles: an emitter can ride a body's own frame
  914471f  ai-hub: a feed session whose last socket left ends on its idle timeout; skin: parent, skinned centroid and a nodes-only rig for retargets
  3fcccf3  sim: the whole world is implicitly editable, and one seam says where the ground is
  5692fab  sim: the landform world proves itself — walker through the tunnel included
  f4af6df  sim: terrain knows who changed it — a plan layer over player history
  adbb078  render: a water volume can be physics without a picture
  c17480f  render: a non-rigid body may carry its own orientation
  acad401  sim: an agent with no route holds and retries instead of walking into the wall
  22b2bf9  sim + chat: the composed world surface takes a map floor; the chat gets plan tools
  faf8112  web path: the tessellator's lap timer, the trace span and the fusion cycle timer have no clock on the web
  d3472eb  tsdf: the clock-taking XR helpers are native-only — the browser has no depth camera and no Instant
  4946c9e  sim + render: a repaint is not a world edit — colour and glow restyles never rebake the lightmap
  4317f58  sim + render + chat: walk decks as a surface, the filmed body is no obstruction, the brief never asks
  9791279  render: support rigged models and custom materials across viewers
  3ce2792  sim: use deck geometry for collision and sensing
  c8b79ff  Add portable PBR, rig and soft-body authoring support
  108d423  Add transactional polygon modeling and editable asset documents
  38f4d3b  Refine editable modeling and firm yarn character behavior
  08a2637  sim: add entity-owned lights and vehicle headlights
  00d96a7  render: add clustered lights, local shadows and incremental GI
  cf916af  render: import glTF asset extensions and wire clustered GI
  c6d2cca  model: cut transaction memory and raise capacity limits
  41af47a  raytrace: add a CPU probe-ray BVH budget example
  c963d0a  libs: the game sim splits into makepad-scene and makepad-soft-body; render, model, fab and the asset importer retarget

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 13:40:31 +02:00

103 lines
13 KiB
JSON

[
{"request_id":"saloon-shape","operations":[
{"op":"material","material":1,"color":[0.16,0.25,0.17]},
{"op":"surface_material","material":1,"base_color":[1,1,1,1],"metallic":0.5,"roughness":0.57},
{"op":"surface_layer","material":1,"channel":"base_color","layer":"aged-green","width":128,"height":128},
{"op":"surface_pattern","material":1,"channel":"base_color","layer":"aged-green","pattern":{"kind":"noise","color_a":[0.12,0.2,0.13,1],"color_b":[0.23,0.3,0.18,1],"scale":[28,28],"seed":"1936"}},
{"op":"surface_layer","material":1,"channel":"base_color","layer":"wear","width":128,"height":128,"color":[0,0,0,0]},
{"op":"surface_stroke","material":1,"channel":"base_color","layer":"wear","points":[[0.05,0.12],[0.3,0.13],[0.48,0.11],[0.7,0.14],[0.94,0.12]],"radius":0.018,"color":[0.3,0.13,0.055,1],"opacity":0.65},
{"op":"surface_mips","material":1,"channel":"base_color","layer":"aged-green"},
{"op":"material","material":2,"color":[0.035,0.04,0.035]},
{"op":"surface_material","material":2,"base_color":[0.035,0.04,0.035,1],"roughness":0.9},
{"op":"material","material":3,"color":[0.65,0.66,0.59]},
{"op":"surface_material","material":3,"base_color":[0.65,0.66,0.59,1],"metallic":0.9,"roughness":0.29},
{"op":"material","material":4,"color":[0.09,0.17,0.18]},
{"op":"surface_material","material":4,"base_color":[0.09,0.17,0.18,1],"metallic":0.3,"roughness":0.14},
{"op":"material","material":5,"color":[0.95,0.77,0.43]},
{"op":"surface_material","material":5,"base_color":[0.95,0.77,0.43,1],"roughness":0.2,"emissive":[1,0.74,0.35],"emissive_strength":2},
{"op":"material","material":6,"color":[0.42,0.025,0.018]},
{"op":"surface_material","material":6,"base_color":[0.42,0.025,0.018,1],"roughness":0.25,"emissive":[0.7,0.015,0.005],"emissive_strength":0.5},
{"op":"polygon_mesh","object":"body","positions":[[-0.79,0.53,-2.05],[0.79,0.53,-2.05],[0.79,0.53,2.05],[-0.79,0.53,2.05],[-0.85,1.04,-1.94],[0.85,1.04,-1.94],[0.68,1.17,1.94],[-0.68,1.17,1.94]],"polygons":[{"vertices":[3,2,1,0],"material":2,"uvs":[[0,0],[1,0],[1,1],[0,1]]},{"vertices":[0,1,5,4],"material":1,"uvs":[[0,0],[1,0],[1,1],[0,1]]},{"vertices":[1,2,6,5],"material":1,"uvs":[[0,0],[1,0],[1,1],[0,1]]},{"vertices":[2,3,7,6],"material":1,"uvs":[[0,0],[1,0],[1,1],[0,1]]},{"vertices":[3,0,4,7],"material":1,"uvs":[[0,0],[1,0],[1,1],[0,1]]},{"vertices":[4,5,6,7],"material":1,"uvs":[[0,0],[1,0],[1,1],[0,1]]}]},
{"op":"polygon_mesh","object":"cab","positions":[[-0.78,1.02,-1.5],[0.78,1.02,-1.5],[0.74,1.09,0.53],[-0.74,1.09,0.53],[-0.65,1.88,-1.15],[0.65,1.88,-1.15],[0.62,1.88,0.11],[-0.62,1.88,0.11]],"polygons":[{"vertices":[3,2,1,0],"material":1},{"vertices":[0,1,5,4],"material":1,"uvs":[[0,0],[1,0],[1,1],[0,1]]},{"vertices":[1,2,6,5],"material":1,"uvs":[[0,0],[1,0],[1,1],[0,1]]},{"vertices":[2,3,7,6],"material":1,"uvs":[[0,0],[1,0],[1,1],[0,1]]},{"vertices":[3,0,4,7],"material":1,"uvs":[[0,0],[1,0],[1,1],[0,1]]},{"vertices":[4,5,6,7],"material":2}]},
{"op":"polygon_mesh","object":"windows","positions":[[-0.65,1.29,0.441],[0.65,1.29,0.441],[0.55,1.78,0.19],[-0.55,1.78,0.19],[0.759,1.27,-0.46],[0.734,1.27,0.36],[0.64,1.77,0.035],[0.663,1.77,-0.46],[0.768,1.26,-1.30],[0.759,1.27,-0.57],[0.663,1.77,-0.57],[0.674,1.77,-1.08],[-0.759,1.27,-0.46],[-0.734,1.27,0.36],[-0.64,1.77,0.035],[-0.663,1.77,-0.46],[-0.768,1.26,-1.30],[-0.759,1.27,-0.57],[-0.663,1.77,-0.57],[-0.674,1.77,-1.08],[-0.57,1.3,-1.394],[0.57,1.3,-1.394],[0.53,1.77,-1.203],[-0.53,1.77,-1.203]],"polygons":[{"vertices":[1,0,3,2],"material":4},{"vertices":[4,5,6,7],"material":4},{"vertices":[8,9,10,11],"material":4},{"vertices":[13,12,15,14],"material":4},{"vertices":[17,16,19,18],"material":4},{"vertices":[20,21,22,23],"material":4}]},
{"op":"cylinder","object":"front_left_tire","radius":0.4,"height":0.24,"segments":16},
{"op":"cylinder","object":"front_right_tire","radius":0.4,"height":0.24,"segments":16},
{"op":"cylinder","object":"rear_left_tire","radius":0.4,"height":0.24,"segments":16},
{"op":"cylinder","object":"rear_right_tire","radius":0.4,"height":0.24,"segments":16}
]},
{"request_id":"saloon-running-gear-and-trim","operations":[
{"op":"transform","object":"front_left_tire","vertices":["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32"],"matrix":[[0,-1,0,0],[1,0,0,0],[0,0,1,0],[0,0,0,1]]},
{"op":"transform","object":"front_right_tire","vertices":["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32"],"matrix":[[0,-1,0,0],[1,0,0,0],[0,0,1,0],[0,0,0,1]]},
{"op":"transform","object":"rear_left_tire","vertices":["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32"],"matrix":[[0,-1,0,0],[1,0,0,0],[0,0,1,0],[0,0,0,1]]},
{"op":"transform","object":"rear_right_tire","vertices":["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32"],"matrix":[[0,-1,0,0],[1,0,0,0],[0,0,1,0],[0,0,0,1]]},
{"op":"assign_material","object":"front_left_tire","faces":["33","50","67","72","77","82","87","92","97","102","107","112","117","122","127","132","137","142"],"material":2},
{"op":"assign_material","object":"front_right_tire","faces":["33","50","67","72","77","82","87","92","97","102","107","112","117","122","127","132","137","142"],"material":2},
{"op":"assign_material","object":"rear_left_tire","faces":["33","50","67","72","77","82","87","92","97","102","107","112","117","122","127","132","137","142"],"material":2},
{"op":"assign_material","object":"rear_right_tire","faces":["33","50","67","72","77","82","87","92","97","102","107","112","117","122","127","132","137","142"],"material":2},
{"op":"object_node","object":"front_left_tire","node":{"transform":{"translation":[0.88,0.4,1.32]}}},
{"op":"object_node","object":"front_right_tire","node":{"transform":{"translation":[-0.88,0.4,1.32]}}},
{"op":"object_node","object":"rear_left_tire","node":{"transform":{"translation":[0.88,0.4,-1.34]}}},
{"op":"object_node","object":"rear_right_tire","node":{"transform":{"translation":[-0.88,0.4,-1.34]}}},
{"op":"vehicle_wheel","object":"front_left_tire","connection":"wheel_front_left","pivot":[0,0,0],"radius":0.4,"width":0.24},
{"op":"vehicle_wheel","object":"front_right_tire","connection":"wheel_front_right","pivot":[0,0,0],"radius":0.4,"width":0.24},
{"op":"vehicle_wheel","object":"rear_left_tire","connection":"wheel_rear_left","pivot":[0,0,0],"radius":0.4,"width":0.24},
{"op":"vehicle_wheel","object":"rear_right_tire","connection":"wheel_rear_right","pivot":[0,0,0],"radius":0.4,"width":0.24},
{"op":"polygon_mesh","object":"fender","positions":[[-0.21,0.57,-0.64],[-0.21,0.81,-0.42],[-0.21,0.94,-0.19],[-0.21,0.94,0.23],[-0.21,0.8,0.47],[-0.21,0.57,0.64],[0.21,0.57,-0.64],[0.21,0.81,-0.42],[0.21,0.94,-0.19],[0.21,0.94,0.23],[0.21,0.8,0.47],[0.21,0.57,0.64]],"polygons":[{"vertices":[0,1,2,3,4,5],"material":1,"uvs":[[0,0],[0.17,0.65],[0.35,1],[0.68,1],[0.87,0.62],[1,0]]},{"vertices":[11,10,9,8,7,6],"material":1,"uvs":[[1,0],[0.87,0.62],[0.68,1],[0.35,1],[0.17,0.65],[0,0]]},{"vertices":[1,0,6,7],"material":1},{"vertices":[2,1,7,8],"material":1},{"vertices":[3,2,8,9],"material":1},{"vertices":[4,3,9,10],"material":1},{"vertices":[5,4,10,11],"material":1},{"vertices":[0,5,11,6],"material":2}]},
{"op":"object_node","object":"fender","node":{"transform":{"translation":[0.86,0,1.32]}}},
{"op":"instance","object":"fender-fr","source":"fender","transform":{"translation":[-0.86,0,1.32]}},
{"op":"instance","object":"fender-rl","source":"fender","transform":{"translation":[0.86,0,-1.34]}},
{"op":"instance","object":"fender-rr","source":"fender","transform":{"translation":[-0.86,0,-1.34]}},
{"op":"cube","object":"front-bumper","size":[1.94,0.12,0.15]},
{"op":"object_node","object":"front-bumper","node":{"transform":{"translation":[0,0.51,2.14]}}},
{"op":"cube","object":"rear-bumper","size":[1.94,0.12,0.15]},
{"op":"object_node","object":"rear-bumper","node":{"transform":{"translation":[0,0.51,-2.14]}}},
{"op":"cube","object":"running-board","size":[0.33,0.09,1.55]},
{"op":"object_node","object":"running-board","node":{"transform":{"translation":[0.88,0.45,-0.02]}}},
{"op":"cube","object":"grille-frame","size":[0.75,0.64,0.08]},
{"op":"object_node","object":"grille-frame","node":{"transform":{"translation":[0,0.86,2.01]}}},
{"op":"cube","object":"grille-dark","size":[0.65,0.54,0.03]},
{"op":"object_node","object":"grille-dark","node":{"transform":{"translation":[0,0.86,2.065]}}},
{"op":"cube","object":"grille-slat","size":[0.025,0.51,0.025]},
{"op":"object_node","object":"grille-slat","node":{"transform":{"translation":[-0.27,0.86,2.09]}}},
{"op":"sphere","object":"headlamp-shell","radius":0.18,"segments":12,"rings":6},
{"op":"object_node","object":"headlamp-shell","node":{"transform":{"translation":[0.62,1.02,1.92],"scale":[1,1,0.9]}}},
{"op":"sphere","object":"headlamp-lens","radius":0.145,"segments":12,"rings":6},
{"op":"object_node","object":"headlamp-lens","node":{"transform":{"translation":[0.62,1.02,2.065],"scale":[1,1,0.23]}}},
{"op":"sphere","object":"hubcap","radius":0.245,"segments":12,"rings":6},
{"op":"object_node","object":"hubcap","node":{"parent":"front_left_tire","transform":{"translation":[0.13,0,0],"scale":[0.22,1,1]}}},
{"op":"cube","object":"handle","size":[0.045,0.035,0.17]},
{"op":"object_node","object":"handle","node":{"transform":{"translation":[0.81,1.18,-0.32]}}},
{"op":"cube","object":"hood-trim","size":[0.025,0.022,1.4]},
{"op":"object_node","object":"hood-trim","node":{"transform":{"translation":[0,1.153,1.22],"rotation":[-0.018,0,0,0.9998379869]}}},
{"op":"cube","object":"tail-lamp","size":[0.15,0.11,0.06]},
{"op":"object_node","object":"tail-lamp","node":{"transform":{"translation":[0.63,0.92,-2.015]}}},
{"op":"light","name":"headlight-left","attachment":null,"transform":{"translation":[0.62,1.02,2.11],"rotation":[0,1,0,0]},"kind":"spot","color":[1,0.82,0.55],"intensity":420,"range":28,"inner":0.18,"outer":0.48},
{"op":"light","name":"headlight-right","attachment":null,"transform":{"translation":[-0.62,1.02,2.11],"rotation":[0,1,0,0]},"kind":"spot","color":[1,0.82,0.55],"intensity":420,"range":28,"inner":0.18,"outer":0.48}
]},
{"request_id":"saloon-finish","operations":[
{"op":"surface_material","material":0,"base_color":[0.65,0.66,0.59,1],"metallic":0.9,"roughness":0.3},
{"op":"assign_material","object":"grille-dark","faces":["9","14","19","24","29","34"],"material":2},
{"op":"assign_material","object":"tail-lamp","faces":["9","14","19","24","29","34"],"material":6},
{"op":"assign_material","object":"headlamp-lens","faces":["63","67","72","77","82","87","91","95","100","105","110","115","119","123","128","133","138","143","147","151","156","161","166","171","175","179","184","189","194","199","203","207","212","217","222","227","231","235","240","245","250","255","259","263","268","273","278","283","287","291","296","301","306","311","315","319","324","329","334","339","343","347","352","357","362","367","371","375","380","385","390","395"],"material":5},
{"op":"instance","object":"headlamp-shell-r","source":"headlamp-shell","transform":{"translation":[-0.62,1.02,1.92],"scale":[1,1,0.9]}},
{"op":"instance","object":"headlamp-lens-r","source":"headlamp-lens","transform":{"translation":[-0.62,1.02,2.065],"scale":[1,1,0.23]}},
{"op":"instance","object":"tail-lamp-r","source":"tail-lamp","transform":{"translation":[-0.63,0.92,-2.015]}},
{"op":"instance","object":"running-board-r","source":"running-board","transform":{"translation":[-0.88,0.45,-0.02]}},
{"op":"instance","object":"handle-r","source":"handle","transform":{"translation":[-0.81,1.18,-0.32]}},
{"op":"instance","object":"handle-rear-l","source":"handle","transform":{"translation":[0.825,1.18,-1.12]}},
{"op":"instance","object":"handle-rear-r","source":"handle","transform":{"translation":[-0.825,1.18,-1.12]}},
{"op":"instance","object":"slat2","source":"grille-slat","transform":{"translation":[-0.18,0.86,2.09]}},
{"op":"instance","object":"slat3","source":"grille-slat","transform":{"translation":[-0.09,0.86,2.09]}},
{"op":"instance","object":"slat4","source":"grille-slat","transform":{"translation":[0,0.86,2.09]}},
{"op":"instance","object":"slat5","source":"grille-slat","transform":{"translation":[0.09,0.86,2.09]}},
{"op":"instance","object":"slat6","source":"grille-slat","transform":{"translation":[0.18,0.86,2.09]}},
{"op":"instance","object":"slat7","source":"grille-slat","transform":{"translation":[0.27,0.86,2.09]}},
{"op":"instance","object":"hubcap-fr","source":"hubcap"},
{"op":"object_node","object":"hubcap-fr","node":{"parent":"front_right_tire","linked_to":"hubcap","transform":{"translation":[-0.13,0,0],"scale":[0.22,1,1]}}},
{"op":"instance","object":"hubcap-rl","source":"hubcap"},
{"op":"object_node","object":"hubcap-rl","node":{"parent":"rear_left_tire","linked_to":"hubcap","transform":{"translation":[0.13,0,0],"scale":[0.22,1,1]}}},
{"op":"instance","object":"hubcap-rr","source":"hubcap"},
{"op":"object_node","object":"hubcap-rr","node":{"parent":"rear_right_tire","linked_to":"hubcap","transform":{"translation":[-0.13,0,0],"scale":[0.22,1,1]}}},
{"op":"surface_mips","material":1,"channel":"base_color","layer":"wear"}
]}
]