[{"data":1,"prerenderedAt":181},["ShallowReactive",2],{"cycle-doc-qmap-c23-initial-prompt.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":13},{"id":5,"title":6},"c23","custom-obj-models",{"id":8,"label":9},"qmap","Qmap","initial-prompt.md","c23. Custom OBJ Models",[],{"type":14,"children":15},"root",[16,41,106,134,168],{"type":17,"tag":18,"props":19,"children":20},"element","p",{},[21,24,31,33,39],{"type":22,"value":23},"text","Build a qmap experiment that replaces one or more primitive actor meshes with imported custom ",{"type":17,"tag":25,"props":26,"children":28},"code",{"className":27},[],[29],{"type":22,"value":30},".obj",{"type":22,"value":32}," models from ",{"type":17,"tag":25,"props":34,"children":36},{"className":35},[],[37],{"type":22,"value":38},"inbox\u002Fvox-exports-2\u002F",{"type":22,"value":40},". The goal is not just to load the assets, but to validate the full diagram workflow: normalize scale\u002Forigin\u002Forientation, preserve label and state behavior, and compare a few material and lighting strategies in the same scene.",{"type":17,"tag":18,"props":42,"children":43},{},[44,46,51,53,59,60,66,68,73,75,81,83,89,91,97,98,104],{"type":22,"value":45},"These files are MagicaVoxel exports with ",{"type":17,"tag":25,"props":47,"children":49},{"className":48},[],[50],{"type":22,"value":30},{"type":22,"value":52}," + ",{"type":17,"tag":25,"props":54,"children":56},{"className":55},[],[57],{"type":22,"value":58},".mtl",{"type":22,"value":52},{"type":17,"tag":25,"props":61,"children":63},{"className":62},[],[64],{"type":22,"value":65},"256x1",{"type":22,"value":67}," palette PNG companions. Preserve that authored path as part of the experiment: load the ",{"type":17,"tag":25,"props":69,"children":71},{"className":70},[],[72],{"type":22,"value":58},{"type":22,"value":74},", resolve the palette texture, and keep palette rendering crisp. Start with ",{"type":17,"tag":25,"props":76,"children":78},{"className":77},[],[79],{"type":22,"value":80},"Manager.obj",{"type":22,"value":82}," and ",{"type":17,"tag":25,"props":84,"children":86},{"className":85},[],[87],{"type":22,"value":88},"Bob Wire (Sheriff).obj",{"type":22,"value":90}," as the baseline import pair, then use ",{"type":17,"tag":25,"props":92,"children":94},{"className":93},[],[95],{"type":22,"value":96},"Receptionist.obj",{"type":22,"value":82},{"type":17,"tag":25,"props":99,"children":101},{"className":100},[],[102],{"type":22,"value":103},"Robot.obj",{"type":22,"value":105}," as the hero lighting\u002Fmaterial study pair. Keep the canonical manifest on the same 12 stable asset IDs even though the folder also contains newer variant exports.",{"type":17,"tag":18,"props":107,"children":108},{},[109,111,117,119,125,126,132],{"type":22,"value":110},"Use an experiment-first approach. Make the round-trip workflow easy so revised exports can be dropped into the same folder and reloaded repeatedly. Compare at least three material approaches (",{"type":17,"tag":25,"props":112,"children":114},{"className":113},[],[115],{"type":22,"value":116},"source",{"type":22,"value":118},", ",{"type":17,"tag":25,"props":120,"children":122},{"className":121},[],[123],{"type":22,"value":124},"override",{"type":22,"value":118},{"type":17,"tag":25,"props":127,"children":129},{"className":128},[],[130],{"type":22,"value":131},"hybrid tint",{"type":22,"value":133},") and a small set of lighting presets that are intentionally different, then recommend the most readable setup for qmap's isometric view. Also test one grouped multi-asset scene using the monster family or other related exports to judge scene coherence.",{"type":17,"tag":18,"props":135,"children":136},{},[137,139,144,146,151,153,159,160,166],{"type":22,"value":138},"As a follow-on inside c23, create a second page that duplicates the c22 runtime-session-map experiment and uses it as the integration sandbox for model-backed actors. Start conservatively: keep c22 behavior intact, then substitute only the root process first (",{"type":17,"tag":25,"props":140,"children":142},{"className":141},[],[143],{"type":22,"value":80},{"type":22,"value":145}," as the shipped default, with ",{"type":17,"tag":25,"props":147,"children":149},{"className":148},[],[150],{"type":22,"value":103},{"type":22,"value":152}," left as a follow-on hero candidate), then selected child processes (",{"type":17,"tag":25,"props":154,"children":156},{"className":155},[],[157],{"type":22,"value":158},"Puzzle.obj",{"type":22,"value":118},{"type":17,"tag":25,"props":161,"children":163},{"className":162},[],[164],{"type":22,"value":165},"Helpers.obj",{"type":22,"value":167},"), and only later evaluate external-host substitutions from the monster family. Keep file actors primitive until readability is proven elsewhere.",{"type":17,"tag":18,"props":169,"children":170},{},[171,173,179],{"type":22,"value":172},"Keep scope tight. Do not generalize to every file format or replace all actor types. End with a recommendation on whether this should stay experiment-local or graduate into a narrow reusable ",{"type":17,"tag":25,"props":174,"children":176},{"className":175},[],[177],{"type":22,"value":178},"src\u002F",{"type":22,"value":180}," abstraction.",1794599430241]