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