[{"data":1,"prerenderedAt":1200},["ShallowReactive",2],{"navigation":3,"/api/composables/use-graph":256,"/api/composables/use-graph-surround":1195},[4,29,78,177,190,222,232,236,240,244,248,252],{"title":5,"path":6,"stem":7,"children":8,"icon":27,"titleTemplate":28},"Getting Started","/getting-started","1.getting-started/1.index",[9,12,17,22],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","/getting-started/installation","1.getting-started/2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Your First Scene","/getting-started/your-first-scene","1.getting-started/3.your-first-scene","i-lucide-donut",{"title":23,"path":24,"stem":25,"icon":26},"Upgrade Guide","/getting-started/upgrade-guide","1.getting-started/4.upgrade-guide","i-lucide-circle-arrow-up","i-lucide-rocket","%s · Get Started with TresJS",{"title":30,"path":31,"stem":32,"children":33},"Essentials","/essentials","2.essentials",[34,36,48],{"title":30,"path":31,"stem":35},"2.essentials/index",{"title":37,"icon":38,"open":39,"path":40,"stem":41,"children":42,"page":47},"Core Architecture","i-lucide-cpu",true,"/essentials/core-architecture","2.essentials/1.core-architecture",[43],{"title":44,"path":45,"stem":46},"Custom Vue Renderer","/essentials/core-architecture/custom-vue-renderer","2.essentials/1.core-architecture/2.custom-vue-renderer",false,{"title":49,"icon":50,"open":39,"path":51,"stem":52,"children":53,"page":47},"Key Concepts","i-lucide-medal","/essentials/concepts","2.essentials/2.concepts",[54,58,62,66,70,74],{"title":55,"path":56,"stem":57},"Declarative vs Imperative","/essentials/concepts/declarative-vs-imperative","2.essentials/2.concepts/1.declarative-vs-imperative",{"title":59,"path":60,"stem":61},"Reactivity","/essentials/concepts/reactivity","2.essentials/2.concepts/2.reactivity",{"title":63,"path":64,"stem":65},"Constructor Arguments","/essentials/concepts/constructor-arguments","2.essentials/2.concepts/3.constructor-arguments",{"title":67,"path":68,"stem":69},"Declarative Properties","/essentials/concepts/declarative-properties","2.essentials/2.concepts/4.declarative-properties",{"title":71,"path":72,"stem":73},"Extending the Catalogue","/essentials/concepts/extending-catalogue","2.essentials/2.concepts/5.extending-catalogue",{"title":75,"path":76,"stem":77},"Child Attachments","/essentials/concepts/child-attachments","2.essentials/2.concepts/6.child-attachments",{"title":79,"path":80,"stem":81,"children":82},"API","/api","3.api",[83,86,108,135,145,159],{"title":84,"path":80,"stem":85},"TresJS API Reference","3.api/1.index",{"title":87,"icon":88,"open":39,"path":89,"stem":90,"children":91,"page":47},"Components","i-lucide-box","/api/components","3.api/1.components",[92,96,100,104],{"title":93,"path":94,"stem":95},"\u003CTresCanvas />","/api/components/tres-canvas","3.api/1.components/tres-canvas",{"title":97,"path":98,"stem":99},"\u003CTresCanvasContext />","/api/components/tres-context","3.api/1.components/tres-context",{"title":101,"path":102,"stem":103},"Tres Components","/api/components/tres-objects","3.api/1.components/tres-objects",{"title":105,"path":106,"stem":107},"TresPortal","/api/components/tres-portal","3.api/1.components/tres-portal",{"title":109,"titleTemplate":110,"icon":111,"path":112,"stem":113,"children":114,"page":47},"Composables","%s · TresJS Composables","i-lucide-arrow-right-left","/api/composables","3.api/2.composables",[115,119,123,127,131],{"title":116,"path":117,"stem":118},"useTres","/api/composables/use-tres","3.api/2.composables/1.use-tres",{"title":120,"path":121,"stem":122},"useTresContext","/api/composables/use-tres-context","3.api/2.composables/2.use-tres-context",{"title":124,"path":125,"stem":126},"useLoop","/api/composables/use-loop","3.api/2.composables/3.use-loop",{"title":128,"path":129,"stem":130},"useGraph","/api/composables/use-graph","3.api/2.composables/4.use-graph",{"title":132,"path":133,"stem":134},"useLoader","/api/composables/use-loader","3.api/2.composables/5.use-loader",{"title":136,"icon":137,"path":138,"stem":139,"children":140,"page":47},"Event handling","i-lucide-mouse-pointer-2","/api/events","3.api/3.events",[141],{"title":142,"path":143,"stem":144},"Pointer Events","/api/events/pointer-events","3.api/3.events/1.pointer-events",{"title":146,"icon":147,"path":148,"stem":149,"children":150,"page":47},"Utils","i-lucide-wrench","/api/utils","3.api/4.utils",[151,155],{"title":152,"path":153,"stem":154},"Type Guards","/api/utils/type-guards","3.api/4.utils/1.type-guards",{"title":156,"path":157,"stem":158},"Directives","/api/utils/directives","3.api/4.utils/2.directives",{"title":160,"icon":161,"path":162,"stem":163,"children":164,"page":47},"Advanced","i-lucide-brain-circuit","/api/advanced","3.api/5.advanced",[165,169,173],{"title":166,"path":167,"stem":168},"Scaling Performance 🚀","/api/advanced/performance","3.api/5.advanced/performance",{"title":170,"path":171,"stem":172},"Primitives","/api/advanced/primitives","3.api/5.advanced/primitives",{"title":174,"path":175,"stem":176},"WebGPU","/api/advanced/web-gpu","3.api/5.advanced/web-gpu",{"title":178,"path":179,"stem":180,"children":181,"icon":184,"titleTemplate":189},"CLI","/cli","4.cli/1.index",[182,185],{"title":183,"path":179,"stem":180,"icon":184},"TresJS CLI","i-lucide-terminal",{"title":186,"path":187,"stem":188,"icon":88},"tres gltf","/cli/gltf","4.cli/2.gltf","%s · TresJS CLI",{"title":191,"path":192,"stem":193,"children":194},"Cookbook","/cookbook","5.cookbook",[195,198,202,206,210,214,218],{"title":196,"path":192,"stem":197},"Cookbook 🍳🧑‍🍳","5.cookbook/index",{"title":199,"path":200,"stem":201},"OrbitControls","/cookbook/orbit-controls","5.cookbook/1.orbit-controls",{"title":203,"path":204,"stem":205},"Basic Animations","/cookbook/basic-animations","5.cookbook/2.basic-animations",{"title":207,"path":208,"stem":209},"Model Animation","/cookbook/model-animation","5.cookbook/3.model-animation",{"title":211,"path":212,"stem":213},"Advanced GSAP Animations","/cookbook/advanced-gsap-animations","5.cookbook/4.advanced-gsap-animations",{"title":215,"path":216,"stem":217},"Tweakpane","/cookbook/tweakpane","5.cookbook/5.tweakpane",{"title":219,"path":220,"stem":221},"Dynamic components","/cookbook/transition-dynamic","5.cookbook/6.transition-dynamic",{"title":223,"path":224,"stem":225,"children":226},"Community","/community","6.community/1.index",[227,228],{"title":223,"path":224,"stem":225},{"title":229,"path":230,"stem":231},"Awesome Resources","/community/awesome-resources","6.community/awesome-resources",{"title":233,"path":234,"stem":235},"German Translation","/de","de",{"title":237,"path":238,"stem":239},"Spanish Translation","/es","es",{"title":241,"path":242,"stem":243},"French Translation","/fr","fr",{"title":245,"path":246,"stem":247},"Italian Translation","/it","it",{"title":249,"path":250,"stem":251},"Japanese Translation","/jp","jp",{"title":253,"path":254,"stem":255},"Chinese Translation","/zh","zh",{"id":257,"title":128,"body":258,"description":1189,"extension":1190,"links":1191,"meta":1192,"navigation":39,"path":129,"seo":1193,"stem":130,"__hash__":1194},"docs/3.api/2.composables/4.use-graph.md",{"type":259,"value":260,"toc":1180},"minimark",[261,269,274,640,648,653,659,928,938,941,950,990,994,1148,1152,1176],[262,263,264,265,268],"p",{},"The ",[266,267,128],"code",{}," composable provides a convenient way to extract and reactively access all named nodes, materials, and meshes from a Three.js object or scene. This is especially useful when working with loaded models or complex object hierarchies, allowing you to reference and manipulate specific parts of your 3D scene by name.",[270,271,273],"h2",{"id":272},"usage","Usage",[275,276,281],"pre",{"className":277,"code":278,"language":279,"meta":280,"style":280},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { useGraph } from '@tresjs/core'\nimport { BoxGeometry, Group, Mesh, MeshStandardMaterial } from 'three'\n\n// Create a group and add a mesh with a named material\nconst group = new Group()\nconst box = new Mesh(\n  new BoxGeometry(1, 1, 1),\n  new MeshStandardMaterial({ name: 'FancyMaterial', color: 'red' })\n)\nbox.name = 'Box'\ngroup.add(box)\n\n// Use useGraph to extract nodes and materials\nconst { nodes, materials } = useGraph(group)\n\n// Change the position of the box by name\nnodes.Box.position.set(1, 0, 0)\n// Change the color of the material by name\nmaterials.FancyMaterial.color.set('blue')\n","ts","",[266,282,283,316,353,359,366,388,405,435,481,486,507,521,526,532,558,563,569,604,610],{"__ignoreMap":280},[284,285,288,292,296,300,303,306,309,313],"span",{"class":286,"line":287},"line",1,[284,289,291],{"class":290},"s7zQu","import",[284,293,295],{"class":294},"sMK4o"," {",[284,297,299],{"class":298},"sTEyZ"," useGraph",[284,301,302],{"class":294}," }",[284,304,305],{"class":290}," from",[284,307,308],{"class":294}," '",[284,310,312],{"class":311},"sfazB","@tresjs/core",[284,314,315],{"class":294},"'\n",[284,317,319,321,323,326,329,332,334,337,339,342,344,346,348,351],{"class":286,"line":318},2,[284,320,291],{"class":290},[284,322,295],{"class":294},[284,324,325],{"class":298}," BoxGeometry",[284,327,328],{"class":294},",",[284,330,331],{"class":298}," Group",[284,333,328],{"class":294},[284,335,336],{"class":298}," Mesh",[284,338,328],{"class":294},[284,340,341],{"class":298}," MeshStandardMaterial",[284,343,302],{"class":294},[284,345,305],{"class":290},[284,347,308],{"class":294},[284,349,350],{"class":311},"three",[284,352,315],{"class":294},[284,354,356],{"class":286,"line":355},3,[284,357,358],{"emptyLinePlaceholder":39},"\n",[284,360,362],{"class":286,"line":361},4,[284,363,365],{"class":364},"sHwdD","// Create a group and add a mesh with a named material\n",[284,367,369,373,376,379,382,385],{"class":286,"line":368},5,[284,370,372],{"class":371},"spNyl","const",[284,374,375],{"class":298}," group ",[284,377,378],{"class":294},"=",[284,380,381],{"class":294}," new",[284,383,331],{"class":384},"s2Zo4",[284,386,387],{"class":298},"()\n",[284,389,391,393,396,398,400,402],{"class":286,"line":390},6,[284,392,372],{"class":371},[284,394,395],{"class":298}," box ",[284,397,378],{"class":294},[284,399,381],{"class":294},[284,401,336],{"class":384},[284,403,404],{"class":298},"(\n",[284,406,408,411,413,416,420,422,425,427,429,432],{"class":286,"line":407},7,[284,409,410],{"class":294},"  new",[284,412,325],{"class":384},[284,414,415],{"class":298},"(",[284,417,419],{"class":418},"sbssI","1",[284,421,328],{"class":294},[284,423,424],{"class":418}," 1",[284,426,328],{"class":294},[284,428,424],{"class":418},[284,430,431],{"class":298},")",[284,433,434],{"class":294},",\n",[284,436,438,440,442,444,447,451,454,456,459,462,464,467,469,471,474,476,478],{"class":286,"line":437},8,[284,439,410],{"class":294},[284,441,341],{"class":384},[284,443,415],{"class":298},[284,445,446],{"class":294},"{",[284,448,450],{"class":449},"swJcz"," name",[284,452,453],{"class":294},":",[284,455,308],{"class":294},[284,457,458],{"class":311},"FancyMaterial",[284,460,461],{"class":294},"'",[284,463,328],{"class":294},[284,465,466],{"class":449}," color",[284,468,453],{"class":294},[284,470,308],{"class":294},[284,472,473],{"class":311},"red",[284,475,461],{"class":294},[284,477,302],{"class":294},[284,479,480],{"class":298},")\n",[284,482,484],{"class":286,"line":483},9,[284,485,480],{"class":298},[284,487,489,492,495,498,500,502,505],{"class":286,"line":488},10,[284,490,491],{"class":298},"box",[284,493,494],{"class":294},".",[284,496,497],{"class":298},"name ",[284,499,378],{"class":294},[284,501,308],{"class":294},[284,503,504],{"class":311},"Box",[284,506,315],{"class":294},[284,508,510,513,515,518],{"class":286,"line":509},11,[284,511,512],{"class":298},"group",[284,514,494],{"class":294},[284,516,517],{"class":384},"add",[284,519,520],{"class":298},"(box)\n",[284,522,524],{"class":286,"line":523},12,[284,525,358],{"emptyLinePlaceholder":39},[284,527,529],{"class":286,"line":528},13,[284,530,531],{"class":364},"// Use useGraph to extract nodes and materials\n",[284,533,535,537,539,542,544,547,550,553,555],{"class":286,"line":534},14,[284,536,372],{"class":371},[284,538,295],{"class":294},[284,540,541],{"class":298}," nodes",[284,543,328],{"class":294},[284,545,546],{"class":298}," materials ",[284,548,549],{"class":294},"}",[284,551,552],{"class":294}," =",[284,554,299],{"class":384},[284,556,557],{"class":298},"(group)\n",[284,559,561],{"class":286,"line":560},15,[284,562,358],{"emptyLinePlaceholder":39},[284,564,566],{"class":286,"line":565},16,[284,567,568],{"class":364},"// Change the position of the box by name\n",[284,570,572,575,577,579,581,584,586,589,591,593,595,598,600,602],{"class":286,"line":571},17,[284,573,574],{"class":298},"nodes",[284,576,494],{"class":294},[284,578,504],{"class":298},[284,580,494],{"class":294},[284,582,583],{"class":298},"position",[284,585,494],{"class":294},[284,587,588],{"class":384},"set",[284,590,415],{"class":298},[284,592,419],{"class":418},[284,594,328],{"class":294},[284,596,597],{"class":418}," 0",[284,599,328],{"class":294},[284,601,597],{"class":418},[284,603,480],{"class":298},[284,605,607],{"class":286,"line":606},18,[284,608,609],{"class":364},"// Change the color of the material by name\n",[284,611,613,616,618,620,622,625,627,629,631,633,636,638],{"class":286,"line":612},19,[284,614,615],{"class":298},"materials",[284,617,494],{"class":294},[284,619,458],{"class":298},[284,621,494],{"class":294},[284,623,624],{"class":298},"color",[284,626,494],{"class":294},[284,628,588],{"class":384},[284,630,415],{"class":298},[284,632,461],{"class":294},[284,634,635],{"class":311},"blue",[284,637,461],{"class":294},[284,639,480],{"class":298},[641,642,643],"tip",{},[262,644,645,647],{},[266,646,128],{}," is especially useful for working with loaded GLTF/FBX models, where you want to access specific meshes or materials by their names as defined in the 3D modeling tool.",[649,650,652],"h3",{"id":651},"example","Example",[262,654,655,656,658],{},"When loading a GLTF model, you can use ",[266,657,128],{}," to easily access and manipulate specific parts of the model:",[275,660,665],{"className":661,"code":662,"filename":663,"language":664,"meta":280,"style":280},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { useGraph, useLoader } from '@tresjs/core'\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'\n\nconst { state: model } = useLoader(GLTFLoader, 'path/to/model.glb')\nconst scene = computed(() => model.value?.scene)\n\nconst { nodes, materials } = useGraph(scene)\n\nmaterials.FancyMaterial.color.set('purple')\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cprimitive v-if=\"nodes.Rig\" :object=\"nodes.Rig\" />\n\u003C/template>\n","Model.vue","vue",[266,666,667,693,716,736,740,774,808,812,833,837,864,873,877,886,920],{"__ignoreMap":280},[284,668,669,672,675,678,681,683,686,688,690],{"class":286,"line":287},[284,670,671],{"class":294},"\u003C",[284,673,674],{"class":449},"script",[284,676,677],{"class":371}," setup",[284,679,680],{"class":371}," lang",[284,682,378],{"class":294},[284,684,685],{"class":294},"\"",[284,687,279],{"class":311},[284,689,685],{"class":294},[284,691,692],{"class":294},">\n",[284,694,695,697,699,701,703,706,708,710,712,714],{"class":286,"line":318},[284,696,291],{"class":290},[284,698,295],{"class":294},[284,700,299],{"class":298},[284,702,328],{"class":294},[284,704,705],{"class":298}," useLoader",[284,707,302],{"class":294},[284,709,305],{"class":290},[284,711,308],{"class":294},[284,713,312],{"class":311},[284,715,315],{"class":294},[284,717,718,720,722,725,727,729,731,734],{"class":286,"line":355},[284,719,291],{"class":290},[284,721,295],{"class":294},[284,723,724],{"class":298}," GLTFLoader",[284,726,302],{"class":294},[284,728,305],{"class":290},[284,730,308],{"class":294},[284,732,733],{"class":311},"three/examples/jsm/loaders/GLTFLoader.js",[284,735,315],{"class":294},[284,737,738],{"class":286,"line":361},[284,739,358],{"emptyLinePlaceholder":39},[284,741,742,744,746,749,751,754,756,758,760,763,765,767,770,772],{"class":286,"line":368},[284,743,372],{"class":371},[284,745,295],{"class":294},[284,747,748],{"class":449}," state",[284,750,453],{"class":294},[284,752,753],{"class":298}," model ",[284,755,549],{"class":294},[284,757,552],{"class":294},[284,759,705],{"class":384},[284,761,762],{"class":298},"(GLTFLoader",[284,764,328],{"class":294},[284,766,308],{"class":294},[284,768,769],{"class":311},"path/to/model.glb",[284,771,461],{"class":294},[284,773,480],{"class":298},[284,775,776,778,781,783,786,788,791,794,797,799,802,805],{"class":286,"line":390},[284,777,372],{"class":371},[284,779,780],{"class":298}," scene ",[284,782,378],{"class":294},[284,784,785],{"class":384}," computed",[284,787,415],{"class":298},[284,789,790],{"class":294},"()",[284,792,793],{"class":371}," =>",[284,795,796],{"class":298}," model",[284,798,494],{"class":294},[284,800,801],{"class":298},"value",[284,803,804],{"class":294},"?.",[284,806,807],{"class":298},"scene)\n",[284,809,810],{"class":286,"line":407},[284,811,358],{"emptyLinePlaceholder":39},[284,813,814,816,818,820,822,824,826,828,830],{"class":286,"line":437},[284,815,372],{"class":371},[284,817,295],{"class":294},[284,819,541],{"class":298},[284,821,328],{"class":294},[284,823,546],{"class":298},[284,825,549],{"class":294},[284,827,552],{"class":294},[284,829,299],{"class":384},[284,831,832],{"class":298},"(scene)\n",[284,834,835],{"class":286,"line":483},[284,836,358],{"emptyLinePlaceholder":39},[284,838,839,841,843,845,847,849,851,853,855,857,860,862],{"class":286,"line":488},[284,840,615],{"class":298},[284,842,494],{"class":294},[284,844,458],{"class":298},[284,846,494],{"class":294},[284,848,624],{"class":298},[284,850,494],{"class":294},[284,852,588],{"class":384},[284,854,415],{"class":298},[284,856,461],{"class":294},[284,858,859],{"class":311},"purple",[284,861,461],{"class":294},[284,863,480],{"class":298},[284,865,866,869,871],{"class":286,"line":509},[284,867,868],{"class":294},"\u003C/",[284,870,674],{"class":449},[284,872,692],{"class":294},[284,874,875],{"class":286,"line":523},[284,876,358],{"emptyLinePlaceholder":39},[284,878,879,881,884],{"class":286,"line":528},[284,880,671],{"class":294},[284,882,883],{"class":449},"template",[284,885,692],{"class":294},[284,887,888,891,894,897,899,901,904,906,909,911,913,915,917],{"class":286,"line":534},[284,889,890],{"class":294},"  \u003C",[284,892,893],{"class":449},"primitive",[284,895,896],{"class":371}," v-if",[284,898,378],{"class":294},[284,900,685],{"class":294},[284,902,903],{"class":311},"nodes.Rig",[284,905,685],{"class":294},[284,907,908],{"class":371}," :object",[284,910,378],{"class":294},[284,912,685],{"class":294},[284,914,903],{"class":311},[284,916,685],{"class":294},[284,918,919],{"class":294}," />\n",[284,921,922,924,926],{"class":286,"line":560},[284,923,868],{"class":294},[284,925,883],{"class":449},[284,927,692],{"class":294},[929,930,931],"note",{},[262,932,933,937],{},[934,935,936],"strong",{},"Best Practice:"," Always assign unique names to important nodes and materials in your 3D models for easier access in code.",[270,939,79],{"id":940},"api",[262,942,264,943,945,946,949],{},[266,944,128],{}," composable returns a computed ref containing a ",[266,947,948],{},"TresObjectMap"," with the following structure:",[951,952,953,964,973,983],"field-group",{},[954,955,957],"field",{"name":574,"type":956},"Record\u003Cstring, TresObject>",[262,958,959,960,963],{},"All named nodes in the object hierarchy, indexed by their ",[266,961,962],{},"name"," property.",[954,965,967],{"name":615,"type":966},"Record\u003Cstring, TresMaterial>",[262,968,969,970,972],{},"All unique materials, indexed by their ",[266,971,962],{}," property. Only the first material with a given name is included.",[954,974,977],{"name":975,"type":976},"meshes","Record\u003Cstring, Mesh>",[262,978,979,980,982],{},"All unique meshes, indexed by their ",[266,981,962],{}," property. Only the first mesh with a given name is included.",[954,984,987],{"name":985,"type":986},"scene","Scene | undefined",[262,988,989],{},"The root scene object, if available.",[649,991,993],{"id":992},"type-signature","Type Signature",[275,995,998],{"className":277,"code":996,"filename":997,"language":279,"meta":280,"style":280},"function useGraph(object: MaybeRef\u003CTresObject>): ComputedRef\u003CTresObjectMap>\n\ninterface TresObjectMap {\n  nodes: { [name: string]: TresObject }\n  materials: { [name: string]: TresMaterial }\n  meshes: { [name: string]: Mesh }\n  scene?: Scene\n}\n","Signature",[266,999,1000,1036,1040,1051,1081,1107,1132,1143],{"__ignoreMap":280},[284,1001,1002,1005,1007,1009,1013,1015,1019,1021,1024,1027,1030,1032,1034],{"class":286,"line":287},[284,1003,1004],{"class":371},"function",[284,1006,299],{"class":384},[284,1008,415],{"class":294},[284,1010,1012],{"class":1011},"sHdIc","object",[284,1014,453],{"class":294},[284,1016,1018],{"class":1017},"sBMFI"," MaybeRef",[284,1020,671],{"class":294},[284,1022,1023],{"class":1017},"TresObject",[284,1025,1026],{"class":294},">):",[284,1028,1029],{"class":1017}," ComputedRef",[284,1031,671],{"class":294},[284,1033,948],{"class":1017},[284,1035,692],{"class":294},[284,1037,1038],{"class":286,"line":318},[284,1039,358],{"emptyLinePlaceholder":39},[284,1041,1042,1045,1048],{"class":286,"line":355},[284,1043,1044],{"class":371},"interface",[284,1046,1047],{"class":1017}," TresObjectMap",[284,1049,1050],{"class":294}," {\n",[284,1052,1053,1056,1058,1060,1063,1065,1067,1070,1073,1075,1078],{"class":286,"line":361},[284,1054,1055],{"class":449},"  nodes",[284,1057,453],{"class":294},[284,1059,295],{"class":294},[284,1061,1062],{"class":298}," [",[284,1064,962],{"class":1011},[284,1066,453],{"class":294},[284,1068,1069],{"class":1017}," string",[284,1071,1072],{"class":298},"]",[284,1074,453],{"class":294},[284,1076,1077],{"class":1017}," TresObject",[284,1079,1080],{"class":294}," }\n",[284,1082,1083,1086,1088,1090,1092,1094,1096,1098,1100,1102,1105],{"class":286,"line":368},[284,1084,1085],{"class":449},"  materials",[284,1087,453],{"class":294},[284,1089,295],{"class":294},[284,1091,1062],{"class":298},[284,1093,962],{"class":1011},[284,1095,453],{"class":294},[284,1097,1069],{"class":1017},[284,1099,1072],{"class":298},[284,1101,453],{"class":294},[284,1103,1104],{"class":1017}," TresMaterial",[284,1106,1080],{"class":294},[284,1108,1109,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130],{"class":286,"line":390},[284,1110,1111],{"class":449},"  meshes",[284,1113,453],{"class":294},[284,1115,295],{"class":294},[284,1117,1062],{"class":298},[284,1119,962],{"class":1011},[284,1121,453],{"class":294},[284,1123,1069],{"class":1017},[284,1125,1072],{"class":298},[284,1127,453],{"class":294},[284,1129,336],{"class":1017},[284,1131,1080],{"class":294},[284,1133,1134,1137,1140],{"class":286,"line":407},[284,1135,1136],{"class":449},"  scene",[284,1138,1139],{"class":294},"?:",[284,1141,1142],{"class":1017}," Scene\n",[284,1144,1145],{"class":286,"line":437},[284,1146,1147],{"class":294},"}\n",[270,1149,1151],{"id":1150},"edge-cases-notes","Edge Cases & Notes",[1153,1154,1155,1159,1165],"ul",{},[1156,1157,1158],"li",{},"Only the first material or mesh with a given name is included in the map. Duplicate names are ignored after the first occurrence.",[1156,1160,1161,1162,1164],{},"Unnamed objects are not included in the ",[266,1163,574],{}," map.",[1156,1166,1167,1168,1171,1172,1175],{},"If the input object is ",[266,1169,1170],{},"null"," or ",[266,1173,1174],{},"undefined",", all maps will be empty.",[1177,1178,1179],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":280,"searchDepth":287,"depth":318,"links":1181},[1182,1185,1188],{"id":272,"depth":318,"text":273,"children":1183},[1184],{"id":651,"depth":355,"text":652},{"id":940,"depth":318,"text":79,"children":1186},[1187],{"id":992,"depth":355,"text":993},{"id":1150,"depth":318,"text":1151},"useGraph generates a reactive map of named nodes, materials, and meshes from a Three.js object hierarchy.","md",null,{},{"title":128,"description":1189},"FUCx8TUBt5eqH0cplc74wOGeHa4TI-Gx9AETvJVr64I",[1196,1198],{"title":124,"path":125,"stem":126,"description":1197,"children":-1},"useLoop provides a convenient access to the render loop of the TresJS scene.",{"title":132,"path":133,"stem":134,"description":1199,"children":-1},"useLoader is a composable for loading 3D assets and textures with Three.js loaders, supporting progress tracking and reactivity.",1785417171229]