[{"data":1,"prerenderedAt":2065},["ShallowReactive",2],{"navigation":3,"\u002Fapi\u002Fdebug-performance\u002Fuse-bvh":498,"\u002Fapi\u002Fdebug-performance\u002Fuse-bvh-surround":2060},[4,26],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,10,14,18,22],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation Guide","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":15,"path":16,"stem":17},"Usage","\u002Fgetting-started\u002Fusage","1.getting-started\u002F3.usage",{"title":19,"path":20,"stem":21},"Loading Models","\u002Fgetting-started\u002Floading-models","1.getting-started\u002F4.loading-models",{"title":23,"path":24,"stem":25},"Upgrade Guide","\u002Fgetting-started\u002Fupgrade-guide","1.getting-started\u002F5.upgrade-guide",{"title":27,"path":28,"stem":29,"children":30},"Api","\u002Fapi","2.api",[31,34,96,126,168,210,308,334,368,418,464],{"title":32,"path":28,"stem":33},"All","2.api\u002Findex",{"title":35,"path":36,"stem":37,"children":38},"Abstractions","\u002Fapi\u002Fabstractions","2.api\u002F1.abstractions\u002Findex",[39,40,44,48,52,56,60,64,68,72,76,80,84,88,92],{"title":35,"path":36,"stem":37},{"title":41,"path":42,"stem":43},"Align","\u002Fapi\u002Fabstractions\u002Falign","2.api\u002F1.abstractions\u002Falign",{"title":45,"path":46,"stem":47},"Billboard","\u002Fapi\u002Fabstractions\u002Fbillboard","2.api\u002F1.abstractions\u002Fbillboard",{"title":49,"path":50,"stem":51},"Camera Shake","\u002Fapi\u002Fabstractions\u002Fcamera-shake","2.api\u002F1.abstractions\u002Fcamera-shake",{"title":53,"path":54,"stem":55},"Decal","\u002Fapi\u002Fabstractions\u002Fdecal","2.api\u002F1.abstractions\u002Fdecal",{"title":57,"path":58,"stem":59},"Edges","\u002Fapi\u002Fabstractions\u002Fedges","2.api\u002F1.abstractions\u002Fedges",{"title":61,"path":62,"stem":63},"Fit","\u002Fapi\u002Fabstractions\u002Ffit","2.api\u002F1.abstractions\u002Ffit",{"title":65,"path":66,"stem":67},"Instances","\u002Fapi\u002Fabstractions\u002Finstances","2.api\u002F1.abstractions\u002Finstances",{"title":69,"path":70,"stem":71},"Levioso (Float)","\u002Fapi\u002Fabstractions\u002Flevioso","2.api\u002F1.abstractions\u002Flevioso",{"title":73,"path":74,"stem":75},"Mask","\u002Fapi\u002Fabstractions\u002Fmask","2.api\u002F1.abstractions\u002Fmask",{"title":77,"path":78,"stem":79},"Merged","\u002Fapi\u002Fabstractions\u002Fmerged","2.api\u002F1.abstractions\u002Fmerged",{"title":81,"path":82,"stem":83},"Outline","\u002Fapi\u002Fabstractions\u002Foutline","2.api\u002F1.abstractions\u002Foutline",{"title":85,"path":86,"stem":87},"Sampler","\u002Fapi\u002Fabstractions\u002Fsampler","2.api\u002F1.abstractions\u002Fsampler",{"title":89,"path":90,"stem":91},"ScreenSizer","\u002Fapi\u002Fabstractions\u002Fscreen-sizer","2.api\u002F1.abstractions\u002Fscreen-sizer",{"title":93,"path":94,"stem":95},"ScreenSpace","\u002Fapi\u002Fabstractions\u002Fscreen-space","2.api\u002F1.abstractions\u002Fscreen-space",{"title":97,"path":98,"stem":99,"children":100},"Controls","\u002Fapi\u002Fcontrols","2.api\u002F2.controls\u002Findex",[101,102,106,110,114,118,122],{"title":97,"path":98,"stem":99},{"title":103,"path":104,"stem":105},"Camera Controls","\u002Fapi\u002Fcontrols\u002Fcamera-controls","2.api\u002F2.controls\u002Fcamera-controls",{"title":107,"path":108,"stem":109},"Keyboard Controls","\u002Fapi\u002Fcontrols\u002Fkeyboard-controls","2.api\u002F2.controls\u002Fkeyboard-controls",{"title":111,"path":112,"stem":113},"Map Controls","\u002Fapi\u002Fcontrols\u002Fmap-controls","2.api\u002F2.controls\u002Fmap-controls",{"title":115,"path":116,"stem":117},"Orbit Controls","\u002Fapi\u002Fcontrols\u002Forbit-controls","2.api\u002F2.controls\u002Forbit-controls",{"title":119,"path":120,"stem":121},"PointerLock Controls","\u002Fapi\u002Fcontrols\u002Fpointer-lock-controls","2.api\u002F2.controls\u002Fpointer-lock-controls",{"title":123,"path":124,"stem":125},"Transform Controls","\u002Fapi\u002Fcontrols\u002Ftransform-controls","2.api\u002F2.controls\u002Ftransform-controls",{"title":127,"path":128,"stem":129,"children":130},"Loaders","\u002Fapi\u002Floaders","2.api\u002F3.loaders\u002Findex",[131,132,136,140,144,148,152,156,160,164],{"title":127,"path":128,"stem":129},{"title":133,"path":134,"stem":135},"useGLTF","\u002Fapi\u002Floaders\u002Fuse-gltf","2.api\u002F3.loaders\u002F1.use-gltf",{"title":137,"path":138,"stem":139},"GLTFModel","\u002Fapi\u002Floaders\u002Fgltf-model","2.api\u002F3.loaders\u002F2.gltf-model",{"title":141,"path":142,"stem":143},"useFBX","\u002Fapi\u002Floaders\u002Fuse-fbx","2.api\u002F3.loaders\u002F3.use-fbx",{"title":145,"path":146,"stem":147},"FBXModel","\u002Fapi\u002Floaders\u002Ffbx-model","2.api\u002F3.loaders\u002F4.fbx-model",{"title":149,"path":150,"stem":151},"useTexture","\u002Fapi\u002Floaders\u002Fuse-texture","2.api\u002F3.loaders\u002F5.use-texture",{"title":153,"path":154,"stem":155},"useTextures","\u002Fapi\u002Floaders\u002Fuse-textures","2.api\u002F3.loaders\u002F6.use-textures",{"title":157,"path":158,"stem":159},"useSVG","\u002Fapi\u002Floaders\u002Fuse-svg","2.api\u002F3.loaders\u002F7.use-svg",{"title":161,"path":162,"stem":163},"useProgress","\u002Fapi\u002Floaders\u002Fuse-progress","2.api\u002F3.loaders\u002Fuse-progress",{"title":165,"path":166,"stem":167},"useVideoTexture","\u002Fapi\u002Floaders\u002Fuse-video-texture","2.api\u002F3.loaders\u002Fuse-video-texture",{"title":169,"path":170,"stem":171,"children":172},"Materials","\u002Fapi\u002Fmaterials","2.api\u002F4.materials\u002Findex",[173,174,178,182,186,190,194,198,202,206],{"title":169,"path":170,"stem":171},{"title":175,"path":176,"stem":177},"Custom Shader Material","\u002Fapi\u002Fmaterials\u002Fcustom-shader-material","2.api\u002F4.materials\u002Fcustom-shader-material",{"title":179,"path":180,"stem":181},"Mesh Glass Material","\u002Fapi\u002Fmaterials\u002Fglass-material","2.api\u002F4.materials\u002Fglass-material",{"title":183,"path":184,"stem":185},"Holographic Material","\u002Fapi\u002Fmaterials\u002Fholographic-material","2.api\u002F4.materials\u002Fholographic-material",{"title":187,"path":188,"stem":189},"Mesh Discard Material","\u002Fapi\u002Fmaterials\u002Fmesh-discard-material","2.api\u002F4.materials\u002Fmesh-discard-material",{"title":191,"path":192,"stem":193},"Mesh Portal Material","\u002Fapi\u002Fmaterials\u002Fmesh-portal-material","2.api\u002F4.materials\u002Fmesh-portal-material",{"title":195,"path":196,"stem":197},"Mesh Reflection Material","\u002Fapi\u002Fmaterials\u002Fmesh-reflection-material","2.api\u002F4.materials\u002Fmesh-reflection-material",{"title":199,"path":200,"stem":201},"Mesh Transmission Material","\u002Fapi\u002Fmaterials\u002Fmesh-transmission-material","2.api\u002F4.materials\u002Fmesh-transmission-material",{"title":203,"path":204,"stem":205},"Point Material","\u002Fapi\u002Fmaterials\u002Fpoint-material","2.api\u002F4.materials\u002Fpoint-material",{"title":207,"path":208,"stem":209},"Wobble Material","\u002Fapi\u002Fmaterials\u002Fwobble-material","2.api\u002F4.materials\u002Fwobble-material",{"title":211,"path":212,"stem":213,"children":214},"Shapes","\u002Fapi\u002Fshapes","2.api\u002F5.shapes\u002Findex",[215,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304],{"title":211,"path":212,"stem":213},{"title":217,"path":218,"stem":219},"Box","\u002Fapi\u002Fshapes\u002Fbox","2.api\u002F5.shapes\u002Fbox",{"title":221,"path":222,"stem":223},"CatmullRomCurve3","\u002Fapi\u002Fshapes\u002Fcatmullromcurve3","2.api\u002F5.shapes\u002Fcatmullromcurve3",{"title":225,"path":226,"stem":227},"Circle","\u002Fapi\u002Fshapes\u002Fcircle","2.api\u002F5.shapes\u002Fcircle",{"title":229,"path":230,"stem":231},"Cone","\u002Fapi\u002Fshapes\u002Fcone","2.api\u002F5.shapes\u002Fcone",{"title":233,"path":234,"stem":235},"Cubic Bezier Line","\u002Fapi\u002Fshapes\u002Fcubic-bezier-line","2.api\u002F5.shapes\u002Fcubic-bezier-line",{"title":237,"path":238,"stem":239},"Cylinder","\u002Fapi\u002Fshapes\u002Fcylinder","2.api\u002F5.shapes\u002Fcylinder",{"title":241,"path":242,"stem":243},"Dodecahedron","\u002Fapi\u002Fshapes\u002Fdodecahedron","2.api\u002F5.shapes\u002Fdodecahedron",{"title":245,"path":246,"stem":247},"Grid","\u002Fapi\u002Fshapes\u002Fgrid","2.api\u002F5.shapes\u002Fgrid",{"title":249,"path":250,"stem":251},"Icosahedron","\u002Fapi\u002Fshapes\u002Ficosahedron","2.api\u002F5.shapes\u002Ficosahedron",{"title":253,"path":254,"stem":255},"Line2","\u002Fapi\u002Fshapes\u002Fline2","2.api\u002F5.shapes\u002Fline2",{"title":257,"path":258,"stem":259},"Octahedron","\u002Fapi\u002Fshapes\u002Foctahedron","2.api\u002F5.shapes\u002Foctahedron",{"title":261,"path":262,"stem":263},"Plane","\u002Fapi\u002Fshapes\u002Fplane","2.api\u002F5.shapes\u002Fplane",{"title":265,"path":266,"stem":267},"Quadratic Bezier Line","\u002Fapi\u002Fshapes\u002Fquadratic-bezier-line","2.api\u002F5.shapes\u002Fquadratic-bezier-line",{"title":269,"path":270,"stem":271},"Ring","\u002Fapi\u002Fshapes\u002Fring","2.api\u002F5.shapes\u002Fring",{"title":273,"path":274,"stem":275},"Rounded Box","\u002Fapi\u002Fshapes\u002Frounded-box","2.api\u002F5.shapes\u002Frounded-box",{"title":277,"path":278,"stem":279},"Rounded Plane","\u002Fapi\u002Fshapes\u002Frounded-plane","2.api\u002F5.shapes\u002Frounded-plane",{"title":281,"path":282,"stem":283},"Screen Quad","\u002Fapi\u002Fshapes\u002Fscreen-quad","2.api\u002F5.shapes\u002Fscreen-quad",{"title":285,"path":286,"stem":287},"Sphere","\u002Fapi\u002Fshapes\u002Fsphere","2.api\u002F5.shapes\u002Fsphere",{"title":289,"path":290,"stem":291},"Superformula","\u002Fapi\u002Fshapes\u002Fsuperformula","2.api\u002F5.shapes\u002Fsuperformula",{"title":293,"path":294,"stem":295},"Tetrahedron","\u002Fapi\u002Fshapes\u002Ftetrahedron","2.api\u002F5.shapes\u002Ftetrahedron",{"title":297,"path":298,"stem":299},"Torus","\u002Fapi\u002Fshapes\u002Ftorus","2.api\u002F5.shapes\u002Ftorus",{"title":301,"path":302,"stem":303},"Torus Knot","\u002Fapi\u002Fshapes\u002Ftorus-knot","2.api\u002F5.shapes\u002Ftorus-knot",{"title":305,"path":306,"stem":307},"Tube","\u002Fapi\u002Fshapes\u002Ftube","2.api\u002F5.shapes\u002Ftube",{"title":309,"path":310,"stem":311,"children":312},"Debug\u002FPerformance","\u002Fapi\u002Fdebug-performance","2.api\u002F6.debug-performance\u002Findex",[313,314,318,322,326,330],{"title":309,"path":310,"stem":311},{"title":315,"path":316,"stem":317},"Helper","\u002Fapi\u002Fdebug-performance\u002Fhelper","2.api\u002F6.debug-performance\u002Fhelper",{"title":319,"path":320,"stem":321},"LOD","\u002Fapi\u002Fdebug-performance\u002Flod","2.api\u002F6.debug-performance\u002Flod",{"title":323,"path":324,"stem":325},"Stats","\u002Fapi\u002Fdebug-performance\u002Fstats","2.api\u002F6.debug-performance\u002Fstats",{"title":327,"path":328,"stem":329},"StatsGl","\u002Fapi\u002Fdebug-performance\u002Fstats-gl","2.api\u002F6.debug-performance\u002Fstats-gl",{"title":331,"path":332,"stem":333},"useBVH","\u002Fapi\u002Fdebug-performance\u002Fuse-bvh","2.api\u002F6.debug-performance\u002Fuse-bvh",{"title":335,"path":336,"stem":337,"children":338},"Light\u002FShadow","\u002Fapi\u002Flight-shadow","2.api\u002F7.light-shadow\u002Findex",[339,340,344,348,352,356,360,364],{"title":335,"path":336,"stem":337},{"title":341,"path":342,"stem":343},"Accumulative Shadows","\u002Fapi\u002Flight-shadow\u002Faccumulative-shadows","2.api\u002F7.light-shadow\u002Faccumulative-shadows",{"title":345,"path":346,"stem":347},"Bake Shadows","\u002Fapi\u002Flight-shadow\u002Fbake-shadows","2.api\u002F7.light-shadow\u002Fbake-shadows",{"title":349,"path":350,"stem":351},"Circle Shadow","\u002Fapi\u002Flight-shadow\u002Fcircle-shadow","2.api\u002F7.light-shadow\u002Fcircle-shadow",{"title":353,"path":354,"stem":355},"Contact Shadows","\u002Fapi\u002Flight-shadow\u002Fcontact-shadows","2.api\u002F7.light-shadow\u002Fcontact-shadows",{"title":357,"path":358,"stem":359},"Lensflare","\u002Fapi\u002Flight-shadow\u002Flensflare","2.api\u002F7.light-shadow\u002Flensflare",{"title":361,"path":362,"stem":363},"Randomized Lights","\u002Fapi\u002Flight-shadow\u002Frandomized-lights","2.api\u002F7.light-shadow\u002Frandomized-lights",{"title":365,"path":366,"stem":367},"Soft Shadows","\u002Fapi\u002Flight-shadow\u002Fsoft-shadows","2.api\u002F7.light-shadow\u002Fsoft-shadows",{"title":369,"path":370,"stem":371,"children":372},"Staging","\u002Fapi\u002Fstaging","2.api\u002F8.staging\u002Findex",[373,374,378,382,386,390,394,398,402,406,410,414],{"title":369,"path":370,"stem":371},{"title":375,"path":376,"stem":377},"Environment","\u002Fapi\u002Fstaging\u002Fenvironment","2.api\u002F8.staging\u002F1.environment",{"title":379,"path":380,"stem":381},"useEnvironment","\u002Fapi\u002Fstaging\u002Fuse-environment","2.api\u002F8.staging\u002F2.use-environment",{"title":383,"path":384,"stem":385},"Lightformer","\u002Fapi\u002Fstaging\u002Flightformer","2.api\u002F8.staging\u002F3.lightformer",{"title":387,"path":388,"stem":389},"Backdrop","\u002Fapi\u002Fstaging\u002Fbackdrop","2.api\u002F8.staging\u002Fbackdrop",{"title":391,"path":392,"stem":393},"Ocean","\u002Fapi\u002Fstaging\u002Focean","2.api\u002F8.staging\u002Focean",{"title":395,"path":396,"stem":397},"Precipitation","\u002Fapi\u002Fstaging\u002Fprecipitation","2.api\u002F8.staging\u002Fprecipitation",{"title":399,"path":400,"stem":401},"Sky","\u002Fapi\u002Fstaging\u002Fsky","2.api\u002F8.staging\u002Fsky",{"title":403,"path":404,"stem":405},"Smoke","\u002Fapi\u002Fstaging\u002Fsmoke","2.api\u002F8.staging\u002Fsmoke",{"title":407,"path":408,"stem":409},"Sparkles","\u002Fapi\u002Fstaging\u002Fsparkles","2.api\u002F8.staging\u002Fsparkles",{"title":411,"path":412,"stem":413},"Stage","\u002Fapi\u002Fstaging\u002Fstage","2.api\u002F8.staging\u002Fstage",{"title":415,"path":416,"stem":417},"Stars","\u002Fapi\u002Fstaging\u002Fstars","2.api\u002F8.staging\u002Fstars",{"title":419,"path":420,"stem":421,"children":422},"Objects","\u002Fapi\u002Fobjects","2.api\u002F9.objects\u002Findex",[423,424,428,432,436,440,444,448,452,456,460],{"title":419,"path":420,"stem":421},{"title":425,"path":426,"stem":427},"AnimatedSprite","\u002Fapi\u002Fobjects\u002Fanimated-sprite","2.api\u002F9.objects\u002Fanimated-sprite",{"title":429,"path":430,"stem":431},"CubeCamera","\u002Fapi\u002Fobjects\u002Fcube-camera","2.api\u002F9.objects\u002Fcube-camera",{"title":433,"path":434,"stem":435},"Fbo","\u002Fapi\u002Fobjects\u002Ffbo","2.api\u002F9.objects\u002Ffbo",{"title":437,"path":438,"stem":439},"GradientTexture","\u002Fapi\u002Fobjects\u002Fgradient-texture","2.api\u002F9.objects\u002Fgradient-texture",{"title":441,"path":442,"stem":443},"HTML","\u002Fapi\u002Fobjects\u002Fhtml","2.api\u002F9.objects\u002Fhtml",{"title":445,"path":446,"stem":447},"Image","\u002Fapi\u002Fobjects\u002Fimage","2.api\u002F9.objects\u002Fimage",{"title":449,"path":450,"stem":451},"MarchingCubes","\u002Fapi\u002Fobjects\u002Fmarching-cubes","2.api\u002F9.objects\u002Fmarching-cubes",{"title":453,"path":454,"stem":455},"Reflector","\u002Fapi\u002Fobjects\u002Freflector","2.api\u002F9.objects\u002Freflector",{"title":457,"path":458,"stem":459},"Refractor","\u002Fapi\u002Fobjects\u002Frefractor","2.api\u002F9.objects\u002Frefractor",{"title":461,"path":462,"stem":463},"Text3D","\u002Fapi\u002Fobjects\u002Ftext-3d","2.api\u002F9.objects\u002Ftext-3d",{"title":465,"path":466,"stem":467,"children":468},"Miscellaneous","\u002Fapi\u002Fmiscellaneous","2.api\u002Fmiscellaneous\u002Findex",[469,470,474,478,482,486,490,494],{"title":465,"path":466,"stem":467},{"title":471,"path":472,"stem":473},"Bounds","\u002Fapi\u002Fmiscellaneous\u002Fbounds","2.api\u002Fmiscellaneous\u002Fbounds",{"title":475,"path":476,"stem":477},"GlobalAudio","\u002Fapi\u002Fmiscellaneous\u002Fglobal-audio","2.api\u002Fmiscellaneous\u002Fglobal-audio",{"title":479,"path":480,"stem":481},"MouseParallax","\u002Fapi\u002Fmiscellaneous\u002Fmouse-parallax","2.api\u002Fmiscellaneous\u002Fmouse-parallax",{"title":483,"path":484,"stem":485},"PositionalAudio","\u002Fapi\u002Fmiscellaneous\u002Fpositional-audio","2.api\u002Fmiscellaneous\u002Fpositional-audio",{"title":487,"path":488,"stem":489},"useAnimations","\u002Fapi\u002Fmiscellaneous\u002Fuse-animations","2.api\u002Fmiscellaneous\u002Fuse-animations",{"title":491,"path":492,"stem":493},"useGLTFExporter","\u002Fapi\u002Fmiscellaneous\u002Fuse-gltf-exporter","2.api\u002Fmiscellaneous\u002Fuse-gltf-exporter",{"title":495,"path":496,"stem":497},"useIntersect","\u002Fapi\u002Fmiscellaneous\u002Fuse-intersect","2.api\u002Fmiscellaneous\u002Fuse-intersect",{"id":499,"title":331,"body":500,"description":2054,"extension":2055,"links":2056,"meta":2057,"navigation":662,"path":332,"seo":2058,"stem":333,"__hash__":2059},"docs\u002F2.api\u002F6.debug-performance\u002Fuse-bvh.md",{"type":501,"value":502,"toc":2030},"minimark",[503,509,518,535,540,543,548,561,564,569,801,805,808,966,970,973,1283,1287,1302,1306,1370,1374,1380,1532,1536,1556,1560,1564,1567,1662,1666,1669,1712,1715,1719,1773,1777,1804,1808,1814,1972,1976,1980,2002,2006,2026],[504,505,506],"scene-controls-wrapper",{},[507,508],"debug-performance-use-bounding-volume-hierarchy",{},[510,511,512,513,517],"p",{},"A composable that dramatically improves raycasting performance by building a Bounding Volume Hierarchy (BVH) for your meshes. This can speed up raycasting by ",[514,515,516],"strong",{},"orders of magnitude",", especially for complex models with many triangles.",[510,519,520,521,528,529,534],{},"Built on top of ",[522,523,527],"a",{"href":524,"rel":525},"https:\u002F\u002Fgithub.com\u002Fgkjohnson\u002Fthree-mesh-bvh",[526],"nofollow","three-mesh-bvh"," by ",[522,530,533],{"href":531,"rel":532},"https:\u002F\u002Fgithub.com\u002Fgkjohnson",[526],"Garrett Johnson",".",[536,537,539],"h2",{"id":538},"what-is-bvh","What is BVH?",[510,541,542],{},"BVH (Bounding Volume Hierarchy) is a spatial data structure that organizes geometry into a tree of bounding boxes. Instead of testing every triangle during raycasting, the algorithm tests bounding boxes first and only checks triangles in boxes that intersect the ray. This reduces raycasting complexity from O(n) to O(log n).",[510,544,545],{},[514,546,547],{},"Use cases:",[549,550,551,555,558],"ul",{},[552,553,554],"li",{},"Interactive 3D applications with raycasting (mouse picking, selection)",[552,556,557],{},"Complex models with thousands of triangles",[552,559,560],{},"Scenes with multiple raycasting operations per frame",[536,562,15],{"id":563},"usage",[565,566,568],"h3",{"id":567},"basic-usage","Basic Usage",[570,571,583],"pre",{"className":572,"code":573,"highlights":574,"language":581,"meta":582,"style":582},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { useGLTF, useBVH } from '@tresjs\u002Fcientos'\n\nconst { state: model } = useGLTF('\u002Fmodels\u002Fcomplex-model.glb')\nuseBVH(() => model.value?.scene)\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cprimitive v-if=\"model\" :object=\"model.scene\" \u002F>\n\u003C\u002Ftemplate>\n",[575,576,577,578,579,580],2,5,6,7,8,10,"vue","",[584,585,586,621,657,664,704,731,741,746,756,792],"code",{"__ignoreMap":582},[587,588,591,595,599,603,606,609,612,616,618],"span",{"class":589,"line":590},"line",1,[587,592,594],{"class":593},"sMK4o","\u003C",[587,596,598],{"class":597},"swJcz","script",[587,600,602],{"class":601},"spNyl"," setup",[587,604,605],{"class":601}," lang",[587,607,608],{"class":593},"=",[587,610,611],{"class":593},"\"",[587,613,615],{"class":614},"sfazB","ts",[587,617,611],{"class":593},[587,619,620],{"class":593},">\n",[587,622,625,629,632,636,639,642,645,648,651,654],{"class":623,"line":575},[589,624],"highlight",[587,626,628],{"class":627},"s7zQu","import",[587,630,631],{"class":593}," {",[587,633,635],{"class":634},"sTEyZ"," useGLTF",[587,637,638],{"class":593},",",[587,640,641],{"class":634}," useBVH",[587,643,644],{"class":593}," }",[587,646,647],{"class":627}," from",[587,649,650],{"class":593}," '",[587,652,653],{"class":614},"@tresjs\u002Fcientos",[587,655,656],{"class":593},"'\n",[587,658,660],{"class":589,"line":659},3,[587,661,663],{"emptyLinePlaceholder":662},true,"\n",[587,665,667,670,672,675,678,681,684,687,690,693,696,699,701],{"class":589,"line":666},4,[587,668,669],{"class":601},"const",[587,671,631],{"class":593},[587,673,674],{"class":597}," state",[587,676,677],{"class":593},":",[587,679,680],{"class":634}," model ",[587,682,683],{"class":593},"}",[587,685,686],{"class":593}," =",[587,688,635],{"class":689},"s2Zo4",[587,691,692],{"class":634},"(",[587,694,695],{"class":593},"'",[587,697,698],{"class":614},"\u002Fmodels\u002Fcomplex-model.glb",[587,700,695],{"class":593},[587,702,703],{"class":634},")\n",[587,705,707,709,711,714,717,720,722,725,728],{"class":706,"line":576},[589,624],[587,708,331],{"class":689},[587,710,692],{"class":634},[587,712,713],{"class":593},"()",[587,715,716],{"class":601}," =>",[587,718,719],{"class":634}," model",[587,721,534],{"class":593},[587,723,724],{"class":634},"value",[587,726,727],{"class":593},"?.",[587,729,730],{"class":634},"scene)\n",[587,732,734,737,739],{"class":733,"line":577},[589,624],[587,735,736],{"class":593},"\u003C\u002F",[587,738,598],{"class":597},[587,740,620],{"class":593},[587,742,744],{"class":743,"line":578},[589,624],[587,745,663],{"emptyLinePlaceholder":662},[587,747,749,751,754],{"class":748,"line":579},[589,624],[587,750,594],{"class":593},[587,752,753],{"class":597},"template",[587,755,620],{"class":593},[587,757,759,762,765,768,770,772,775,777,780,782,784,787,789],{"class":589,"line":758},9,[587,760,761],{"class":593},"  \u003C",[587,763,764],{"class":597},"primitive",[587,766,767],{"class":601}," v-if",[587,769,608],{"class":593},[587,771,611],{"class":593},[587,773,774],{"class":614},"model",[587,776,611],{"class":593},[587,778,779],{"class":601}," :object",[587,781,608],{"class":593},[587,783,611],{"class":593},[587,785,786],{"class":614},"model.scene",[587,788,611],{"class":593},[587,790,791],{"class":593}," \u002F>\n",[587,793,795,797,799],{"class":794,"line":580},[589,624],[587,796,736],{"class":593},[587,798,753],{"class":597},[587,800,620],{"class":593},[565,802,804],{"id":803},"with-debug-visualization","With Debug Visualization",[510,806,807],{},"Enable debug mode to visualize the BVH bounding boxes:",[570,809,812],{"className":572,"code":810,"highlights":811,"language":581,"meta":582,"style":582},"\u003Cscript setup lang=\"ts\">\nimport { useGLTF, useBVH } from '@tresjs\u002Fcientos'\n\nconst { state: model } = useGLTF('\u002Fmodels\u002Fmodel.glb')\n\nuseBVH(\n  () => model.value?.scene,\n  {\n    debug: true, \u002F\u002F Show BVH bounding boxes\n  }\n)\n\u003C\u002Fscript>\n",[666,576,577,578],[584,813,814,834,856,860,890,895,903,925,930,947,952,957],{"__ignoreMap":582},[587,815,816,818,820,822,824,826,828,830,832],{"class":589,"line":590},[587,817,594],{"class":593},[587,819,598],{"class":597},[587,821,602],{"class":601},[587,823,605],{"class":601},[587,825,608],{"class":593},[587,827,611],{"class":593},[587,829,615],{"class":614},[587,831,611],{"class":593},[587,833,620],{"class":593},[587,835,836,838,840,842,844,846,848,850,852,854],{"class":589,"line":575},[587,837,628],{"class":627},[587,839,631],{"class":593},[587,841,635],{"class":634},[587,843,638],{"class":593},[587,845,641],{"class":634},[587,847,644],{"class":593},[587,849,647],{"class":627},[587,851,650],{"class":593},[587,853,653],{"class":614},[587,855,656],{"class":593},[587,857,858],{"class":589,"line":659},[587,859,663],{"emptyLinePlaceholder":662},[587,861,863,865,867,869,871,873,875,877,879,881,883,886,888],{"class":862,"line":666},[589,624],[587,864,669],{"class":601},[587,866,631],{"class":593},[587,868,674],{"class":597},[587,870,677],{"class":593},[587,872,680],{"class":634},[587,874,683],{"class":593},[587,876,686],{"class":593},[587,878,635],{"class":689},[587,880,692],{"class":634},[587,882,695],{"class":593},[587,884,885],{"class":614},"\u002Fmodels\u002Fmodel.glb",[587,887,695],{"class":593},[587,889,703],{"class":634},[587,891,893],{"class":892,"line":576},[589,624],[587,894,663],{"emptyLinePlaceholder":662},[587,896,898,900],{"class":897,"line":577},[589,624],[587,899,331],{"class":689},[587,901,902],{"class":634},"(\n",[587,904,906,909,911,913,915,917,919,922],{"class":905,"line":578},[589,624],[587,907,908],{"class":593},"  ()",[587,910,716],{"class":601},[587,912,719],{"class":634},[587,914,534],{"class":593},[587,916,724],{"class":634},[587,918,727],{"class":593},[587,920,921],{"class":634},"scene",[587,923,924],{"class":593},",\n",[587,926,927],{"class":589,"line":579},[587,928,929],{"class":593},"  {\n",[587,931,932,935,937,941,943],{"class":589,"line":758},[587,933,934],{"class":597},"    debug",[587,936,677],{"class":593},[587,938,940],{"class":939},"sfNiH"," true",[587,942,638],{"class":593},[587,944,946],{"class":945},"sHwdD"," \u002F\u002F Show BVH bounding boxes\n",[587,948,949],{"class":589,"line":580},[587,950,951],{"class":593},"  }\n",[587,953,955],{"class":589,"line":954},11,[587,956,703],{"class":634},[587,958,960,962,964],{"class":589,"line":959},12,[587,961,736],{"class":593},[587,963,598],{"class":597},[587,965,620],{"class":593},[565,967,969],{"id":968},"reactive-enabled-state","Reactive Enabled State",[510,971,972],{},"Control BVH optimization dynamically:",[570,974,977],{"className":572,"code":975,"highlights":976,"language":581,"meta":582,"style":582},"\u003Cscript setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport { useGLTF, useBVH } from '@tresjs\u002Fcientos'\n\nconst bvhEnabled = ref(true)\n\nconst { state: model } = useGLTF('\u002Fmodels\u002Fmodel.glb')\n\nuseBVH(\n  () => model.value?.scene,\n  {\n    enabled: bvhEnabled,\n  }\n)\n\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cbutton @click=\"bvhEnabled = !bvhEnabled\">\n      Toggle BVH\n    \u003C\u002Fbutton>\n    \u003Cprimitive v-if=\"model\" :object=\"model.scene\" \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[666,577,578,579,758],[584,978,979,999,1023,1045,1050,1068,1073,1102,1107,1114,1132,1136,1148,1153,1158,1163,1172,1177,1186,1196,1219,1225,1235,1264,1274],{"__ignoreMap":582},[587,980,981,983,985,987,989,991,993,995,997],{"class":589,"line":590},[587,982,594],{"class":593},[587,984,598],{"class":597},[587,986,602],{"class":601},[587,988,605],{"class":601},[587,990,608],{"class":593},[587,992,611],{"class":593},[587,994,615],{"class":614},[587,996,611],{"class":593},[587,998,620],{"class":593},[587,1000,1001,1003,1005,1008,1010,1013,1015,1017,1019,1021],{"class":589,"line":575},[587,1002,628],{"class":627},[587,1004,631],{"class":593},[587,1006,1007],{"class":634}," ref",[587,1009,638],{"class":593},[587,1011,1012],{"class":634}," computed",[587,1014,644],{"class":593},[587,1016,647],{"class":627},[587,1018,650],{"class":593},[587,1020,581],{"class":614},[587,1022,656],{"class":593},[587,1024,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043],{"class":589,"line":659},[587,1026,628],{"class":627},[587,1028,631],{"class":593},[587,1030,635],{"class":634},[587,1032,638],{"class":593},[587,1034,641],{"class":634},[587,1036,644],{"class":593},[587,1038,647],{"class":627},[587,1040,650],{"class":593},[587,1042,653],{"class":614},[587,1044,656],{"class":593},[587,1046,1048],{"class":1047,"line":666},[589,624],[587,1049,663],{"emptyLinePlaceholder":662},[587,1051,1052,1054,1057,1059,1061,1063,1066],{"class":589,"line":576},[587,1053,669],{"class":601},[587,1055,1056],{"class":634}," bvhEnabled ",[587,1058,608],{"class":593},[587,1060,1007],{"class":689},[587,1062,692],{"class":634},[587,1064,1065],{"class":939},"true",[587,1067,703],{"class":634},[587,1069,1071],{"class":1070,"line":577},[589,624],[587,1072,663],{"emptyLinePlaceholder":662},[587,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100],{"class":1075,"line":578},[589,624],[587,1077,669],{"class":601},[587,1079,631],{"class":593},[587,1081,674],{"class":597},[587,1083,677],{"class":593},[587,1085,680],{"class":634},[587,1087,683],{"class":593},[587,1089,686],{"class":593},[587,1091,635],{"class":689},[587,1093,692],{"class":634},[587,1095,695],{"class":593},[587,1097,885],{"class":614},[587,1099,695],{"class":593},[587,1101,703],{"class":634},[587,1103,1105],{"class":1104,"line":579},[589,624],[587,1106,663],{"emptyLinePlaceholder":662},[587,1108,1110,1112],{"class":1109,"line":758},[589,624],[587,1111,331],{"class":689},[587,1113,902],{"class":634},[587,1115,1116,1118,1120,1122,1124,1126,1128,1130],{"class":589,"line":580},[587,1117,908],{"class":593},[587,1119,716],{"class":601},[587,1121,719],{"class":634},[587,1123,534],{"class":593},[587,1125,724],{"class":634},[587,1127,727],{"class":593},[587,1129,921],{"class":634},[587,1131,924],{"class":593},[587,1133,1134],{"class":589,"line":954},[587,1135,929],{"class":593},[587,1137,1138,1141,1143,1146],{"class":589,"line":959},[587,1139,1140],{"class":597},"    enabled",[587,1142,677],{"class":593},[587,1144,1145],{"class":634}," bvhEnabled",[587,1147,924],{"class":593},[587,1149,1151],{"class":589,"line":1150},13,[587,1152,951],{"class":593},[587,1154,1156],{"class":589,"line":1155},14,[587,1157,703],{"class":634},[587,1159,1161],{"class":589,"line":1160},15,[587,1162,663],{"emptyLinePlaceholder":662},[587,1164,1166,1168,1170],{"class":589,"line":1165},16,[587,1167,736],{"class":593},[587,1169,598],{"class":597},[587,1171,620],{"class":593},[587,1173,1175],{"class":589,"line":1174},17,[587,1176,663],{"emptyLinePlaceholder":662},[587,1178,1180,1182,1184],{"class":589,"line":1179},18,[587,1181,594],{"class":593},[587,1183,753],{"class":597},[587,1185,620],{"class":593},[587,1187,1189,1191,1194],{"class":589,"line":1188},19,[587,1190,761],{"class":593},[587,1192,1193],{"class":597},"div",[587,1195,620],{"class":593},[587,1197,1199,1202,1205,1208,1210,1212,1215,1217],{"class":589,"line":1198},20,[587,1200,1201],{"class":593},"    \u003C",[587,1203,1204],{"class":597},"button",[587,1206,1207],{"class":601}," @click",[587,1209,608],{"class":593},[587,1211,611],{"class":593},[587,1213,1214],{"class":614},"bvhEnabled = !bvhEnabled",[587,1216,611],{"class":593},[587,1218,620],{"class":593},[587,1220,1222],{"class":589,"line":1221},21,[587,1223,1224],{"class":634},"      Toggle BVH\n",[587,1226,1228,1231,1233],{"class":589,"line":1227},22,[587,1229,1230],{"class":593},"    \u003C\u002F",[587,1232,1204],{"class":597},[587,1234,620],{"class":593},[587,1236,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262],{"class":589,"line":1237},23,[587,1239,1201],{"class":593},[587,1241,764],{"class":597},[587,1243,767],{"class":601},[587,1245,608],{"class":593},[587,1247,611],{"class":593},[587,1249,774],{"class":614},[587,1251,611],{"class":593},[587,1253,779],{"class":601},[587,1255,608],{"class":593},[587,1257,611],{"class":593},[587,1259,786],{"class":614},[587,1261,611],{"class":593},[587,1263,791],{"class":593},[587,1265,1267,1270,1272],{"class":589,"line":1266},24,[587,1268,1269],{"class":593},"  \u003C\u002F",[587,1271,1193],{"class":597},[587,1273,620],{"class":593},[587,1275,1277,1279,1281],{"class":589,"line":1276},25,[587,1278,736],{"class":593},[587,1280,753],{"class":597},[587,1282,620],{"class":593},[536,1284,1286],{"id":1285},"options","Options",[510,1288,1289,1290,1293,1294,1297,1298,1301],{},"Options are divided into ",[514,1291,1292],{},"reactive"," (can change at runtime) and ",[514,1295,1296],{},"static"," (set once at creation - changing requires toggling ",[584,1299,1300],{},"enabled"," off\u002Fon to rebuild).",[565,1303,1305],{"id":1304},"reactive-options","Reactive Options",[1307,1308,1309,1329],"table",{},[1310,1311,1312],"thead",{},[1313,1314,1315,1320,1323,1326],"tr",{},[1316,1317,1319],"th",{"align":1318},"left","Option",[1316,1321,1322],{"align":1318},"Type",[1316,1324,1325],{"align":1318},"Default",[1316,1327,1328],{"align":1318},"Description",[1330,1331,1332,1351],"tbody",{},[1313,1333,1334,1339,1344,1348],{},[1335,1336,1337],"td",{"align":1318},[514,1338,1300],{},[1335,1340,1341],{"align":1318},[584,1342,1343],{},"MaybeRefOrGetter\u003Cboolean>",[1335,1345,1346],{"align":1318},[584,1347,1065],{},[1335,1349,1350],{"align":1318},"Enable\u002Fdisable BVH optimization. Toggling rebuilds BVH structures.",[1313,1352,1353,1358,1362,1367],{},[1335,1354,1355],{"align":1318},[514,1356,1357],{},"debug",[1335,1359,1360],{"align":1318},[584,1361,1343],{},[1335,1363,1364],{"align":1318},[584,1365,1366],{},"false",[1335,1368,1369],{"align":1318},"Show debug visualization of BVH bounding boxes.",[565,1371,1373],{"id":1372},"static-options-bvh-construction","Static Options (BVH Construction)",[510,1375,1376,1377,1379],{},"These options configure how the BVH is built. Changing them after creation has no effect - toggle ",[584,1378,1300],{}," off\u002Fon to rebuild with new values.",[1307,1381,1382,1394],{},[1310,1383,1384],{},[1313,1385,1386,1388,1390,1392],{},[1316,1387,1319],{"align":1318},[1316,1389,1322],{"align":1318},[1316,1391,1325],{"align":1318},[1316,1393,1328],{"align":1318},[1330,1395,1396,1419,1439,1459,1478,1496,1514],{},[1313,1397,1398,1403,1408,1412],{},[1335,1399,1400],{"align":1318},[514,1401,1402],{},"firstHitOnly",[1335,1404,1405],{"align":1318},[584,1406,1407],{},"boolean",[1335,1409,1410],{"align":1318},[584,1411,1366],{},[1335,1413,1414,1415,1418],{"align":1318},"Use ",[584,1416,1417],{},"raycastFirst"," for better performance when only the first hit is needed.",[1313,1420,1421,1426,1431,1436],{},[1335,1422,1423],{"align":1318},[514,1424,1425],{},"splitStrategy",[1335,1427,1428],{"align":1318},[584,1429,1430],{},"'CENTER' | 'AVERAGE' | 'SAH'",[1335,1432,1433],{"align":1318},[584,1434,1435],{},"'SAH'",[1335,1437,1438],{"align":1318},"BVH build strategy. See section below.",[1313,1440,1441,1446,1451,1456],{},[1335,1442,1443],{"align":1318},[514,1444,1445],{},"maxDepth",[1335,1447,1448],{"align":1318},[584,1449,1450],{},"number",[1335,1452,1453],{"align":1318},[584,1454,1455],{},"40",[1335,1457,1458],{"align":1318},"Maximum tree depth for the BVH structure.",[1313,1460,1461,1466,1470,1475],{},[1335,1462,1463],{"align":1318},[514,1464,1465],{},"maxLeafSize",[1335,1467,1468],{"align":1318},[584,1469,1450],{},[1335,1471,1472],{"align":1318},[584,1473,1474],{},"10",[1335,1476,1477],{"align":1318},"Target number of triangles per leaf node.",[1313,1479,1480,1485,1489,1493],{},[1335,1481,1482],{"align":1318},[514,1483,1484],{},"verbose",[1335,1486,1487],{"align":1318},[584,1488,1407],{},[1335,1490,1491],{"align":1318},[584,1492,1366],{},[1335,1494,1495],{"align":1318},"Print construction warnings and progress to console.",[1313,1497,1498,1503,1507,1511],{},[1335,1499,1500],{"align":1318},[514,1501,1502],{},"setBoundingBox",[1335,1504,1505],{"align":1318},[584,1506,1407],{},[1335,1508,1509],{"align":1318},[584,1510,1065],{},[1335,1512,1513],{"align":1318},"Automatically set geometry bounding box after BVH construction.",[1313,1515,1516,1521,1525,1529],{},[1335,1517,1518],{"align":1318},[514,1519,1520],{},"indirect",[1335,1522,1523],{"align":1318},[584,1524,1407],{},[1335,1526,1527],{"align":1318},[584,1528,1366],{},[1335,1530,1531],{"align":1318},"If false, creates and rearranges index buffer for better performance.",[565,1533,1535],{"id":1534},"split-strategies","Split Strategies",[549,1537,1538,1544,1550],{},[552,1539,1540,1543],{},[514,1541,1542],{},"SAH (Surface Area Heuristic)"," - Slowest to build, fastest at runtime, uses least memory. Best for production.",[552,1545,1546,1549],{},[514,1547,1548],{},"AVERAGE"," - Balanced build time and runtime performance.",[552,1551,1552,1555],{},[514,1553,1554],{},"CENTER"," - Fastest to build, slower at runtime.",[536,1557,1559],{"id":1558},"advanced-usage","Advanced Usage",[565,1561,1563],{"id":1562},"fine-tuning-performance","Fine-tuning Performance",[510,1565,1566],{},"Adjust BVH construction parameters for your use case:",[570,1568,1571],{"className":1569,"code":1570,"language":615,"meta":582,"style":582},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","useBVH(\n  target,\n  {\n    splitStrategy: 'SAH', \u002F\u002F Best runtime performance\n    maxDepth: 30, \u002F\u002F Shallower tree (faster build)\n    maxLeafSize: 5, \u002F\u002F Smaller leaves (better culling)\n    verbose: true, \u002F\u002F Debug construction\n  }\n)\n",[584,1572,1573,1579,1586,1590,1609,1625,1640,1654,1658],{"__ignoreMap":582},[587,1574,1575,1577],{"class":589,"line":590},[587,1576,331],{"class":689},[587,1578,902],{"class":634},[587,1580,1581,1584],{"class":589,"line":575},[587,1582,1583],{"class":634},"  target",[587,1585,924],{"class":593},[587,1587,1588],{"class":589,"line":659},[587,1589,929],{"class":593},[587,1591,1592,1595,1597,1599,1602,1604,1606],{"class":589,"line":666},[587,1593,1594],{"class":597},"    splitStrategy",[587,1596,677],{"class":593},[587,1598,650],{"class":593},[587,1600,1601],{"class":614},"SAH",[587,1603,695],{"class":593},[587,1605,638],{"class":593},[587,1607,1608],{"class":945}," \u002F\u002F Best runtime performance\n",[587,1610,1611,1614,1616,1620,1622],{"class":589,"line":576},[587,1612,1613],{"class":597},"    maxDepth",[587,1615,677],{"class":593},[587,1617,1619],{"class":1618},"sbssI"," 30",[587,1621,638],{"class":593},[587,1623,1624],{"class":945}," \u002F\u002F Shallower tree (faster build)\n",[587,1626,1627,1630,1632,1635,1637],{"class":589,"line":577},[587,1628,1629],{"class":597},"    maxLeafSize",[587,1631,677],{"class":593},[587,1633,1634],{"class":1618}," 5",[587,1636,638],{"class":593},[587,1638,1639],{"class":945}," \u002F\u002F Smaller leaves (better culling)\n",[587,1641,1642,1645,1647,1649,1651],{"class":589,"line":578},[587,1643,1644],{"class":597},"    verbose",[587,1646,677],{"class":593},[587,1648,940],{"class":939},[587,1650,638],{"class":593},[587,1652,1653],{"class":945}," \u002F\u002F Debug construction\n",[587,1655,1656],{"class":589,"line":579},[587,1657,951],{"class":593},[587,1659,1660],{"class":589,"line":758},[587,1661,703],{"class":634},[565,1663,1665],{"id":1664},"first-hit-only-mode","First Hit Only Mode",[510,1667,1668],{},"When you only need the closest intersection (e.g., mouse picking):",[570,1670,1672],{"className":1569,"code":1671,"language":615,"meta":582,"style":582},"useBVH(\n  target,\n  {\n    firstHitOnly: true, \u002F\u002F Uses raycastFirst internally\n  }\n)\n",[584,1673,1674,1680,1686,1690,1704,1708],{"__ignoreMap":582},[587,1675,1676,1678],{"class":589,"line":590},[587,1677,331],{"class":689},[587,1679,902],{"class":634},[587,1681,1682,1684],{"class":589,"line":575},[587,1683,1583],{"class":634},[587,1685,924],{"class":593},[587,1687,1688],{"class":589,"line":659},[587,1689,929],{"class":593},[587,1691,1692,1695,1697,1699,1701],{"class":589,"line":666},[587,1693,1694],{"class":597},"    firstHitOnly",[587,1696,677],{"class":593},[587,1698,940],{"class":939},[587,1700,638],{"class":593},[587,1702,1703],{"class":945}," \u002F\u002F Uses raycastFirst internally\n",[587,1705,1706],{"class":589,"line":576},[587,1707,951],{"class":593},[587,1709,1710],{"class":589,"line":577},[587,1711,703],{"class":634},[510,1713,1714],{},"This is significantly faster than computing all intersections when you only need one.",[536,1716,1718],{"id":1717},"important-notes","Important Notes",[549,1720,1721,1727,1748,1754,1767],{},[552,1722,1723,1726],{},[514,1724,1725],{},"Side-effect free",": BVH is automatically removed on unmount and when disabled.",[552,1728,1729,1732,1733,1735,1736,1738,1739,1741,1742,1744,1745,1747],{},[514,1730,1731],{},"Reactive options",": Only ",[584,1734,1300],{}," and ",[584,1737,1357],{}," are reactive. Construction options (",[584,1740,1425],{},", ",[584,1743,1445],{},", etc.) are static - to apply new values, toggle ",[584,1746,1300],{}," off\u002Fon.",[552,1749,1750,1753],{},[514,1751,1752],{},"Memory efficient",": BVH structures are properly disposed when removed.",[552,1755,1756,1759,1760,1735,1763,1766],{},[514,1757,1758],{},"Automatic mesh detection",": Works with ",[584,1761,1762],{},"Mesh",[584,1764,1765],{},"SkinnedMesh"," instances.",[552,1768,1769,1772],{},[514,1770,1771],{},"Draco models",": Works seamlessly with Draco-compressed GLTF models.",[536,1774,1776],{"id":1775},"performance-tips","Performance Tips",[1778,1779,1780,1786,1792,1798],"ol",{},[552,1781,1782,1785],{},[514,1783,1784],{},"Use firstHitOnly"," when you only need the closest intersection",[552,1787,1788,1791],{},[514,1789,1790],{},"SAH strategy"," gives best runtime performance for production",[552,1793,1794,1797],{},[514,1795,1796],{},"Adjust maxLeafSize"," based on triangle density (smaller for dense meshes)",[552,1799,1800,1803],{},[514,1801,1802],{},"Enable debug mode"," during development to verify BVH coverage",[536,1805,1807],{"id":1806},"integration-with-usegltf","Integration with useGLTF",[510,1809,1810,1811,1813],{},"Perfect pairing with ",[584,1812,133],{}," for optimized model loading:",[570,1815,1817],{"className":572,"code":1816,"language":581,"meta":582,"style":582},"\u003Cscript setup lang=\"ts\">\nimport { useBVH, useGLTF } from '@tresjs\u002Fcientos'\n\nconst { state: model } = useGLTF('\u002Fmodels\u002Fhigh-poly-model.glb', {\n  draco: true\n})\n\nuseBVH(\n  () => model.value?.scene,\n  { splitStrategy: 'SAH' }\n)\n\u003C\u002Fscript>\n",[584,1818,1819,1839,1861,1865,1897,1907,1913,1917,1923,1941,1960,1964],{"__ignoreMap":582},[587,1820,1821,1823,1825,1827,1829,1831,1833,1835,1837],{"class":589,"line":590},[587,1822,594],{"class":593},[587,1824,598],{"class":597},[587,1826,602],{"class":601},[587,1828,605],{"class":601},[587,1830,608],{"class":593},[587,1832,611],{"class":593},[587,1834,615],{"class":614},[587,1836,611],{"class":593},[587,1838,620],{"class":593},[587,1840,1841,1843,1845,1847,1849,1851,1853,1855,1857,1859],{"class":589,"line":575},[587,1842,628],{"class":627},[587,1844,631],{"class":593},[587,1846,641],{"class":634},[587,1848,638],{"class":593},[587,1850,635],{"class":634},[587,1852,644],{"class":593},[587,1854,647],{"class":627},[587,1856,650],{"class":593},[587,1858,653],{"class":614},[587,1860,656],{"class":593},[587,1862,1863],{"class":589,"line":659},[587,1864,663],{"emptyLinePlaceholder":662},[587,1866,1867,1869,1871,1873,1875,1877,1879,1881,1883,1885,1887,1890,1892,1894],{"class":589,"line":666},[587,1868,669],{"class":601},[587,1870,631],{"class":593},[587,1872,674],{"class":597},[587,1874,677],{"class":593},[587,1876,680],{"class":634},[587,1878,683],{"class":593},[587,1880,686],{"class":593},[587,1882,635],{"class":689},[587,1884,692],{"class":634},[587,1886,695],{"class":593},[587,1888,1889],{"class":614},"\u002Fmodels\u002Fhigh-poly-model.glb",[587,1891,695],{"class":593},[587,1893,638],{"class":593},[587,1895,1896],{"class":593}," {\n",[587,1898,1899,1902,1904],{"class":589,"line":576},[587,1900,1901],{"class":597},"  draco",[587,1903,677],{"class":593},[587,1905,1906],{"class":939}," true\n",[587,1908,1909,1911],{"class":589,"line":577},[587,1910,683],{"class":593},[587,1912,703],{"class":634},[587,1914,1915],{"class":589,"line":578},[587,1916,663],{"emptyLinePlaceholder":662},[587,1918,1919,1921],{"class":589,"line":579},[587,1920,331],{"class":689},[587,1922,902],{"class":634},[587,1924,1925,1927,1929,1931,1933,1935,1937,1939],{"class":589,"line":758},[587,1926,908],{"class":593},[587,1928,716],{"class":601},[587,1930,719],{"class":634},[587,1932,534],{"class":593},[587,1934,724],{"class":634},[587,1936,727],{"class":593},[587,1938,921],{"class":634},[587,1940,924],{"class":593},[587,1942,1943,1946,1949,1951,1953,1955,1957],{"class":589,"line":580},[587,1944,1945],{"class":593},"  {",[587,1947,1948],{"class":597}," splitStrategy",[587,1950,677],{"class":593},[587,1952,650],{"class":593},[587,1954,1601],{"class":614},[587,1956,695],{"class":593},[587,1958,1959],{"class":593}," }\n",[587,1961,1962],{"class":589,"line":954},[587,1963,703],{"class":634},[587,1965,1966,1968,1970],{"class":589,"line":959},[587,1967,736],{"class":593},[587,1969,598],{"class":597},[587,1971,620],{"class":593},[536,1973,1975],{"id":1974},"troubleshooting","Troubleshooting",[565,1977,1979],{"id":1978},"bvh-not-applying-to-some-meshes","BVH not applying to some meshes",[549,1981,1982,1985,1992],{},[552,1983,1984],{},"Ensure meshes have valid geometry with position attributes",[552,1986,1987,1988,1991],{},"Check console with ",[584,1989,1990],{},"verbose: true"," to see which meshes are skipped",[552,1993,1994,1995,1998,1999,2001],{},"Verify the object is an ",[584,1996,1997],{},"Object3D"," (use ",[584,2000,764],{}," in templates)",[565,2003,2005],{"id":2004},"performance-not-improving","Performance not improving",[549,2007,2008,2014,2020,2023],{},[552,2009,2010,2011,2013],{},"Enable ",[584,2012,1402],{}," if you only need one intersection",[552,2015,2016,2017,2019],{},"Try different split strategies (",[584,2018,1601],{}," is usually best)",[552,2021,2022],{},"Verify raycasting is the bottleneck (use Stats\u002FStatsGl)",[552,2024,2025],{},"Consider LOD for very distant objects",[2027,2028,2029],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":582,"searchDepth":590,"depth":575,"links":2031},[2032,2033,2038,2043,2047,2048,2049,2050],{"id":538,"depth":575,"text":539},{"id":563,"depth":575,"text":15,"children":2034},[2035,2036,2037],{"id":567,"depth":659,"text":568},{"id":803,"depth":659,"text":804},{"id":968,"depth":659,"text":969},{"id":1285,"depth":575,"text":1286,"children":2039},[2040,2041,2042],{"id":1304,"depth":659,"text":1305},{"id":1372,"depth":659,"text":1373},{"id":1534,"depth":659,"text":1535},{"id":1558,"depth":575,"text":1559,"children":2044},[2045,2046],{"id":1562,"depth":659,"text":1563},{"id":1664,"depth":659,"text":1665},{"id":1717,"depth":575,"text":1718},{"id":1775,"depth":575,"text":1776},{"id":1806,"depth":575,"text":1807},{"id":1974,"depth":575,"text":1975,"children":2051},[2052,2053],{"id":1978,"depth":659,"text":1979},{"id":2004,"depth":659,"text":2005},"Speed up raycasting with Bounding Volume Hierarchy (BVH) optimization.","md",null,{},{"title":331,"description":2054},"Ubx_HIq-xEI-Pv2T8zVe8LT3sJ_wBF7VmDcGGpLgBYs",[2061,2063],{"title":327,"path":328,"stem":329,"description":2062,"children":-1},"WebGL performance monitoring tool displaying CPU and GPU metrics.",{"title":335,"path":336,"stem":337,"description":2064,"children":-1},"All light and shadow components",1791549574966]