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