[{"data":1,"prerenderedAt":11150},["ShallowReactive",2],{"navigation":3,"/api/abstractions":490,"/api/abstractions-surround":511,"abstraction-list":516},[4,26],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","/getting-started","1.getting-started/1.index",[9,10,14,18,22],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation Guide","/getting-started/installation","1.getting-started/2.installation",{"title":15,"path":16,"stem":17},"Usage","/getting-started/usage","1.getting-started/3.usage",{"title":19,"path":20,"stem":21},"Loading Models","/getting-started/loading-models","1.getting-started/4.loading-models",{"title":23,"path":24,"stem":25},"Upgrade Guide","/getting-started/upgrade-guide","1.getting-started/5.upgrade-guide",{"title":27,"path":28,"stem":29,"children":30},"Api","/api","2.api",[31,34,88,118,160,202,300,326,360,410,456],{"title":32,"path":28,"stem":33},"All","2.api/index",{"title":35,"path":36,"stem":37,"children":38},"Abstractions","/api/abstractions","2.api/1.abstractions/index",[39,40,44,48,52,56,60,64,68,72,76,80,84],{"title":35,"path":36,"stem":37},{"title":41,"path":42,"stem":43},"Align","/api/abstractions/align","2.api/1.abstractions/align",{"title":45,"path":46,"stem":47},"Billboard","/api/abstractions/billboard","2.api/1.abstractions/billboard",{"title":49,"path":50,"stem":51},"Camera Shake","/api/abstractions/camera-shake","2.api/1.abstractions/camera-shake",{"title":53,"path":54,"stem":55},"Decal","/api/abstractions/decal","2.api/1.abstractions/decal",{"title":57,"path":58,"stem":59},"Edges","/api/abstractions/edges","2.api/1.abstractions/edges",{"title":61,"path":62,"stem":63},"Fit","/api/abstractions/fit","2.api/1.abstractions/fit",{"title":65,"path":66,"stem":67},"Levioso (Float)","/api/abstractions/levioso","2.api/1.abstractions/levioso",{"title":69,"path":70,"stem":71},"Mask","/api/abstractions/mask","2.api/1.abstractions/mask",{"title":73,"path":74,"stem":75},"Outline","/api/abstractions/outline","2.api/1.abstractions/outline",{"title":77,"path":78,"stem":79},"Sampler","/api/abstractions/sampler","2.api/1.abstractions/sampler",{"title":81,"path":82,"stem":83},"ScreenSizer","/api/abstractions/screen-sizer","2.api/1.abstractions/screen-sizer",{"title":85,"path":86,"stem":87},"ScreenSpace","/api/abstractions/screen-space","2.api/1.abstractions/screen-space",{"title":89,"path":90,"stem":91,"children":92},"Controls","/api/controls","2.api/2.controls/index",[93,94,98,102,106,110,114],{"title":89,"path":90,"stem":91},{"title":95,"path":96,"stem":97},"Camera Controls","/api/controls/camera-controls","2.api/2.controls/camera-controls",{"title":99,"path":100,"stem":101},"Keyboard Controls","/api/controls/keyboard-controls","2.api/2.controls/keyboard-controls",{"title":103,"path":104,"stem":105},"Map Controls","/api/controls/map-controls","2.api/2.controls/map-controls",{"title":107,"path":108,"stem":109},"Orbit Controls","/api/controls/orbit-controls","2.api/2.controls/orbit-controls",{"title":111,"path":112,"stem":113},"PointerLock Controls","/api/controls/pointer-lock-controls","2.api/2.controls/pointer-lock-controls",{"title":115,"path":116,"stem":117},"Transform Controls","/api/controls/transform-controls","2.api/2.controls/transform-controls",{"title":119,"path":120,"stem":121,"children":122},"Loaders","/api/loaders","2.api/3.loaders/index",[123,124,128,132,136,140,144,148,152,156],{"title":119,"path":120,"stem":121},{"title":125,"path":126,"stem":127},"useGLTF","/api/loaders/use-gltf","2.api/3.loaders/1.use-gltf",{"title":129,"path":130,"stem":131},"GLTFModel","/api/loaders/gltf-model","2.api/3.loaders/2.gltf-model",{"title":133,"path":134,"stem":135},"useFBX","/api/loaders/use-fbx","2.api/3.loaders/3.use-fbx",{"title":137,"path":138,"stem":139},"FBXModel","/api/loaders/fbx-model","2.api/3.loaders/4.fbx-model",{"title":141,"path":142,"stem":143},"useTexture","/api/loaders/use-texture","2.api/3.loaders/5.use-texture",{"title":145,"path":146,"stem":147},"useTextures","/api/loaders/use-textures","2.api/3.loaders/6.use-textures",{"title":149,"path":150,"stem":151},"useSVG","/api/loaders/use-svg","2.api/3.loaders/7.use-svg",{"title":153,"path":154,"stem":155},"useProgress","/api/loaders/use-progress","2.api/3.loaders/use-progress",{"title":157,"path":158,"stem":159},"useVideoTexture","/api/loaders/use-video-texture","2.api/3.loaders/use-video-texture",{"title":161,"path":162,"stem":163,"children":164},"Materials","/api/materials","2.api/4.materials/index",[165,166,170,174,178,182,186,190,194,198],{"title":161,"path":162,"stem":163},{"title":167,"path":168,"stem":169},"Custom Shader Material","/api/materials/custom-shader-material","2.api/4.materials/custom-shader-material",{"title":171,"path":172,"stem":173},"Mesh Glass Material","/api/materials/glass-material","2.api/4.materials/glass-material",{"title":175,"path":176,"stem":177},"Holographic Material","/api/materials/holographic-material","2.api/4.materials/holographic-material",{"title":179,"path":180,"stem":181},"Mesh Discard Material","/api/materials/mesh-discard-material","2.api/4.materials/mesh-discard-material",{"title":183,"path":184,"stem":185},"Mesh Portal Material","/api/materials/mesh-portal-material","2.api/4.materials/mesh-portal-material",{"title":187,"path":188,"stem":189},"Mesh Reflection Material","/api/materials/mesh-reflection-material","2.api/4.materials/mesh-reflection-material",{"title":191,"path":192,"stem":193},"Mesh Transmission Material","/api/materials/mesh-transmission-material","2.api/4.materials/mesh-transmission-material",{"title":195,"path":196,"stem":197},"Point Material","/api/materials/point-material","2.api/4.materials/point-material",{"title":199,"path":200,"stem":201},"Wobble Material","/api/materials/wobble-material","2.api/4.materials/wobble-material",{"title":203,"path":204,"stem":205,"children":206},"Shapes","/api/shapes","2.api/5.shapes/index",[207,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296],{"title":203,"path":204,"stem":205},{"title":209,"path":210,"stem":211},"Box","/api/shapes/box","2.api/5.shapes/box",{"title":213,"path":214,"stem":215},"CatmullRomCurve3","/api/shapes/catmullromcurve3","2.api/5.shapes/catmullromcurve3",{"title":217,"path":218,"stem":219},"Circle","/api/shapes/circle","2.api/5.shapes/circle",{"title":221,"path":222,"stem":223},"Cone","/api/shapes/cone","2.api/5.shapes/cone",{"title":225,"path":226,"stem":227},"Cubic Bezier Line","/api/shapes/cubic-bezier-line","2.api/5.shapes/cubic-bezier-line",{"title":229,"path":230,"stem":231},"Cylinder","/api/shapes/cylinder","2.api/5.shapes/cylinder",{"title":233,"path":234,"stem":235},"Dodecahedron","/api/shapes/dodecahedron","2.api/5.shapes/dodecahedron",{"title":237,"path":238,"stem":239},"Grid","/api/shapes/grid","2.api/5.shapes/grid",{"title":241,"path":242,"stem":243},"Icosahedron","/api/shapes/icosahedron","2.api/5.shapes/icosahedron",{"title":245,"path":246,"stem":247},"Line2","/api/shapes/line2","2.api/5.shapes/line2",{"title":249,"path":250,"stem":251},"Octahedron","/api/shapes/octahedron","2.api/5.shapes/octahedron",{"title":253,"path":254,"stem":255},"Plane","/api/shapes/plane","2.api/5.shapes/plane",{"title":257,"path":258,"stem":259},"Quadratic Bezier Line","/api/shapes/quadratic-bezier-line","2.api/5.shapes/quadratic-bezier-line",{"title":261,"path":262,"stem":263},"Ring","/api/shapes/ring","2.api/5.shapes/ring",{"title":265,"path":266,"stem":267},"Rounded Box","/api/shapes/rounded-box","2.api/5.shapes/rounded-box",{"title":269,"path":270,"stem":271},"Rounded Plane","/api/shapes/rounded-plane","2.api/5.shapes/rounded-plane",{"title":273,"path":274,"stem":275},"Screen Quad","/api/shapes/screen-quad","2.api/5.shapes/screen-quad",{"title":277,"path":278,"stem":279},"Sphere","/api/shapes/sphere","2.api/5.shapes/sphere",{"title":281,"path":282,"stem":283},"Superformula","/api/shapes/superformula","2.api/5.shapes/superformula",{"title":285,"path":286,"stem":287},"Tetrahedron","/api/shapes/tetrahedron","2.api/5.shapes/tetrahedron",{"title":289,"path":290,"stem":291},"Torus","/api/shapes/torus","2.api/5.shapes/torus",{"title":293,"path":294,"stem":295},"Torus Knot","/api/shapes/torus-knot","2.api/5.shapes/torus-knot",{"title":297,"path":298,"stem":299},"Tube","/api/shapes/tube","2.api/5.shapes/tube",{"title":301,"path":302,"stem":303,"children":304},"Debug/Performance","/api/debug-performance","2.api/6.debug-performance/index",[305,306,310,314,318,322],{"title":301,"path":302,"stem":303},{"title":307,"path":308,"stem":309},"Helper","/api/debug-performance/helper","2.api/6.debug-performance/helper",{"title":311,"path":312,"stem":313},"LOD","/api/debug-performance/lod","2.api/6.debug-performance/lod",{"title":315,"path":316,"stem":317},"Stats","/api/debug-performance/stats","2.api/6.debug-performance/stats",{"title":319,"path":320,"stem":321},"StatsGl","/api/debug-performance/stats-gl","2.api/6.debug-performance/stats-gl",{"title":323,"path":324,"stem":325},"useBVH","/api/debug-performance/use-bvh","2.api/6.debug-performance/use-bvh",{"title":327,"path":328,"stem":329,"children":330},"Light/Shadow","/api/light-shadow","2.api/7.light-shadow/index",[331,332,336,340,344,348,352,356],{"title":327,"path":328,"stem":329},{"title":333,"path":334,"stem":335},"Accumulative Shadows","/api/light-shadow/accumulative-shadows","2.api/7.light-shadow/accumulative-shadows",{"title":337,"path":338,"stem":339},"Bake Shadows","/api/light-shadow/bake-shadows","2.api/7.light-shadow/bake-shadows",{"title":341,"path":342,"stem":343},"Circle Shadow","/api/light-shadow/circle-shadow","2.api/7.light-shadow/circle-shadow",{"title":345,"path":346,"stem":347},"Contact Shadows","/api/light-shadow/contact-shadows","2.api/7.light-shadow/contact-shadows",{"title":349,"path":350,"stem":351},"Lensflare","/api/light-shadow/lensflare","2.api/7.light-shadow/lensflare",{"title":353,"path":354,"stem":355},"Randomized Lights","/api/light-shadow/randomized-lights","2.api/7.light-shadow/randomized-lights",{"title":357,"path":358,"stem":359},"Soft Shadows","/api/light-shadow/soft-shadows","2.api/7.light-shadow/soft-shadows",{"title":361,"path":362,"stem":363,"children":364},"Staging","/api/staging","2.api/8.staging/index",[365,366,370,374,378,382,386,390,394,398,402,406],{"title":361,"path":362,"stem":363},{"title":367,"path":368,"stem":369},"Environment","/api/staging/environment","2.api/8.staging/1.environment",{"title":371,"path":372,"stem":373},"useEnvironment","/api/staging/use-environment","2.api/8.staging/2.use-environment",{"title":375,"path":376,"stem":377},"Lightformer","/api/staging/lightformer","2.api/8.staging/3.lightformer",{"title":379,"path":380,"stem":381},"Backdrop","/api/staging/backdrop","2.api/8.staging/backdrop",{"title":383,"path":384,"stem":385},"Ocean","/api/staging/ocean","2.api/8.staging/ocean",{"title":387,"path":388,"stem":389},"Precipitation","/api/staging/precipitation","2.api/8.staging/precipitation",{"title":391,"path":392,"stem":393},"Sky","/api/staging/sky","2.api/8.staging/sky",{"title":395,"path":396,"stem":397},"Smoke","/api/staging/smoke","2.api/8.staging/smoke",{"title":399,"path":400,"stem":401},"Sparkles","/api/staging/sparkles","2.api/8.staging/sparkles",{"title":403,"path":404,"stem":405},"Stage","/api/staging/stage","2.api/8.staging/stage",{"title":407,"path":408,"stem":409},"Stars","/api/staging/stars","2.api/8.staging/stars",{"title":411,"path":412,"stem":413,"children":414},"Objects","/api/objects","2.api/9.objects/index",[415,416,420,424,428,432,436,440,444,448,452],{"title":411,"path":412,"stem":413},{"title":417,"path":418,"stem":419},"AnimatedSprite","/api/objects/animated-sprite","2.api/9.objects/animated-sprite",{"title":421,"path":422,"stem":423},"CubeCamera","/api/objects/cube-camera","2.api/9.objects/cube-camera",{"title":425,"path":426,"stem":427},"Fbo","/api/objects/fbo","2.api/9.objects/fbo",{"title":429,"path":430,"stem":431},"GradientTexture","/api/objects/gradient-texture","2.api/9.objects/gradient-texture",{"title":433,"path":434,"stem":435},"HTML","/api/objects/html","2.api/9.objects/html",{"title":437,"path":438,"stem":439},"Image","/api/objects/image","2.api/9.objects/image",{"title":441,"path":442,"stem":443},"MarchingCubes","/api/objects/marching-cubes","2.api/9.objects/marching-cubes",{"title":445,"path":446,"stem":447},"Reflector","/api/objects/reflector","2.api/9.objects/reflector",{"title":449,"path":450,"stem":451},"Refractor","/api/objects/refractor","2.api/9.objects/refractor",{"title":453,"path":454,"stem":455},"Text3D","/api/objects/text-3d","2.api/9.objects/text-3d",{"title":457,"path":458,"stem":459,"children":460},"Miscellaneous","/api/miscellaneous","2.api/miscellaneous/index",[461,462,466,470,474,478,482,486],{"title":457,"path":458,"stem":459},{"title":463,"path":464,"stem":465},"Bounds","/api/miscellaneous/bounds","2.api/miscellaneous/bounds",{"title":467,"path":468,"stem":469},"GlobalAudio","/api/miscellaneous/global-audio","2.api/miscellaneous/global-audio",{"title":471,"path":472,"stem":473},"MouseParallax","/api/miscellaneous/mouse-parallax","2.api/miscellaneous/mouse-parallax",{"title":475,"path":476,"stem":477},"PositionalAudio","/api/miscellaneous/positional-audio","2.api/miscellaneous/positional-audio",{"title":479,"path":480,"stem":481},"useAnimations","/api/miscellaneous/use-animations","2.api/miscellaneous/use-animations",{"title":483,"path":484,"stem":485},"useGLTFExporter","/api/miscellaneous/use-gltf-exporter","2.api/miscellaneous/use-gltf-exporter",{"title":487,"path":488,"stem":489},"useIntersect","/api/miscellaneous/use-intersect","2.api/miscellaneous/use-intersect",{"id":491,"title":35,"body":492,"description":504,"extension":505,"links":506,"meta":507,"navigation":508,"path":36,"seo":509,"stem":37,"__hash__":510},"docs/2.api/1.abstractions/index.md",{"type":493,"value":494,"toc":499},"minimark",[495],[496,497],"api-list",{"list-name":498},"abstraction-list",{"title":500,"searchDepth":501,"depth":502,"links":503},"",1,2,[],"UI components reference","md",null,{},true,{"title":35,"description":504},"baHMAoaJElysrTy3x8ClFjAsCmHKTlx_oEIhv5zW7dM",[512,514],{"title":32,"path":28,"stem":33,"description":513,"children":-1},"Explore the complete API reference",{"title":41,"path":42,"stem":43,"description":515,"children":-1},"Calculate and align children within their parent using bounding boxes.",[517,1253,1567,2116,7218,7512,8137,8531,9181,9658,10461,10774],{"id":518,"title":41,"body":519,"description":515,"extension":505,"links":506,"meta":1250,"navigation":508,"path":42,"seo":1251,"stem":43,"__hash__":1252},"docs/2.api/1.abstractions/align.md",{"type":493,"value":520,"toc":1245},[521,527,536,540,834,838,841,1095,1099,1241],[522,523,524],"scene-controls-wrapper",{},[525,526],"abstractions-align",{},[528,529,530,531,535],"p",{},"Calculates a bounding box around its children and aligns them as a group within their parent. The component measures its contents and realigns on every frame unless ",[532,533,534],"code",{},"cacheKey"," is set.",[537,538,15],"h2",{"id":539},"usage",[541,542,549],"pre",{"className":543,"code":544,"highlights":545,"language":548,"meta":500,"style":500},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { Align, OrbitControls } from '@tresjs/cientos'\nimport { TresCanvas } from '@tresjs/core'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas clear-color=\"#222\">\n    \u003CTresPerspectiveCamera />\n    \u003COrbitControls />\n\n    \u003CTresAxesHelper :scale=\"2\" />\n\n    \u003CAlign top right back>\n      \u003CTresMesh>\n        \u003CTresBoxGeometry />\n        \u003CTresMeshNormalMaterial />\n      \u003C/TresMesh>\n    \u003C/Align>\n  \u003C/TresCanvas>\n\u003C/template>\n\n",[502,546,547],13,18,"vue",[532,550,551,585,621,642,652,658,668,691,703,713,718,740,745,763,774,785,795,805,815,825],{"__ignoreMap":500},[552,553,555,559,563,567,570,573,576,580,582],"span",{"class":554,"line":501},"line",[552,556,558],{"class":557},"sMK4o","\u003C",[552,560,562],{"class":561},"swJcz","script",[552,564,566],{"class":565},"spNyl"," setup",[552,568,569],{"class":565}," lang",[552,571,572],{"class":557},"=",[552,574,575],{"class":557},"\"",[552,577,579],{"class":578},"sfazB","ts",[552,581,575],{"class":557},[552,583,584],{"class":557},">\n",[552,586,589,593,596,600,603,606,609,612,615,618],{"class":587,"line":502},[554,588],"highlight",[552,590,592],{"class":591},"s7zQu","import",[552,594,595],{"class":557}," {",[552,597,599],{"class":598},"sTEyZ"," Align",[552,601,602],{"class":557},",",[552,604,605],{"class":598}," OrbitControls",[552,607,608],{"class":557}," }",[552,610,611],{"class":591}," from",[552,613,614],{"class":557}," '",[552,616,617],{"class":578},"@tresjs/cientos",[552,619,620],{"class":557},"'\n",[552,622,624,626,628,631,633,635,637,640],{"class":554,"line":623},3,[552,625,592],{"class":591},[552,627,595],{"class":557},[552,629,630],{"class":598}," TresCanvas",[552,632,608],{"class":557},[552,634,611],{"class":591},[552,636,614],{"class":557},[552,638,639],{"class":578},"@tresjs/core",[552,641,620],{"class":557},[552,643,645,648,650],{"class":554,"line":644},4,[552,646,647],{"class":557},"\u003C/",[552,649,562],{"class":561},[552,651,584],{"class":557},[552,653,655],{"class":554,"line":654},5,[552,656,657],{"emptyLinePlaceholder":508},"\n",[552,659,661,663,666],{"class":554,"line":660},6,[552,662,558],{"class":557},[552,664,665],{"class":561},"template",[552,667,584],{"class":557},[552,669,671,674,677,680,682,684,687,689],{"class":554,"line":670},7,[552,672,673],{"class":557},"  \u003C",[552,675,676],{"class":561},"TresCanvas",[552,678,679],{"class":565}," clear-color",[552,681,572],{"class":557},[552,683,575],{"class":557},[552,685,686],{"class":578},"#222",[552,688,575],{"class":557},[552,690,584],{"class":557},[552,692,694,697,700],{"class":554,"line":693},8,[552,695,696],{"class":557},"    \u003C",[552,698,699],{"class":561},"TresPerspectiveCamera",[552,701,702],{"class":557}," />\n",[552,704,706,708,711],{"class":554,"line":705},9,[552,707,696],{"class":557},[552,709,710],{"class":561},"OrbitControls",[552,712,702],{"class":557},[552,714,716],{"class":554,"line":715},10,[552,717,657],{"emptyLinePlaceholder":508},[552,719,721,723,726,729,731,733,736,738],{"class":554,"line":720},11,[552,722,696],{"class":557},[552,724,725],{"class":561},"TresAxesHelper",[552,727,728],{"class":565}," :scale",[552,730,572],{"class":557},[552,732,575],{"class":557},[552,734,735],{"class":578},"2",[552,737,575],{"class":557},[552,739,702],{"class":557},[552,741,743],{"class":554,"line":742},12,[552,744,657],{"emptyLinePlaceholder":508},[552,746,748,750,752,755,758,761],{"class":747,"line":546},[554,588],[552,749,696],{"class":557},[552,751,41],{"class":561},[552,753,754],{"class":565}," top",[552,756,757],{"class":565}," right",[552,759,760],{"class":565}," back",[552,762,584],{"class":557},[552,764,766,769,772],{"class":554,"line":765},14,[552,767,768],{"class":557},"      \u003C",[552,770,771],{"class":561},"TresMesh",[552,773,584],{"class":557},[552,775,777,780,783],{"class":554,"line":776},15,[552,778,779],{"class":557},"        \u003C",[552,781,782],{"class":561},"TresBoxGeometry",[552,784,702],{"class":557},[552,786,788,790,793],{"class":554,"line":787},16,[552,789,779],{"class":557},[552,791,792],{"class":561},"TresMeshNormalMaterial",[552,794,702],{"class":557},[552,796,798,801,803],{"class":554,"line":797},17,[552,799,800],{"class":557},"      \u003C/",[552,802,771],{"class":561},[552,804,584],{"class":557},[552,806,808,811,813],{"class":807,"line":547},[554,588],[552,809,810],{"class":557},"    \u003C/",[552,812,41],{"class":561},[552,814,584],{"class":557},[552,816,818,821,823],{"class":554,"line":817},19,[552,819,820],{"class":557},"  \u003C/",[552,822,676],{"class":561},[552,824,584],{"class":557},[552,826,828,830,832],{"class":554,"line":827},20,[552,829,647],{"class":557},[552,831,665],{"class":561},[552,833,584],{"class":557},[537,835,837],{"id":836},"props","Props",[528,839,840],{},"All props are optional.",[842,843,844,860],"table",{},[845,846,847],"thead",{},[848,849,850,854,857],"tr",{},[851,852,853],"th",{},"Prop",[851,855,856],{},"Description",[851,858,859],{},"Default",[861,862,863,887,906,925,943,962,980,996,1012,1028,1044,1066,1078],"tbody",{},[848,864,865,871,882],{},[866,867,868],"td",{},[532,869,870],{},"top",[866,872,873,874,877,878,881],{},"If ",[532,875,876],{},"true",", aligns bounding box bottom to ",[532,879,880],{},"0"," on the y-axis",[866,883,884],{},[532,885,886],{},"false",[848,888,889,894,902],{},[866,890,891],{},[532,892,893],{},"bottom",[866,895,873,896,898,899,901],{},[532,897,876],{},", aligns bounding box top to ",[532,900,880],{}," on the y-axis.",[866,903,904],{},[532,905,886],{},[848,907,908,913,921],{},[866,909,910],{},[532,911,912],{},"left",[866,914,873,915,917,918,920],{},[532,916,876],{},", aligns bounding box right to ",[532,919,880],{}," on the x-axis.",[866,922,923],{},[532,924,886],{},[848,926,927,932,939],{},[866,928,929],{},[532,930,931],{},"right",[866,933,873,934,936,937,920],{},[532,935,876],{},", aligns bounding box left to ",[532,938,880],{},[866,940,941],{},[532,942,886],{},[848,944,945,950,958],{},[866,946,947],{},[532,948,949],{},"front",[866,951,873,952,954,955,957],{},[532,953,876],{},", aligns bounding box back to ",[532,956,880],{}," on the z-axis.",[866,959,960],{},[532,961,886],{},[848,963,964,969,976],{},[866,965,966],{},[532,967,968],{},"back",[866,970,873,971,973,974,957],{},[532,972,876],{},", aligns bounding box front to ",[532,975,880],{},[866,977,978],{},[532,979,886],{},[848,981,982,987,992],{},[866,983,984],{},[532,985,986],{},"disable",[866,988,873,989,991],{},[532,990,876],{},", disables alignment on all axes.",[866,993,994],{},[532,995,886],{},[848,997,998,1003,1008],{},[866,999,1000],{},[532,1001,1002],{},"disableX",[866,1004,873,1005,1007],{},[532,1006,876],{},", disables alignment on the x-axis.",[866,1009,1010],{},[532,1011,886],{},[848,1013,1014,1019,1024],{},[866,1015,1016],{},[532,1017,1018],{},"disableY",[866,1020,873,1021,1023],{},[532,1022,876],{},", disables alignment on the y-axis.",[866,1025,1026],{},[532,1027,886],{},[848,1029,1030,1035,1040],{},[866,1031,1032],{},[532,1033,1034],{},"disableZ",[866,1036,873,1037,1039],{},[532,1038,876],{},", disables alignment on the z-axis.",[866,1041,1042],{},[532,1043,886],{},[848,1045,1046,1051,1062],{},[866,1047,1048],{},[532,1049,1050],{},"precise",[866,1052,1053,1054,1061],{},"See ",[1055,1056,1060],"a",{"href":1057,"rel":1058},"https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject",[1059],"nofollow","Box3.setFromObject",".",[866,1063,1064],{},[532,1065,876],{},[848,1067,1068,1073,1076],{},[866,1069,1070],{},[532,1071,1072],{},"onAlign",[866,1074,1075],{},"Callback that fires when updating, after measurement.",[866,1077],{},[848,1079,1080,1084,1090],{},[866,1081,1082],{},[532,1083,534],{},[866,1085,1086,1087,1089],{},"If set, component will only update when ",[532,1088,534],{},"'s value changes. If unset, component will update every frame.",[866,1091,1092],{},[532,1093,1094],{},"undefined",[537,1096,1098],{"id":1097},"aligncallbackoptions","AlignCallbackOptions",[541,1100,1103],{"className":1101,"code":1102,"language":579,"meta":500,"style":500},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export interface AlignCallbackOptions {\n  /** The next parent above \u003CAlign /> */\n  parent: Object3D\n  /** The outmost container group of the \u003CAlign/> component */\n  container: Object3D\n  width: number\n  height: number\n  depth: number\n  boundingBox: Box3\n  boundingSphere: Sphere\n  center: Vector3\n  verticalAlignment: number\n  horizontalAlignment: number\n  depthAlignment: number\n}\n",[532,1104,1105,1120,1126,1137,1142,1151,1161,1170,1179,1189,1199,1209,1218,1227,1236],{"__ignoreMap":500},[552,1106,1107,1110,1113,1117],{"class":554,"line":501},[552,1108,1109],{"class":591},"export",[552,1111,1112],{"class":565}," interface",[552,1114,1116],{"class":1115},"sBMFI"," AlignCallbackOptions",[552,1118,1119],{"class":557}," {\n",[552,1121,1122],{"class":554,"line":502},[552,1123,1125],{"class":1124},"sHwdD","  /** The next parent above \u003CAlign /> */\n",[552,1127,1128,1131,1134],{"class":554,"line":623},[552,1129,1130],{"class":561},"  parent",[552,1132,1133],{"class":557},":",[552,1135,1136],{"class":1115}," Object3D\n",[552,1138,1139],{"class":554,"line":644},[552,1140,1141],{"class":1124},"  /** The outmost container group of the \u003CAlign/> component */\n",[552,1143,1144,1147,1149],{"class":554,"line":654},[552,1145,1146],{"class":561},"  container",[552,1148,1133],{"class":557},[552,1150,1136],{"class":1115},[552,1152,1153,1156,1158],{"class":554,"line":660},[552,1154,1155],{"class":561},"  width",[552,1157,1133],{"class":557},[552,1159,1160],{"class":1115}," number\n",[552,1162,1163,1166,1168],{"class":554,"line":670},[552,1164,1165],{"class":561},"  height",[552,1167,1133],{"class":557},[552,1169,1160],{"class":1115},[552,1171,1172,1175,1177],{"class":554,"line":693},[552,1173,1174],{"class":561},"  depth",[552,1176,1133],{"class":557},[552,1178,1160],{"class":1115},[552,1180,1181,1184,1186],{"class":554,"line":705},[552,1182,1183],{"class":561},"  boundingBox",[552,1185,1133],{"class":557},[552,1187,1188],{"class":1115}," Box3\n",[552,1190,1191,1194,1196],{"class":554,"line":715},[552,1192,1193],{"class":561},"  boundingSphere",[552,1195,1133],{"class":557},[552,1197,1198],{"class":1115}," Sphere\n",[552,1200,1201,1204,1206],{"class":554,"line":720},[552,1202,1203],{"class":561},"  center",[552,1205,1133],{"class":557},[552,1207,1208],{"class":1115}," Vector3\n",[552,1210,1211,1214,1216],{"class":554,"line":742},[552,1212,1213],{"class":561},"  verticalAlignment",[552,1215,1133],{"class":557},[552,1217,1160],{"class":1115},[552,1219,1220,1223,1225],{"class":554,"line":546},[552,1221,1222],{"class":561},"  horizontalAlignment",[552,1224,1133],{"class":557},[552,1226,1160],{"class":1115},[552,1228,1229,1232,1234],{"class":554,"line":765},[552,1230,1231],{"class":561},"  depthAlignment",[552,1233,1133],{"class":557},[552,1235,1160],{"class":1115},[552,1237,1238],{"class":554,"line":776},[552,1239,1240],{"class":557},"}\n",[1242,1243,1244],"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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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}",{"title":500,"searchDepth":501,"depth":502,"links":1246},[1247,1248,1249],{"id":539,"depth":502,"text":15},{"id":836,"depth":502,"text":837},{"id":1097,"depth":502,"text":1098},{},{"title":41,"description":515},"2TNilwT1BiWwam7y0leE_VBx46wcrMjjhvIXPvGWsNg",{"id":1254,"title":45,"body":1255,"description":1563,"extension":505,"links":506,"meta":1564,"navigation":508,"path":46,"seo":1565,"stem":47,"__hash__":1566},"docs/2.api/1.abstractions/billboard.md",{"type":493,"value":1256,"toc":1559},[1257,1262,1269,1271,1480,1482,1556],[522,1258,1259],{},[1260,1261],"abstractions-billboard",{},[528,1263,1264,1265,1268],{},"Adds a ",[532,1266,1267],{},"THREE.Group"," that always faces the camera.",[537,1270,15],{"id":539},[541,1272,1275],{"className":543,"code":1273,"highlights":1274,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { Billboard, Box, OrbitControls } from '@tresjs/cientos'\nimport { TresCanvas } from '@tresjs/core'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas clear-color=\"#333333\">\n    \u003COrbitControls />\n    \u003CTresPerspectiveCamera :position=\"[0, 0, 10]\" />\n    \u003CBillboard>\n      \u003CBox :scale=\"[0.5, 0.5, 0.001]\">\n        \u003CTresMeshNormalMaterial />\n      \u003C/Box>\n    \u003C/Billboard>\n  \u003C/TresCanvas>\n\u003C/template>\n\n",[502,715,765],[532,1276,1277,1297,1326,1344,1352,1356,1364,1383,1391,1411,1420,1439,1447,1455,1464,1472],{"__ignoreMap":500},[552,1278,1279,1281,1283,1285,1287,1289,1291,1293,1295],{"class":554,"line":501},[552,1280,558],{"class":557},[552,1282,562],{"class":561},[552,1284,566],{"class":565},[552,1286,569],{"class":565},[552,1288,572],{"class":557},[552,1290,575],{"class":557},[552,1292,579],{"class":578},[552,1294,575],{"class":557},[552,1296,584],{"class":557},[552,1298,1300,1302,1304,1307,1309,1312,1314,1316,1318,1320,1322,1324],{"class":1299,"line":502},[554,588],[552,1301,592],{"class":591},[552,1303,595],{"class":557},[552,1305,1306],{"class":598}," Billboard",[552,1308,602],{"class":557},[552,1310,1311],{"class":598}," Box",[552,1313,602],{"class":557},[552,1315,605],{"class":598},[552,1317,608],{"class":557},[552,1319,611],{"class":591},[552,1321,614],{"class":557},[552,1323,617],{"class":578},[552,1325,620],{"class":557},[552,1327,1328,1330,1332,1334,1336,1338,1340,1342],{"class":554,"line":623},[552,1329,592],{"class":591},[552,1331,595],{"class":557},[552,1333,630],{"class":598},[552,1335,608],{"class":557},[552,1337,611],{"class":591},[552,1339,614],{"class":557},[552,1341,639],{"class":578},[552,1343,620],{"class":557},[552,1345,1346,1348,1350],{"class":554,"line":644},[552,1347,647],{"class":557},[552,1349,562],{"class":561},[552,1351,584],{"class":557},[552,1353,1354],{"class":554,"line":654},[552,1355,657],{"emptyLinePlaceholder":508},[552,1357,1358,1360,1362],{"class":554,"line":660},[552,1359,558],{"class":557},[552,1361,665],{"class":561},[552,1363,584],{"class":557},[552,1365,1366,1368,1370,1372,1374,1376,1379,1381],{"class":554,"line":670},[552,1367,673],{"class":557},[552,1369,676],{"class":561},[552,1371,679],{"class":565},[552,1373,572],{"class":557},[552,1375,575],{"class":557},[552,1377,1378],{"class":578},"#333333",[552,1380,575],{"class":557},[552,1382,584],{"class":557},[552,1384,1385,1387,1389],{"class":554,"line":693},[552,1386,696],{"class":557},[552,1388,710],{"class":561},[552,1390,702],{"class":557},[552,1392,1393,1395,1397,1400,1402,1404,1407,1409],{"class":554,"line":705},[552,1394,696],{"class":557},[552,1396,699],{"class":561},[552,1398,1399],{"class":565}," :position",[552,1401,572],{"class":557},[552,1403,575],{"class":557},[552,1405,1406],{"class":578},"[0, 0, 10]",[552,1408,575],{"class":557},[552,1410,702],{"class":557},[552,1412,1414,1416,1418],{"class":1413,"line":715},[554,588],[552,1415,696],{"class":557},[552,1417,45],{"class":561},[552,1419,584],{"class":557},[552,1421,1422,1424,1426,1428,1430,1432,1435,1437],{"class":554,"line":720},[552,1423,768],{"class":557},[552,1425,209],{"class":561},[552,1427,728],{"class":565},[552,1429,572],{"class":557},[552,1431,575],{"class":557},[552,1433,1434],{"class":578},"[0.5, 0.5, 0.001]",[552,1436,575],{"class":557},[552,1438,584],{"class":557},[552,1440,1441,1443,1445],{"class":554,"line":742},[552,1442,779],{"class":557},[552,1444,792],{"class":561},[552,1446,702],{"class":557},[552,1448,1449,1451,1453],{"class":554,"line":546},[552,1450,800],{"class":557},[552,1452,209],{"class":561},[552,1454,584],{"class":557},[552,1456,1458,1460,1462],{"class":1457,"line":765},[554,588],[552,1459,810],{"class":557},[552,1461,45],{"class":561},[552,1463,584],{"class":557},[552,1465,1466,1468,1470],{"class":554,"line":776},[552,1467,820],{"class":557},[552,1469,676],{"class":561},[552,1471,584],{"class":557},[552,1473,1474,1476,1478],{"class":554,"line":787},[552,1475,647],{"class":557},[552,1477,665],{"class":561},[552,1479,584],{"class":557},[537,1481,837],{"id":836},[842,1483,1484,1494],{},[845,1485,1486],{},[848,1487,1488,1490,1492],{},[851,1489,853],{"align":912},[851,1491,856],{"align":912},[851,1493,859],{},[861,1495,1496,1514,1528,1542],{},[848,1497,1498,1503,1510],{},[866,1499,1500],{"align":912},[532,1501,1502],{},"autoUpdate",[866,1504,1505,1506,1509],{"align":912},"Whether the ",[532,1507,1508],{},"\u003CBillboard />"," should face the camera automatically on every frame.",[866,1511,1512],{},[532,1513,876],{},[848,1515,1516,1521,1524],{},[866,1517,1518],{"align":912},[532,1519,1520],{},"lockX",[866,1522,1523],{"align":912},"Whether to lock the x-axis.",[866,1525,1526],{},[532,1527,886],{},[848,1529,1530,1535,1538],{},[866,1531,1532],{"align":912},[532,1533,1534],{},"lockY",[866,1536,1537],{"align":912},"Whether to lock the y-axis.",[866,1539,1540],{},[532,1541,886],{},[848,1543,1544,1549,1552],{},[866,1545,1546],{"align":912},[532,1547,1548],{},"lockZ",[866,1550,1551],{"align":912},"Whether to lock the z-axis.",[866,1553,1554],{},[532,1555,886],{},[1242,1557,1558],{},"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 .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);}",{"title":500,"searchDepth":501,"depth":502,"links":1560},[1561,1562],{"id":539,"depth":502,"text":15},{"id":836,"depth":502,"text":837},"Make objects always face the camera automatically.",{},{"title":45,"description":1563},"wCDOC5MhR7Q22tA0BbCcbJXpmTRTkGj75EHC3nFIzjA",{"id":1568,"title":49,"body":1569,"description":2112,"extension":505,"links":506,"meta":2113,"navigation":508,"path":50,"seo":2114,"stem":51,"__hash__":2115},"docs/2.api/1.abstractions/camera-shake.md",{"type":493,"value":1570,"toc":2108},[1571,1576,1630,1632,1918,1957,1959,2106],[522,1572,1573],{},[1574,1575],"abstractions-camera-shake",{},[528,1577,1578,1581,1582,1586,1587,1591,1592,1595,1596,1586,1599,1602,1603,1606,1607,1586,1610,1586,1613,1616,1617,1620,1621,1061],{},[532,1579,1580],{},"\u003CCameraShake />"," is a component that adds ",[1583,1584,1585],"strong",{},"natural",", ",[1588,1589,1590],"em",{},"noise-driven motion"," to the ",[1583,1593,1594],{},"active camera",".\nIt offers ",[1583,1597,1598],{},"per-axis control",[1583,1600,1601],{},"adjustable intensity",", and ",[1588,1604,1605],{},"optional decay"," — perfect for ",[1588,1608,1609],{},"handheld feel",[1588,1611,1612],{},"footsteps",[1588,1614,1615],{},"impacts",", or ",[1588,1618,1619],{},"engine rumble"," — and is based on the ",[1055,1622,1625,1626,1629],{"href":1623,"rel":1624},"https://drei.docs.pmnd.rs/staging/camera-shake#camerashake",[1059],"Drei ",[532,1627,1628],{},"CameraShake"," component",[537,1631,15],{"id":539},[541,1633,1636],{"className":543,"code":1634,"highlights":1635,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { CameraShake, OrbitControls } from '@tresjs/cientos'\nimport { TresCanvas } from '@tresjs/core'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas clear-color=\"#222\">\n    \u003CTresPerspectiveCamera :position=\"[0, 2, 6]\" />\n    \u003COrbitControls make-default />\n\n    \u003CCameraShake :intensity=\"1\" :max-yaw=\"0.01\" :max-pitch=\"0.01\" :max-roll=\"0.01\" />\n      \u003CTresAxesHelper :scale=\"2\" />\n      \u003CTresMesh :position-y=\"0.5\">\n        \u003CTresBoxGeometry :args=\"[1, 1, 1]\" />\n        \u003CTresMeshNormalMaterial />\n      \u003C/TresMesh>\n  \u003C/TresCanvas>\n\u003C/template>\n",[502,720,787],[532,1637,1638,1658,1682,1700,1708,1712,1720,1738,1757,1768,1772,1827,1845,1865,1885,1893,1902,1910],{"__ignoreMap":500},[552,1639,1640,1642,1644,1646,1648,1650,1652,1654,1656],{"class":554,"line":501},[552,1641,558],{"class":557},[552,1643,562],{"class":561},[552,1645,566],{"class":565},[552,1647,569],{"class":565},[552,1649,572],{"class":557},[552,1651,575],{"class":557},[552,1653,579],{"class":578},[552,1655,575],{"class":557},[552,1657,584],{"class":557},[552,1659,1661,1663,1665,1668,1670,1672,1674,1676,1678,1680],{"class":1660,"line":502},[554,588],[552,1662,592],{"class":591},[552,1664,595],{"class":557},[552,1666,1667],{"class":598}," CameraShake",[552,1669,602],{"class":557},[552,1671,605],{"class":598},[552,1673,608],{"class":557},[552,1675,611],{"class":591},[552,1677,614],{"class":557},[552,1679,617],{"class":578},[552,1681,620],{"class":557},[552,1683,1684,1686,1688,1690,1692,1694,1696,1698],{"class":554,"line":623},[552,1685,592],{"class":591},[552,1687,595],{"class":557},[552,1689,630],{"class":598},[552,1691,608],{"class":557},[552,1693,611],{"class":591},[552,1695,614],{"class":557},[552,1697,639],{"class":578},[552,1699,620],{"class":557},[552,1701,1702,1704,1706],{"class":554,"line":644},[552,1703,647],{"class":557},[552,1705,562],{"class":561},[552,1707,584],{"class":557},[552,1709,1710],{"class":554,"line":654},[552,1711,657],{"emptyLinePlaceholder":508},[552,1713,1714,1716,1718],{"class":554,"line":660},[552,1715,558],{"class":557},[552,1717,665],{"class":561},[552,1719,584],{"class":557},[552,1721,1722,1724,1726,1728,1730,1732,1734,1736],{"class":554,"line":670},[552,1723,673],{"class":557},[552,1725,676],{"class":561},[552,1727,679],{"class":565},[552,1729,572],{"class":557},[552,1731,575],{"class":557},[552,1733,686],{"class":578},[552,1735,575],{"class":557},[552,1737,584],{"class":557},[552,1739,1740,1742,1744,1746,1748,1750,1753,1755],{"class":554,"line":693},[552,1741,696],{"class":557},[552,1743,699],{"class":561},[552,1745,1399],{"class":565},[552,1747,572],{"class":557},[552,1749,575],{"class":557},[552,1751,1752],{"class":578},"[0, 2, 6]",[552,1754,575],{"class":557},[552,1756,702],{"class":557},[552,1758,1759,1761,1763,1766],{"class":554,"line":705},[552,1760,696],{"class":557},[552,1762,710],{"class":561},[552,1764,1765],{"class":565}," make-default",[552,1767,702],{"class":557},[552,1769,1770],{"class":554,"line":715},[552,1771,657],{"emptyLinePlaceholder":508},[552,1773,1775,1777,1779,1782,1784,1786,1789,1791,1794,1796,1798,1801,1803,1806,1808,1810,1812,1814,1817,1819,1821,1823,1825],{"class":1774,"line":720},[554,588],[552,1776,696],{"class":557},[552,1778,1628],{"class":561},[552,1780,1781],{"class":565}," :intensity",[552,1783,572],{"class":557},[552,1785,575],{"class":557},[552,1787,1788],{"class":578},"1",[552,1790,575],{"class":557},[552,1792,1793],{"class":565}," :max-yaw",[552,1795,572],{"class":557},[552,1797,575],{"class":557},[552,1799,1800],{"class":578},"0.01",[552,1802,575],{"class":557},[552,1804,1805],{"class":565}," :max-pitch",[552,1807,572],{"class":557},[552,1809,575],{"class":557},[552,1811,1800],{"class":578},[552,1813,575],{"class":557},[552,1815,1816],{"class":565}," :max-roll",[552,1818,572],{"class":557},[552,1820,575],{"class":557},[552,1822,1800],{"class":578},[552,1824,575],{"class":557},[552,1826,702],{"class":557},[552,1828,1829,1831,1833,1835,1837,1839,1841,1843],{"class":554,"line":742},[552,1830,768],{"class":557},[552,1832,725],{"class":561},[552,1834,728],{"class":565},[552,1836,572],{"class":557},[552,1838,575],{"class":557},[552,1840,735],{"class":578},[552,1842,575],{"class":557},[552,1844,702],{"class":557},[552,1846,1847,1849,1851,1854,1856,1858,1861,1863],{"class":554,"line":546},[552,1848,768],{"class":557},[552,1850,771],{"class":561},[552,1852,1853],{"class":565}," :position-y",[552,1855,572],{"class":557},[552,1857,575],{"class":557},[552,1859,1860],{"class":578},"0.5",[552,1862,575],{"class":557},[552,1864,584],{"class":557},[552,1866,1867,1869,1871,1874,1876,1878,1881,1883],{"class":554,"line":765},[552,1868,779],{"class":557},[552,1870,782],{"class":561},[552,1872,1873],{"class":565}," :args",[552,1875,572],{"class":557},[552,1877,575],{"class":557},[552,1879,1880],{"class":578},"[1, 1, 1]",[552,1882,575],{"class":557},[552,1884,702],{"class":557},[552,1886,1887,1889,1891],{"class":554,"line":776},[552,1888,779],{"class":557},[552,1890,792],{"class":561},[552,1892,702],{"class":557},[552,1894,1896,1898,1900],{"class":1895,"line":787},[554,588],[552,1897,800],{"class":557},[552,1899,771],{"class":561},[552,1901,584],{"class":557},[552,1903,1904,1906,1908],{"class":554,"line":797},[552,1905,820],{"class":557},[552,1907,676],{"class":561},[552,1909,584],{"class":557},[552,1911,1912,1914,1916],{"class":554,"line":547},[552,1913,647],{"class":557},[552,1915,665],{"class":561},[552,1917,584],{"class":557},[1919,1920,1921,1942],"prose-note",{},[528,1922,1923,1925,1926,1931,1932,1935,1936,1941],{},[532,1924,1580],{}," is fully compatible with ",[1583,1927,1928],{},[532,1929,1930],{},"\u003COrbitControls />",".\nTo ensure it works ",[1588,1933,1934],{},"as expected",", make sure to add the ",[1583,1937,1938],{},[532,1939,1940],{},"make-default"," prop:",[541,1943,1945],{"className":543,"code":1944,"language":548,"meta":500,"style":500},"\u003COrbitControls make-default />\n",[532,1946,1947],{"__ignoreMap":500},[552,1948,1949,1951,1953,1955],{"class":554,"line":501},[552,1950,558],{"class":557},[552,1952,710],{"class":561},[552,1954,1765],{"class":565},[552,1956,702],{"class":557},[537,1958,837],{"id":836},[842,1960,1961,1971],{},[845,1962,1963],{},[848,1964,1965,1967,1969],{},[851,1966,853],{},[851,1968,856],{},[851,1970,859],{},[861,1972,1973,1987,2003,2021,2035,2049,2063,2078,2092],{},[848,1974,1975,1980,1983],{},[866,1976,1977],{},[532,1978,1979],{},"intensity",[866,1981,1982],{},"The intensity of the shake (0–1).",[866,1984,1985],{},[532,1986,1788],{},[848,1988,1989,1994,1999],{},[866,1990,1991],{},[532,1992,1993],{},"decay",[866,1995,873,1996,1998],{},[532,1997,876],{},", intensity decays over time.",[866,2000,2001],{},[532,2002,886],{},[848,2004,2005,2010,2016],{},[866,2006,2007],{},[532,2008,2009],{},"decayRate",[866,2011,2012,2013,2015],{},"How fast intensity changes when ",[532,2014,1993],{}," is enabled.",[866,2017,2018],{},[532,2019,2020],{},"0.65",[848,2022,2023,2028,2031],{},[866,2024,2025],{},[532,2026,2027],{},"maxYaw",[866,2029,2030],{},"Maximum yaw angle in radians.",[866,2032,2033],{},[532,2034,1800],{},[848,2036,2037,2042,2045],{},[866,2038,2039],{},[532,2040,2041],{},"maxPitch",[866,2043,2044],{},"Maximum pitch angle in radians.",[866,2046,2047],{},[532,2048,1800],{},[848,2050,2051,2056,2059],{},[866,2052,2053],{},[532,2054,2055],{},"maxRoll",[866,2057,2058],{},"Maximum roll angle in radians.",[866,2060,2061],{},[532,2062,1800],{},[848,2064,2065,2070,2073],{},[866,2066,2067],{},[532,2068,2069],{},"yawFrequency",[866,2071,2072],{},"Frequency of yaw oscillation.",[866,2074,2075],{},[532,2076,2077],{},"0.1",[848,2079,2080,2085,2088],{},[866,2081,2082],{},[532,2083,2084],{},"pitchFrequency",[866,2086,2087],{},"Frequency of pitch oscillation.",[866,2089,2090],{},[532,2091,2077],{},[848,2093,2094,2099,2102],{},[866,2095,2096],{},[532,2097,2098],{},"rollFrequency",[866,2100,2101],{},"Frequency of roll oscillation.",[866,2103,2104],{},[532,2105,2077],{},[1242,2107,1558],{},{"title":500,"searchDepth":501,"depth":502,"links":2109},[2110,2111],{"id":539,"depth":502,"text":15},{"id":836,"depth":502,"text":837},"Apply smooth camera shake to the active camera.",{},{"title":49,"description":2112},"_LkwoWvv_PX4M3TXVjPQu0NxYXzfoa26E2WQGUlWZPY",{"id":2117,"title":53,"body":2118,"description":7214,"extension":505,"links":506,"meta":7215,"navigation":508,"path":54,"seo":7216,"stem":55,"__hash__":7217},"docs/2.api/1.abstractions/decal.md",{"type":493,"value":2119,"toc":7179},[2120,2126,2208,2214,2216,2231,2686,2702,2706,2717,2880,2897,2900,2914,2969,2994,2998,3011,3016,3082,3089,3095,3112,3200,3205,3219,3294,3964,3969,4009,4022,4085,4088,4098,4184,4191,4211,4221,4224,4421,4433,4441,4456,4774,4778,4802,5165,5180,5200,5204,5220,5457,5463,5659,5665,5800,5809,5816,5872,5973,5978,6124,6129,6170,6174,6230,6234,6305,6309,6387,6394,6409,6450,6499,7176],[528,2121,2122,2125],{},[532,2123,2124],{},"\u003CDecal>"," projects a flat texture onto the surface of a parent mesh,\nconforming to its geometry. Multiple decals can stack on the same mesh\nwith explicit z-layering, the JSON layout round-trips losslessly, and\nthe entry-by-entry shape stays human-readable.",[2127,2128,2129,2141,2154,2168,2175,2186,2198],"ul",{},[2130,2131,2132,2133,2136,2137,2140],"li",{},"🎨 Drop-in ",[1583,2134,2135],{},"editor UI"," via ",[532,2138,2139],{},"\u003CDecalDebugUI>"," — placement, rotate / scale / snap, tint, flip, layers, undo / redo, import / export.",[2130,2142,2143,2144,2136,2147,2153],{},"🛠 ",[1583,2145,2146],{},"Programmatic API",[1055,2148,2150],{"href":2149},"#programmatic-api-usedecaleditor",[532,2151,2152],{},"useDecalEditor()"," for custom panels and automation.",[2130,2155,2156,2157,2160,2161,2164,2165,1061],{},"🖼️ ",[1583,2158,2159],{},"Texture palette"," — pass an array of ",[532,2162,2163],{},"Texture"," to ",[532,2166,2167],{},":map",[2130,2169,2170,2171,2174],{},"🧩 ",[1583,2172,2173],{},"Custom material"," — override the default via the slot.",[2130,2176,2177,2178,2181,2182,2185],{},"💾 ",[1583,2179,2180],{},"Lossless JSON"," — ",[532,2183,2184],{},"v-model:data"," round-trips to plain JSON.",[2130,2187,2188,2189,2192,2193,2197],{},"⚡ ",[1583,2190,2191],{},"BVH-accelerated"," — auto-detected via ",[1055,2194,2195],{"href":324},[532,2196,323],{},"; 10–100× faster on dense meshes.",[2130,2199,2200,2201,2181,2204,2207],{},"📚 ",[1583,2202,2203],{},"Per-mesh stacking",[532,2205,2206],{},"zIndex"," with automatic polygon-offset.",[2209,2210,2211],"scene-wrapper",{},[2212,2213],"abstractions-decal",{},[537,2215,15],{"id":539},[528,2217,2218,2219,2221,2222,2225,2226,2228,2229,1061],{},"The minimal setup is a ",[532,2220,2124],{}," placed as a child of any ",[532,2223,2224],{},"\u003CTresMesh>",",\nwith a JSON list of stamped decals bound via ",[532,2227,2184],{}," and one or\nmore textures via ",[532,2230,2167],{},[541,2232,2234],{"className":543,"code":2233,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { Decal, OrbitControls, useTexture } from '@tresjs/cientos'\nimport { TresCanvas } from '@tresjs/core'\nimport { reactive } from 'vue'\n\nconst { state: texture } = useTexture('/textures/logo.png')\n\nconst decals = reactive([\n  {\n    id: 'logo-1',\n    position: [0, 0, 0.5],\n    orientation: [0, 0, 0],\n    size: [0.75, 0.17, 1],\n    zIndex: 0,\n    map: 'logo.png',\n  },\n])\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas>\n    \u003CTresPerspectiveCamera :position=\"[2, 2, 3]\" />\n    \u003COrbitControls />\n    \u003CTresMesh>\n      \u003CTresBoxGeometry />\n      \u003CTresMeshStandardMaterial color=\"white\" />\n      \u003CDecal v-if=\"texture\" v-model:data=\"decals\" :map=\"texture\" />\n    \u003C/TresMesh>\n  \u003C/TresCanvas>\n\u003C/template>\n",[532,2235,2236,2256,2284,2302,2321,2325,2363,2367,2381,2386,2403,2431,2454,2480,2491,2507,2512,2517,2525,2529,2537,2546,2566,2575,2584,2593,2615,2659,2668,2677],{"__ignoreMap":500},[552,2237,2238,2240,2242,2244,2246,2248,2250,2252,2254],{"class":554,"line":501},[552,2239,558],{"class":557},[552,2241,562],{"class":561},[552,2243,566],{"class":565},[552,2245,569],{"class":565},[552,2247,572],{"class":557},[552,2249,575],{"class":557},[552,2251,579],{"class":578},[552,2253,575],{"class":557},[552,2255,584],{"class":557},[552,2257,2258,2260,2262,2265,2267,2269,2271,2274,2276,2278,2280,2282],{"class":554,"line":502},[552,2259,592],{"class":591},[552,2261,595],{"class":557},[552,2263,2264],{"class":598}," Decal",[552,2266,602],{"class":557},[552,2268,605],{"class":598},[552,2270,602],{"class":557},[552,2272,2273],{"class":598}," useTexture",[552,2275,608],{"class":557},[552,2277,611],{"class":591},[552,2279,614],{"class":557},[552,2281,617],{"class":578},[552,2283,620],{"class":557},[552,2285,2286,2288,2290,2292,2294,2296,2298,2300],{"class":554,"line":623},[552,2287,592],{"class":591},[552,2289,595],{"class":557},[552,2291,630],{"class":598},[552,2293,608],{"class":557},[552,2295,611],{"class":591},[552,2297,614],{"class":557},[552,2299,639],{"class":578},[552,2301,620],{"class":557},[552,2303,2304,2306,2308,2311,2313,2315,2317,2319],{"class":554,"line":644},[552,2305,592],{"class":591},[552,2307,595],{"class":557},[552,2309,2310],{"class":598}," reactive",[552,2312,608],{"class":557},[552,2314,611],{"class":591},[552,2316,614],{"class":557},[552,2318,548],{"class":578},[552,2320,620],{"class":557},[552,2322,2323],{"class":554,"line":654},[552,2324,657],{"emptyLinePlaceholder":508},[552,2326,2327,2330,2332,2335,2337,2340,2343,2346,2349,2352,2355,2358,2360],{"class":554,"line":660},[552,2328,2329],{"class":565},"const",[552,2331,595],{"class":557},[552,2333,2334],{"class":561}," state",[552,2336,1133],{"class":557},[552,2338,2339],{"class":598}," texture ",[552,2341,2342],{"class":557},"}",[552,2344,2345],{"class":557}," =",[552,2347,2273],{"class":2348},"s2Zo4",[552,2350,2351],{"class":598},"(",[552,2353,2354],{"class":557},"'",[552,2356,2357],{"class":578},"/textures/logo.png",[552,2359,2354],{"class":557},[552,2361,2362],{"class":598},")\n",[552,2364,2365],{"class":554,"line":670},[552,2366,657],{"emptyLinePlaceholder":508},[552,2368,2369,2371,2374,2376,2378],{"class":554,"line":693},[552,2370,2329],{"class":565},[552,2372,2373],{"class":598}," decals ",[552,2375,572],{"class":557},[552,2377,2310],{"class":2348},[552,2379,2380],{"class":598},"([\n",[552,2382,2383],{"class":554,"line":705},[552,2384,2385],{"class":557},"  {\n",[552,2387,2388,2391,2393,2395,2398,2400],{"class":554,"line":715},[552,2389,2390],{"class":561},"    id",[552,2392,1133],{"class":557},[552,2394,614],{"class":557},[552,2396,2397],{"class":578},"logo-1",[552,2399,2354],{"class":557},[552,2401,2402],{"class":557},",\n",[552,2404,2405,2408,2410,2413,2416,2418,2421,2423,2426,2429],{"class":554,"line":720},[552,2406,2407],{"class":561},"    position",[552,2409,1133],{"class":557},[552,2411,2412],{"class":598}," [",[552,2414,880],{"class":2415},"sbssI",[552,2417,602],{"class":557},[552,2419,2420],{"class":2415}," 0",[552,2422,602],{"class":557},[552,2424,2425],{"class":2415}," 0.5",[552,2427,2428],{"class":598},"]",[552,2430,2402],{"class":557},[552,2432,2433,2436,2438,2440,2442,2444,2446,2448,2450,2452],{"class":554,"line":742},[552,2434,2435],{"class":561},"    orientation",[552,2437,1133],{"class":557},[552,2439,2412],{"class":598},[552,2441,880],{"class":2415},[552,2443,602],{"class":557},[552,2445,2420],{"class":2415},[552,2447,602],{"class":557},[552,2449,2420],{"class":2415},[552,2451,2428],{"class":598},[552,2453,2402],{"class":557},[552,2455,2456,2459,2461,2463,2466,2468,2471,2473,2476,2478],{"class":554,"line":546},[552,2457,2458],{"class":561},"    size",[552,2460,1133],{"class":557},[552,2462,2412],{"class":598},[552,2464,2465],{"class":2415},"0.75",[552,2467,602],{"class":557},[552,2469,2470],{"class":2415}," 0.17",[552,2472,602],{"class":557},[552,2474,2475],{"class":2415}," 1",[552,2477,2428],{"class":598},[552,2479,2402],{"class":557},[552,2481,2482,2485,2487,2489],{"class":554,"line":765},[552,2483,2484],{"class":561},"    zIndex",[552,2486,1133],{"class":557},[552,2488,2420],{"class":2415},[552,2490,2402],{"class":557},[552,2492,2493,2496,2498,2500,2503,2505],{"class":554,"line":776},[552,2494,2495],{"class":561},"    map",[552,2497,1133],{"class":557},[552,2499,614],{"class":557},[552,2501,2502],{"class":578},"logo.png",[552,2504,2354],{"class":557},[552,2506,2402],{"class":557},[552,2508,2509],{"class":554,"line":787},[552,2510,2511],{"class":557},"  },\n",[552,2513,2514],{"class":554,"line":797},[552,2515,2516],{"class":598},"])\n",[552,2518,2519,2521,2523],{"class":554,"line":547},[552,2520,647],{"class":557},[552,2522,562],{"class":561},[552,2524,584],{"class":557},[552,2526,2527],{"class":554,"line":817},[552,2528,657],{"emptyLinePlaceholder":508},[552,2530,2531,2533,2535],{"class":554,"line":827},[552,2532,558],{"class":557},[552,2534,665],{"class":561},[552,2536,584],{"class":557},[552,2538,2540,2542,2544],{"class":554,"line":2539},21,[552,2541,673],{"class":557},[552,2543,676],{"class":561},[552,2545,584],{"class":557},[552,2547,2549,2551,2553,2555,2557,2559,2562,2564],{"class":554,"line":2548},22,[552,2550,696],{"class":557},[552,2552,699],{"class":561},[552,2554,1399],{"class":565},[552,2556,572],{"class":557},[552,2558,575],{"class":557},[552,2560,2561],{"class":578},"[2, 2, 3]",[552,2563,575],{"class":557},[552,2565,702],{"class":557},[552,2567,2569,2571,2573],{"class":554,"line":2568},23,[552,2570,696],{"class":557},[552,2572,710],{"class":561},[552,2574,702],{"class":557},[552,2576,2578,2580,2582],{"class":554,"line":2577},24,[552,2579,696],{"class":557},[552,2581,771],{"class":561},[552,2583,584],{"class":557},[552,2585,2587,2589,2591],{"class":554,"line":2586},25,[552,2588,768],{"class":557},[552,2590,782],{"class":561},[552,2592,702],{"class":557},[552,2594,2596,2598,2601,2604,2606,2608,2611,2613],{"class":554,"line":2595},26,[552,2597,768],{"class":557},[552,2599,2600],{"class":561},"TresMeshStandardMaterial",[552,2602,2603],{"class":565}," color",[552,2605,572],{"class":557},[552,2607,575],{"class":557},[552,2609,2610],{"class":578},"white",[552,2612,575],{"class":557},[552,2614,702],{"class":557},[552,2616,2618,2620,2622,2625,2627,2629,2632,2634,2637,2639,2641,2644,2646,2649,2651,2653,2655,2657],{"class":554,"line":2617},27,[552,2619,768],{"class":557},[552,2621,53],{"class":561},[552,2623,2624],{"class":565}," v-if",[552,2626,572],{"class":557},[552,2628,575],{"class":557},[552,2630,2631],{"class":578},"texture",[552,2633,575],{"class":557},[552,2635,2636],{"class":565}," v-model:data",[552,2638,572],{"class":557},[552,2640,575],{"class":557},[552,2642,2643],{"class":578},"decals",[552,2645,575],{"class":557},[552,2647,2648],{"class":565}," :map",[552,2650,572],{"class":557},[552,2652,575],{"class":557},[552,2654,2631],{"class":578},[552,2656,575],{"class":557},[552,2658,702],{"class":557},[552,2660,2662,2664,2666],{"class":554,"line":2661},28,[552,2663,810],{"class":557},[552,2665,771],{"class":561},[552,2667,584],{"class":557},[552,2669,2671,2673,2675],{"class":554,"line":2670},29,[552,2672,820],{"class":557},[552,2674,676],{"class":561},[552,2676,584],{"class":557},[552,2678,2680,2682,2684],{"class":554,"line":2679},30,[552,2681,647],{"class":557},[552,2683,665],{"class":561},[552,2685,584],{"class":557},[1919,2687,2688],{},[528,2689,2690,2691,2693,2694,2697,2698,2701],{},"The ",[532,2692,2184],{}," array is the ",[1583,2695,2696],{},"single source of truth"," — every\ndecal you can see lives in it. It serializes to plain JSON so you can\nsave / load it from a backend, localStorage, or a ",[532,2699,2700],{},".json"," file.",[537,2703,2705],{"id":2704},"multiple-textures-palette","Multiple textures (palette)",[528,2707,2708,2709,2711,2712,2716],{},"Pass an array to ",[532,2710,2167],{}," to give users a palette of textures to pick\nfrom. The array returned by ",[1055,2713,2714],{"href":146},[532,2715,145],{},"\nplugs in directly:",[541,2718,2720],{"className":543,"code":2719,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { Decal, useTextures } from '@tresjs/cientos'\n\nconst { textures } = useTextures([\n  '/textures/logo.png',\n  '/textures/badge.png',\n  '/textures/sticker.png',\n])\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CDecal v-model:data=\"decals\" :map=\"textures\" />\n\u003C/template>\n",[532,2721,2722,2742,2765,2769,2786,2797,2808,2819,2823,2831,2835,2843,2872],{"__ignoreMap":500},[552,2723,2724,2726,2728,2730,2732,2734,2736,2738,2740],{"class":554,"line":501},[552,2725,558],{"class":557},[552,2727,562],{"class":561},[552,2729,566],{"class":565},[552,2731,569],{"class":565},[552,2733,572],{"class":557},[552,2735,575],{"class":557},[552,2737,579],{"class":578},[552,2739,575],{"class":557},[552,2741,584],{"class":557},[552,2743,2744,2746,2748,2750,2752,2755,2757,2759,2761,2763],{"class":554,"line":502},[552,2745,592],{"class":591},[552,2747,595],{"class":557},[552,2749,2264],{"class":598},[552,2751,602],{"class":557},[552,2753,2754],{"class":598}," useTextures",[552,2756,608],{"class":557},[552,2758,611],{"class":591},[552,2760,614],{"class":557},[552,2762,617],{"class":578},[552,2764,620],{"class":557},[552,2766,2767],{"class":554,"line":623},[552,2768,657],{"emptyLinePlaceholder":508},[552,2770,2771,2773,2775,2778,2780,2782,2784],{"class":554,"line":644},[552,2772,2329],{"class":565},[552,2774,595],{"class":557},[552,2776,2777],{"class":598}," textures ",[552,2779,2342],{"class":557},[552,2781,2345],{"class":557},[552,2783,2754],{"class":2348},[552,2785,2380],{"class":598},[552,2787,2788,2791,2793,2795],{"class":554,"line":654},[552,2789,2790],{"class":557},"  '",[552,2792,2357],{"class":578},[552,2794,2354],{"class":557},[552,2796,2402],{"class":557},[552,2798,2799,2801,2804,2806],{"class":554,"line":660},[552,2800,2790],{"class":557},[552,2802,2803],{"class":578},"/textures/badge.png",[552,2805,2354],{"class":557},[552,2807,2402],{"class":557},[552,2809,2810,2812,2815,2817],{"class":554,"line":670},[552,2811,2790],{"class":557},[552,2813,2814],{"class":578},"/textures/sticker.png",[552,2816,2354],{"class":557},[552,2818,2402],{"class":557},[552,2820,2821],{"class":554,"line":693},[552,2822,2516],{"class":598},[552,2824,2825,2827,2829],{"class":554,"line":705},[552,2826,647],{"class":557},[552,2828,562],{"class":561},[552,2830,584],{"class":557},[552,2832,2833],{"class":554,"line":715},[552,2834,657],{"emptyLinePlaceholder":508},[552,2836,2837,2839,2841],{"class":554,"line":720},[552,2838,558],{"class":557},[552,2840,665],{"class":561},[552,2842,584],{"class":557},[552,2844,2845,2847,2849,2851,2853,2855,2857,2859,2861,2863,2865,2868,2870],{"class":554,"line":742},[552,2846,673],{"class":557},[552,2848,53],{"class":561},[552,2850,2636],{"class":565},[552,2852,572],{"class":557},[552,2854,575],{"class":557},[552,2856,2643],{"class":578},[552,2858,575],{"class":557},[552,2860,2648],{"class":565},[552,2862,572],{"class":557},[552,2864,575],{"class":557},[552,2866,2867],{"class":578},"textures",[552,2869,575],{"class":557},[552,2871,702],{"class":557},[552,2873,2874,2876,2878],{"class":554,"line":546},[552,2875,647],{"class":557},[552,2877,665],{"class":561},[552,2879,584],{"class":557},[528,2881,2882,2883,2181,2886,2888,2889,2892,2893,2896],{},"Each entry references its texture by ",[532,2884,2885],{},"name",[532,2887,2124],{}," auto-fills\n",[532,2890,2891],{},"texture.name"," from the URL filename when missing, so JSON ",[532,2894,2895],{},"map","\nfields round-trip cleanly.",[537,2898,2173],{"id":2899},"custom-material",[528,2901,2902,2903,2906,2907,2402,2910,2913],{},"The default material is ",[532,2904,2905],{},"MeshBasicMaterial",". Override it via the slot\nto plug in any Three.js material — ",[532,2908,2909],{},"MeshStandardMaterial",[532,2911,2912],{},"MeshPhysicalMaterial",", or a custom shader.",[541,2915,2917],{"className":543,"code":2916,"language":548,"meta":500,"style":500},"\u003CDecal v-model:data=\"decals\" :map=\"texture\">\n  \u003CTresMeshStandardMaterial :transparent=\"true\" :polygon-offset=\"true\" />\n\u003C/Decal>\n",[532,2918,2919,2956,2961],{"__ignoreMap":500},[552,2920,2921,2923,2925,2928,2930,2933,2935,2937,2939,2941,2944,2946,2948,2950,2952,2954],{"class":554,"line":501},[552,2922,558],{"class":557},[552,2924,53],{"class":561},[552,2926,2927],{"class":565}," v-model",[552,2929,1133],{"class":557},[552,2931,2932],{"class":565},"data",[552,2934,572],{"class":557},[552,2936,575],{"class":557},[552,2938,2643],{"class":598},[552,2940,575],{"class":557},[552,2942,2943],{"class":557}," :",[552,2945,2895],{"class":565},[552,2947,572],{"class":557},[552,2949,575],{"class":557},[552,2951,2631],{"class":598},[552,2953,575],{"class":557},[552,2955,584],{"class":557},[552,2957,2958],{"class":554,"line":502},[552,2959,2960],{"class":598},"  \u003CTresMeshStandardMaterial :transparent=\"true\" :polygon-offset=\"true\" />\n",[552,2962,2963,2965,2967],{"class":554,"line":623},[552,2964,647],{"class":557},[552,2966,53],{"class":561},[552,2968,584],{"class":557},[1919,2970,2971],{},[528,2972,2973,2974,2977,2978,2981,2982,2977,2985,2988,2989,2402,2991,2993],{},"Keep ",[532,2975,2976],{},"transparent: true"," and ",[532,2979,2980],{},"polygonOffset: true"," on any custom\nmaterial, otherwise stacking and alpha handling won't work as expected.\nColor / opacity tint from the editor only applies to materials\nexposing ",[532,2983,2984],{},".color",[532,2986,2987],{},".opacity"," (",[532,2990,2905],{},[532,2992,2909],{},", …) — bespoke shader materials are skipped\nsilently.",[537,2995,2997],{"id":2996},"stacking-decals-z-layering","Stacking decals (z-layering)",[528,2999,3000,3001,3003,3004,3007,3008,1061],{},"Each decal has a ",[532,3002,2206],{}," controlling its draw order on the parent\nmesh. Higher = on top. The component handles z-fighting via\n",[532,3005,3006],{},"polygonOffset"," automatically — but if you stack many decals near\nparallel surfaces and still see flicker, raise ",[532,3009,3010],{},"layerGap",[2209,3012,3013],{},[3014,3015],"abstractions-decal-stacking",{},[541,3017,3019],{"className":543,"code":3018,"language":548,"meta":500,"style":500},"\u003CDecal\n  v-model:data=\"decals\"\n  :map=\"textures\"\n  :layer-gap=\"0.002\"\n/>\n",[532,3020,3021,3028,3046,3061,3077],{"__ignoreMap":500},[552,3022,3023,3025],{"class":554,"line":501},[552,3024,558],{"class":557},[552,3026,3027],{"class":561},"Decal\n",[552,3029,3030,3033,3035,3037,3039,3041,3043],{"class":554,"line":502},[552,3031,3032],{"class":565},"  v-model",[552,3034,1133],{"class":557},[552,3036,2932],{"class":565},[552,3038,572],{"class":557},[552,3040,575],{"class":557},[552,3042,2643],{"class":598},[552,3044,3045],{"class":557},"\"\n",[552,3047,3048,3051,3053,3055,3057,3059],{"class":554,"line":623},[552,3049,3050],{"class":557},"  :",[552,3052,2895],{"class":565},[552,3054,572],{"class":557},[552,3056,575],{"class":557},[552,3058,2867],{"class":598},[552,3060,3045],{"class":557},[552,3062,3063,3065,3068,3070,3072,3075],{"class":554,"line":644},[552,3064,3050],{"class":557},[552,3066,3067],{"class":565},"layer-gap",[552,3069,572],{"class":557},[552,3071,575],{"class":557},[552,3073,3074],{"class":2415},"0.002",[552,3076,3045],{"class":557},[552,3078,3079],{"class":554,"line":654},[552,3080,3081],{"class":598},"/>\n",[528,3083,3084,3085,3088],{},"zIndex stacks are ",[1583,3086,3087],{},"per-mesh"," — two decals on different meshes never\ncompete for the same layer slot.",[537,3090,3092,3093],{"id":3091},"editable-mode-decaldebugui","Editable mode + ",[532,3094,2139],{},[528,3096,3097,3098,3101,3102,3104,3105,3108,3109,1061],{},"Add the ",[532,3099,3100],{},"editable"," prop to mount the interactive editor, then pair it\nwith ",[532,3103,2139],{}," — a full in-canvas editor that ships as a drop-in\nHTML overlay sitting ",[1583,3106,3107],{},"outside"," ",[532,3110,3111],{},"\u003CTresCanvas>",[3113,3114,3115,3129,3150],"prose-warning",{},[528,3116,3117,3119,3120,3123,3124,3126,3127,1061],{},[532,3118,2139],{}," needs its stylesheet — import it ",[1583,3121,3122],{},"once"," at your app\nentry. ",[532,3125,2124],{}," itself is style-less, so this is only needed when you\nmount ",[532,3128,2139],{},[541,3130,3132],{"className":1101,"code":3131,"language":579,"meta":500,"style":500},"// Vite / Vue — in main.ts\nimport '@tresjs/cientos/styles.css'\n",[532,3133,3134,3139],{"__ignoreMap":500},[552,3135,3136],{"class":554,"line":501},[552,3137,3138],{"class":1124},"// Vite / Vue — in main.ts\n",[552,3140,3141,3143,3145,3148],{"class":554,"line":502},[552,3142,592],{"class":591},[552,3144,614],{"class":557},[552,3146,3147],{"class":578},"@tresjs/cientos/styles.css",[552,3149,620],{"class":557},[541,3151,3153],{"className":1101,"code":3152,"language":579,"meta":500,"style":500},"// Nuxt — in nuxt.config.ts\nexport default defineNuxtConfig({\n  css: ['@tresjs/cientos/styles.css'],\n})\n",[532,3154,3155,3160,3175,3194],{"__ignoreMap":500},[552,3156,3157],{"class":554,"line":501},[552,3158,3159],{"class":1124},"// Nuxt — in nuxt.config.ts\n",[552,3161,3162,3164,3167,3170,3172],{"class":554,"line":502},[552,3163,1109],{"class":591},[552,3165,3166],{"class":591}," default",[552,3168,3169],{"class":2348}," defineNuxtConfig",[552,3171,2351],{"class":598},[552,3173,3174],{"class":557},"{\n",[552,3176,3177,3180,3182,3184,3186,3188,3190,3192],{"class":554,"line":623},[552,3178,3179],{"class":561},"  css",[552,3181,1133],{"class":557},[552,3183,2412],{"class":598},[552,3185,2354],{"class":557},[552,3187,3147],{"class":578},[552,3189,2354],{"class":557},[552,3191,2428],{"class":598},[552,3193,2402],{"class":557},[552,3195,3196,3198],{"class":554,"line":644},[552,3197,2342],{"class":557},[552,3199,2362],{"class":598},[2209,3201,3202],{},[3203,3204],"abstractions-decal-editable",{},[528,3206,3207,3208,3211,3212,3215,3216,1061],{},"Three panels: a floating ",[1583,3209,3210],{},"handle"," anchored to the editing decal, a\nbottom ",[1583,3213,3214],{},"dock"," (texture picker + edit tools), a right-side ",[1583,3217,3218],{},"layer\npanel",[2127,3220,3221,3231,3236,3242,3255,3260,3265,3271,3277,3283,3289],{},[2130,3222,3223,3226,3227,3230],{},[1583,3224,3225],{},"Floating handle"," (rotate + scale + snap + live ",[532,3228,3229],{},"scale% · rotation° · L\u003Cn>"," badge)",[2130,3232,3233],{},[1583,3234,3235],{},"Color tint & opacity",[2130,3237,3238,3241],{},[1583,3239,3240],{},"Mirror"," (flip X / flip Y)",[2130,3243,3244,2988,3247,3250,3251,3254],{},[1583,3245,3246],{},"Layer controls",[532,3248,3249],{},"L+"," / ",[532,3252,3253],{},"L-",")",[2130,3256,3257],{},[1583,3258,3259],{},"Visibility toggle",[2130,3261,3262],{},[1583,3263,3264],{},"Per-row remove",[2130,3266,3267,3270],{},[1583,3268,3269],{},"Layer panel"," (mesh-grouped, drag-to-reorder)",[2130,3272,3273,3276],{},[1583,3274,3275],{},"Texture picker"," (drag or click-to-arm)",[2130,3278,3279,3282],{},[1583,3280,3281],{},"Mode badge"," (placing / editing status)",[2130,3284,3285,3288],{},[1583,3286,3287],{},"Undo / Redo"," buttons",[2130,3290,3291,3288],{},[1583,3292,3293],{},"Import / Export",[541,3295,3297],{"className":543,"code":3296,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { Decal, DecalDebugUI, OrbitControls, useTextures } from '@tresjs/cientos'\nimport type { DecalEditorSession, DecalJsonEntry } from '@tresjs/cientos'\nimport { TresCanvas } from '@tresjs/core'\nimport { computed, reactive, shallowRef } from 'vue'\n\nconst { textures } = useTextures(['/textures/a.png', '/textures/b.png'])\n\nconst layout = reactive\u003CRecord\u003Cstring, DecalJsonEntry[]>>({\n  cube: [],\n  sphere: [],\n})\n\nconst decalRef = shallowRef\u003C{ editor: DecalEditorSession } | null>(null)\nconst session = computed(() => decalRef.value?.editor ?? null)\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CDecalDebugUI :session=\"session\" :textures=\"textures ?? []\" :data=\"layout\" />\n\n  \u003CTresCanvas>\n    \u003CTresPerspectiveCamera :position=\"[2, 2, 4]\" />\n    \u003COrbitControls />\n\n    \u003CTresMesh name=\"cube\" :position=\"[-1.2, 0, 0]\">\n      \u003CTresBoxGeometry />\n      \u003CTresMeshStandardMaterial color=\"white\" />\n      \u003CDecal ref=\"decalRef\" v-model:data=\"layout.cube\" :map=\"textures\" editable />\n    \u003C/TresMesh>\n\n    \u003CTresMesh name=\"sphere\" :position=\"[1.2, 0, 0]\">\n      \u003CTresSphereGeometry :args=\"[0.7]\" />\n      \u003CTresMeshStandardMaterial color=\"white\" />\n      \u003CDecal v-model:data=\"layout.sphere\" :map=\"textures\" editable />\n    \u003C/TresMesh>\n  \u003C/TresCanvas>\n\u003C/template>\n",[532,3298,3299,3319,3350,3377,3395,3423,3427,3462,3466,3501,3513,3524,3530,3534,3573,3613,3621,3625,3633,3678,3682,3690,3709,3717,3721,3752,3760,3778,3822,3830,3834,3865,3886,3905,3937,3946,3955],{"__ignoreMap":500},[552,3300,3301,3303,3305,3307,3309,3311,3313,3315,3317],{"class":554,"line":501},[552,3302,558],{"class":557},[552,3304,562],{"class":561},[552,3306,566],{"class":565},[552,3308,569],{"class":565},[552,3310,572],{"class":557},[552,3312,575],{"class":557},[552,3314,579],{"class":578},[552,3316,575],{"class":557},[552,3318,584],{"class":557},[552,3320,3321,3323,3325,3327,3329,3332,3334,3336,3338,3340,3342,3344,3346,3348],{"class":554,"line":502},[552,3322,592],{"class":591},[552,3324,595],{"class":557},[552,3326,2264],{"class":598},[552,3328,602],{"class":557},[552,3330,3331],{"class":598}," DecalDebugUI",[552,3333,602],{"class":557},[552,3335,605],{"class":598},[552,3337,602],{"class":557},[552,3339,2754],{"class":598},[552,3341,608],{"class":557},[552,3343,611],{"class":591},[552,3345,614],{"class":557},[552,3347,617],{"class":578},[552,3349,620],{"class":557},[552,3351,3352,3354,3357,3359,3362,3364,3367,3369,3371,3373,3375],{"class":554,"line":623},[552,3353,592],{"class":591},[552,3355,3356],{"class":591}," type",[552,3358,595],{"class":557},[552,3360,3361],{"class":598}," DecalEditorSession",[552,3363,602],{"class":557},[552,3365,3366],{"class":598}," DecalJsonEntry",[552,3368,608],{"class":557},[552,3370,611],{"class":591},[552,3372,614],{"class":557},[552,3374,617],{"class":578},[552,3376,620],{"class":557},[552,3378,3379,3381,3383,3385,3387,3389,3391,3393],{"class":554,"line":644},[552,3380,592],{"class":591},[552,3382,595],{"class":557},[552,3384,630],{"class":598},[552,3386,608],{"class":557},[552,3388,611],{"class":591},[552,3390,614],{"class":557},[552,3392,639],{"class":578},[552,3394,620],{"class":557},[552,3396,3397,3399,3401,3404,3406,3408,3410,3413,3415,3417,3419,3421],{"class":554,"line":654},[552,3398,592],{"class":591},[552,3400,595],{"class":557},[552,3402,3403],{"class":598}," computed",[552,3405,602],{"class":557},[552,3407,2310],{"class":598},[552,3409,602],{"class":557},[552,3411,3412],{"class":598}," shallowRef",[552,3414,608],{"class":557},[552,3416,611],{"class":591},[552,3418,614],{"class":557},[552,3420,548],{"class":578},[552,3422,620],{"class":557},[552,3424,3425],{"class":554,"line":660},[552,3426,657],{"emptyLinePlaceholder":508},[552,3428,3429,3431,3433,3435,3437,3439,3441,3444,3446,3449,3451,3453,3455,3458,3460],{"class":554,"line":670},[552,3430,2329],{"class":565},[552,3432,595],{"class":557},[552,3434,2777],{"class":598},[552,3436,2342],{"class":557},[552,3438,2345],{"class":557},[552,3440,2754],{"class":2348},[552,3442,3443],{"class":598},"([",[552,3445,2354],{"class":557},[552,3447,3448],{"class":578},"/textures/a.png",[552,3450,2354],{"class":557},[552,3452,602],{"class":557},[552,3454,614],{"class":557},[552,3456,3457],{"class":578},"/textures/b.png",[552,3459,2354],{"class":557},[552,3461,2516],{"class":598},[552,3463,3464],{"class":554,"line":693},[552,3465,657],{"emptyLinePlaceholder":508},[552,3467,3468,3470,3473,3475,3477,3479,3482,3484,3487,3489,3491,3494,3497,3499],{"class":554,"line":705},[552,3469,2329],{"class":565},[552,3471,3472],{"class":598}," layout ",[552,3474,572],{"class":557},[552,3476,2310],{"class":2348},[552,3478,558],{"class":557},[552,3480,3481],{"class":1115},"Record",[552,3483,558],{"class":557},[552,3485,3486],{"class":1115},"string",[552,3488,602],{"class":557},[552,3490,3366],{"class":1115},[552,3492,3493],{"class":598},"[]",[552,3495,3496],{"class":557},">>",[552,3498,2351],{"class":598},[552,3500,3174],{"class":557},[552,3502,3503,3506,3508,3511],{"class":554,"line":715},[552,3504,3505],{"class":561},"  cube",[552,3507,1133],{"class":557},[552,3509,3510],{"class":598}," []",[552,3512,2402],{"class":557},[552,3514,3515,3518,3520,3522],{"class":554,"line":720},[552,3516,3517],{"class":561},"  sphere",[552,3519,1133],{"class":557},[552,3521,3510],{"class":598},[552,3523,2402],{"class":557},[552,3525,3526,3528],{"class":554,"line":742},[552,3527,2342],{"class":557},[552,3529,2362],{"class":598},[552,3531,3532],{"class":554,"line":546},[552,3533,657],{"emptyLinePlaceholder":508},[552,3535,3536,3538,3541,3543,3545,3548,3551,3553,3555,3557,3560,3563,3566,3568,3571],{"class":554,"line":765},[552,3537,2329],{"class":565},[552,3539,3540],{"class":598}," decalRef ",[552,3542,572],{"class":557},[552,3544,3412],{"class":2348},[552,3546,3547],{"class":557},"\u003C{",[552,3549,3550],{"class":561}," editor",[552,3552,1133],{"class":557},[552,3554,3361],{"class":1115},[552,3556,608],{"class":557},[552,3558,3559],{"class":557}," |",[552,3561,3562],{"class":1115}," null",[552,3564,3565],{"class":557},">",[552,3567,2351],{"class":598},[552,3569,3570],{"class":557},"null",[552,3572,2362],{"class":598},[552,3574,3575,3577,3580,3582,3584,3586,3589,3592,3595,3597,3600,3603,3606,3609,3611],{"class":554,"line":776},[552,3576,2329],{"class":565},[552,3578,3579],{"class":598}," session ",[552,3581,572],{"class":557},[552,3583,3403],{"class":2348},[552,3585,2351],{"class":598},[552,3587,3588],{"class":557},"()",[552,3590,3591],{"class":565}," =>",[552,3593,3594],{"class":598}," decalRef",[552,3596,1061],{"class":557},[552,3598,3599],{"class":598},"value",[552,3601,3602],{"class":557},"?.",[552,3604,3605],{"class":598},"editor ",[552,3607,3608],{"class":557},"??",[552,3610,3562],{"class":557},[552,3612,2362],{"class":598},[552,3614,3615,3617,3619],{"class":554,"line":787},[552,3616,647],{"class":557},[552,3618,562],{"class":561},[552,3620,584],{"class":557},[552,3622,3623],{"class":554,"line":797},[552,3624,657],{"emptyLinePlaceholder":508},[552,3626,3627,3629,3631],{"class":554,"line":547},[552,3628,558],{"class":557},[552,3630,665],{"class":561},[552,3632,584],{"class":557},[552,3634,3635,3637,3640,3643,3645,3647,3650,3652,3655,3657,3659,3662,3664,3667,3669,3671,3674,3676],{"class":554,"line":817},[552,3636,673],{"class":557},[552,3638,3639],{"class":561},"DecalDebugUI",[552,3641,3642],{"class":565}," :session",[552,3644,572],{"class":557},[552,3646,575],{"class":557},[552,3648,3649],{"class":578},"session",[552,3651,575],{"class":557},[552,3653,3654],{"class":565}," :textures",[552,3656,572],{"class":557},[552,3658,575],{"class":557},[552,3660,3661],{"class":578},"textures ?? []",[552,3663,575],{"class":557},[552,3665,3666],{"class":565}," :data",[552,3668,572],{"class":557},[552,3670,575],{"class":557},[552,3672,3673],{"class":578},"layout",[552,3675,575],{"class":557},[552,3677,702],{"class":557},[552,3679,3680],{"class":554,"line":827},[552,3681,657],{"emptyLinePlaceholder":508},[552,3683,3684,3686,3688],{"class":554,"line":2539},[552,3685,673],{"class":557},[552,3687,676],{"class":561},[552,3689,584],{"class":557},[552,3691,3692,3694,3696,3698,3700,3702,3705,3707],{"class":554,"line":2548},[552,3693,696],{"class":557},[552,3695,699],{"class":561},[552,3697,1399],{"class":565},[552,3699,572],{"class":557},[552,3701,575],{"class":557},[552,3703,3704],{"class":578},"[2, 2, 4]",[552,3706,575],{"class":557},[552,3708,702],{"class":557},[552,3710,3711,3713,3715],{"class":554,"line":2568},[552,3712,696],{"class":557},[552,3714,710],{"class":561},[552,3716,702],{"class":557},[552,3718,3719],{"class":554,"line":2577},[552,3720,657],{"emptyLinePlaceholder":508},[552,3722,3723,3725,3727,3730,3732,3734,3737,3739,3741,3743,3745,3748,3750],{"class":554,"line":2586},[552,3724,696],{"class":557},[552,3726,771],{"class":561},[552,3728,3729],{"class":565}," name",[552,3731,572],{"class":557},[552,3733,575],{"class":557},[552,3735,3736],{"class":578},"cube",[552,3738,575],{"class":557},[552,3740,1399],{"class":565},[552,3742,572],{"class":557},[552,3744,575],{"class":557},[552,3746,3747],{"class":578},"[-1.2, 0, 0]",[552,3749,575],{"class":557},[552,3751,584],{"class":557},[552,3753,3754,3756,3758],{"class":554,"line":2595},[552,3755,768],{"class":557},[552,3757,782],{"class":561},[552,3759,702],{"class":557},[552,3761,3762,3764,3766,3768,3770,3772,3774,3776],{"class":554,"line":2617},[552,3763,768],{"class":557},[552,3765,2600],{"class":561},[552,3767,2603],{"class":565},[552,3769,572],{"class":557},[552,3771,575],{"class":557},[552,3773,2610],{"class":578},[552,3775,575],{"class":557},[552,3777,702],{"class":557},[552,3779,3780,3782,3784,3787,3789,3791,3794,3796,3798,3800,3802,3805,3807,3809,3811,3813,3815,3817,3820],{"class":554,"line":2661},[552,3781,768],{"class":557},[552,3783,53],{"class":561},[552,3785,3786],{"class":565}," ref",[552,3788,572],{"class":557},[552,3790,575],{"class":557},[552,3792,3793],{"class":578},"decalRef",[552,3795,575],{"class":557},[552,3797,2636],{"class":565},[552,3799,572],{"class":557},[552,3801,575],{"class":557},[552,3803,3804],{"class":578},"layout.cube",[552,3806,575],{"class":557},[552,3808,2648],{"class":565},[552,3810,572],{"class":557},[552,3812,575],{"class":557},[552,3814,2867],{"class":578},[552,3816,575],{"class":557},[552,3818,3819],{"class":565}," editable",[552,3821,702],{"class":557},[552,3823,3824,3826,3828],{"class":554,"line":2670},[552,3825,810],{"class":557},[552,3827,771],{"class":561},[552,3829,584],{"class":557},[552,3831,3832],{"class":554,"line":2679},[552,3833,657],{"emptyLinePlaceholder":508},[552,3835,3837,3839,3841,3843,3845,3847,3850,3852,3854,3856,3858,3861,3863],{"class":554,"line":3836},31,[552,3838,696],{"class":557},[552,3840,771],{"class":561},[552,3842,3729],{"class":565},[552,3844,572],{"class":557},[552,3846,575],{"class":557},[552,3848,3849],{"class":578},"sphere",[552,3851,575],{"class":557},[552,3853,1399],{"class":565},[552,3855,572],{"class":557},[552,3857,575],{"class":557},[552,3859,3860],{"class":578},"[1.2, 0, 0]",[552,3862,575],{"class":557},[552,3864,584],{"class":557},[552,3866,3868,3870,3873,3875,3877,3879,3882,3884],{"class":554,"line":3867},32,[552,3869,768],{"class":557},[552,3871,3872],{"class":561},"TresSphereGeometry",[552,3874,1873],{"class":565},[552,3876,572],{"class":557},[552,3878,575],{"class":557},[552,3880,3881],{"class":578},"[0.7]",[552,3883,575],{"class":557},[552,3885,702],{"class":557},[552,3887,3889,3891,3893,3895,3897,3899,3901,3903],{"class":554,"line":3888},33,[552,3890,768],{"class":557},[552,3892,2600],{"class":561},[552,3894,2603],{"class":565},[552,3896,572],{"class":557},[552,3898,575],{"class":557},[552,3900,2610],{"class":578},[552,3902,575],{"class":557},[552,3904,702],{"class":557},[552,3906,3908,3910,3912,3914,3916,3918,3921,3923,3925,3927,3929,3931,3933,3935],{"class":554,"line":3907},34,[552,3909,768],{"class":557},[552,3911,53],{"class":561},[552,3913,2636],{"class":565},[552,3915,572],{"class":557},[552,3917,575],{"class":557},[552,3919,3920],{"class":578},"layout.sphere",[552,3922,575],{"class":557},[552,3924,2648],{"class":565},[552,3926,572],{"class":557},[552,3928,575],{"class":557},[552,3930,2867],{"class":578},[552,3932,575],{"class":557},[552,3934,3819],{"class":565},[552,3936,702],{"class":557},[552,3938,3940,3942,3944],{"class":554,"line":3939},35,[552,3941,810],{"class":557},[552,3943,771],{"class":561},[552,3945,584],{"class":557},[552,3947,3949,3951,3953],{"class":554,"line":3948},36,[552,3950,820],{"class":557},[552,3952,676],{"class":561},[552,3954,584],{"class":557},[552,3956,3958,3960,3962],{"class":554,"line":3957},37,[552,3959,647],{"class":557},[552,3961,665],{"class":561},[552,3963,584],{"class":557},[3965,3966,3968],"h3",{"id":3967},"how-the-wiring-works","How the wiring works",[2127,3970,3971,3982,3991,4000],{},[2130,3972,3973,3976,3977,3979,3980,1061],{},[532,3974,3975],{},"v-model:data=\"layout.cube\""," — each ",[532,3978,2124],{}," owns one slice of the\nlayout object. The slice's key matches the parent mesh's ",[532,3981,2885],{},[2130,3983,3984,3987,3988,3990],{},[532,3985,3986],{},"ref=\"decalRef\""," — grab a reference to any ",[532,3989,2124],{}," in the canvas;\nthe session is canvas-shared so it doesn't matter which.",[2130,3992,3993,3996,3997,3999],{},[532,3994,3995],{},"session = decalRef.value?.editor"," — the editor session powers\n",[532,3998,2139],{},". Pass it through.",[2130,4001,4002,4005,4006,4008],{},[532,4003,4004],{},":data=\"layout\""," on ",[532,4007,2139],{}," — the full mesh-keyed layout, so\nthe overlay can render the layer panel and route imports back to each\nDecal by name.",[1919,4010,4011],{},[528,4012,4013,4014,4017,4018,4021],{},"The overlay is full-viewport (",[532,4015,4016],{},"position: fixed; inset: 0",") by default.\nWhen embedding inside a bounded stage (docs, modal, sidebar preview),\npass ",[532,4019,4020],{},"contained"," so the overlay positions itself absolutely against\nthe nearest positioned ancestor instead.",[541,4023,4025],{"className":543,"code":4024,"language":548,"meta":500,"style":500},"\u003Cdiv style=\"position: relative; height: 500px;\">\n  \u003CDecalDebugUI contained ... />\n  \u003CTresCanvas>...\u003C/TresCanvas>\n\u003C/div>\n",[532,4026,4027,4067,4072,4077],{"__ignoreMap":500},[552,4028,4029,4031,4034,4037,4039,4041,4045,4047,4050,4053,4056,4058,4061,4063,4065],{"class":554,"line":501},[552,4030,558],{"class":557},[552,4032,4033],{"class":561},"div",[552,4035,4036],{"class":565}," style",[552,4038,572],{"class":557},[552,4040,575],{"class":557},[552,4042,4044],{"class":4043},"sqsOY","position",[552,4046,1133],{"class":557},[552,4048,4049],{"class":598}," relative",[552,4051,4052],{"class":557},";",[552,4054,4055],{"class":4043}," height",[552,4057,1133],{"class":557},[552,4059,4060],{"class":2415}," 500px",[552,4062,4052],{"class":557},[552,4064,575],{"class":557},[552,4066,584],{"class":557},[552,4068,4069],{"class":554,"line":502},[552,4070,4071],{"class":598},"  \u003CDecalDebugUI contained ... />\n",[552,4073,4074],{"class":554,"line":623},[552,4075,4076],{"class":598},"  \u003CTresCanvas>...\u003C/TresCanvas>\n",[552,4078,4079,4081,4083],{"class":554,"line":644},[552,4080,647],{"class":557},[552,4082,4033],{"class":561},[552,4084,584],{"class":557},[537,4086,3293],{"id":4087},"import-export",[528,4089,4090,4091,4094,4095,4097],{},"The Export button in the dock auto-downloads the current layout as\n",[532,4092,4093],{},"decal-layout-YYYY-MM-DD.json",". The Import button opens a file picker;\nthe loaded JSON is sanitised (unknown mesh keys and unknown texture\nnames are dropped with a warning) and routed back through each\n",[532,4096,2124],{}," automatically — no extra host code needed.",[541,4099,4101],{"className":543,"code":4100,"language":548,"meta":500,"style":500},"\u003C!-- Custom filename -->\n\u003CDecalDebugUI :export-filename=\"`${sceneName}.json`\" ... />\n\n\u003C!-- Disable the built-in download — handle export yourself -->\n\u003CDecalDebugUI :export-filename=\"null\" @export=\"postToBackend\" ... />\n",[532,4102,4103,4108,4139,4143,4148],{"__ignoreMap":500},[552,4104,4105],{"class":554,"line":501},[552,4106,4107],{"class":1124},"\u003C!-- Custom filename -->\n",[552,4109,4110,4112,4114,4116,4119,4121,4124,4127,4129,4131,4134,4137],{"class":554,"line":502},[552,4111,558],{"class":557},[552,4113,3639],{"class":561},[552,4115,2943],{"class":557},[552,4117,4118],{"class":565},"export-filename",[552,4120,572],{"class":557},[552,4122,4123],{"class":557},"\"`${",[552,4125,4126],{"class":598},"sceneName",[552,4128,2342],{"class":557},[552,4130,2700],{"class":578},[552,4132,4133],{"class":557},"`\"",[552,4135,4136],{"class":557}," ...",[552,4138,702],{"class":557},[552,4140,4141],{"class":554,"line":623},[552,4142,657],{"emptyLinePlaceholder":508},[552,4144,4145],{"class":554,"line":644},[552,4146,4147],{"class":1124},"\u003C!-- Disable the built-in download — handle export yourself -->\n",[552,4149,4150,4152,4154,4156,4158,4160,4162,4164,4166,4169,4171,4173,4175,4178,4180,4182],{"class":554,"line":654},[552,4151,558],{"class":557},[552,4153,3639],{"class":561},[552,4155,2943],{"class":557},[552,4157,4118],{"class":565},[552,4159,572],{"class":557},[552,4161,575],{"class":557},[552,4163,3570],{"class":557},[552,4165,575],{"class":557},[552,4167,4168],{"class":557}," @",[552,4170,1109],{"class":565},[552,4172,572],{"class":557},[552,4174,575],{"class":557},[552,4176,4177],{"class":598},"postToBackend",[552,4179,575],{"class":557},[552,4181,4136],{"class":557},[552,4183,702],{"class":557},[537,4185,4187,4188,3254],{"id":4186},"targeting-a-loaded-model-glb","Targeting a loaded model (",[532,4189,4190],{},".glb",[528,4192,4193,4194,4196,4197,4203,4204,4207,4208,4210],{},"A ",[532,4195,2124],{}," can be a ",[1583,4198,4199,4200],{},"direct child of ",[532,4201,4202],{},"\u003Cprimitive>",". Auto-resolution\nwalks one step up the scene graph and only accepts a ",[532,4205,4206],{},"Mesh"," — so the\nbehaviour depends on what the ",[532,4209,4202],{}," wraps.",[3965,4212,4214,4215,4218,4219],{"id":4213},"when-object-is-a-mesh","When ",[532,4216,4217],{},":object"," is a ",[532,4220,4206],{},[528,4222,4223],{},"The decal auto-resolves the wrapped mesh as its target. This is the\nsimplest option for a single-mesh asset:",[541,4225,4227],{"className":543,"code":4226,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { Decal, useGLTF } from '@tresjs/cientos'\n\nconst { nodes } = useGLTF('/models/helmet.glb', { draco: true })\n// nodes.Helmet is a Mesh in this asset.\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cprimitive v-if=\"nodes?.Helmet\" :object=\"nodes.Helmet\">\n    \u003CDecal v-model:data=\"layout.helmet\" :map=\"textures\" editable />\n  \u003C/primitive>\n\u003C/template>\n",[532,4228,4229,4249,4272,4276,4317,4322,4330,4334,4342,4374,4405,4413],{"__ignoreMap":500},[552,4230,4231,4233,4235,4237,4239,4241,4243,4245,4247],{"class":554,"line":501},[552,4232,558],{"class":557},[552,4234,562],{"class":561},[552,4236,566],{"class":565},[552,4238,569],{"class":565},[552,4240,572],{"class":557},[552,4242,575],{"class":557},[552,4244,579],{"class":578},[552,4246,575],{"class":557},[552,4248,584],{"class":557},[552,4250,4251,4253,4255,4257,4259,4262,4264,4266,4268,4270],{"class":554,"line":502},[552,4252,592],{"class":591},[552,4254,595],{"class":557},[552,4256,2264],{"class":598},[552,4258,602],{"class":557},[552,4260,4261],{"class":598}," useGLTF",[552,4263,608],{"class":557},[552,4265,611],{"class":591},[552,4267,614],{"class":557},[552,4269,617],{"class":578},[552,4271,620],{"class":557},[552,4273,4274],{"class":554,"line":623},[552,4275,657],{"emptyLinePlaceholder":508},[552,4277,4278,4280,4282,4285,4287,4289,4291,4293,4295,4298,4300,4302,4304,4307,4309,4313,4315],{"class":554,"line":644},[552,4279,2329],{"class":565},[552,4281,595],{"class":557},[552,4283,4284],{"class":598}," nodes ",[552,4286,2342],{"class":557},[552,4288,2345],{"class":557},[552,4290,4261],{"class":2348},[552,4292,2351],{"class":598},[552,4294,2354],{"class":557},[552,4296,4297],{"class":578},"/models/helmet.glb",[552,4299,2354],{"class":557},[552,4301,602],{"class":557},[552,4303,595],{"class":557},[552,4305,4306],{"class":561}," draco",[552,4308,1133],{"class":557},[552,4310,4312],{"class":4311},"sfNiH"," true",[552,4314,608],{"class":557},[552,4316,2362],{"class":598},[552,4318,4319],{"class":554,"line":654},[552,4320,4321],{"class":1124},"// nodes.Helmet is a Mesh in this asset.\n",[552,4323,4324,4326,4328],{"class":554,"line":660},[552,4325,647],{"class":557},[552,4327,562],{"class":561},[552,4329,584],{"class":557},[552,4331,4332],{"class":554,"line":670},[552,4333,657],{"emptyLinePlaceholder":508},[552,4335,4336,4338,4340],{"class":554,"line":693},[552,4337,558],{"class":557},[552,4339,665],{"class":561},[552,4341,584],{"class":557},[552,4343,4344,4346,4349,4351,4353,4355,4358,4360,4363,4365,4367,4370,4372],{"class":554,"line":705},[552,4345,673],{"class":557},[552,4347,4348],{"class":561},"primitive",[552,4350,2624],{"class":565},[552,4352,572],{"class":557},[552,4354,575],{"class":557},[552,4356,4357],{"class":578},"nodes?.Helmet",[552,4359,575],{"class":557},[552,4361,4362],{"class":565}," :object",[552,4364,572],{"class":557},[552,4366,575],{"class":557},[552,4368,4369],{"class":578},"nodes.Helmet",[552,4371,575],{"class":557},[552,4373,584],{"class":557},[552,4375,4376,4378,4380,4382,4384,4386,4389,4391,4393,4395,4397,4399,4401,4403],{"class":554,"line":715},[552,4377,696],{"class":557},[552,4379,53],{"class":561},[552,4381,2636],{"class":565},[552,4383,572],{"class":557},[552,4385,575],{"class":557},[552,4387,4388],{"class":578},"layout.helmet",[552,4390,575],{"class":557},[552,4392,2648],{"class":565},[552,4394,572],{"class":557},[552,4396,575],{"class":557},[552,4398,2867],{"class":578},[552,4400,575],{"class":557},[552,4402,3819],{"class":565},[552,4404,702],{"class":557},[552,4406,4407,4409,4411],{"class":554,"line":720},[552,4408,820],{"class":557},[552,4410,4348],{"class":561},[552,4412,584],{"class":557},[552,4414,4415,4417,4419],{"class":554,"line":742},[552,4416,647],{"class":557},[552,4418,665],{"class":561},[552,4420,584],{"class":557},[1919,4422,4423],{},[528,4424,4425,4426,4428,4429,4432],{},"The resolved parent is the ",[532,4427,4202],{},"'s retargeting proxy rather than\nthe raw object. This is transparent in practice — geometry, ",[532,4430,4431],{},"matrixWorld","\nand raycasting all forward to the wrapped object — so the decal projects\nand follows transforms correctly.",[3965,4434,4214,4436,4218,4438],{"id":4435},"when-object-is-a-group",[532,4437,4217],{},[532,4439,4440],{},"Group",[528,4442,4443,4444,4446,4447,4449,4450,4452,4453,1133],{},"A named node in a ",[532,4445,4190],{}," is often a ",[532,4448,4440],{}," containing several child\nmeshes (e.g. a ceramic body + a metallic interior). Auto-resolution\nreturns ",[532,4451,3570],{}," in that case and the decal silently does nothing — pass\nthe actual target child via ",[532,4454,4455],{},":mesh",[541,4457,4459],{"className":543,"code":4458,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { Decal, useGLTF } from '@tresjs/cientos'\nimport { computed } from 'vue'\nimport type { Mesh } from 'three'\n\nconst { nodes } = useGLTF('/models/mug.glb', { draco: true })\n// nodes.Mug is a Group — pick the child you want to decal.\nconst body = computed\u003CMesh | null>(\n  () => (nodes.value?.Mug?.getObjectByName('Body') as Mesh) ?? null,\n)\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cprimitive v-if=\"nodes?.Mug\" :object=\"nodes.Mug\">\n    \u003CDecal v-model:data=\"layout.mug\" :map=\"textures\" :mesh=\"body\" editable />\n  \u003C/primitive>\n\u003C/template>\n",[532,4460,4461,4481,4503,4521,4543,4547,4584,4589,4613,4661,4665,4673,4677,4685,4715,4758,4766],{"__ignoreMap":500},[552,4462,4463,4465,4467,4469,4471,4473,4475,4477,4479],{"class":554,"line":501},[552,4464,558],{"class":557},[552,4466,562],{"class":561},[552,4468,566],{"class":565},[552,4470,569],{"class":565},[552,4472,572],{"class":557},[552,4474,575],{"class":557},[552,4476,579],{"class":578},[552,4478,575],{"class":557},[552,4480,584],{"class":557},[552,4482,4483,4485,4487,4489,4491,4493,4495,4497,4499,4501],{"class":554,"line":502},[552,4484,592],{"class":591},[552,4486,595],{"class":557},[552,4488,2264],{"class":598},[552,4490,602],{"class":557},[552,4492,4261],{"class":598},[552,4494,608],{"class":557},[552,4496,611],{"class":591},[552,4498,614],{"class":557},[552,4500,617],{"class":578},[552,4502,620],{"class":557},[552,4504,4505,4507,4509,4511,4513,4515,4517,4519],{"class":554,"line":623},[552,4506,592],{"class":591},[552,4508,595],{"class":557},[552,4510,3403],{"class":598},[552,4512,608],{"class":557},[552,4514,611],{"class":591},[552,4516,614],{"class":557},[552,4518,548],{"class":578},[552,4520,620],{"class":557},[552,4522,4523,4525,4527,4529,4532,4534,4536,4538,4541],{"class":554,"line":644},[552,4524,592],{"class":591},[552,4526,3356],{"class":591},[552,4528,595],{"class":557},[552,4530,4531],{"class":598}," Mesh",[552,4533,608],{"class":557},[552,4535,611],{"class":591},[552,4537,614],{"class":557},[552,4539,4540],{"class":578},"three",[552,4542,620],{"class":557},[552,4544,4545],{"class":554,"line":654},[552,4546,657],{"emptyLinePlaceholder":508},[552,4548,4549,4551,4553,4555,4557,4559,4561,4563,4565,4568,4570,4572,4574,4576,4578,4580,4582],{"class":554,"line":660},[552,4550,2329],{"class":565},[552,4552,595],{"class":557},[552,4554,4284],{"class":598},[552,4556,2342],{"class":557},[552,4558,2345],{"class":557},[552,4560,4261],{"class":2348},[552,4562,2351],{"class":598},[552,4564,2354],{"class":557},[552,4566,4567],{"class":578},"/models/mug.glb",[552,4569,2354],{"class":557},[552,4571,602],{"class":557},[552,4573,595],{"class":557},[552,4575,4306],{"class":561},[552,4577,1133],{"class":557},[552,4579,4312],{"class":4311},[552,4581,608],{"class":557},[552,4583,2362],{"class":598},[552,4585,4586],{"class":554,"line":670},[552,4587,4588],{"class":1124},"// nodes.Mug is a Group — pick the child you want to decal.\n",[552,4590,4591,4593,4596,4598,4600,4602,4604,4606,4608,4610],{"class":554,"line":693},[552,4592,2329],{"class":565},[552,4594,4595],{"class":598}," body ",[552,4597,572],{"class":557},[552,4599,3403],{"class":2348},[552,4601,558],{"class":557},[552,4603,4206],{"class":1115},[552,4605,3559],{"class":557},[552,4607,3562],{"class":1115},[552,4609,3565],{"class":557},[552,4611,4612],{"class":598},"(\n",[552,4614,4615,4618,4620,4623,4625,4627,4629,4632,4634,4637,4639,4641,4644,4646,4649,4652,4654,4656,4658],{"class":554,"line":705},[552,4616,4617],{"class":557},"  ()",[552,4619,3591],{"class":565},[552,4621,4622],{"class":598}," (nodes",[552,4624,1061],{"class":557},[552,4626,3599],{"class":598},[552,4628,3602],{"class":557},[552,4630,4631],{"class":598},"Mug",[552,4633,3602],{"class":557},[552,4635,4636],{"class":2348},"getObjectByName",[552,4638,2351],{"class":598},[552,4640,2354],{"class":557},[552,4642,4643],{"class":578},"Body",[552,4645,2354],{"class":557},[552,4647,4648],{"class":598},") ",[552,4650,4651],{"class":591},"as",[552,4653,4531],{"class":1115},[552,4655,4648],{"class":598},[552,4657,3608],{"class":557},[552,4659,4660],{"class":557}," null,\n",[552,4662,4663],{"class":554,"line":715},[552,4664,2362],{"class":598},[552,4666,4667,4669,4671],{"class":554,"line":720},[552,4668,647],{"class":557},[552,4670,562],{"class":561},[552,4672,584],{"class":557},[552,4674,4675],{"class":554,"line":742},[552,4676,657],{"emptyLinePlaceholder":508},[552,4678,4679,4681,4683],{"class":554,"line":546},[552,4680,558],{"class":557},[552,4682,665],{"class":561},[552,4684,584],{"class":557},[552,4686,4687,4689,4691,4693,4695,4697,4700,4702,4704,4706,4708,4711,4713],{"class":554,"line":765},[552,4688,673],{"class":557},[552,4690,4348],{"class":561},[552,4692,2624],{"class":565},[552,4694,572],{"class":557},[552,4696,575],{"class":557},[552,4698,4699],{"class":578},"nodes?.Mug",[552,4701,575],{"class":557},[552,4703,4362],{"class":565},[552,4705,572],{"class":557},[552,4707,575],{"class":557},[552,4709,4710],{"class":578},"nodes.Mug",[552,4712,575],{"class":557},[552,4714,584],{"class":557},[552,4716,4717,4719,4721,4723,4725,4727,4730,4732,4734,4736,4738,4740,4742,4745,4747,4749,4752,4754,4756],{"class":554,"line":776},[552,4718,696],{"class":557},[552,4720,53],{"class":561},[552,4722,2636],{"class":565},[552,4724,572],{"class":557},[552,4726,575],{"class":557},[552,4728,4729],{"class":578},"layout.mug",[552,4731,575],{"class":557},[552,4733,2648],{"class":565},[552,4735,572],{"class":557},[552,4737,575],{"class":557},[552,4739,2867],{"class":578},[552,4741,575],{"class":557},[552,4743,4744],{"class":565}," :mesh",[552,4746,572],{"class":557},[552,4748,575],{"class":557},[552,4750,4751],{"class":578},"body",[552,4753,575],{"class":557},[552,4755,3819],{"class":565},[552,4757,702],{"class":557},[552,4759,4760,4762,4764],{"class":554,"line":787},[552,4761,820],{"class":557},[552,4763,4348],{"class":561},[552,4765,584],{"class":557},[552,4767,4768,4770,4772],{"class":554,"line":797},[552,4769,647],{"class":557},[552,4771,665],{"class":561},[552,4773,584],{"class":557},[3965,4775,4777],{"id":4776},"targeting-an-extracted-sub-mesh","Targeting an extracted sub-mesh",[528,4779,4780,4781,4787,4788,4795,4796,4798,4799,1133],{},"Alternatively, ",[1583,4782,4783,4784,4786],{},"wrap a ",[532,4785,2224],{}," around an extracted sub-mesh",". Reach\nfor this when you need to target one named sub-mesh of a larger model (and\nkeep its material): use\n",[1055,4789,4792],{"href":4790,"rel":4791},"https://docs.tresjs.org/api/composables.html#usegraph",[1059],[532,4793,4794],{},"useGraph"," to\npull the sub-mesh, then build a regular ",[532,4797,2224],{}," around its\n",[532,4800,4801],{},":geometry",[541,4803,4805],{"className":543,"code":4804,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { useGraph, useLoader } from '@tresjs/core'\nimport { Decal } from '@tresjs/cientos'\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'\nimport { computed } from 'vue'\n\nconst { state: model } = useLoader(GLTFLoader, '/models/helmet.glb')\nconst scene = computed(() => model.value?.scene)\nconst graph = useGraph(scene)\nconst nodes = computed(() => graph.value?.nodes)\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresMesh\n    v-if=\"nodes?.Helmet.geometry\"\n    name=\"helmet\"\n    :geometry=\"nodes.Helmet.geometry\"\n  >\n    \u003Cprimitive :object=\"nodes.Helmet.material\" attach=\"material\" />\n    \u003CDecal v-model:data=\"layout.helmet\" :map=\"textures\" editable />\n  \u003C/TresMesh>\n\u003C/template>\n",[532,4806,4807,4827,4851,4869,4889,4907,4911,4943,4972,4986,5014,5022,5026,5034,5041,5055,5069,5083,5088,5119,5149,5157],{"__ignoreMap":500},[552,4808,4809,4811,4813,4815,4817,4819,4821,4823,4825],{"class":554,"line":501},[552,4810,558],{"class":557},[552,4812,562],{"class":561},[552,4814,566],{"class":565},[552,4816,569],{"class":565},[552,4818,572],{"class":557},[552,4820,575],{"class":557},[552,4822,579],{"class":578},[552,4824,575],{"class":557},[552,4826,584],{"class":557},[552,4828,4829,4831,4833,4836,4838,4841,4843,4845,4847,4849],{"class":554,"line":502},[552,4830,592],{"class":591},[552,4832,595],{"class":557},[552,4834,4835],{"class":598}," useGraph",[552,4837,602],{"class":557},[552,4839,4840],{"class":598}," useLoader",[552,4842,608],{"class":557},[552,4844,611],{"class":591},[552,4846,614],{"class":557},[552,4848,639],{"class":578},[552,4850,620],{"class":557},[552,4852,4853,4855,4857,4859,4861,4863,4865,4867],{"class":554,"line":623},[552,4854,592],{"class":591},[552,4856,595],{"class":557},[552,4858,2264],{"class":598},[552,4860,608],{"class":557},[552,4862,611],{"class":591},[552,4864,614],{"class":557},[552,4866,617],{"class":578},[552,4868,620],{"class":557},[552,4870,4871,4873,4875,4878,4880,4882,4884,4887],{"class":554,"line":644},[552,4872,592],{"class":591},[552,4874,595],{"class":557},[552,4876,4877],{"class":598}," GLTFLoader",[552,4879,608],{"class":557},[552,4881,611],{"class":591},[552,4883,614],{"class":557},[552,4885,4886],{"class":578},"three/examples/jsm/loaders/GLTFLoader.js",[552,4888,620],{"class":557},[552,4890,4891,4893,4895,4897,4899,4901,4903,4905],{"class":554,"line":654},[552,4892,592],{"class":591},[552,4894,595],{"class":557},[552,4896,3403],{"class":598},[552,4898,608],{"class":557},[552,4900,611],{"class":591},[552,4902,614],{"class":557},[552,4904,548],{"class":578},[552,4906,620],{"class":557},[552,4908,4909],{"class":554,"line":660},[552,4910,657],{"emptyLinePlaceholder":508},[552,4912,4913,4915,4917,4919,4921,4924,4926,4928,4930,4933,4935,4937,4939,4941],{"class":554,"line":670},[552,4914,2329],{"class":565},[552,4916,595],{"class":557},[552,4918,2334],{"class":561},[552,4920,1133],{"class":557},[552,4922,4923],{"class":598}," model ",[552,4925,2342],{"class":557},[552,4927,2345],{"class":557},[552,4929,4840],{"class":2348},[552,4931,4932],{"class":598},"(GLTFLoader",[552,4934,602],{"class":557},[552,4936,614],{"class":557},[552,4938,4297],{"class":578},[552,4940,2354],{"class":557},[552,4942,2362],{"class":598},[552,4944,4945,4947,4950,4952,4954,4956,4958,4960,4963,4965,4967,4969],{"class":554,"line":693},[552,4946,2329],{"class":565},[552,4948,4949],{"class":598}," scene ",[552,4951,572],{"class":557},[552,4953,3403],{"class":2348},[552,4955,2351],{"class":598},[552,4957,3588],{"class":557},[552,4959,3591],{"class":565},[552,4961,4962],{"class":598}," model",[552,4964,1061],{"class":557},[552,4966,3599],{"class":598},[552,4968,3602],{"class":557},[552,4970,4971],{"class":598},"scene)\n",[552,4973,4974,4976,4979,4981,4983],{"class":554,"line":705},[552,4975,2329],{"class":565},[552,4977,4978],{"class":598}," graph ",[552,4980,572],{"class":557},[552,4982,4835],{"class":2348},[552,4984,4985],{"class":598},"(scene)\n",[552,4987,4988,4990,4992,4994,4996,4998,5000,5002,5005,5007,5009,5011],{"class":554,"line":715},[552,4989,2329],{"class":565},[552,4991,4284],{"class":598},[552,4993,572],{"class":557},[552,4995,3403],{"class":2348},[552,4997,2351],{"class":598},[552,4999,3588],{"class":557},[552,5001,3591],{"class":565},[552,5003,5004],{"class":598}," graph",[552,5006,1061],{"class":557},[552,5008,3599],{"class":598},[552,5010,3602],{"class":557},[552,5012,5013],{"class":598},"nodes)\n",[552,5015,5016,5018,5020],{"class":554,"line":720},[552,5017,647],{"class":557},[552,5019,562],{"class":561},[552,5021,584],{"class":557},[552,5023,5024],{"class":554,"line":742},[552,5025,657],{"emptyLinePlaceholder":508},[552,5027,5028,5030,5032],{"class":554,"line":546},[552,5029,558],{"class":557},[552,5031,665],{"class":561},[552,5033,584],{"class":557},[552,5035,5036,5038],{"class":554,"line":765},[552,5037,673],{"class":557},[552,5039,5040],{"class":561},"TresMesh\n",[552,5042,5043,5046,5048,5050,5053],{"class":554,"line":776},[552,5044,5045],{"class":565},"    v-if",[552,5047,572],{"class":557},[552,5049,575],{"class":557},[552,5051,5052],{"class":578},"nodes?.Helmet.geometry",[552,5054,3045],{"class":557},[552,5056,5057,5060,5062,5064,5067],{"class":554,"line":787},[552,5058,5059],{"class":565},"    name",[552,5061,572],{"class":557},[552,5063,575],{"class":557},[552,5065,5066],{"class":578},"helmet",[552,5068,3045],{"class":557},[552,5070,5071,5074,5076,5078,5081],{"class":554,"line":797},[552,5072,5073],{"class":565},"    :geometry",[552,5075,572],{"class":557},[552,5077,575],{"class":557},[552,5079,5080],{"class":578},"nodes.Helmet.geometry",[552,5082,3045],{"class":557},[552,5084,5085],{"class":554,"line":547},[552,5086,5087],{"class":557},"  >\n",[552,5089,5090,5092,5094,5096,5098,5100,5103,5105,5108,5110,5112,5115,5117],{"class":554,"line":817},[552,5091,696],{"class":557},[552,5093,4348],{"class":561},[552,5095,4362],{"class":565},[552,5097,572],{"class":557},[552,5099,575],{"class":557},[552,5101,5102],{"class":578},"nodes.Helmet.material",[552,5104,575],{"class":557},[552,5106,5107],{"class":565}," attach",[552,5109,572],{"class":557},[552,5111,575],{"class":557},[552,5113,5114],{"class":578},"material",[552,5116,575],{"class":557},[552,5118,702],{"class":557},[552,5120,5121,5123,5125,5127,5129,5131,5133,5135,5137,5139,5141,5143,5145,5147],{"class":554,"line":827},[552,5122,696],{"class":557},[552,5124,53],{"class":561},[552,5126,2636],{"class":565},[552,5128,572],{"class":557},[552,5130,575],{"class":557},[552,5132,4388],{"class":578},[552,5134,575],{"class":557},[552,5136,2648],{"class":565},[552,5138,572],{"class":557},[552,5140,575],{"class":557},[552,5142,2867],{"class":578},[552,5144,575],{"class":557},[552,5146,3819],{"class":565},[552,5148,702],{"class":557},[552,5150,5151,5153,5155],{"class":554,"line":2539},[552,5152,820],{"class":557},[552,5154,771],{"class":561},[552,5156,584],{"class":557},[552,5158,5159,5161,5163],{"class":554,"line":2548},[552,5160,647],{"class":557},[552,5162,665],{"class":561},[552,5164,584],{"class":557},[528,5166,5167,5168,2977,5171,5173,5174,5176,5177,5179],{},"The mesh's ",[532,5169,5170],{},"geometry",[532,5172,5114],{}," come from the loaded model; the\n",[532,5175,2124],{}," lives inside a regular ",[532,5178,2224],{}," with a clean scene-graph\nparent.",[3113,5181,5182],{},[528,5183,5184,5185,5187,5188,5191,5192,5195,5196,5199],{},"A saved decal's ",[532,5186,4044],{}," is stored in ",[1583,5189,5190],{},"world space",", so it is\nre-projected onto the parent using the parent's transform ",[1583,5193,5194],{},"at load\ntime",". A persisted layout therefore only round-trips if the parent sits\nat the same transform it had when the decal was authored. Parents under a\ncontinuously- or randomly-animated wrapper (e.g. ",[532,5197,5198],{},"\u003CLevioso>",", which starts\nat a random phase each reload) move out from under the saved point, so the\nprojection clips to nothing and the decal vanishes. Author and persist\ndecals on parents whose transform is deterministic at load time, or apply\nthe animation only after the layout has mounted.",[537,5201,5203],{"id":5202},"json-schema","JSON schema",[528,5205,5206,5207,5209,5210,5213,5214,5216,5217,1061],{},"Each entry in the ",[532,5208,2932],{}," array follows the ",[532,5211,5212],{},"DecalJsonEntry"," shape; the\nlayout passed to ",[532,5215,2139],{}," groups these by mesh name as\n",[532,5218,5219],{},"DecalLayout = Record\u003Cstring, DecalJsonEntry[]>",[5221,5222,5223,5224,5228],"details",{},"\n  ",[5225,5226,5227],"summary",{},"Full schema",[541,5229,5231],{"className":1101,"code":5230,"language":579,"meta":500,"style":500},"interface DecalJsonEntry {\n  id: string // stable UUID\n  position: [number, number, number] // target-mesh local space (raycast hit, baked into the parent's frame)\n  orientation: [number, number, number] // Euler XYZ\n  size: [number, number, number] // extents along X/Y; Z = projection depth\n  zIndex: number // per-mesh layer order, ≥ 0\n  map: string | null // matches a texture's .name\n  flipX?: boolean // omitted when false\n  flipY?: boolean // omitted when false\n  color?: string // hex (e.g. '#ff6b35'), omitted when no tint\n  opacity?: number // 0..1, omitted when 1\n  visible?: boolean // omitted when true; false hides the decal\n}\n\ntype DecalLayout = Record\u003Cstring, DecalJsonEntry[]>\n// { sphere: [...], cube: [...] }\n",[532,5232,5233,5242,5255,5282,5306,5330,5342,5358,5372,5383,5395,5407,5419,5423,5427,5452],{"__ignoreMap":500},[552,5234,5235,5238,5240],{"class":554,"line":501},[552,5236,5237],{"class":565},"interface",[552,5239,3366],{"class":1115},[552,5241,1119],{"class":557},[552,5243,5244,5247,5249,5252],{"class":554,"line":502},[552,5245,5246],{"class":561},"  id",[552,5248,1133],{"class":557},[552,5250,5251],{"class":1115}," string",[552,5253,5254],{"class":1124}," // stable UUID\n",[552,5256,5257,5260,5262,5264,5267,5269,5272,5274,5276,5279],{"class":554,"line":623},[552,5258,5259],{"class":561},"  position",[552,5261,1133],{"class":557},[552,5263,2412],{"class":598},[552,5265,5266],{"class":1115},"number",[552,5268,602],{"class":557},[552,5270,5271],{"class":1115}," number",[552,5273,602],{"class":557},[552,5275,5271],{"class":1115},[552,5277,5278],{"class":598},"] ",[552,5280,5281],{"class":1124},"// target-mesh local space (raycast hit, baked into the parent's frame)\n",[552,5283,5284,5287,5289,5291,5293,5295,5297,5299,5301,5303],{"class":554,"line":644},[552,5285,5286],{"class":561},"  orientation",[552,5288,1133],{"class":557},[552,5290,2412],{"class":598},[552,5292,5266],{"class":1115},[552,5294,602],{"class":557},[552,5296,5271],{"class":1115},[552,5298,602],{"class":557},[552,5300,5271],{"class":1115},[552,5302,5278],{"class":598},[552,5304,5305],{"class":1124},"// Euler XYZ\n",[552,5307,5308,5311,5313,5315,5317,5319,5321,5323,5325,5327],{"class":554,"line":654},[552,5309,5310],{"class":561},"  size",[552,5312,1133],{"class":557},[552,5314,2412],{"class":598},[552,5316,5266],{"class":1115},[552,5318,602],{"class":557},[552,5320,5271],{"class":1115},[552,5322,602],{"class":557},[552,5324,5271],{"class":1115},[552,5326,5278],{"class":598},[552,5328,5329],{"class":1124},"// extents along X/Y; Z = projection depth\n",[552,5331,5332,5335,5337,5339],{"class":554,"line":660},[552,5333,5334],{"class":561},"  zIndex",[552,5336,1133],{"class":557},[552,5338,5271],{"class":1115},[552,5340,5341],{"class":1124}," // per-mesh layer order, ≥ 0\n",[552,5343,5344,5347,5349,5351,5353,5355],{"class":554,"line":670},[552,5345,5346],{"class":561},"  map",[552,5348,1133],{"class":557},[552,5350,5251],{"class":1115},[552,5352,3559],{"class":557},[552,5354,3562],{"class":1115},[552,5356,5357],{"class":1124}," // matches a texture's .name\n",[552,5359,5360,5363,5366,5369],{"class":554,"line":693},[552,5361,5362],{"class":561},"  flipX",[552,5364,5365],{"class":557},"?:",[552,5367,5368],{"class":1115}," boolean",[552,5370,5371],{"class":1124}," // omitted when false\n",[552,5373,5374,5377,5379,5381],{"class":554,"line":705},[552,5375,5376],{"class":561},"  flipY",[552,5378,5365],{"class":557},[552,5380,5368],{"class":1115},[552,5382,5371],{"class":1124},[552,5384,5385,5388,5390,5392],{"class":554,"line":715},[552,5386,5387],{"class":561},"  color",[552,5389,5365],{"class":557},[552,5391,5251],{"class":1115},[552,5393,5394],{"class":1124}," // hex (e.g. '#ff6b35'), omitted when no tint\n",[552,5396,5397,5400,5402,5404],{"class":554,"line":720},[552,5398,5399],{"class":561},"  opacity",[552,5401,5365],{"class":557},[552,5403,5271],{"class":1115},[552,5405,5406],{"class":1124}," // 0..1, omitted when 1\n",[552,5408,5409,5412,5414,5416],{"class":554,"line":742},[552,5410,5411],{"class":561},"  visible",[552,5413,5365],{"class":557},[552,5415,5368],{"class":1115},[552,5417,5418],{"class":1124}," // omitted when true; false hides the decal\n",[552,5420,5421],{"class":554,"line":546},[552,5422,1240],{"class":557},[552,5424,5425],{"class":554,"line":765},[552,5426,657],{"emptyLinePlaceholder":508},[552,5428,5429,5432,5435,5437,5440,5442,5444,5446,5448,5450],{"class":554,"line":776},[552,5430,5431],{"class":565},"type",[552,5433,5434],{"class":1115}," DecalLayout",[552,5436,2345],{"class":557},[552,5438,5439],{"class":1115}," Record",[552,5441,558],{"class":557},[552,5443,3486],{"class":1115},[552,5445,602],{"class":557},[552,5447,3366],{"class":1115},[552,5449,3493],{"class":598},[552,5451,584],{"class":557},[552,5453,5454],{"class":554,"line":787},[552,5455,5456],{"class":1124},"// { sphere: [...], cube: [...] }\n",[537,5458,5460,5462],{"id":5459},"decal-props",[532,5461,2124],{}," props",[842,5464,5465,5475],{},[845,5466,5467],{},[848,5468,5469,5471,5473],{},[851,5470,853],{},[851,5472,856],{},[851,5474,859],{},[861,5476,5477,5493,5513,5550,5568,5582,5596,5616,5644],{},[848,5478,5479,5483,5489],{},[866,5480,5481],{},[1583,5482,2932],{},[866,5484,5485,5486,5488],{},"Two-way list of stamped decals (use with ",[532,5487,2184],{},").",[866,5490,5491],{},[532,5492,3493],{},[848,5494,5495,5499,5509],{},[866,5496,5497],{},[1583,5498,2895],{},[866,5500,5501,5502,5504,5505,5508],{},"A single ",[532,5503,2163],{}," or array of ",[532,5506,5507],{},"Texture[]",". With multiple, the editor lets the user cycle through them as a palette.",[866,5510,5511],{},[532,5512,3570],{},[848,5514,5515,5520,5546],{},[866,5516,5517],{},[1583,5518,5519],{},"mesh",[866,5521,5522,5523,5525,5526,5529,5530,5532,5533,5536,5537,3250,5539,3250,5542,5545],{},"Optional explicit target mesh (",[532,5524,4206],{}," or ",[532,5527,5528],{},"ShallowRef\u003CMesh>","). When omitted, the scene-graph parent of ",[532,5531,2124],{}," is auto-resolved via a hidden anchor ",[532,5534,5535],{},"\u003CTresGroup>",". The decal mesh is imperatively parented to the target so it follows the target's runtime ",[532,5538,4044],{},[532,5540,5541],{},"rotation",[532,5543,5544],{},"scale"," via the scene-graph hierarchy.",[866,5547,5548],{},[532,5549,3570],{},[848,5551,5552,5556,5564],{},[866,5553,5554],{},[1583,5555,3100],{},[866,5557,4214,5558,5560,5561,5563],{},[532,5559,876],{},", mounts the interactive editor (raycast, hover, click-to-place, drag-from-thumbnail). Required for ",[532,5562,2139],{}," interactions to work on this Decal.",[866,5565,5566],{},[532,5567,886],{},[848,5569,5570,5575,5578],{},[866,5571,5572],{},[1583,5573,5574],{},"baseSize",[866,5576,5577],{},"Reference size used to derive each decal's size from the texture aspect ratio.",[866,5579,5580],{},[532,5581,1788],{},[848,5583,5584,5589,5592],{},[866,5585,5586],{},[1583,5587,5588],{},"baseOffset",[866,5590,5591],{},"Distance along the surface normal (parent units) to avoid z-fighting between the decal and the host mesh.",[866,5593,5594],{},[532,5595,1800],{},[848,5597,5598,5602,5611],{},[866,5599,5600],{},[1583,5601,3010],{},[866,5603,5604,5605,5607,5608,5610],{},"Extra offset added per ",[532,5606,2206],{}," step on top of ",[532,5609,5588],{},". Increase if stacked decals still flicker.",[866,5612,5613],{},[532,5614,5615],{},"0.001",[848,5617,5618,5623,5639],{},[866,5619,5620],{},[1583,5621,5622],{},"cullThreshold",[866,5624,5625,5626,5629,5630,5635,5636,5638],{},"Drops projected triangles whose face normal makes an angle steeper than ",[532,5627,5628],{},"acos(threshold)"," with the projector. Mitigates ",[1055,5631,5634],{"href":5632,"rel":5633},"https://github.com/mrdoob/three.js/issues/21187",[1059],"#21187",". Pass ",[532,5637,880],{}," to disable.",[866,5640,5641],{},[532,5642,5643],{},"0.2",[848,5645,5646,5651,5654],{},[866,5647,5648],{},[1583,5649,5650],{},"edgeColor",[866,5652,5653],{},"Color of the edge outline drawn around a decal while it is hovered (pointer or layer panel) in editable mode.",[866,5655,5656],{},[532,5657,5658],{},"#0000ff",[537,5660,5662,5664],{"id":5661},"decal-events",[532,5663,2124],{}," events",[842,5666,5667,5679],{},[845,5668,5669],{},[848,5670,5671,5674,5677],{},[851,5672,5673],{},"Event",[851,5675,5676],{},"Payload",[851,5678,856],{},[861,5680,5681,5696,5711,5725,5745,5763,5780],{},[848,5682,5683,5688,5693],{},[866,5684,5685],{},[532,5686,5687],{},"update:data",[866,5689,5690],{},[532,5691,5692],{},"DecalJsonEntry[]",[866,5694,5695],{},"v-model partner — fires whenever the JSON list changes.",[848,5697,5698,5703,5708],{},[866,5699,5700],{},[532,5701,5702],{},"add",[866,5704,5705],{},[532,5706,5707],{},"DecalEntry",[866,5709,5710],{},"A new decal has been committed (create mode → confirm).",[848,5712,5713,5718,5722],{},[866,5714,5715],{},[532,5716,5717],{},"update",[866,5719,5720],{},[532,5721,5707],{},[866,5723,5724],{},"An existing decal has been committed (update mode → confirm).",[848,5726,5727,5732,5736],{},[866,5728,5729],{},[532,5730,5731],{},"delete",[866,5733,5734],{},[532,5735,5707],{},[866,5737,5738,5739,3250,5742,5488],{},"A decal has been removed (delete button or ",[532,5740,5741],{},"Del",[532,5743,5744],{},"Backspace",[848,5746,5747,5752,5756],{},[866,5748,5749],{},[532,5750,5751],{},"select",[866,5753,5754],{},[532,5755,5707],{},[866,5757,5758,5759,5762],{},"Edition began on ",[532,5760,5761],{},"entry"," (panel click, 3D click, or programmatic).",[848,5764,5765,5770,5773],{},[866,5766,5767],{},[532,5768,5769],{},"cancel",[866,5771,5772],{},"—",[866,5774,5775,5776,5779],{},"Edition was aborted without commit (",[532,5777,5778],{},"Esc",", click-outside in create mode).",[848,5781,5782,5787,5792],{},[866,5783,5784],{},[532,5785,5786],{},"decalClick",[866,5788,5789],{},[532,5790,5791],{},"{ entry: DecalEntry, event: MouseEvent }",[866,5793,5794,5795,5797,5798,1061],{},"Fires on click of any stamped decal, even when ",[532,5796,3100],{}," is ",[532,5799,886],{},[537,5801,5803,5805,5806,3254],{"id":5802},"decal-exposed-via-ref",[532,5804,2124],{}," exposed (via ",[532,5807,5808],{},"ref",[528,5810,5811,5812,5815],{},"The template ref resolves to ",[532,5813,5814],{},"DecalImperativeApi"," — import the type for\nfull autocompletion:",[541,5817,5819],{"className":1101,"code":5818,"language":579,"meta":500,"style":500},"import type { DecalImperativeApi } from '@tresjs/cientos'\n\nconst decalRef = ref\u003CDecalImperativeApi | null>(null)\n",[532,5820,5821,5842,5846],{"__ignoreMap":500},[552,5822,5823,5825,5827,5829,5832,5834,5836,5838,5840],{"class":554,"line":501},[552,5824,592],{"class":591},[552,5826,3356],{"class":591},[552,5828,595],{"class":557},[552,5830,5831],{"class":598}," DecalImperativeApi",[552,5833,608],{"class":557},[552,5835,611],{"class":591},[552,5837,614],{"class":557},[552,5839,617],{"class":578},[552,5841,620],{"class":557},[552,5843,5844],{"class":554,"line":502},[552,5845,657],{"emptyLinePlaceholder":508},[552,5847,5848,5850,5852,5854,5856,5858,5860,5862,5864,5866,5868,5870],{"class":554,"line":623},[552,5849,2329],{"class":565},[552,5851,3540],{"class":598},[552,5853,572],{"class":557},[552,5855,3786],{"class":2348},[552,5857,558],{"class":557},[552,5859,5814],{"class":1115},[552,5861,3559],{"class":557},[552,5863,3562],{"class":1115},[552,5865,3565],{"class":557},[552,5867,2351],{"class":598},[552,5869,3570],{"class":557},[552,5871,2362],{"class":598},[842,5873,5874,5886],{},[845,5875,5876],{},[848,5877,5878,5881,5884],{},[851,5879,5880],{},"Property",[851,5882,5883],{},"Type",[851,5885,856],{},[861,5887,5888,5906,5924,5942,5957],{},[848,5889,5890,5895,5900],{},[866,5891,5892],{},[532,5893,5894],{},"editor",[866,5896,5897],{},[532,5898,5899],{},"DecalEditorSession",[866,5901,5902,5903,1061],{},"The canvas-shared editor session. Pass it to ",[532,5904,5905],{},"\u003CDecalDebugUI :session>",[848,5907,5908,5913,5918],{},[866,5909,5910],{},[532,5911,5912],{},"beginEditById",[866,5914,5915],{},[532,5916,5917],{},"(id: string) => boolean",[866,5919,5920,5921,5923],{},"Programmatically start editing a specific decal. Returns ",[532,5922,886],{}," if the id is unknown.",[848,5925,5926,5931,5936],{},[866,5927,5928],{},[532,5929,5930],{},"commit",[866,5932,5933],{},[532,5934,5935],{},"() => void",[866,5937,5938,5939,5488],{},"Commit the in-flight edit (same as ",[532,5940,5941],{},"Enter",[848,5943,5944,5948,5952],{},[866,5945,5946],{},[532,5947,5769],{},[866,5949,5950],{},[532,5951,5935],{},[866,5953,5954,5955,5488],{},"Abort the in-flight edit (same as ",[532,5956,5778],{},[848,5958,5959,5964,5968],{},[866,5960,5961],{},[532,5962,5963],{},"remove",[866,5965,5966],{},[532,5967,5935],{},[866,5969,5970,5971,5488],{},"Delete the currently edited decal (same as ",[532,5972,5741],{},[537,5974,5976,5462],{"id":5975},"decaldebugui-props",[532,5977,2139],{},[842,5979,5980,5990],{},[845,5981,5982],{},[848,5983,5984,5986,5988],{},[851,5985,853],{},[851,5987,856],{},[851,5989,859],{},[861,5991,5992,6015,6040,6053,6073,6088,6111],{},[848,5993,5994,5998,6011],{},[866,5995,5996],{},[1583,5997,3649],{},[866,5999,6000,6003,6004,6006,6007,6010],{},[532,6001,6002],{},"DecalEditorSession | null"," — obtained from any ",[532,6005,2124],{}," ref via ",[532,6008,6009],{},"decalRef.value?.editor",". Mandatory for the overlay to wire up the interactive logic.",[866,6012,6013],{},[532,6014,3570],{},[848,6016,6017,6021,6035],{},[866,6018,6019],{},[1583,6020,2932],{},[866,6022,6023,6024,6027,6028,6031,6032,6034],{},"Mesh-name-keyed map of decal slices — ",[532,6025,6026],{},"{ sphere: [...], cube: [...] }",". Each key matches a ",[532,6029,6030],{},"\u003CTresMesh name=\"...\">"," whose child ",[532,6033,2124],{}," owns the slice.",[866,6036,6037],{},[532,6038,6039],{},"{}",[848,6041,6042,6046,6049],{},[866,6043,6044],{},[1583,6045,2867],{},[866,6047,6048],{},"The full texture palette shown in the dock's picker.",[866,6050,6051],{},[532,6052,3493],{},[848,6054,6055,6060,6069],{},[866,6056,6057],{},[1583,6058,6059],{},"theme",[866,6061,6062,5525,6065,6068],{},[532,6063,6064],{},"'light'",[532,6066,6067],{},"'dark'"," — overlay theme tokens.",[866,6070,6071],{},[532,6072,6064],{},[848,6074,6075,6080,6083],{},[866,6076,6077],{},[1583,6078,6079],{},"snapAngle",[866,6081,6082],{},"Rotation step (degrees) applied when the snap toggle is on. Snap-tick ring on the handle adapts automatically.",[866,6084,6085],{},[532,6086,6087],{},"15",[848,6089,6090,6095,6107],{},[866,6091,6092],{},[1583,6093,6094],{},"exportFilename",[866,6096,6097,6098,5635,6100,6102,6103,6106],{},"Filename for the built-in JSON download. When omitted, defaults to ",[532,6099,4093],{},[532,6101,3570],{}," to skip the auto-download (the ",[532,6104,6105],{},"@export"," event still fires).",[866,6108,6109],{},[532,6110,4093],{},[848,6112,6113,6117,6120],{},[866,6114,6115],{},[1583,6116,4020],{},[866,6118,6119],{},"Scope the overlay to the nearest positioned ancestor instead of pinning it to the viewport. Useful for embedding the editor inside a docs page or a bounded host stage.",[866,6121,6122],{},[532,6123,886],{},[537,6125,6127,5664],{"id":6126},"decaldebugui-events",[532,6128,2139],{},[842,6130,6131,6141],{},[845,6132,6133],{},[848,6134,6135,6137,6139],{},[851,6136,5673],{},[851,6138,5676],{},[851,6140,856],{},[861,6142,6143,6157],{},[848,6144,6145,6149,6154],{},[866,6146,6147],{},[532,6148,1109],{},[866,6150,6151],{},[532,6152,6153],{},"DecalLayout",[866,6155,6156],{},"Fires after the user clicks Export. The download (if enabled) has already been triggered — use this for side effects (POST, analytics…).",[848,6158,6159,6163,6167],{},[866,6160,6161],{},[532,6162,592],{},[866,6164,6165],{},[532,6166,6153],{},[866,6168,6169],{},"Fires after the user picks a JSON file. The layout has been sanitised (unknown keys dropped) and already applied to the bound Decals.",[537,6171,6173],{"id":6172},"caveats","Caveats",[2127,6175,6176,6191,6208,6224],{},[2130,6177,6178,6179,6182,6183,6186,6187,6190],{},"✨ The overlay sits at ",[532,6180,6181],{},"position: fixed; inset: 0; pointer-events: none"," with\nindividual panels opting back in. It sits ",[1583,6184,6185],{},"above"," the canvas by default\n(",[532,6188,6189],{},"z-index: 1000000",") — adjust via host CSS if needed.",[2130,6192,6193,6194,6196,6197,6200,6201,1586,6204,6207],{},"🎨 ",[532,6195,2139],{}," ships its own theme in a global stylesheet under the\n",[532,6198,6199],{},".cientos-decal-ui"," namespace, so host styles aren't affected. The CSS\nvariables (",[532,6202,6203],{},"--accent",[532,6205,6206],{},"--dock-bg",", etc.) can be overridden by targeting\nthe namespace.",[2130,6209,6210,6211,6214,6215,6217,6218,6220,6221,6223],{},"🔶 Decals are ",[1583,6212,6213],{},"per-canvas"," — if you have multiple ",[532,6216,3111],{}," in your\napp, each one has its own independent session. Pair each ",[532,6219,2139],{},"\nwith the right ",[532,6222,3649],{}," (from one of the Decals inside that canvas).",[2130,6225,6226,6227,1061],{},"🧩 The parent mesh resolution defaults to the scene-graph parent. If your\nsetup needs a different target (e.g. a mesh referenced from outside the\nDecal's parent slot), pass ",[532,6228,6229],{},":mesh=\"meshRef\"",[537,6231,6233],{"id":6232},"limitations","Limitations",[1919,6235,6236,6250,6257,6300],{},[528,6237,6238,6239,6242,6243,3250,6245,3250,6247,6249],{},"Decal vertices are baked into the ",[1583,6240,6241],{},"target mesh's local space"," at\nbuild time (the decal mesh is imperatively re-parented to the target,\nso ",[532,6244,4044],{},[532,6246,5541],{},[532,6248,5544],{}," on the parent are followed via\nthe scene graph — no rebuild needed).",[528,6251,6252,6253,6256],{},"Runtime deformations that change vertex positions outside of a\ntransform are ",[1583,6254,6255],{},"not"," followed:",[2127,6258,6259,6272,6280,6287],{},[2130,6260,6261,6266,6267,1061],{},[1583,6262,6263],{},[532,6264,6265],{},"SkinnedMesh"," skinning is not applied — the decal stays in rest\npose. See ",[1055,6268,6271],{"href":6269,"rel":6270},"https://github.com/mrdoob/three.js/issues/7926",[1059],"three.js#7926",[2130,6273,6274,6279],{},[1583,6275,6276],{},[532,6277,6278],{},"morphAttributes"," on the parent are ignored.",[2130,6281,6282,6283,6286],{},"Direct mutations of the parent's ",[532,6284,6285],{},"geometry.attributes.position","\n(e.g. CPU wave displacement, GPGPU) — the projection is baked once.",[2130,6288,6289,6290,6294,6295,6297,6298,1061],{},"Decals near silhouettes can wrap around onto opposite faces (see\n",[1055,6291,6293],{"href":5632,"rel":6292},[1059],"three.js#21187",") —\nmitigated by the ",[532,6296,5622],{}," prop, default ",[532,6299,5643],{},[528,6301,6302,6304],{},[532,6303,2124],{}," warns once per parent mesh when it detects these conditions.",[537,6306,6308],{"id":6307},"keyboard-shortcuts","Keyboard shortcuts",[842,6310,6311,6321],{},[845,6312,6313],{},[848,6314,6315,6318],{},[851,6316,6317],{},"Shortcut",[851,6319,6320],{},"Action",[861,6322,6323,6332,6341,6353,6366,6379],{},[848,6324,6325,6329],{},[866,6326,6327],{},[532,6328,5941],{},[866,6330,6331],{},"Confirm the in-flight edit",[848,6333,6334,6338],{},[866,6335,6336],{},[532,6337,5778],{},[866,6339,6340],{},"Cancel (revert updates, drop pending placements)",[848,6342,6343,6350],{},[866,6344,6345,3250,6347],{},[532,6346,5741],{},[532,6348,6349],{},"⌫",[866,6351,6352],{},"Delete the edited decal (or cancel a create)",[848,6354,6355,6363],{},[866,6356,6357,3250,6360],{},[532,6358,6359],{},"⌘Z",[532,6361,6362],{},"Ctrl+Z",[866,6364,6365],{},"Undo",[848,6367,6368,6376],{},[866,6369,6370,3250,6373],{},[532,6371,6372],{},"⇧⌘Z",[532,6374,6375],{},"Ctrl+⇧Z",[866,6377,6378],{},"Redo",[848,6380,6381,6384],{},[866,6382,6383],{},"Click outside",[866,6385,6386],{},"Auto-commit an in-flight update; cancel a create",[537,6388,6390,6391,3254],{"id":6389},"programmatic-api-usedecaleditor","Programmatic API (",[532,6392,6393],{},"useDecalEditor",[528,6395,6396,6397,6399,6400,6402,6403,6405,6406,6408],{},"Skip ",[532,6398,2139],{}," entirely or augment it with custom panels —\n",[532,6401,2152],{}," returns the same canvas-scoped session every Decal\nshares. Call it from any component inside ",[532,6404,3111],{}," (after at\nleast one ",[532,6407,2124],{}," has mounted).",[541,6410,6412],{"className":1101,"code":6411,"language":579,"meta":500,"style":500},"import { useDecalEditor } from '@tresjs/cientos'\n\nconst session = useDecalEditor()\n",[532,6413,6414,6433,6437],{"__ignoreMap":500},[552,6415,6416,6418,6420,6423,6425,6427,6429,6431],{"class":554,"line":501},[552,6417,592],{"class":591},[552,6419,595],{"class":557},[552,6421,6422],{"class":598}," useDecalEditor",[552,6424,608],{"class":557},[552,6426,611],{"class":591},[552,6428,614],{"class":557},[552,6430,617],{"class":578},[552,6432,620],{"class":557},[552,6434,6435],{"class":554,"line":502},[552,6436,657],{"emptyLinePlaceholder":508},[552,6438,6439,6441,6443,6445,6447],{"class":554,"line":623},[552,6440,2329],{"class":565},[552,6442,3579],{"class":598},[552,6444,572],{"class":557},[552,6446,6422],{"class":2348},[552,6448,6449],{"class":598},"()\n",[528,6451,6452,6453,1586,6456,2402,6459,1586,6462,6465,6466,2402,6468,1586,6471,1586,6474,6477,6478,6481,6482,6485,6486,1586,6489,1586,6492,2402,6495,6498],{},"The session exposes reactive state (",[532,6454,6455],{},"editingEntry",[532,6457,6458],{},"editingMode",[532,6460,6461],{},"canUndo",[532,6463,6464],{},"canRedo",", …), by-id mutators (",[532,6467,5912],{},[532,6469,6470],{},"setZIndexById",[532,6472,6473],{},"setVisibilityById",[532,6475,6476],{},"removeById","), batched updates\n(",[532,6479,6480],{},"setMeshData","), commit / delete / cancel listeners, undo / redo, and\na ",[532,6483,6484],{},"registerDecalEntry"," hook for external entries. Helper utilities\n(",[532,6487,6488],{},"ensureTextureNames",[532,6490,6491],{},"getTextureName",[532,6493,6494],{},"getTextureAspect",[532,6496,6497],{},"invalidateDecalGeometry",") are exported alongside.",[5221,6500,5223,6501,6504,6508,6583,6587,6658,6674,6678,6714,6720,6724,6863,6867,6913,6916,6920,6934,7104,7108],{},[5225,6502,6503],{},"Full API reference",[3965,6505,6507],{"id":6506},"reactive-state","Reactive state",[541,6509,6511],{"className":1101,"code":6510,"language":579,"meta":500,"style":500},"session.editingEntry // ShallowRef\u003CDecalEntry | null>\nsession.editingMode // Ref\u003C'create' | 'update' | null>\nsession.lockedMeshUuid // Ref\u003Cstring | null>\nsession.hoveredEntry // ShallowRef\u003CDecalEntry | null>\nsession.canUndo // Ref\u003Cboolean>\nsession.canRedo // Ref\u003Cboolean>\n",[532,6512,6513,6525,6537,6549,6560,6572],{"__ignoreMap":500},[552,6514,6515,6517,6519,6522],{"class":554,"line":501},[552,6516,3649],{"class":598},[552,6518,1061],{"class":557},[552,6520,6521],{"class":598},"editingEntry ",[552,6523,6524],{"class":1124},"// ShallowRef\u003CDecalEntry | null>\n",[552,6526,6527,6529,6531,6534],{"class":554,"line":502},[552,6528,3649],{"class":598},[552,6530,1061],{"class":557},[552,6532,6533],{"class":598},"editingMode ",[552,6535,6536],{"class":1124},"// Ref\u003C'create' | 'update' | null>\n",[552,6538,6539,6541,6543,6546],{"class":554,"line":623},[552,6540,3649],{"class":598},[552,6542,1061],{"class":557},[552,6544,6545],{"class":598},"lockedMeshUuid ",[552,6547,6548],{"class":1124},"// Ref\u003Cstring | null>\n",[552,6550,6551,6553,6555,6558],{"class":554,"line":644},[552,6552,3649],{"class":598},[552,6554,1061],{"class":557},[552,6556,6557],{"class":598},"hoveredEntry ",[552,6559,6524],{"class":1124},[552,6561,6562,6564,6566,6569],{"class":554,"line":654},[552,6563,3649],{"class":598},[552,6565,1061],{"class":557},[552,6567,6568],{"class":598},"canUndo ",[552,6570,6571],{"class":1124},"// Ref\u003Cboolean>\n",[552,6573,6574,6576,6578,6581],{"class":554,"line":660},[552,6575,3649],{"class":598},[552,6577,1061],{"class":557},[552,6579,6580],{"class":598},"canRedo ",[552,6582,6571],{"class":1124},[3965,6584,6586],{"id":6585},"mutating-decals-by-id","Mutating decals by id",[541,6588,6590],{"className":1101,"code":6589,"language":579,"meta":500,"style":500},"session.beginEditById(id) // start editing a placed decal\nsession.setZIndexById(id, newZ) // reorder one decal\nsession.setVisibilityById(id, false) // hide / show\nsession.removeById(id) // delete\n",[532,6591,6592,6606,6625,6645],{"__ignoreMap":500},[552,6593,6594,6596,6598,6600,6603],{"class":554,"line":501},[552,6595,3649],{"class":598},[552,6597,1061],{"class":557},[552,6599,5912],{"class":2348},[552,6601,6602],{"class":598},"(id) ",[552,6604,6605],{"class":1124},"// start editing a placed decal\n",[552,6607,6608,6610,6612,6614,6617,6619,6622],{"class":554,"line":502},[552,6609,3649],{"class":598},[552,6611,1061],{"class":557},[552,6613,6470],{"class":2348},[552,6615,6616],{"class":598},"(id",[552,6618,602],{"class":557},[552,6620,6621],{"class":598}," newZ) ",[552,6623,6624],{"class":1124},"// reorder one decal\n",[552,6626,6627,6629,6631,6633,6635,6637,6640,6642],{"class":554,"line":623},[552,6628,3649],{"class":598},[552,6630,1061],{"class":557},[552,6632,6473],{"class":2348},[552,6634,6616],{"class":598},[552,6636,602],{"class":557},[552,6638,6639],{"class":4311}," false",[552,6641,4648],{"class":598},[552,6643,6644],{"class":1124},"// hide / show\n",[552,6646,6647,6649,6651,6653,6655],{"class":554,"line":644},[552,6648,3649],{"class":598},[552,6650,1061],{"class":557},[552,6652,6476],{"class":2348},[552,6654,6602],{"class":598},[552,6656,6657],{"class":1124},"// delete\n",[528,6659,6660,6661,6664,6665,6667,6668,6670,6671,6673],{},"When the targeted id matches the ",[1583,6662,6663],{},"currently editing"," entry, mutations\nland on the in-flight buffer (committed on ",[532,6666,5941],{},", reverted on ",[532,6669,5778],{},").\nOtherwise they update ",[532,6672,2932],{}," immediately and record history.",[3965,6675,6677],{"id":6676},"batched-mesh-updates","Batched mesh updates",[541,6679,6681],{"className":1101,"code":6680,"language":579,"meta":500,"style":500},"session.setMeshData(meshName, nextEntries, { recordHistory: true })\n",[532,6682,6683],{"__ignoreMap":500},[552,6684,6685,6687,6689,6691,6694,6696,6699,6701,6703,6706,6708,6710,6712],{"class":554,"line":501},[552,6686,3649],{"class":598},[552,6688,1061],{"class":557},[552,6690,6480],{"class":2348},[552,6692,6693],{"class":598},"(meshName",[552,6695,602],{"class":557},[552,6697,6698],{"class":598}," nextEntries",[552,6700,602],{"class":557},[552,6702,595],{"class":557},[552,6704,6705],{"class":561}," recordHistory",[552,6707,1133],{"class":557},[552,6709,4312],{"class":4311},[552,6711,608],{"class":557},[552,6713,2362],{"class":598},[528,6715,6716,6717,6719],{},"A single emit avoids the stale-snapshot race that hits multiple\nback-to-back ",[532,6718,6470],{}," calls in the same tick.",[3965,6721,6723],{"id":6722},"listening-to-commits","Listening to commits",[541,6725,6727],{"className":1101,"code":6726,"language":579,"meta":500,"style":500},"const off = session.onCommit((entry, mode) => {\n  console.log(mode, entry) // mode: 'create' | 'update'\n})\nsession.onDelete((entry) => { /* … */ })\nsession.onCancel(() => { /* … */ })\n\n// All return an unsubscribe function:\nonBeforeUnmount(off)\n",[532,6728,6729,6764,6789,6795,6823,6846,6850,6855],{"__ignoreMap":500},[552,6730,6731,6733,6736,6738,6741,6743,6746,6748,6750,6753,6755,6758,6760,6762],{"class":554,"line":501},[552,6732,2329],{"class":565},[552,6734,6735],{"class":598}," off ",[552,6737,572],{"class":557},[552,6739,6740],{"class":598}," session",[552,6742,1061],{"class":557},[552,6744,6745],{"class":2348},"onCommit",[552,6747,2351],{"class":598},[552,6749,2351],{"class":557},[552,6751,5761],{"class":6752},"sHdIc",[552,6754,602],{"class":557},[552,6756,6757],{"class":6752}," mode",[552,6759,3254],{"class":557},[552,6761,3591],{"class":565},[552,6763,1119],{"class":557},[552,6765,6766,6769,6771,6774,6776,6779,6781,6784,6786],{"class":554,"line":502},[552,6767,6768],{"class":598},"  console",[552,6770,1061],{"class":557},[552,6772,6773],{"class":2348},"log",[552,6775,2351],{"class":561},[552,6777,6778],{"class":598},"mode",[552,6780,602],{"class":557},[552,6782,6783],{"class":598}," entry",[552,6785,4648],{"class":561},[552,6787,6788],{"class":1124},"// mode: 'create' | 'update'\n",[552,6790,6791,6793],{"class":554,"line":623},[552,6792,2342],{"class":557},[552,6794,2362],{"class":598},[552,6796,6797,6799,6801,6804,6806,6808,6810,6812,6814,6816,6819,6821],{"class":554,"line":644},[552,6798,3649],{"class":598},[552,6800,1061],{"class":557},[552,6802,6803],{"class":2348},"onDelete",[552,6805,2351],{"class":598},[552,6807,2351],{"class":557},[552,6809,5761],{"class":6752},[552,6811,3254],{"class":557},[552,6813,3591],{"class":565},[552,6815,595],{"class":557},[552,6817,6818],{"class":1124}," /* … */",[552,6820,608],{"class":557},[552,6822,2362],{"class":598},[552,6824,6825,6827,6829,6832,6834,6836,6838,6840,6842,6844],{"class":554,"line":654},[552,6826,3649],{"class":598},[552,6828,1061],{"class":557},[552,6830,6831],{"class":2348},"onCancel",[552,6833,2351],{"class":598},[552,6835,3588],{"class":557},[552,6837,3591],{"class":565},[552,6839,595],{"class":557},[552,6841,6818],{"class":1124},[552,6843,608],{"class":557},[552,6845,2362],{"class":598},[552,6847,6848],{"class":554,"line":660},[552,6849,657],{"emptyLinePlaceholder":508},[552,6851,6852],{"class":554,"line":670},[552,6853,6854],{"class":1124},"// All return an unsubscribe function:\n",[552,6856,6857,6860],{"class":554,"line":693},[552,6858,6859],{"class":2348},"onBeforeUnmount",[552,6861,6862],{"class":598},"(off)\n",[3965,6864,6866],{"id":6865},"undo-redo","Undo / redo",[541,6868,6870],{"className":1101,"code":6869,"language":579,"meta":500,"style":500},"session.canUndo.value // Ref\u003Cboolean>\nsession.undo() // returns true if something was undone\nsession.redo()\n",[532,6871,6872,6887,6902],{"__ignoreMap":500},[552,6873,6874,6876,6878,6880,6882,6885],{"class":554,"line":501},[552,6875,3649],{"class":598},[552,6877,1061],{"class":557},[552,6879,6461],{"class":598},[552,6881,1061],{"class":557},[552,6883,6884],{"class":598},"value ",[552,6886,6571],{"class":1124},[552,6888,6889,6891,6893,6896,6899],{"class":554,"line":502},[552,6890,3649],{"class":598},[552,6892,1061],{"class":557},[552,6894,6895],{"class":2348},"undo",[552,6897,6898],{"class":598},"() ",[552,6900,6901],{"class":1124},"// returns true if something was undone\n",[552,6903,6904,6906,6908,6911],{"class":554,"line":623},[552,6905,3649],{"class":598},[552,6907,1061],{"class":557},[552,6909,6910],{"class":2348},"redo",[552,6912,6449],{"class":598},[528,6914,6915],{},"History is per-canvas, capped at 100 operations, disabled mid-edit.",[3965,6917,6919],{"id":6918},"power-user-external-entries","Power user — external entries",[528,6921,6922,6923,6925,6926,6929,6930,6933],{},"Plug a decal-like object that lives outside a ",[532,6924,2124],{}," (custom data\nsource, server snapshot, fake entry for tests) by registering a\n",[532,6927,6928],{},"DecalEntryActions"," bundle so the ",[532,6931,6932],{},"*ById"," session methods route to it:",[541,6935,6937],{"className":1101,"code":6936,"language":579,"meta":500,"style":500},"import type { DecalEntryActions } from '@tresjs/cientos'\n\nsession.registerDecalEntry('decal-7', {\n  beginEdit: () => { /* … */ },\n  setZIndex: (newZ) => { /* … */ },\n  setVisibility: (visible) => { /* … */ },\n  remove: () => { /* … */ },\n} satisfies DecalEntryActions)\nonBeforeUnmount(() => session.unregisterDecalEntry('decal-7'))\n",[532,6938,6939,6960,6964,6985,7004,7026,7048,7065,7076],{"__ignoreMap":500},[552,6940,6941,6943,6945,6947,6950,6952,6954,6956,6958],{"class":554,"line":501},[552,6942,592],{"class":591},[552,6944,3356],{"class":591},[552,6946,595],{"class":557},[552,6948,6949],{"class":598}," DecalEntryActions",[552,6951,608],{"class":557},[552,6953,611],{"class":591},[552,6955,614],{"class":557},[552,6957,617],{"class":578},[552,6959,620],{"class":557},[552,6961,6962],{"class":554,"line":502},[552,6963,657],{"emptyLinePlaceholder":508},[552,6965,6966,6968,6970,6972,6974,6976,6979,6981,6983],{"class":554,"line":623},[552,6967,3649],{"class":598},[552,6969,1061],{"class":557},[552,6971,6484],{"class":2348},[552,6973,2351],{"class":598},[552,6975,2354],{"class":557},[552,6977,6978],{"class":578},"decal-7",[552,6980,2354],{"class":557},[552,6982,602],{"class":557},[552,6984,1119],{"class":557},[552,6986,6987,6990,6992,6995,6997,6999,7001],{"class":554,"line":644},[552,6988,6989],{"class":2348},"  beginEdit",[552,6991,1133],{"class":557},[552,6993,6994],{"class":557}," ()",[552,6996,3591],{"class":565},[552,6998,595],{"class":557},[552,7000,6818],{"class":1124},[552,7002,7003],{"class":557}," },\n",[552,7005,7006,7009,7011,7013,7016,7018,7020,7022,7024],{"class":554,"line":654},[552,7007,7008],{"class":2348},"  setZIndex",[552,7010,1133],{"class":557},[552,7012,2988],{"class":557},[552,7014,7015],{"class":6752},"newZ",[552,7017,3254],{"class":557},[552,7019,3591],{"class":565},[552,7021,595],{"class":557},[552,7023,6818],{"class":1124},[552,7025,7003],{"class":557},[552,7027,7028,7031,7033,7035,7038,7040,7042,7044,7046],{"class":554,"line":660},[552,7029,7030],{"class":2348},"  setVisibility",[552,7032,1133],{"class":557},[552,7034,2988],{"class":557},[552,7036,7037],{"class":6752},"visible",[552,7039,3254],{"class":557},[552,7041,3591],{"class":565},[552,7043,595],{"class":557},[552,7045,6818],{"class":1124},[552,7047,7003],{"class":557},[552,7049,7050,7053,7055,7057,7059,7061,7063],{"class":554,"line":670},[552,7051,7052],{"class":2348},"  remove",[552,7054,1133],{"class":557},[552,7056,6994],{"class":557},[552,7058,3591],{"class":565},[552,7060,595],{"class":557},[552,7062,6818],{"class":1124},[552,7064,7003],{"class":557},[552,7066,7067,7069,7072,7074],{"class":554,"line":693},[552,7068,2342],{"class":557},[552,7070,7071],{"class":591}," satisfies",[552,7073,6949],{"class":1115},[552,7075,2362],{"class":598},[552,7077,7078,7080,7082,7084,7086,7088,7090,7093,7095,7097,7099,7101],{"class":554,"line":705},[552,7079,6859],{"class":2348},[552,7081,2351],{"class":598},[552,7083,3588],{"class":557},[552,7085,3591],{"class":565},[552,7087,6740],{"class":598},[552,7089,1061],{"class":557},[552,7091,7092],{"class":2348},"unregisterDecalEntry",[552,7094,2351],{"class":598},[552,7096,2354],{"class":557},[552,7098,6978],{"class":578},[552,7100,2354],{"class":557},[552,7102,7103],{"class":598},"))\n",[3965,7105,7107],{"id":7106},"helper-utilities","Helper utilities",[842,7109,7110,7119],{},[845,7111,7112],{},[848,7113,7114,7116],{},[851,7115,307],{},[851,7117,7118],{},"Use",[861,7120,7121,7141,7153,7166],{},[848,7122,7123,7128],{},[866,7124,7125],{},[532,7126,7127],{},"ensureTextureNames(textures)",[866,7129,7130,7131,7133,7134,7137,7138,1061],{},"Back-fills ",[532,7132,2891],{}," from ",[532,7135,7136],{},"userData.name"," or the filename in ",[532,7139,7140],{},"image.src",[848,7142,7143,7148],{},[866,7144,7145],{},[532,7146,7147],{},"getTextureName(texture)",[866,7149,7150,7151,1061],{},"Single-texture variant — returns a stable name or ",[532,7152,3570],{},[848,7154,7155,7160],{},[866,7156,7157],{},[532,7158,7159],{},"getTextureAspect(texture)",[866,7161,7162,7165],{},[532,7163,7164],{},"{ x, y }"," aspect ratio for custom-sized decals.",[848,7167,7168,7173],{},[866,7169,7170],{},[532,7171,7172],{},"invalidateDecalGeometry(mesh)",[866,7174,7175],{},"Force a rebuild on the next frame — call when the parent mesh moved or swapped.",[1242,7177,7178],{},"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 pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sqsOY, html code.shiki .sqsOY{--shiki-light:#8796B0;--shiki-default:#B2CCD6;--shiki-dark:#B2CCD6}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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}",{"title":500,"searchDepth":501,"depth":502,"links":7180},[7181,7182,7183,7184,7185,7189,7190,7198,7199,7201,7203,7205,7207,7209,7210,7211,7212],{"id":539,"depth":502,"text":15},{"id":2704,"depth":502,"text":2705},{"id":2899,"depth":502,"text":2173},{"id":2996,"depth":502,"text":2997},{"id":3091,"depth":502,"text":7186,"children":7187},"Editable mode + \u003CDecalDebugUI>",[7188],{"id":3967,"depth":623,"text":3968},{"id":4087,"depth":502,"text":3293},{"id":4186,"depth":502,"text":7191,"children":7192},"Targeting a loaded model (.glb)",[7193,7195,7197],{"id":4213,"depth":623,"text":7194},"When :object is a Mesh",{"id":4435,"depth":623,"text":7196},"When :object is a Group",{"id":4776,"depth":623,"text":4777},{"id":5202,"depth":502,"text":5203},{"id":5459,"depth":502,"text":7200},"\u003CDecal> props",{"id":5661,"depth":502,"text":7202},"\u003CDecal> events",{"id":5802,"depth":502,"text":7204},"\u003CDecal> exposed (via ref)",{"id":5975,"depth":502,"text":7206},"\u003CDecalDebugUI> props",{"id":6126,"depth":502,"text":7208},"\u003CDecalDebugUI> events",{"id":6172,"depth":502,"text":6173},{"id":6232,"depth":502,"text":6233},{"id":6307,"depth":502,"text":6308},{"id":6389,"depth":502,"text":7213},"Programmatic API (useDecalEditor)","Project a texture onto a mesh's surface — with an optional in-canvas editor UI.",{},{"title":53,"description":7214},"nqt2hDhRcN1seFAcvm0knRwz3m-KmMDv-8VwRbWGyfQ",{"id":7219,"title":57,"body":7220,"description":7508,"extension":505,"links":506,"meta":7509,"navigation":508,"path":58,"seo":7510,"stem":59,"__hash__":7511},"docs/2.api/1.abstractions/edges.md",{"type":493,"value":7221,"toc":7504},[7222,7227,7243,7245,7422,7424,7441,7502],[522,7223,7224],{},[7225,7226],"abstractions-edges",{},[528,7228,2690,7229,7232,7233,7238,7239,7242],{},[532,7230,7231],{},"cientos"," package provides an abstraction of ",[1055,7234,7237],{"href":7235,"rel":7236},"https://threejs.org/docs/#api/en/geometries/EdgesGeometry",[1059],"EdgesGeometry"," from Three.js, ",[532,7240,7241],{},"\u003CEdges>"," is specifically designed for rendering visible edges of objects in a scene graph. This enhances the visual quality by highlighting contours and providing a stylized appearance which contributes to the artistic aspect of 3D visualizations.",[537,7244,15],{"id":539},[541,7246,7249],{"className":543,"code":7247,"highlights":7248,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { TresCanvas } from '@tresjs/core'\nimport { Box, Edges, OrbitControls } from '@tresjs/cientos'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas>\n    \u003CTresPerspectiveCamera :position=\"[0, 2, 5]\" />\n    \u003COrbitControls />\n    \u003CBox>\n      \u003CTresMeshBasicMaterial />\n      \u003CEdges />\n    \u003C/Box>\n  \u003C/TresCanvas>\n\u003C/template>\n",[623,742],[532,7250,7251,7271,7289,7317,7325,7329,7337,7345,7364,7372,7380,7389,7398,7406,7414],{"__ignoreMap":500},[552,7252,7253,7255,7257,7259,7261,7263,7265,7267,7269],{"class":554,"line":501},[552,7254,558],{"class":557},[552,7256,562],{"class":561},[552,7258,566],{"class":565},[552,7260,569],{"class":565},[552,7262,572],{"class":557},[552,7264,575],{"class":557},[552,7266,579],{"class":578},[552,7268,575],{"class":557},[552,7270,584],{"class":557},[552,7272,7273,7275,7277,7279,7281,7283,7285,7287],{"class":554,"line":502},[552,7274,592],{"class":591},[552,7276,595],{"class":557},[552,7278,630],{"class":598},[552,7280,608],{"class":557},[552,7282,611],{"class":591},[552,7284,614],{"class":557},[552,7286,639],{"class":578},[552,7288,620],{"class":557},[552,7290,7292,7294,7296,7298,7300,7303,7305,7307,7309,7311,7313,7315],{"class":7291,"line":623},[554,588],[552,7293,592],{"class":591},[552,7295,595],{"class":557},[552,7297,1311],{"class":598},[552,7299,602],{"class":557},[552,7301,7302],{"class":598}," Edges",[552,7304,602],{"class":557},[552,7306,605],{"class":598},[552,7308,608],{"class":557},[552,7310,611],{"class":591},[552,7312,614],{"class":557},[552,7314,617],{"class":578},[552,7316,620],{"class":557},[552,7318,7319,7321,7323],{"class":554,"line":644},[552,7320,647],{"class":557},[552,7322,562],{"class":561},[552,7324,584],{"class":557},[552,7326,7327],{"class":554,"line":654},[552,7328,657],{"emptyLinePlaceholder":508},[552,7330,7331,7333,7335],{"class":554,"line":660},[552,7332,558],{"class":557},[552,7334,665],{"class":561},[552,7336,584],{"class":557},[552,7338,7339,7341,7343],{"class":554,"line":670},[552,7340,673],{"class":557},[552,7342,676],{"class":561},[552,7344,584],{"class":557},[552,7346,7347,7349,7351,7353,7355,7357,7360,7362],{"class":554,"line":693},[552,7348,696],{"class":557},[552,7350,699],{"class":561},[552,7352,1399],{"class":565},[552,7354,572],{"class":557},[552,7356,575],{"class":557},[552,7358,7359],{"class":578},"[0, 2, 5]",[552,7361,575],{"class":557},[552,7363,702],{"class":557},[552,7365,7366,7368,7370],{"class":554,"line":705},[552,7367,696],{"class":557},[552,7369,710],{"class":561},[552,7371,702],{"class":557},[552,7373,7374,7376,7378],{"class":554,"line":715},[552,7375,696],{"class":557},[552,7377,209],{"class":561},[552,7379,584],{"class":557},[552,7381,7382,7384,7387],{"class":554,"line":720},[552,7383,768],{"class":557},[552,7385,7386],{"class":561},"TresMeshBasicMaterial",[552,7388,702],{"class":557},[552,7390,7392,7394,7396],{"class":7391,"line":742},[554,588],[552,7393,768],{"class":557},[552,7395,57],{"class":561},[552,7397,702],{"class":557},[552,7399,7400,7402,7404],{"class":554,"line":546},[552,7401,810],{"class":557},[552,7403,209],{"class":561},[552,7405,584],{"class":557},[552,7407,7408,7410,7412],{"class":554,"line":765},[552,7409,820],{"class":557},[552,7411,676],{"class":561},[552,7413,584],{"class":557},[552,7415,7416,7418,7420],{"class":554,"line":776},[552,7417,647],{"class":557},[552,7419,665],{"class":561},[552,7421,584],{"class":557},[537,7423,837],{"id":836},[528,7425,7426,7428,7429,7434,7435,7440],{},[532,7427,7241],{}," is based on ",[1055,7430,7433],{"href":7431,"rel":7432},"https://threejs.org/docs/#api/en/objects/LineSegments",[1059],"LineSegments"," & ",[1055,7436,7439],{"href":7437,"rel":7438},"https://threejs.org/docs/#api/en/objects/Line",[1059],"Line"," and supports all of its props.",[842,7442,7443,7453],{},[845,7444,7445],{},[848,7446,7447,7449,7451],{},[851,7448,853],{"align":912},[851,7450,856],{"align":912},[851,7452,859],{},[861,7454,7455,7486],{},[848,7456,7457,7462,7481],{},[866,7458,7459],{"align":912},[1583,7460,7461],{},"color",[866,7463,7464,7467,7468,7471,7472,2181,7477],{"align":912},[532,7465,7466],{},"THREE.Color"," — Color of the edges. ",[7469,7470],"br",{}," More informations : ",[1055,7473,7476],{"href":7474,"rel":7475},"https://docs.tresjs.org/api/instances-arguments-and-props.html#colors",[1059],"TresColor",[1055,7478,7466],{"href":7479,"rel":7480},"https://threejs.org/docs/#api/en/math/Color",[1059],[866,7482,7483],{},[532,7484,7485],{},"#ff0000",[848,7487,7488,7493,7498],{},[866,7489,7490],{"align":912},[1583,7491,7492],{},"threshold",[866,7494,7495,7497],{"align":912},[532,7496,5266],{}," — An edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value",[866,7499,7500],{},[532,7501,1788],{},[1242,7503,1558],{},{"title":500,"searchDepth":501,"depth":502,"links":7505},[7506,7507],{"id":539,"depth":502,"text":15},{"id":836,"depth":502,"text":837},"Render visible edges of objects with enhanced visual quality.",{},{"title":57,"description":7508},"mRAeZ9k02RaCisz4JzfTtekMB9_pkyMIRW_17D1E3qo",{"id":7513,"title":61,"body":7514,"description":8133,"extension":505,"links":506,"meta":8134,"navigation":508,"path":62,"seo":8135,"stem":63,"__hash__":8136},"docs/2.api/1.abstractions/fit.md",{"type":493,"value":7515,"toc":8129},[7516,7521,7527,7537,7543,7545,7993,7995,8126],[2209,7517,7518],{},[7519,7520],"abstractions-fit",{},[528,7522,7523,7526],{},[532,7524,7525],{},"\u003CFit />"," uniformly scales and positions its children as a group. By default, it fits its children into a 1 × 1 × 1 box at the world origin.",[528,7528,7529,7530,7533,7534,1061],{},"Alternatively, the children can be fit into a ",[532,7531,7532],{},"Box3"," or an ",[532,7535,7536],{},"Object3D",[528,7538,7539,7540,7542],{},"Or the children can simply be resized. With ",[532,7541,7525],{}," the children are scaled relative to the center of their calculated bounding box.",[537,7544,15],{"id":539},[541,7546,7549],{"className":543,"code":7547,"highlights":7548,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { Fit, OrbitControls } from '@tresjs/cientos'\nimport { TresCanvas } from '@tresjs/core'\nimport { BoxGeometry, MeshNormalMaterial } from 'three'\n\nconst positions: number[][] = []\nfor (let y = 100; y \u003C= 120; y += 10) {\n  for (let x = 100; x \u003C= 120; x += 10) {\n    positions.push([x, y, 9999])\n  }\n}\nconst geom = new BoxGeometry()\nconst mat = new MeshNormalMaterial()\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas clear-color=\"#4F4F4F\">\n    \u003CTresPerspectiveCamera :position=\"[1, 1, 1]\" />\n    \u003COrbitControls />\n    \u003CFit>\n      \u003CTresMesh\n        v-for=\"(pos, index) in positions\"\n        :key=\"index\"\n        :position=\"pos\"\n        :args=\"[geom, mat]\"\n      />\n    \u003C/Fit>\n    \u003CTresGridHelper :args=\"[1, 1]\" />\n  \u003C/TresCanvas>\n\u003C/template>\n\n",[502,827,2617],[532,7550,7551,7571,7595,7613,7637,7641,7660,7702,7740,7767,7772,7776,7792,7807,7815,7819,7827,7846,7864,7872,7881,7887,7901,7915,7929,7943,7948,7957,7977,7985],{"__ignoreMap":500},[552,7552,7553,7555,7557,7559,7561,7563,7565,7567,7569],{"class":554,"line":501},[552,7554,558],{"class":557},[552,7556,562],{"class":561},[552,7558,566],{"class":565},[552,7560,569],{"class":565},[552,7562,572],{"class":557},[552,7564,575],{"class":557},[552,7566,579],{"class":578},[552,7568,575],{"class":557},[552,7570,584],{"class":557},[552,7572,7574,7576,7578,7581,7583,7585,7587,7589,7591,7593],{"class":7573,"line":502},[554,588],[552,7575,592],{"class":591},[552,7577,595],{"class":557},[552,7579,7580],{"class":598}," Fit",[552,7582,602],{"class":557},[552,7584,605],{"class":598},[552,7586,608],{"class":557},[552,7588,611],{"class":591},[552,7590,614],{"class":557},[552,7592,617],{"class":578},[552,7594,620],{"class":557},[552,7596,7597,7599,7601,7603,7605,7607,7609,7611],{"class":554,"line":623},[552,7598,592],{"class":591},[552,7600,595],{"class":557},[552,7602,630],{"class":598},[552,7604,608],{"class":557},[552,7606,611],{"class":591},[552,7608,614],{"class":557},[552,7610,639],{"class":578},[552,7612,620],{"class":557},[552,7614,7615,7617,7619,7622,7624,7627,7629,7631,7633,7635],{"class":554,"line":644},[552,7616,592],{"class":591},[552,7618,595],{"class":557},[552,7620,7621],{"class":598}," BoxGeometry",[552,7623,602],{"class":557},[552,7625,7626],{"class":598}," MeshNormalMaterial",[552,7628,608],{"class":557},[552,7630,611],{"class":591},[552,7632,614],{"class":557},[552,7634,4540],{"class":578},[552,7636,620],{"class":557},[552,7638,7639],{"class":554,"line":654},[552,7640,657],{"emptyLinePlaceholder":508},[552,7642,7643,7645,7648,7650,7652,7655,7657],{"class":554,"line":660},[552,7644,2329],{"class":565},[552,7646,7647],{"class":598}," positions",[552,7649,1133],{"class":557},[552,7651,5271],{"class":1115},[552,7653,7654],{"class":598},"[][] ",[552,7656,572],{"class":557},[552,7658,7659],{"class":598}," []\n",[552,7661,7662,7665,7667,7670,7673,7675,7678,7680,7682,7685,7688,7690,7692,7695,7698,7700],{"class":554,"line":670},[552,7663,7664],{"class":591},"for",[552,7666,2988],{"class":598},[552,7668,7669],{"class":565},"let",[552,7671,7672],{"class":598}," y ",[552,7674,572],{"class":557},[552,7676,7677],{"class":2415}," 100",[552,7679,4052],{"class":557},[552,7681,7672],{"class":598},[552,7683,7684],{"class":557},"\u003C=",[552,7686,7687],{"class":2415}," 120",[552,7689,4052],{"class":557},[552,7691,7672],{"class":598},[552,7693,7694],{"class":557},"+=",[552,7696,7697],{"class":2415}," 10",[552,7699,4648],{"class":598},[552,7701,3174],{"class":557},[552,7703,7704,7707,7709,7711,7714,7716,7718,7720,7722,7725,7727,7729,7731,7734,7736,7738],{"class":554,"line":693},[552,7705,7706],{"class":591},"  for",[552,7708,2988],{"class":561},[552,7710,7669],{"class":565},[552,7712,7713],{"class":598}," x",[552,7715,2345],{"class":557},[552,7717,7677],{"class":2415},[552,7719,4052],{"class":557},[552,7721,7713],{"class":598},[552,7723,7724],{"class":557}," \u003C=",[552,7726,7687],{"class":2415},[552,7728,4052],{"class":557},[552,7730,7713],{"class":598},[552,7732,7733],{"class":557}," +=",[552,7735,7697],{"class":2415},[552,7737,4648],{"class":561},[552,7739,3174],{"class":557},[552,7741,7742,7745,7747,7750,7752,7755,7757,7760,7762,7765],{"class":554,"line":705},[552,7743,7744],{"class":598},"    positions",[552,7746,1061],{"class":557},[552,7748,7749],{"class":2348},"push",[552,7751,3443],{"class":561},[552,7753,7754],{"class":598},"x",[552,7756,602],{"class":557},[552,7758,7759],{"class":598}," y",[552,7761,602],{"class":557},[552,7763,7764],{"class":2415}," 9999",[552,7766,2516],{"class":561},[552,7768,7769],{"class":554,"line":715},[552,7770,7771],{"class":557},"  }\n",[552,7773,7774],{"class":554,"line":720},[552,7775,1240],{"class":557},[552,7777,7778,7780,7783,7785,7788,7790],{"class":554,"line":742},[552,7779,2329],{"class":565},[552,7781,7782],{"class":598}," geom ",[552,7784,572],{"class":557},[552,7786,7787],{"class":557}," new",[552,7789,7621],{"class":2348},[552,7791,6449],{"class":598},[552,7793,7794,7796,7799,7801,7803,7805],{"class":554,"line":546},[552,7795,2329],{"class":565},[552,7797,7798],{"class":598}," mat ",[552,7800,572],{"class":557},[552,7802,7787],{"class":557},[552,7804,7626],{"class":2348},[552,7806,6449],{"class":598},[552,7808,7809,7811,7813],{"class":554,"line":765},[552,7810,647],{"class":557},[552,7812,562],{"class":561},[552,7814,584],{"class":557},[552,7816,7817],{"class":554,"line":776},[552,7818,657],{"emptyLinePlaceholder":508},[552,7820,7821,7823,7825],{"class":554,"line":787},[552,7822,558],{"class":557},[552,7824,665],{"class":561},[552,7826,584],{"class":557},[552,7828,7829,7831,7833,7835,7837,7839,7842,7844],{"class":554,"line":797},[552,7830,673],{"class":557},[552,7832,676],{"class":561},[552,7834,679],{"class":565},[552,7836,572],{"class":557},[552,7838,575],{"class":557},[552,7840,7841],{"class":578},"#4F4F4F",[552,7843,575],{"class":557},[552,7845,584],{"class":557},[552,7847,7848,7850,7852,7854,7856,7858,7860,7862],{"class":554,"line":547},[552,7849,696],{"class":557},[552,7851,699],{"class":561},[552,7853,1399],{"class":565},[552,7855,572],{"class":557},[552,7857,575],{"class":557},[552,7859,1880],{"class":578},[552,7861,575],{"class":557},[552,7863,702],{"class":557},[552,7865,7866,7868,7870],{"class":554,"line":817},[552,7867,696],{"class":557},[552,7869,710],{"class":561},[552,7871,702],{"class":557},[552,7873,7875,7877,7879],{"class":7874,"line":827},[554,588],[552,7876,696],{"class":557},[552,7878,61],{"class":561},[552,7880,584],{"class":557},[552,7882,7883,7885],{"class":554,"line":2539},[552,7884,768],{"class":557},[552,7886,5040],{"class":561},[552,7888,7889,7892,7894,7896,7899],{"class":554,"line":2548},[552,7890,7891],{"class":565},"        v-for",[552,7893,572],{"class":557},[552,7895,575],{"class":557},[552,7897,7898],{"class":578},"(pos, index) in positions",[552,7900,3045],{"class":557},[552,7902,7903,7906,7908,7910,7913],{"class":554,"line":2568},[552,7904,7905],{"class":565},"        :key",[552,7907,572],{"class":557},[552,7909,575],{"class":557},[552,7911,7912],{"class":578},"index",[552,7914,3045],{"class":557},[552,7916,7917,7920,7922,7924,7927],{"class":554,"line":2577},[552,7918,7919],{"class":565},"        :position",[552,7921,572],{"class":557},[552,7923,575],{"class":557},[552,7925,7926],{"class":578},"pos",[552,7928,3045],{"class":557},[552,7930,7931,7934,7936,7938,7941],{"class":554,"line":2586},[552,7932,7933],{"class":565},"        :args",[552,7935,572],{"class":557},[552,7937,575],{"class":557},[552,7939,7940],{"class":578},"[geom, mat]",[552,7942,3045],{"class":557},[552,7944,7945],{"class":554,"line":2595},[552,7946,7947],{"class":557},"      />\n",[552,7949,7951,7953,7955],{"class":7950,"line":2617},[554,588],[552,7952,810],{"class":557},[552,7954,61],{"class":561},[552,7956,584],{"class":557},[552,7958,7959,7961,7964,7966,7968,7970,7973,7975],{"class":554,"line":2661},[552,7960,696],{"class":557},[552,7962,7963],{"class":561},"TresGridHelper",[552,7965,1873],{"class":565},[552,7967,572],{"class":557},[552,7969,575],{"class":557},[552,7971,7972],{"class":578},"[1, 1]",[552,7974,575],{"class":557},[552,7976,702],{"class":557},[552,7978,7979,7981,7983],{"class":554,"line":2670},[552,7980,820],{"class":557},[552,7982,676],{"class":561},[552,7984,584],{"class":557},[552,7986,7987,7989,7991],{"class":554,"line":2679},[552,7988,647],{"class":557},[552,7990,665],{"class":561},[552,7992,584],{"class":557},[537,7994,837],{"id":836},[842,7996,7997,8006],{},[845,7998,7999],{},[848,8000,8001,8004],{},[851,8002,8003],{"align":912},"Name",[851,8005,856],{"align":912},[861,8007,8008,8102],{},[848,8009,8010,8015],{},[866,8011,8012],{"align":912},[1583,8013,8014],{},"into",[866,8016,873,8017,8019,8020,8094,8096,8097,8099],{"align":912},[532,8018,8014],{}," is:",[2127,8021,8022,8031,8039,8047,8055,8066,8073],{},[2130,8023,8024,8025,8027,8028,8030],{},"omitted or explicitly ",[532,8026,1094],{},": position/scale children to fit into a 1 × 1 × 1 ",[532,8029,7532],{}," at world origin.",[2130,8032,8033,8035,8036,8038],{},[532,8034,3570],{},": turn off ",[532,8037,7525],{},"; reset scale/position of children.",[2130,8040,8041,8043,8044,1061],{},[532,8042,5266],{},": convert argument to ",[532,8045,8046],{},"Vector3(number, number, number)",[2130,8048,8049,8043,8052,1061],{},[532,8050,8051],{},"[number, number, number]",[532,8053,8054],{},"Vector3",[2130,8056,8057,8059,8060,8062,8063,8065],{},[532,8058,8054],{},": position/scale children to fit inside a ",[532,8061,7532],{}," of size ",[532,8064,8054],{}," at target objects' cumulative center.",[2130,8067,8068,8070,8071,1061],{},[532,8069,7532],{},": position/scale children to fit inside ",[532,8072,7532],{},[2130,8074,8075,8077,8078,8080,8081,8080,8088,8090,8091,8093],{},[532,8076,7536],{},": position/scale children to fit inside calculated ",[532,8079,7532],{},". ",[1055,8082,1053,8085],{"href":8083,"rel":8084},"https://threejs.org/docs/#api/en/math/Box3.setFromObject",[1059],[532,8086,8087],{},"THREE.Box3.setFromObject",[532,8089,7525],{}," must not contain the ",[532,8092,7536],{}," and vice-versa.",[7469,8095],{},"default:",[7469,8098],{},[532,8100,8101],{},"new Box3(new Vector3(-0.5, -0.5, -0.5), new Vector3(0.5, 0.5, 0.5))",[848,8103,8104,8108],{},[866,8105,8106],{"align":912},[1583,8107,1050],{},[866,8109,8110,8118,8120,8096,8122,8124],{"align":912},[1055,8111,1053,8113,8115,8116],{"href":1057,"rel":8112},[1059],[532,8114,1050],{}," argument in ",[532,8117,8087],{},[7469,8119],{},[7469,8121],{},[7469,8123],{},[532,8125,886],{},[1242,8127,8128],{},"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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);}",{"title":500,"searchDepth":501,"depth":502,"links":8130},[8131,8132],{"id":539,"depth":502,"text":15},{"id":836,"depth":502,"text":837},"Uniformly scale and position children to fit into a defined space.",{},{"title":61,"description":8133},"8AurvuiiZvTbSuZQKf_ksydDO09mH9Fnt7AaTb_9ZtA",{"id":8138,"title":65,"body":8139,"description":8527,"extension":505,"links":506,"meta":8528,"navigation":508,"path":66,"seo":8529,"stem":67,"__hash__":8530},"docs/2.api/1.abstractions/levioso.md",{"type":493,"value":8140,"toc":8523},[8141,8146,8153,8162,8164,8448,8450,8521],[522,8142,8143],{},[8144,8145],"abstractions-levioso",{},[528,8147,8148],{},[8149,8150],"img",{"alt":8151,"src":8152},"Leviosa","https://media.giphy.com/media/HaCFT5ghY6L1m/giphy.gif",[528,8154,2690,8155,8157,8158,8161],{},[532,8156,7231],{}," package provides a ",[532,8159,8160],{},"\u003CLevioso />"," wrapper that makes its content … float, just like Magic 🪄✨",[537,8163,15],{"id":539},[541,8165,8168],{"className":543,"code":8166,"highlights":8167,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { TresCanvas } from \"@tresjs/core\";\nimport { Levioso, OrbitControls, Box } from \"@tresjs/cientos\";\n\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas :clear-color=\"0x82dbc5\">\n    \u003CTresPerspectiveCamera :position=\"[0, 0, 5]\" :look-at=\"[0, 0, 0]\" />\n    \u003COrbitControls />\n    \u003CLevioso :speed=\"4\">\n      \u003CBox />\n    \u003C/Levioso>\n    \u003CTresAmbientLight :intensity=\"1\" />\n    \u003CTresDirectionalLight :intensity=\"1\" :position=\"[2, 2, 2]\" />\n    \u003CTresGridHelper :position=\"[0, -1, 0]\" />\n  \u003C/TresCanvas>\n\u003C/template>\n\n",[623,720,546],[532,8169,8170,8190,8212,8242,8246,8254,8258,8266,8286,8317,8325,8347,8355,8364,8383,8413,8432,8440],{"__ignoreMap":500},[552,8171,8172,8174,8176,8178,8180,8182,8184,8186,8188],{"class":554,"line":501},[552,8173,558],{"class":557},[552,8175,562],{"class":561},[552,8177,566],{"class":565},[552,8179,569],{"class":565},[552,8181,572],{"class":557},[552,8183,575],{"class":557},[552,8185,579],{"class":578},[552,8187,575],{"class":557},[552,8189,584],{"class":557},[552,8191,8192,8194,8196,8198,8200,8202,8205,8207,8209],{"class":554,"line":502},[552,8193,592],{"class":591},[552,8195,595],{"class":557},[552,8197,630],{"class":598},[552,8199,608],{"class":557},[552,8201,611],{"class":591},[552,8203,8204],{"class":557}," \"",[552,8206,639],{"class":578},[552,8208,575],{"class":557},[552,8210,8211],{"class":557},";\n",[552,8213,8215,8217,8219,8222,8224,8226,8228,8230,8232,8234,8236,8238,8240],{"class":8214,"line":623},[554,588],[552,8216,592],{"class":591},[552,8218,595],{"class":557},[552,8220,8221],{"class":598}," Levioso",[552,8223,602],{"class":557},[552,8225,605],{"class":598},[552,8227,602],{"class":557},[552,8229,1311],{"class":598},[552,8231,608],{"class":557},[552,8233,611],{"class":591},[552,8235,8204],{"class":557},[552,8237,617],{"class":578},[552,8239,575],{"class":557},[552,8241,8211],{"class":557},[552,8243,8244],{"class":554,"line":644},[552,8245,657],{"emptyLinePlaceholder":508},[552,8247,8248,8250,8252],{"class":554,"line":654},[552,8249,647],{"class":557},[552,8251,562],{"class":561},[552,8253,584],{"class":557},[552,8255,8256],{"class":554,"line":660},[552,8257,657],{"emptyLinePlaceholder":508},[552,8259,8260,8262,8264],{"class":554,"line":670},[552,8261,558],{"class":557},[552,8263,665],{"class":561},[552,8265,584],{"class":557},[552,8267,8268,8270,8272,8275,8277,8279,8282,8284],{"class":554,"line":693},[552,8269,673],{"class":557},[552,8271,676],{"class":561},[552,8273,8274],{"class":565}," :clear-color",[552,8276,572],{"class":557},[552,8278,575],{"class":557},[552,8280,8281],{"class":578},"0x82dbc5",[552,8283,575],{"class":557},[552,8285,584],{"class":557},[552,8287,8288,8290,8292,8294,8296,8298,8301,8303,8306,8308,8310,8313,8315],{"class":554,"line":705},[552,8289,696],{"class":557},[552,8291,699],{"class":561},[552,8293,1399],{"class":565},[552,8295,572],{"class":557},[552,8297,575],{"class":557},[552,8299,8300],{"class":578},"[0, 0, 5]",[552,8302,575],{"class":557},[552,8304,8305],{"class":565}," :look-at",[552,8307,572],{"class":557},[552,8309,575],{"class":557},[552,8311,8312],{"class":578},"[0, 0, 0]",[552,8314,575],{"class":557},[552,8316,702],{"class":557},[552,8318,8319,8321,8323],{"class":554,"line":715},[552,8320,696],{"class":557},[552,8322,710],{"class":561},[552,8324,702],{"class":557},[552,8326,8328,8330,8333,8336,8338,8340,8343,8345],{"class":8327,"line":720},[554,588],[552,8329,696],{"class":557},[552,8331,8332],{"class":561},"Levioso",[552,8334,8335],{"class":565}," :speed",[552,8337,572],{"class":557},[552,8339,575],{"class":557},[552,8341,8342],{"class":578},"4",[552,8344,575],{"class":557},[552,8346,584],{"class":557},[552,8348,8349,8351,8353],{"class":554,"line":742},[552,8350,768],{"class":557},[552,8352,209],{"class":561},[552,8354,702],{"class":557},[552,8356,8358,8360,8362],{"class":8357,"line":546},[554,588],[552,8359,810],{"class":557},[552,8361,8332],{"class":561},[552,8363,584],{"class":557},[552,8365,8366,8368,8371,8373,8375,8377,8379,8381],{"class":554,"line":765},[552,8367,696],{"class":557},[552,8369,8370],{"class":561},"TresAmbientLight",[552,8372,1781],{"class":565},[552,8374,572],{"class":557},[552,8376,575],{"class":557},[552,8378,1788],{"class":578},[552,8380,575],{"class":557},[552,8382,702],{"class":557},[552,8384,8385,8387,8390,8392,8394,8396,8398,8400,8402,8404,8406,8409,8411],{"class":554,"line":776},[552,8386,696],{"class":557},[552,8388,8389],{"class":561},"TresDirectionalLight",[552,8391,1781],{"class":565},[552,8393,572],{"class":557},[552,8395,575],{"class":557},[552,8397,1788],{"class":578},[552,8399,575],{"class":557},[552,8401,1399],{"class":565},[552,8403,572],{"class":557},[552,8405,575],{"class":557},[552,8407,8408],{"class":578},"[2, 2, 2]",[552,8410,575],{"class":557},[552,8412,702],{"class":557},[552,8414,8415,8417,8419,8421,8423,8425,8428,8430],{"class":554,"line":787},[552,8416,696],{"class":557},[552,8418,7963],{"class":561},[552,8420,1399],{"class":565},[552,8422,572],{"class":557},[552,8424,575],{"class":557},[552,8426,8427],{"class":578},"[0, -1, 0]",[552,8429,575],{"class":557},[552,8431,702],{"class":557},[552,8433,8434,8436,8438],{"class":554,"line":797},[552,8435,820],{"class":557},[552,8437,676],{"class":561},[552,8439,584],{"class":557},[552,8441,8442,8444,8446],{"class":554,"line":547},[552,8443,647],{"class":557},[552,8445,665],{"class":561},[552,8447,584],{"class":557},[537,8449,837],{"id":836},[842,8451,8452,8462],{},[845,8453,8454],{},[848,8455,8456,8458,8460],{},[851,8457,853],{"align":912},[851,8459,856],{"align":912},[851,8461,859],{},[861,8463,8464,8478,8492,8506],{},[848,8465,8466,8471,8474],{},[866,8467,8468],{"align":912},[532,8469,8470],{},"speed",[866,8472,8473],{"align":912},"Floating speed, higher it rocks more 🤘.",[866,8475,8476],{},[532,8477,1788],{},[848,8479,8480,8485,8488],{},[866,8481,8482],{"align":912},[532,8483,8484],{},"rotationFactor",[866,8486,8487],{"align":912},"Factor for Euler rotation.",[866,8489,8490],{},[532,8491,1788],{},[848,8493,8494,8499,8502],{},[866,8495,8496],{"align":912},[532,8497,8498],{},"floatFactor",[866,8500,8501],{"align":912},"Factor for Up/down movement.",[866,8503,8504],{},[532,8505,1788],{},[848,8507,8508,8513,8516],{},[866,8509,8510],{"align":912},[532,8511,8512],{},"range",[866,8514,8515],{"align":912},"Range of y-axis values the object will float within.",[866,8517,8518],{},[532,8519,8520],{},"[-0.1, 0.1]",[1242,8522,1558],{},{"title":500,"searchDepth":501,"depth":502,"links":8524},[8525,8526],{"id":539,"depth":502,"text":15},{"id":836,"depth":502,"text":837},"Make content float like magic with smooth animations.",{},{"title":65,"description":8527},"ua7tauTYcB_xqNVlXaBIkTupNCoAiUCKWGlTSK5eTSk",{"id":8532,"title":69,"body":8533,"description":9177,"extension":505,"links":506,"meta":9178,"navigation":508,"path":70,"seo":9179,"stem":71,"__hash__":9180},"docs/2.api/1.abstractions/mask.md",{"type":493,"value":8534,"toc":9172},[8535,8540,8546,8579,8581,9044,9046,9109,9113,9120,9125,9140,9169],[522,8536,8537],{},[8538,8539],"abstractions-mask",{},[528,8541,8542,8545],{},[532,8543,8544],{},"\u003CMask/>"," uses the stencil buffer to cut out areas of the screen.",[3113,8547,8548,8566],{},[528,8549,8550,8551,8554,8555,8558,8559,8562,8563,1061],{},"To use ",[532,8552,8553],{},"\u003CMask />"," you ",[1588,8556,8557],{},"must"," add ",[532,8560,8561],{},":stencil=\"true\""," to your ",[532,8564,8565],{},"\u003CTresCanvas />",[528,8567,8568,8570,8571,8578],{},[532,8569,8553],{}," relies on the ",[1055,8572,8575],{"href":8573,"rel":8574},"https://threejs.org/docs/#api/en/renderers/WebGLRenderer",[1059],[532,8576,8577],{},"stencil buffer",". In recent versions of THREE.js, by default, the stencil buffer is not created.",[537,8580,15],{"id":539},[541,8582,8585],{"className":543,"code":8583,"highlights":8584,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { Mask, OrbitControls, useMask } from '@tresjs/cientos'\nimport { TresCanvas } from '@tresjs/core'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas :stencil=\"true\" clear-color=\"#4f4f4f\">\n    \u003CTresPerspectiveCamera />\n    \u003COrbitControls />\n\n    \u003CTresGroup :scale=\"2\">\n      \u003CTresMesh>\n        \u003CTresRingGeometry :args=\"[0.95, 1, 64]\" />\n        \u003CTresMeshBasicMaterial color=\"white\" />\n      \u003C/TresMesh>\n      \u003CMask :id=\"1\">\n        \u003CTresCircleGeometry />\n        \u003CTresMeshBasicMaterial color=\"#fbb03b\" />\n      \u003C/Mask>\n    \u003C/TresGroup>\n\n    \u003CTresMesh :position-z=\"-1\">\n      \u003CTresBoxGeometry />\n      \u003CTresMeshNormalMaterial v-bind=\"useMask(1)\" />\n    \u003C/TresMesh>\n\n    \u003CTresMesh :position-z=\"-3\">\n      \u003CTresBoxGeometry />\n      \u003CTresMeshNormalMaterial v-bind=\"useMask(1)\" />\n    \u003C/TresMesh>\n\n    \u003CTresMesh :position-z=\"-5\">\n      \u003CTresBoxGeometry />\n      \u003CTresMeshNormalMaterial />\n    \u003C/TresMesh>\n  \u003C/TresCanvas>\n\u003C/template>\n\n",[502,787,797,547,817],[532,8586,8587,8607,8636,8654,8662,8666,8674,8704,8712,8720,8724,8743,8751,8771,8789,8797,8817,8827,8847,8856,8864,8868,8888,8896,8916,8924,8928,8947,8955,8973,8981,8985,9004,9012,9020,9028,9036],{"__ignoreMap":500},[552,8588,8589,8591,8593,8595,8597,8599,8601,8603,8605],{"class":554,"line":501},[552,8590,558],{"class":557},[552,8592,562],{"class":561},[552,8594,566],{"class":565},[552,8596,569],{"class":565},[552,8598,572],{"class":557},[552,8600,575],{"class":557},[552,8602,579],{"class":578},[552,8604,575],{"class":557},[552,8606,584],{"class":557},[552,8608,8610,8612,8614,8617,8619,8621,8623,8626,8628,8630,8632,8634],{"class":8609,"line":502},[554,588],[552,8611,592],{"class":591},[552,8613,595],{"class":557},[552,8615,8616],{"class":598}," Mask",[552,8618,602],{"class":557},[552,8620,605],{"class":598},[552,8622,602],{"class":557},[552,8624,8625],{"class":598}," useMask",[552,8627,608],{"class":557},[552,8629,611],{"class":591},[552,8631,614],{"class":557},[552,8633,617],{"class":578},[552,8635,620],{"class":557},[552,8637,8638,8640,8642,8644,8646,8648,8650,8652],{"class":554,"line":623},[552,8639,592],{"class":591},[552,8641,595],{"class":557},[552,8643,630],{"class":598},[552,8645,608],{"class":557},[552,8647,611],{"class":591},[552,8649,614],{"class":557},[552,8651,639],{"class":578},[552,8653,620],{"class":557},[552,8655,8656,8658,8660],{"class":554,"line":644},[552,8657,647],{"class":557},[552,8659,562],{"class":561},[552,8661,584],{"class":557},[552,8663,8664],{"class":554,"line":654},[552,8665,657],{"emptyLinePlaceholder":508},[552,8667,8668,8670,8672],{"class":554,"line":660},[552,8669,558],{"class":557},[552,8671,665],{"class":561},[552,8673,584],{"class":557},[552,8675,8676,8678,8680,8683,8685,8687,8689,8691,8693,8695,8697,8700,8702],{"class":554,"line":670},[552,8677,673],{"class":557},[552,8679,676],{"class":561},[552,8681,8682],{"class":565}," :stencil",[552,8684,572],{"class":557},[552,8686,575],{"class":557},[552,8688,876],{"class":578},[552,8690,575],{"class":557},[552,8692,679],{"class":565},[552,8694,572],{"class":557},[552,8696,575],{"class":557},[552,8698,8699],{"class":578},"#4f4f4f",[552,8701,575],{"class":557},[552,8703,584],{"class":557},[552,8705,8706,8708,8710],{"class":554,"line":693},[552,8707,696],{"class":557},[552,8709,699],{"class":561},[552,8711,702],{"class":557},[552,8713,8714,8716,8718],{"class":554,"line":705},[552,8715,696],{"class":557},[552,8717,710],{"class":561},[552,8719,702],{"class":557},[552,8721,8722],{"class":554,"line":715},[552,8723,657],{"emptyLinePlaceholder":508},[552,8725,8726,8728,8731,8733,8735,8737,8739,8741],{"class":554,"line":720},[552,8727,696],{"class":557},[552,8729,8730],{"class":561},"TresGroup",[552,8732,728],{"class":565},[552,8734,572],{"class":557},[552,8736,575],{"class":557},[552,8738,735],{"class":578},[552,8740,575],{"class":557},[552,8742,584],{"class":557},[552,8744,8745,8747,8749],{"class":554,"line":742},[552,8746,768],{"class":557},[552,8748,771],{"class":561},[552,8750,584],{"class":557},[552,8752,8753,8755,8758,8760,8762,8764,8767,8769],{"class":554,"line":546},[552,8754,779],{"class":557},[552,8756,8757],{"class":561},"TresRingGeometry",[552,8759,1873],{"class":565},[552,8761,572],{"class":557},[552,8763,575],{"class":557},[552,8765,8766],{"class":578},"[0.95, 1, 64]",[552,8768,575],{"class":557},[552,8770,702],{"class":557},[552,8772,8773,8775,8777,8779,8781,8783,8785,8787],{"class":554,"line":765},[552,8774,779],{"class":557},[552,8776,7386],{"class":561},[552,8778,2603],{"class":565},[552,8780,572],{"class":557},[552,8782,575],{"class":557},[552,8784,2610],{"class":578},[552,8786,575],{"class":557},[552,8788,702],{"class":557},[552,8790,8791,8793,8795],{"class":554,"line":776},[552,8792,800],{"class":557},[552,8794,771],{"class":561},[552,8796,584],{"class":557},[552,8798,8800,8802,8804,8807,8809,8811,8813,8815],{"class":8799,"line":787},[554,588],[552,8801,768],{"class":557},[552,8803,69],{"class":561},[552,8805,8806],{"class":565}," :id",[552,8808,572],{"class":557},[552,8810,575],{"class":557},[552,8812,1788],{"class":578},[552,8814,575],{"class":557},[552,8816,584],{"class":557},[552,8818,8820,8822,8825],{"class":8819,"line":797},[554,588],[552,8821,779],{"class":557},[552,8823,8824],{"class":561},"TresCircleGeometry",[552,8826,702],{"class":557},[552,8828,8830,8832,8834,8836,8838,8840,8843,8845],{"class":8829,"line":547},[554,588],[552,8831,779],{"class":557},[552,8833,7386],{"class":561},[552,8835,2603],{"class":565},[552,8837,572],{"class":557},[552,8839,575],{"class":557},[552,8841,8842],{"class":578},"#fbb03b",[552,8844,575],{"class":557},[552,8846,702],{"class":557},[552,8848,8850,8852,8854],{"class":8849,"line":817},[554,588],[552,8851,800],{"class":557},[552,8853,69],{"class":561},[552,8855,584],{"class":557},[552,8857,8858,8860,8862],{"class":554,"line":827},[552,8859,810],{"class":557},[552,8861,8730],{"class":561},[552,8863,584],{"class":557},[552,8865,8866],{"class":554,"line":2539},[552,8867,657],{"emptyLinePlaceholder":508},[552,8869,8870,8872,8874,8877,8879,8881,8884,8886],{"class":554,"line":2548},[552,8871,696],{"class":557},[552,8873,771],{"class":561},[552,8875,8876],{"class":565}," :position-z",[552,8878,572],{"class":557},[552,8880,575],{"class":557},[552,8882,8883],{"class":578},"-1",[552,8885,575],{"class":557},[552,8887,584],{"class":557},[552,8889,8890,8892,8894],{"class":554,"line":2568},[552,8891,768],{"class":557},[552,8893,782],{"class":561},[552,8895,702],{"class":557},[552,8897,8898,8900,8902,8905,8907,8909,8912,8914],{"class":554,"line":2577},[552,8899,768],{"class":557},[552,8901,792],{"class":561},[552,8903,8904],{"class":565}," v-bind",[552,8906,572],{"class":557},[552,8908,575],{"class":557},[552,8910,8911],{"class":578},"useMask(1)",[552,8913,575],{"class":557},[552,8915,702],{"class":557},[552,8917,8918,8920,8922],{"class":554,"line":2586},[552,8919,810],{"class":557},[552,8921,771],{"class":561},[552,8923,584],{"class":557},[552,8925,8926],{"class":554,"line":2595},[552,8927,657],{"emptyLinePlaceholder":508},[552,8929,8930,8932,8934,8936,8938,8940,8943,8945],{"class":554,"line":2617},[552,8931,696],{"class":557},[552,8933,771],{"class":561},[552,8935,8876],{"class":565},[552,8937,572],{"class":557},[552,8939,575],{"class":557},[552,8941,8942],{"class":578},"-3",[552,8944,575],{"class":557},[552,8946,584],{"class":557},[552,8948,8949,8951,8953],{"class":554,"line":2661},[552,8950,768],{"class":557},[552,8952,782],{"class":561},[552,8954,702],{"class":557},[552,8956,8957,8959,8961,8963,8965,8967,8969,8971],{"class":554,"line":2670},[552,8958,768],{"class":557},[552,8960,792],{"class":561},[552,8962,8904],{"class":565},[552,8964,572],{"class":557},[552,8966,575],{"class":557},[552,8968,8911],{"class":578},[552,8970,575],{"class":557},[552,8972,702],{"class":557},[552,8974,8975,8977,8979],{"class":554,"line":2679},[552,8976,810],{"class":557},[552,8978,771],{"class":561},[552,8980,584],{"class":557},[552,8982,8983],{"class":554,"line":3836},[552,8984,657],{"emptyLinePlaceholder":508},[552,8986,8987,8989,8991,8993,8995,8997,9000,9002],{"class":554,"line":3867},[552,8988,696],{"class":557},[552,8990,771],{"class":561},[552,8992,8876],{"class":565},[552,8994,572],{"class":557},[552,8996,575],{"class":557},[552,8998,8999],{"class":578},"-5",[552,9001,575],{"class":557},[552,9003,584],{"class":557},[552,9005,9006,9008,9010],{"class":554,"line":3888},[552,9007,768],{"class":557},[552,9009,782],{"class":561},[552,9011,702],{"class":557},[552,9013,9014,9016,9018],{"class":554,"line":3907},[552,9015,768],{"class":557},[552,9017,792],{"class":561},[552,9019,702],{"class":557},[552,9021,9022,9024,9026],{"class":554,"line":3939},[552,9023,810],{"class":557},[552,9025,771],{"class":561},[552,9027,584],{"class":557},[552,9029,9030,9032,9034],{"class":554,"line":3948},[552,9031,820],{"class":557},[552,9033,676],{"class":561},[552,9035,584],{"class":557},[552,9037,9038,9040,9042],{"class":554,"line":3957},[552,9039,647],{"class":557},[552,9041,665],{"class":561},[552,9043,584],{"class":557},[537,9045,837],{"id":836},[842,9047,9048,9058],{},[845,9049,9050],{},[848,9051,9052,9054,9056],{},[851,9053,853],{"align":912},[851,9055,856],{"align":912},[851,9057,859],{},[861,9059,9060,9077,9093],{},[848,9061,9062,9069,9075],{},[866,9063,9064],{"align":912},[1583,9065,9066],{},[532,9067,9068],{},"id",[866,9070,9071,9072,9074],{"align":912},"Id of the stencil buffer to use. Each mask must have a ",[532,9073,5266],{}," id. Multiple masks can refer to the same id.",[866,9076],{},[848,9078,9079,9086,9089],{},[866,9080,9081],{"align":912},[1583,9082,9083],{},[532,9084,9085],{},"colorWrite",[866,9087,9088],{"align":912},"Whether the colors of the mask's own material will leak through.",[866,9090,9091],{},[532,9092,886],{},[848,9094,9095,9102,9105],{},[866,9096,9097],{"align":912},[1583,9098,9099],{},[532,9100,9101],{},"depthWrite",[866,9103,9104],{"align":912},"Whether the depth of the mask's own material will leak through.",[866,9106,9107],{},[532,9108,886],{},[537,9110,9112],{"id":9111},"usemask","useMask",[528,9114,9115,9116,9119],{},"Composable that returns the stencil configuration to apply a mask to a material. Use it with ",[532,9117,9118],{},"v-bind"," on materials that should be affected by the mask.",[528,9121,9122],{},[1583,9123,9124],{},"Parameters:",[2127,9126,9127,9132],{},[2130,9128,9129,9131],{},[532,9130,9068],{}," - The mask id to use (number or Ref)",[2130,9133,9134,9137,9138],{},[532,9135,9136],{},"inverse"," - Whether to invert the mask (boolean or Ref), defaults to ",[532,9139,886],{},[541,9141,9143],{"className":543,"code":9142,"language":548,"meta":500,"style":500},"\u003CTresMeshNormalMaterial v-bind=\"useMask(1)\" />\n",[532,9144,9145],{"__ignoreMap":500},[552,9146,9147,9149,9151,9153,9155,9157,9159,9161,9163,9165,9167],{"class":554,"line":501},[552,9148,558],{"class":557},[552,9150,792],{"class":561},[552,9152,8904],{"class":565},[552,9154,572],{"class":557},[552,9156,575],{"class":557},[552,9158,9112],{"class":2348},[552,9160,2351],{"class":598},[552,9162,1788],{"class":2415},[552,9164,3254],{"class":598},[552,9166,575],{"class":557},[552,9168,702],{"class":557},[1242,9170,9171],{},"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 .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 .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}",{"title":500,"searchDepth":501,"depth":502,"links":9173},[9174,9175,9176],{"id":539,"depth":502,"text":15},{"id":836,"depth":502,"text":837},{"id":9111,"depth":502,"text":9112},"Cut out areas of the screen using the stencil buffer.",{},{"title":69,"description":9177},"R8IKeS_cog0AR5hyMVg359sjKmupKD2bH-5ixZXY8zY",{"id":9182,"title":73,"body":9183,"description":9654,"extension":505,"links":506,"meta":9655,"navigation":508,"path":74,"seo":9656,"stem":75,"__hash__":9657},"docs/2.api/1.abstractions/outline.md",{"type":493,"value":9184,"toc":9650},[9185,9190,9201,9203,9550,9552,9648],[522,9186,9187],{},[9188,9189],"abstractions-outline",{},[528,9191,9192,9195,9196,2977,9198,1061],{},[532,9193,9194],{},"\u003COutline />"," creates an inverted-hull outline using its parent's geometry. Supported parents are ",[532,9197,2224],{},[532,9199,9200],{},"\u003CTresSkinnedMesh>",[537,9202,15],{"id":539},[541,9204,9207],{"className":543,"code":9205,"highlights":9206,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { TresCanvas } from '@tresjs/core'\nimport { OrbitControls, Outline } from '@tresjs/cientos'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas clear-color=\"#4f4f4f\">\n    \u003CTresPerspectiveCamera />\n    \u003COrbitControls />\n    \u003CTresAmbientLight :intensity=\"3.14\" />\n    \u003CTresPointLight :intensity=\"50\" :position=\"[2, 2, 0]\" />\n    \u003CTresMesh :position-x=\"-0.75\">\n      \u003CTresBoxGeometry />\n      \u003CTresMeshPhongMaterial />\n      \u003COutline :thickness=\"7.5\" color=\"#82dbc5\" />\n    \u003C/TresMesh>\n    \u003CTresMesh :position-x=\"0.75\">\n      \u003CTresSphereGeometry :args=\"[0.5]\" />\n      \u003CTresMeshPhongMaterial />\n      \u003COutline :thickness=\"7.5\" color=\"#fbb03b\" />\n    \u003C/TresMesh>\n  \u003C/TresCanvas>\n\u003C/template>\n\n",[623,776,827],[532,9208,9209,9229,9247,9271,9279,9283,9291,9309,9317,9325,9344,9375,9395,9403,9412,9444,9452,9470,9489,9497,9526,9534,9542],{"__ignoreMap":500},[552,9210,9211,9213,9215,9217,9219,9221,9223,9225,9227],{"class":554,"line":501},[552,9212,558],{"class":557},[552,9214,562],{"class":561},[552,9216,566],{"class":565},[552,9218,569],{"class":565},[552,9220,572],{"class":557},[552,9222,575],{"class":557},[552,9224,579],{"class":578},[552,9226,575],{"class":557},[552,9228,584],{"class":557},[552,9230,9231,9233,9235,9237,9239,9241,9243,9245],{"class":554,"line":502},[552,9232,592],{"class":591},[552,9234,595],{"class":557},[552,9236,630],{"class":598},[552,9238,608],{"class":557},[552,9240,611],{"class":591},[552,9242,614],{"class":557},[552,9244,639],{"class":578},[552,9246,620],{"class":557},[552,9248,9250,9252,9254,9256,9258,9261,9263,9265,9267,9269],{"class":9249,"line":623},[554,588],[552,9251,592],{"class":591},[552,9253,595],{"class":557},[552,9255,605],{"class":598},[552,9257,602],{"class":557},[552,9259,9260],{"class":598}," Outline",[552,9262,608],{"class":557},[552,9264,611],{"class":591},[552,9266,614],{"class":557},[552,9268,617],{"class":578},[552,9270,620],{"class":557},[552,9272,9273,9275,9277],{"class":554,"line":644},[552,9274,647],{"class":557},[552,9276,562],{"class":561},[552,9278,584],{"class":557},[552,9280,9281],{"class":554,"line":654},[552,9282,657],{"emptyLinePlaceholder":508},[552,9284,9285,9287,9289],{"class":554,"line":660},[552,9286,558],{"class":557},[552,9288,665],{"class":561},[552,9290,584],{"class":557},[552,9292,9293,9295,9297,9299,9301,9303,9305,9307],{"class":554,"line":670},[552,9294,673],{"class":557},[552,9296,676],{"class":561},[552,9298,679],{"class":565},[552,9300,572],{"class":557},[552,9302,575],{"class":557},[552,9304,8699],{"class":578},[552,9306,575],{"class":557},[552,9308,584],{"class":557},[552,9310,9311,9313,9315],{"class":554,"line":693},[552,9312,696],{"class":557},[552,9314,699],{"class":561},[552,9316,702],{"class":557},[552,9318,9319,9321,9323],{"class":554,"line":705},[552,9320,696],{"class":557},[552,9322,710],{"class":561},[552,9324,702],{"class":557},[552,9326,9327,9329,9331,9333,9335,9337,9340,9342],{"class":554,"line":715},[552,9328,696],{"class":557},[552,9330,8370],{"class":561},[552,9332,1781],{"class":565},[552,9334,572],{"class":557},[552,9336,575],{"class":557},[552,9338,9339],{"class":578},"3.14",[552,9341,575],{"class":557},[552,9343,702],{"class":557},[552,9345,9346,9348,9351,9353,9355,9357,9360,9362,9364,9366,9368,9371,9373],{"class":554,"line":720},[552,9347,696],{"class":557},[552,9349,9350],{"class":561},"TresPointLight",[552,9352,1781],{"class":565},[552,9354,572],{"class":557},[552,9356,575],{"class":557},[552,9358,9359],{"class":578},"50",[552,9361,575],{"class":557},[552,9363,1399],{"class":565},[552,9365,572],{"class":557},[552,9367,575],{"class":557},[552,9369,9370],{"class":578},"[2, 2, 0]",[552,9372,575],{"class":557},[552,9374,702],{"class":557},[552,9376,9377,9379,9381,9384,9386,9388,9391,9393],{"class":554,"line":742},[552,9378,696],{"class":557},[552,9380,771],{"class":561},[552,9382,9383],{"class":565}," :position-x",[552,9385,572],{"class":557},[552,9387,575],{"class":557},[552,9389,9390],{"class":578},"-0.75",[552,9392,575],{"class":557},[552,9394,584],{"class":557},[552,9396,9397,9399,9401],{"class":554,"line":546},[552,9398,768],{"class":557},[552,9400,782],{"class":561},[552,9402,702],{"class":557},[552,9404,9405,9407,9410],{"class":554,"line":765},[552,9406,768],{"class":557},[552,9408,9409],{"class":561},"TresMeshPhongMaterial",[552,9411,702],{"class":557},[552,9413,9415,9417,9419,9422,9424,9426,9429,9431,9433,9435,9437,9440,9442],{"class":9414,"line":776},[554,588],[552,9416,768],{"class":557},[552,9418,73],{"class":561},[552,9420,9421],{"class":565}," :thickness",[552,9423,572],{"class":557},[552,9425,575],{"class":557},[552,9427,9428],{"class":578},"7.5",[552,9430,575],{"class":557},[552,9432,2603],{"class":565},[552,9434,572],{"class":557},[552,9436,575],{"class":557},[552,9438,9439],{"class":578},"#82dbc5",[552,9441,575],{"class":557},[552,9443,702],{"class":557},[552,9445,9446,9448,9450],{"class":554,"line":787},[552,9447,810],{"class":557},[552,9449,771],{"class":561},[552,9451,584],{"class":557},[552,9453,9454,9456,9458,9460,9462,9464,9466,9468],{"class":554,"line":797},[552,9455,696],{"class":557},[552,9457,771],{"class":561},[552,9459,9383],{"class":565},[552,9461,572],{"class":557},[552,9463,575],{"class":557},[552,9465,2465],{"class":578},[552,9467,575],{"class":557},[552,9469,584],{"class":557},[552,9471,9472,9474,9476,9478,9480,9482,9485,9487],{"class":554,"line":547},[552,9473,768],{"class":557},[552,9475,3872],{"class":561},[552,9477,1873],{"class":565},[552,9479,572],{"class":557},[552,9481,575],{"class":557},[552,9483,9484],{"class":578},"[0.5]",[552,9486,575],{"class":557},[552,9488,702],{"class":557},[552,9490,9491,9493,9495],{"class":554,"line":817},[552,9492,768],{"class":557},[552,9494,9409],{"class":561},[552,9496,702],{"class":557},[552,9498,9500,9502,9504,9506,9508,9510,9512,9514,9516,9518,9520,9522,9524],{"class":9499,"line":827},[554,588],[552,9501,768],{"class":557},[552,9503,73],{"class":561},[552,9505,9421],{"class":565},[552,9507,572],{"class":557},[552,9509,575],{"class":557},[552,9511,9428],{"class":578},[552,9513,575],{"class":557},[552,9515,2603],{"class":565},[552,9517,572],{"class":557},[552,9519,575],{"class":557},[552,9521,8842],{"class":578},[552,9523,575],{"class":557},[552,9525,702],{"class":557},[552,9527,9528,9530,9532],{"class":554,"line":2539},[552,9529,810],{"class":557},[552,9531,771],{"class":561},[552,9533,584],{"class":557},[552,9535,9536,9538,9540],{"class":554,"line":2548},[552,9537,820],{"class":557},[552,9539,676],{"class":561},[552,9541,584],{"class":557},[552,9543,9544,9546,9548],{"class":554,"line":2568},[552,9545,647],{"class":557},[552,9547,665],{"class":561},[552,9549,584],{"class":557},[537,9551,837],{"id":836},[842,9553,9554,9564],{},[845,9555,9556],{},[848,9557,9558,9560,9562],{},[851,9559,837],{},[851,9561,856],{},[851,9563,859],{},[861,9565,9566,9578,9590,9602,9614,9627],{},[848,9567,9568,9570,9573],{},[866,9569,7461],{},[866,9571,9572],{},"Outline color",[866,9574,9575],{},[532,9576,9577],{},"'black'",[848,9579,9580,9583,9586],{},[866,9581,9582],{},"screenspace",[866,9584,9585],{},"Whether line thickness is independent of zoom",[866,9587,9588],{},[532,9589,886],{},[848,9591,9592,9595,9598],{},[866,9593,9594],{},"opacity",[866,9596,9597],{},"Outline opacity",[866,9599,9600],{},[532,9601,1788],{},[848,9603,9604,9607,9610],{},[866,9605,9606],{},"transparent",[866,9608,9609],{},"Outline transparency",[866,9611,9612],{},[532,9613,886],{},[848,9615,9616,9619,9622],{},[866,9617,9618],{},"thickness",[866,9620,9621],{},"Outline thickness",[866,9623,9624],{},[532,9625,9626],{},"0.05",[848,9628,9629,9632,9643],{},[866,9630,9631],{},"angle",[866,9633,9634,9635,9637,9638],{},"Geometry crease angle (",[532,9636,880],{}," is no crease).  See ",[1055,9639,9642],{"href":9640,"rel":9641},"https://threejs.org/docs/#examples/en/utils/BufferGeometryUtils.toCreasedNormals",[1059],"BufferGeometryUtils.toCreasedNormals",[866,9644,9645],{},[532,9646,9647],{},"Math.PI",[1242,9649,1558],{},{"title":500,"searchDepth":501,"depth":502,"links":9651},[9652,9653],{"id":539,"depth":502,"text":15},{"id":836,"depth":502,"text":837},"Create inverted-hull outlines using parent geometry.",{},{"title":73,"description":9654},"Qb5LM-UoZ_zkrRGWyAbuOtaH4q-8vTeY2hMA8LObyAM",{"id":9659,"title":77,"body":9660,"description":10457,"extension":505,"links":506,"meta":10458,"navigation":508,"path":78,"seo":10459,"stem":79,"__hash__":10460},"docs/2.api/1.abstractions/sampler.md",{"type":493,"value":9661,"toc":10452},[9662,9667,9670,9672,9966,9968,10033,10037,10044,10449],[522,9663,9664],{},[9665,9666],"abstractions-sampler",{},[528,9668,9669],{},"Declarative abstraction around MeshSurfaceSampler & InstancedMesh. It samples points from the passed mesh and transforms an InstancedMesh's matrix to distribute instances on the points.",[537,9671,15],{"id":539},[541,9673,9676],{"className":543,"code":9674,"highlights":9675,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { OrbitControls, Sampler } from '@tresjs/cientos'\nimport { TresCanvas } from '@tresjs/core'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas clear-color=\"#82DBC5\">\n    \u003CTresPerspectiveCamera :position=\"[0, 0.5, 5]\" />\n    \u003COrbitControls />\n\n    \u003CSampler :count=\"50\">\n      \u003CTresMesh>\n        \u003CTresTorusGeometry />\n      \u003C/TresMesh>\n\n      \u003CTresInstancedMesh :args=\"[null!, null!, 1000]\">\n        \u003CTresBoxGeometry :args=\"[0.1, 0.1, 0.1]\" />\n        \u003CTresMeshNormalMaterial />\n      \u003C/TresInstancedMesh>\n    \u003C/Sampler>\n    \u003CTresGridHelper :args=\"[10, 10]\" />\n  \u003C/TresCanvas>\n\u003C/template>\n\n",[502,720,742,546,765,776,787,797,547,817,827],[532,9677,9678,9698,9722,9740,9748,9752,9760,9779,9798,9806,9810,9830,9839,9849,9858,9863,9884,9904,9913,9922,9931,9950,9958],{"__ignoreMap":500},[552,9679,9680,9682,9684,9686,9688,9690,9692,9694,9696],{"class":554,"line":501},[552,9681,558],{"class":557},[552,9683,562],{"class":561},[552,9685,566],{"class":565},[552,9687,569],{"class":565},[552,9689,572],{"class":557},[552,9691,575],{"class":557},[552,9693,579],{"class":578},[552,9695,575],{"class":557},[552,9697,584],{"class":557},[552,9699,9701,9703,9705,9707,9709,9712,9714,9716,9718,9720],{"class":9700,"line":502},[554,588],[552,9702,592],{"class":591},[552,9704,595],{"class":557},[552,9706,605],{"class":598},[552,9708,602],{"class":557},[552,9710,9711],{"class":598}," Sampler",[552,9713,608],{"class":557},[552,9715,611],{"class":591},[552,9717,614],{"class":557},[552,9719,617],{"class":578},[552,9721,620],{"class":557},[552,9723,9724,9726,9728,9730,9732,9734,9736,9738],{"class":554,"line":623},[552,9725,592],{"class":591},[552,9727,595],{"class":557},[552,9729,630],{"class":598},[552,9731,608],{"class":557},[552,9733,611],{"class":591},[552,9735,614],{"class":557},[552,9737,639],{"class":578},[552,9739,620],{"class":557},[552,9741,9742,9744,9746],{"class":554,"line":644},[552,9743,647],{"class":557},[552,9745,562],{"class":561},[552,9747,584],{"class":557},[552,9749,9750],{"class":554,"line":654},[552,9751,657],{"emptyLinePlaceholder":508},[552,9753,9754,9756,9758],{"class":554,"line":660},[552,9755,558],{"class":557},[552,9757,665],{"class":561},[552,9759,584],{"class":557},[552,9761,9762,9764,9766,9768,9770,9772,9775,9777],{"class":554,"line":670},[552,9763,673],{"class":557},[552,9765,676],{"class":561},[552,9767,679],{"class":565},[552,9769,572],{"class":557},[552,9771,575],{"class":557},[552,9773,9774],{"class":578},"#82DBC5",[552,9776,575],{"class":557},[552,9778,584],{"class":557},[552,9780,9781,9783,9785,9787,9789,9791,9794,9796],{"class":554,"line":693},[552,9782,696],{"class":557},[552,9784,699],{"class":561},[552,9786,1399],{"class":565},[552,9788,572],{"class":557},[552,9790,575],{"class":557},[552,9792,9793],{"class":578},"[0, 0.5, 5]",[552,9795,575],{"class":557},[552,9797,702],{"class":557},[552,9799,9800,9802,9804],{"class":554,"line":705},[552,9801,696],{"class":557},[552,9803,710],{"class":561},[552,9805,702],{"class":557},[552,9807,9808],{"class":554,"line":715},[552,9809,657],{"emptyLinePlaceholder":508},[552,9811,9813,9815,9817,9820,9822,9824,9826,9828],{"class":9812,"line":720},[554,588],[552,9814,696],{"class":557},[552,9816,77],{"class":561},[552,9818,9819],{"class":565}," :count",[552,9821,572],{"class":557},[552,9823,575],{"class":557},[552,9825,9359],{"class":578},[552,9827,575],{"class":557},[552,9829,584],{"class":557},[552,9831,9833,9835,9837],{"class":9832,"line":742},[554,588],[552,9834,768],{"class":557},[552,9836,771],{"class":561},[552,9838,584],{"class":557},[552,9840,9842,9844,9847],{"class":9841,"line":546},[554,588],[552,9843,779],{"class":557},[552,9845,9846],{"class":561},"TresTorusGeometry",[552,9848,702],{"class":557},[552,9850,9852,9854,9856],{"class":9851,"line":765},[554,588],[552,9853,800],{"class":557},[552,9855,771],{"class":561},[552,9857,584],{"class":557},[552,9859,9861],{"class":9860,"line":776},[554,588],[552,9862,657],{"emptyLinePlaceholder":508},[552,9864,9866,9868,9871,9873,9875,9877,9880,9882],{"class":9865,"line":787},[554,588],[552,9867,768],{"class":557},[552,9869,9870],{"class":561},"TresInstancedMesh",[552,9872,1873],{"class":565},[552,9874,572],{"class":557},[552,9876,575],{"class":557},[552,9878,9879],{"class":578},"[null!, null!, 1000]",[552,9881,575],{"class":557},[552,9883,584],{"class":557},[552,9885,9887,9889,9891,9893,9895,9897,9900,9902],{"class":9886,"line":797},[554,588],[552,9888,779],{"class":557},[552,9890,782],{"class":561},[552,9892,1873],{"class":565},[552,9894,572],{"class":557},[552,9896,575],{"class":557},[552,9898,9899],{"class":578},"[0.1, 0.1, 0.1]",[552,9901,575],{"class":557},[552,9903,702],{"class":557},[552,9905,9907,9909,9911],{"class":9906,"line":547},[554,588],[552,9908,779],{"class":557},[552,9910,792],{"class":561},[552,9912,702],{"class":557},[552,9914,9916,9918,9920],{"class":9915,"line":817},[554,588],[552,9917,800],{"class":557},[552,9919,9870],{"class":561},[552,9921,584],{"class":557},[552,9923,9925,9927,9929],{"class":9924,"line":827},[554,588],[552,9926,810],{"class":557},[552,9928,77],{"class":561},[552,9930,584],{"class":557},[552,9932,9933,9935,9937,9939,9941,9943,9946,9948],{"class":554,"line":2539},[552,9934,696],{"class":557},[552,9936,7963],{"class":561},[552,9938,1873],{"class":565},[552,9940,572],{"class":557},[552,9942,575],{"class":557},[552,9944,9945],{"class":578},"[10, 10]",[552,9947,575],{"class":557},[552,9949,702],{"class":557},[552,9951,9952,9954,9956],{"class":554,"line":2548},[552,9953,820],{"class":557},[552,9955,676],{"class":561},[552,9957,584],{"class":557},[552,9959,9960,9962,9964],{"class":554,"line":2568},[552,9961,647],{"class":557},[552,9963,665],{"class":561},[552,9965,584],{"class":557},[537,9967,837],{"id":836},[842,9969,9970,9978],{},[845,9971,9972],{},[848,9973,9974,9976],{},[851,9975,837],{},[851,9977,856],{},[861,9979,9980,9989,10000,10011,10022],{},[848,9981,9982,9984],{},[866,9983,5519],{},[866,9985,9986,9988],{},[1583,9987,4206],{}," Surface mesh from which to sample",[848,9990,9991,9994],{},[866,9992,9993],{},"count",[866,9995,9996,9999],{},[1583,9997,9998],{},"Number"," Number of samples",[848,10001,10002,10005],{},[866,10003,10004],{},"instanceMesh",[866,10006,10007,10010],{},[1583,10008,10009],{},"InstanceMesh"," InstanceMesh to scatter",[848,10012,10013,10016],{},[866,10014,10015],{},"weight",[866,10017,10018,10021],{},[1583,10019,10020],{},"String"," A vertex attribute to be used as a weight when sampling",[848,10023,10024,10027],{},[866,10025,10026],{},"transform",[866,10028,10029,10032],{},[1583,10030,10031],{},"Function"," A function that can be used as a custom sampling",[537,10034,10036],{"id":10035},"usesurfacesampler","useSurfaceSampler",[528,10038,10039,10040],{},"A hook to obtain the result of the ",[10041,10042,10043],"sampler",{}," as a buffer. Useful for driving anything other than InstancedMesh via the Sampler.",[541,10045,10048],{"className":543,"code":10046,"highlights":10047,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { OrbitControls, useSurfaceSampler } from '@tresjs/cientos'\nimport { TresCanvas } from '@tresjs/core'\nimport { ref, watch } from 'vue'\n\nconst torusRef = ref()\nconst instancesRef = ref()\n\nwatch(torusRef, (value) => {\n  useSurfaceSampler(value, 50, instancesRef.value, 'color')\n})\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas clear-color=\"#82DBC5\">\n    \u003CTresPerspectiveCamera :position=\"[0, 0.5, 5]\" />\n    \u003COrbitControls />\n\n    \u003CTresMesh ref=\"torusRef\">\n      \u003CTresTorusGeometry />\n    \u003C/TresMesh>\n\n    \u003CTresInstancedMesh\n      ref=\"instancesRef\"\n      :args=\"[null!, null!, 1_000]\"\n    >\n      \u003CTresSphereGeometry :args=\"[0.1, 32, 32]\" />\n      \u003CTresMeshNormalMaterial />\n    \u003C/TresInstancedMesh>\n\n    \u003CTresGridHelper :args=\"[10, 10]\" />\n  \u003C/TresCanvas>\n\u003C/template>\n",[502,715],[532,10049,10050,10070,10094,10112,10135,10139,10152,10165,10169,10189,10223,10229,10237,10241,10249,10267,10285,10293,10297,10316,10324,10332,10336,10343,10357,10371,10376,10395,10403,10411,10415,10433,10441],{"__ignoreMap":500},[552,10051,10052,10054,10056,10058,10060,10062,10064,10066,10068],{"class":554,"line":501},[552,10053,558],{"class":557},[552,10055,562],{"class":561},[552,10057,566],{"class":565},[552,10059,569],{"class":565},[552,10061,572],{"class":557},[552,10063,575],{"class":557},[552,10065,579],{"class":578},[552,10067,575],{"class":557},[552,10069,584],{"class":557},[552,10071,10073,10075,10077,10079,10081,10084,10086,10088,10090,10092],{"class":10072,"line":502},[554,588],[552,10074,592],{"class":591},[552,10076,595],{"class":557},[552,10078,605],{"class":598},[552,10080,602],{"class":557},[552,10082,10083],{"class":598}," useSurfaceSampler",[552,10085,608],{"class":557},[552,10087,611],{"class":591},[552,10089,614],{"class":557},[552,10091,617],{"class":578},[552,10093,620],{"class":557},[552,10095,10096,10098,10100,10102,10104,10106,10108,10110],{"class":554,"line":623},[552,10097,592],{"class":591},[552,10099,595],{"class":557},[552,10101,630],{"class":598},[552,10103,608],{"class":557},[552,10105,611],{"class":591},[552,10107,614],{"class":557},[552,10109,639],{"class":578},[552,10111,620],{"class":557},[552,10113,10114,10116,10118,10120,10122,10125,10127,10129,10131,10133],{"class":554,"line":644},[552,10115,592],{"class":591},[552,10117,595],{"class":557},[552,10119,3786],{"class":598},[552,10121,602],{"class":557},[552,10123,10124],{"class":598}," watch",[552,10126,608],{"class":557},[552,10128,611],{"class":591},[552,10130,614],{"class":557},[552,10132,548],{"class":578},[552,10134,620],{"class":557},[552,10136,10137],{"class":554,"line":654},[552,10138,657],{"emptyLinePlaceholder":508},[552,10140,10141,10143,10146,10148,10150],{"class":554,"line":660},[552,10142,2329],{"class":565},[552,10144,10145],{"class":598}," torusRef ",[552,10147,572],{"class":557},[552,10149,3786],{"class":2348},[552,10151,6449],{"class":598},[552,10153,10154,10156,10159,10161,10163],{"class":554,"line":670},[552,10155,2329],{"class":565},[552,10157,10158],{"class":598}," instancesRef ",[552,10160,572],{"class":557},[552,10162,3786],{"class":2348},[552,10164,6449],{"class":598},[552,10166,10167],{"class":554,"line":693},[552,10168,657],{"emptyLinePlaceholder":508},[552,10170,10171,10174,10177,10179,10181,10183,10185,10187],{"class":554,"line":705},[552,10172,10173],{"class":2348},"watch",[552,10175,10176],{"class":598},"(torusRef",[552,10178,602],{"class":557},[552,10180,2988],{"class":557},[552,10182,3599],{"class":6752},[552,10184,3254],{"class":557},[552,10186,3591],{"class":565},[552,10188,1119],{"class":557},[552,10190,10192,10195,10197,10199,10201,10204,10206,10209,10211,10213,10215,10217,10219,10221],{"class":10191,"line":715},[554,588],[552,10193,10194],{"class":2348},"  useSurfaceSampler",[552,10196,2351],{"class":561},[552,10198,3599],{"class":598},[552,10200,602],{"class":557},[552,10202,10203],{"class":2415}," 50",[552,10205,602],{"class":557},[552,10207,10208],{"class":598}," instancesRef",[552,10210,1061],{"class":557},[552,10212,3599],{"class":598},[552,10214,602],{"class":557},[552,10216,614],{"class":557},[552,10218,7461],{"class":578},[552,10220,2354],{"class":557},[552,10222,2362],{"class":561},[552,10224,10225,10227],{"class":554,"line":720},[552,10226,2342],{"class":557},[552,10228,2362],{"class":598},[552,10230,10231,10233,10235],{"class":554,"line":742},[552,10232,647],{"class":557},[552,10234,562],{"class":561},[552,10236,584],{"class":557},[552,10238,10239],{"class":554,"line":546},[552,10240,657],{"emptyLinePlaceholder":508},[552,10242,10243,10245,10247],{"class":554,"line":765},[552,10244,558],{"class":557},[552,10246,665],{"class":561},[552,10248,584],{"class":557},[552,10250,10251,10253,10255,10257,10259,10261,10263,10265],{"class":554,"line":776},[552,10252,673],{"class":557},[552,10254,676],{"class":561},[552,10256,679],{"class":565},[552,10258,572],{"class":557},[552,10260,575],{"class":557},[552,10262,9774],{"class":578},[552,10264,575],{"class":557},[552,10266,584],{"class":557},[552,10268,10269,10271,10273,10275,10277,10279,10281,10283],{"class":554,"line":787},[552,10270,696],{"class":557},[552,10272,699],{"class":561},[552,10274,1399],{"class":565},[552,10276,572],{"class":557},[552,10278,575],{"class":557},[552,10280,9793],{"class":578},[552,10282,575],{"class":557},[552,10284,702],{"class":557},[552,10286,10287,10289,10291],{"class":554,"line":797},[552,10288,696],{"class":557},[552,10290,710],{"class":561},[552,10292,702],{"class":557},[552,10294,10295],{"class":554,"line":547},[552,10296,657],{"emptyLinePlaceholder":508},[552,10298,10299,10301,10303,10305,10307,10309,10312,10314],{"class":554,"line":817},[552,10300,696],{"class":557},[552,10302,771],{"class":561},[552,10304,3786],{"class":565},[552,10306,572],{"class":557},[552,10308,575],{"class":557},[552,10310,10311],{"class":578},"torusRef",[552,10313,575],{"class":557},[552,10315,584],{"class":557},[552,10317,10318,10320,10322],{"class":554,"line":827},[552,10319,768],{"class":557},[552,10321,9846],{"class":561},[552,10323,702],{"class":557},[552,10325,10326,10328,10330],{"class":554,"line":2539},[552,10327,810],{"class":557},[552,10329,771],{"class":561},[552,10331,584],{"class":557},[552,10333,10334],{"class":554,"line":2548},[552,10335,657],{"emptyLinePlaceholder":508},[552,10337,10338,10340],{"class":554,"line":2568},[552,10339,696],{"class":557},[552,10341,10342],{"class":561},"TresInstancedMesh\n",[552,10344,10345,10348,10350,10352,10355],{"class":554,"line":2577},[552,10346,10347],{"class":565},"      ref",[552,10349,572],{"class":557},[552,10351,575],{"class":557},[552,10353,10354],{"class":578},"instancesRef",[552,10356,3045],{"class":557},[552,10358,10359,10362,10364,10366,10369],{"class":554,"line":2586},[552,10360,10361],{"class":565},"      :args",[552,10363,572],{"class":557},[552,10365,575],{"class":557},[552,10367,10368],{"class":578},"[null!, null!, 1_000]",[552,10370,3045],{"class":557},[552,10372,10373],{"class":554,"line":2595},[552,10374,10375],{"class":557},"    >\n",[552,10377,10378,10380,10382,10384,10386,10388,10391,10393],{"class":554,"line":2617},[552,10379,768],{"class":557},[552,10381,3872],{"class":561},[552,10383,1873],{"class":565},[552,10385,572],{"class":557},[552,10387,575],{"class":557},[552,10389,10390],{"class":578},"[0.1, 32, 32]",[552,10392,575],{"class":557},[552,10394,702],{"class":557},[552,10396,10397,10399,10401],{"class":554,"line":2661},[552,10398,768],{"class":557},[552,10400,792],{"class":561},[552,10402,702],{"class":557},[552,10404,10405,10407,10409],{"class":554,"line":2670},[552,10406,810],{"class":557},[552,10408,9870],{"class":561},[552,10410,584],{"class":557},[552,10412,10413],{"class":554,"line":2679},[552,10414,657],{"emptyLinePlaceholder":508},[552,10416,10417,10419,10421,10423,10425,10427,10429,10431],{"class":554,"line":3836},[552,10418,696],{"class":557},[552,10420,7963],{"class":561},[552,10422,1873],{"class":565},[552,10424,572],{"class":557},[552,10426,575],{"class":557},[552,10428,9945],{"class":578},[552,10430,575],{"class":557},[552,10432,702],{"class":557},[552,10434,10435,10437,10439],{"class":554,"line":3867},[552,10436,820],{"class":557},[552,10438,676],{"class":561},[552,10440,584],{"class":557},[552,10442,10443,10445,10447],{"class":554,"line":3888},[552,10444,647],{"class":557},[552,10446,665],{"class":561},[552,10448,584],{"class":557},[1242,10450,10451],{},"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 .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":500,"searchDepth":501,"depth":502,"links":10453},[10454,10455,10456],{"id":539,"depth":502,"text":15},{"id":836,"depth":502,"text":837},{"id":10035,"depth":502,"text":10036},"Distribute instances on mesh surfaces using MeshSurfaceSampler.",{},{"title":77,"description":10457},"xQHwbKTVWdqSN1pcdzaa4wwWk4iBXV0lk_0HL4ZdPuo",{"id":10462,"title":81,"body":10463,"description":10770,"extension":505,"links":506,"meta":10771,"navigation":508,"path":82,"seo":10772,"stem":83,"__hash__":10773},"docs/2.api/1.abstractions/screen-sizer.md",{"type":493,"value":10464,"toc":10766},[10465,10470,10479,10482,10484,10756,10758,10764],[2209,10466,10467],{},[10468,10469],"abstractions-screen-sizer",{},[528,10471,1264,10472,10475,10476,10478],{},[532,10473,10474],{},"\u003CTresObject3D />"," wrapper that scales to \"screen space\". By default ",[532,10477,1788],{}," THREE world unit will be translated to 1 screen pixel.",[528,10480,10481],{},"E.g. a BoxGeometry with a height, width, and depth of 100 each, will be scaled to 100 screen pixels in each dimension.",[537,10483,15],{"id":539},[541,10485,10488],{"className":543,"code":10486,"highlights":10487,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { TresCanvas } from '@tresjs/core'\nimport { OrbitControls, ScreenSizer } from '@tresjs/cientos'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas clear-color=\"#3f3f3f\">\n    \u003CTresPerspectiveCamera :position=\"[10, 10, 10]\" />\n    \u003COrbitControls />\n    \u003CScreenSizer>\n      \u003CTresMesh>\n        \u003CTresBoxGeometry :args=\"[100, 100, 100]\" />\n        \u003CTresMeshNormalMaterial />\n      \u003C/TresMesh>\n    \u003C/ScreenSizer>\n    \u003CTresMesh :position-x=\"5\">\n      \u003CTresBoxGeometry />\n      \u003CTresMeshNormalMaterial />\n    \u003C/TresMesh>\n    \u003CTresGridHelper :args=\"[10, 10]\" />\n  \u003C/TresCanvas>\n\u003C/template>\n",[623,715,776],[532,10489,10490,10510,10528,10552,10560,10564,10572,10591,10610,10618,10627,10635,10654,10662,10670,10679,10698,10706,10714,10722,10740,10748],{"__ignoreMap":500},[552,10491,10492,10494,10496,10498,10500,10502,10504,10506,10508],{"class":554,"line":501},[552,10493,558],{"class":557},[552,10495,562],{"class":561},[552,10497,566],{"class":565},[552,10499,569],{"class":565},[552,10501,572],{"class":557},[552,10503,575],{"class":557},[552,10505,579],{"class":578},[552,10507,575],{"class":557},[552,10509,584],{"class":557},[552,10511,10512,10514,10516,10518,10520,10522,10524,10526],{"class":554,"line":502},[552,10513,592],{"class":591},[552,10515,595],{"class":557},[552,10517,630],{"class":598},[552,10519,608],{"class":557},[552,10521,611],{"class":591},[552,10523,614],{"class":557},[552,10525,639],{"class":578},[552,10527,620],{"class":557},[552,10529,10531,10533,10535,10537,10539,10542,10544,10546,10548,10550],{"class":10530,"line":623},[554,588],[552,10532,592],{"class":591},[552,10534,595],{"class":557},[552,10536,605],{"class":598},[552,10538,602],{"class":557},[552,10540,10541],{"class":598}," ScreenSizer",[552,10543,608],{"class":557},[552,10545,611],{"class":591},[552,10547,614],{"class":557},[552,10549,617],{"class":578},[552,10551,620],{"class":557},[552,10553,10554,10556,10558],{"class":554,"line":644},[552,10555,647],{"class":557},[552,10557,562],{"class":561},[552,10559,584],{"class":557},[552,10561,10562],{"class":554,"line":654},[552,10563,657],{"emptyLinePlaceholder":508},[552,10565,10566,10568,10570],{"class":554,"line":660},[552,10567,558],{"class":557},[552,10569,665],{"class":561},[552,10571,584],{"class":557},[552,10573,10574,10576,10578,10580,10582,10584,10587,10589],{"class":554,"line":670},[552,10575,673],{"class":557},[552,10577,676],{"class":561},[552,10579,679],{"class":565},[552,10581,572],{"class":557},[552,10583,575],{"class":557},[552,10585,10586],{"class":578},"#3f3f3f",[552,10588,575],{"class":557},[552,10590,584],{"class":557},[552,10592,10593,10595,10597,10599,10601,10603,10606,10608],{"class":554,"line":693},[552,10594,696],{"class":557},[552,10596,699],{"class":561},[552,10598,1399],{"class":565},[552,10600,572],{"class":557},[552,10602,575],{"class":557},[552,10604,10605],{"class":578},"[10, 10, 10]",[552,10607,575],{"class":557},[552,10609,702],{"class":557},[552,10611,10612,10614,10616],{"class":554,"line":705},[552,10613,696],{"class":557},[552,10615,710],{"class":561},[552,10617,702],{"class":557},[552,10619,10621,10623,10625],{"class":10620,"line":715},[554,588],[552,10622,696],{"class":557},[552,10624,81],{"class":561},[552,10626,584],{"class":557},[552,10628,10629,10631,10633],{"class":554,"line":720},[552,10630,768],{"class":557},[552,10632,771],{"class":561},[552,10634,584],{"class":557},[552,10636,10637,10639,10641,10643,10645,10647,10650,10652],{"class":554,"line":742},[552,10638,779],{"class":557},[552,10640,782],{"class":561},[552,10642,1873],{"class":565},[552,10644,572],{"class":557},[552,10646,575],{"class":557},[552,10648,10649],{"class":578},"[100, 100, 100]",[552,10651,575],{"class":557},[552,10653,702],{"class":557},[552,10655,10656,10658,10660],{"class":554,"line":546},[552,10657,779],{"class":557},[552,10659,792],{"class":561},[552,10661,702],{"class":557},[552,10663,10664,10666,10668],{"class":554,"line":765},[552,10665,800],{"class":557},[552,10667,771],{"class":561},[552,10669,584],{"class":557},[552,10671,10673,10675,10677],{"class":10672,"line":776},[554,588],[552,10674,810],{"class":557},[552,10676,81],{"class":561},[552,10678,584],{"class":557},[552,10680,10681,10683,10685,10687,10689,10691,10694,10696],{"class":554,"line":787},[552,10682,696],{"class":557},[552,10684,771],{"class":561},[552,10686,9383],{"class":565},[552,10688,572],{"class":557},[552,10690,575],{"class":557},[552,10692,10693],{"class":578},"5",[552,10695,575],{"class":557},[552,10697,584],{"class":557},[552,10699,10700,10702,10704],{"class":554,"line":797},[552,10701,768],{"class":557},[552,10703,782],{"class":561},[552,10705,702],{"class":557},[552,10707,10708,10710,10712],{"class":554,"line":547},[552,10709,768],{"class":557},[552,10711,792],{"class":561},[552,10713,702],{"class":557},[552,10715,10716,10718,10720],{"class":554,"line":817},[552,10717,810],{"class":557},[552,10719,771],{"class":561},[552,10721,584],{"class":557},[552,10723,10724,10726,10728,10730,10732,10734,10736,10738],{"class":554,"line":827},[552,10725,696],{"class":557},[552,10727,7963],{"class":561},[552,10729,1873],{"class":565},[552,10731,572],{"class":557},[552,10733,575],{"class":557},[552,10735,9945],{"class":578},[552,10737,575],{"class":557},[552,10739,702],{"class":557},[552,10741,10742,10744,10746],{"class":554,"line":2539},[552,10743,820],{"class":557},[552,10745,676],{"class":561},[552,10747,584],{"class":557},[552,10749,10750,10752,10754],{"class":554,"line":2548},[552,10751,647],{"class":557},[552,10753,665],{"class":561},[552,10755,584],{"class":557},[537,10757,837],{"id":836},[528,10759,10760,10761,1061],{},"Inherits all props from ",[532,10762,10763],{},"THREE.Object3D",[1242,10765,1558],{},{"title":500,"searchDepth":501,"depth":502,"links":10767},[10768,10769],{"id":539,"depth":502,"text":15},{"id":836,"depth":502,"text":837},"Scale objects to screen space where 1 unit equals 1 pixel.",{},{"title":81,"description":10770},"tMjbiq6RDx6TiRe5Yr52gRCjsYdoekkV4e0s25K29s0",{"id":10775,"title":85,"body":10776,"description":11146,"extension":505,"links":506,"meta":11147,"navigation":508,"path":86,"seo":11148,"stem":87,"__hash__":11149},"docs/2.api/1.abstractions/screen-space.md",{"type":493,"value":10777,"toc":11142},[10778,10783,10796,10818,10820,11046,11048,11140],[522,10779,10780],{},[10781,10782],"abstractions-screen-space",{},[528,10784,10785,10788,10789,10792,10793,1061],{},[532,10786,10787],{},"\u003CScreenSpace />"," wraps its children in a ",[532,10790,10791],{},"\u003CTresGroup />"," and positions them in front of the active camera at ",[532,10794,10795],{},":depth",[528,10797,10798,10799,1586,10801,1586,10803,1586,10805,10807,10808,10811,10812,7533,10815,1061],{},"Additionally, the ",[532,10800,870],{},[532,10802,893],{},[532,10804,912],{},[532,10806,931],{}," props can be used to position them similarly to CSS ",[532,10809,10810],{},"position: absolute"," property when using a ",[532,10813,10814],{},"PerspectiveCamera",[532,10816,10817],{},"OrtographicCamera",[537,10819,15],{"id":539},[541,10821,10824],{"className":543,"code":10822,"highlights":10823,"language":548,"meta":500,"style":500},"\u003Cscript setup lang=\"ts\">\nimport { OrbitControls, ScreenSpace } from '@tresjs/cientos'\nimport { TresCanvas } from '@tresjs/core'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas clear-color=\"#333\">\n    \u003CTresPerspectiveCamera />\n    \u003COrbitControls />\n\n    \u003CScreenSpace :depth=\"5\">\n      \u003CTresMesh>\n        \u003CTresTorusGeometry />\n        \u003CTresMeshNormalMaterial />\n      \u003C/TresMesh>\n    \u003C/ScreenSpace>\n\n    \u003CTresGridHelper :args=\"[10, 10]\" />\n  \u003C/TresCanvas>\n\u003C/template>\n\n",[502,720,787],[532,10825,10826,10846,10870,10888,10896,10900,10908,10927,10935,10943,10947,10967,10975,10983,10991,10999,11008,11012,11030,11038],{"__ignoreMap":500},[552,10827,10828,10830,10832,10834,10836,10838,10840,10842,10844],{"class":554,"line":501},[552,10829,558],{"class":557},[552,10831,562],{"class":561},[552,10833,566],{"class":565},[552,10835,569],{"class":565},[552,10837,572],{"class":557},[552,10839,575],{"class":557},[552,10841,579],{"class":578},[552,10843,575],{"class":557},[552,10845,584],{"class":557},[552,10847,10849,10851,10853,10855,10857,10860,10862,10864,10866,10868],{"class":10848,"line":502},[554,588],[552,10850,592],{"class":591},[552,10852,595],{"class":557},[552,10854,605],{"class":598},[552,10856,602],{"class":557},[552,10858,10859],{"class":598}," ScreenSpace",[552,10861,608],{"class":557},[552,10863,611],{"class":591},[552,10865,614],{"class":557},[552,10867,617],{"class":578},[552,10869,620],{"class":557},[552,10871,10872,10874,10876,10878,10880,10882,10884,10886],{"class":554,"line":623},[552,10873,592],{"class":591},[552,10875,595],{"class":557},[552,10877,630],{"class":598},[552,10879,608],{"class":557},[552,10881,611],{"class":591},[552,10883,614],{"class":557},[552,10885,639],{"class":578},[552,10887,620],{"class":557},[552,10889,10890,10892,10894],{"class":554,"line":644},[552,10891,647],{"class":557},[552,10893,562],{"class":561},[552,10895,584],{"class":557},[552,10897,10898],{"class":554,"line":654},[552,10899,657],{"emptyLinePlaceholder":508},[552,10901,10902,10904,10906],{"class":554,"line":660},[552,10903,558],{"class":557},[552,10905,665],{"class":561},[552,10907,584],{"class":557},[552,10909,10910,10912,10914,10916,10918,10920,10923,10925],{"class":554,"line":670},[552,10911,673],{"class":557},[552,10913,676],{"class":561},[552,10915,679],{"class":565},[552,10917,572],{"class":557},[552,10919,575],{"class":557},[552,10921,10922],{"class":578},"#333",[552,10924,575],{"class":557},[552,10926,584],{"class":557},[552,10928,10929,10931,10933],{"class":554,"line":693},[552,10930,696],{"class":557},[552,10932,699],{"class":561},[552,10934,702],{"class":557},[552,10936,10937,10939,10941],{"class":554,"line":705},[552,10938,696],{"class":557},[552,10940,710],{"class":561},[552,10942,702],{"class":557},[552,10944,10945],{"class":554,"line":715},[552,10946,657],{"emptyLinePlaceholder":508},[552,10948,10950,10952,10954,10957,10959,10961,10963,10965],{"class":10949,"line":720},[554,588],[552,10951,696],{"class":557},[552,10953,85],{"class":561},[552,10955,10956],{"class":565}," :depth",[552,10958,572],{"class":557},[552,10960,575],{"class":557},[552,10962,10693],{"class":578},[552,10964,575],{"class":557},[552,10966,584],{"class":557},[552,10968,10969,10971,10973],{"class":554,"line":742},[552,10970,768],{"class":557},[552,10972,771],{"class":561},[552,10974,584],{"class":557},[552,10976,10977,10979,10981],{"class":554,"line":546},[552,10978,779],{"class":557},[552,10980,9846],{"class":561},[552,10982,702],{"class":557},[552,10984,10985,10987,10989],{"class":554,"line":765},[552,10986,779],{"class":557},[552,10988,792],{"class":561},[552,10990,702],{"class":557},[552,10992,10993,10995,10997],{"class":554,"line":776},[552,10994,800],{"class":557},[552,10996,771],{"class":561},[552,10998,584],{"class":557},[552,11000,11002,11004,11006],{"class":11001,"line":787},[554,588],[552,11003,810],{"class":557},[552,11005,85],{"class":561},[552,11007,584],{"class":557},[552,11009,11010],{"class":554,"line":797},[552,11011,657],{"emptyLinePlaceholder":508},[552,11013,11014,11016,11018,11020,11022,11024,11026,11028],{"class":554,"line":547},[552,11015,696],{"class":557},[552,11017,7963],{"class":561},[552,11019,1873],{"class":565},[552,11021,572],{"class":557},[552,11023,575],{"class":557},[552,11025,9945],{"class":578},[552,11027,575],{"class":557},[552,11029,702],{"class":557},[552,11031,11032,11034,11036],{"class":554,"line":817},[552,11033,820],{"class":557},[552,11035,676],{"class":561},[552,11037,584],{"class":557},[552,11039,11040,11042,11044],{"class":554,"line":827},[552,11041,647],{"class":557},[552,11043,665],{"class":561},[552,11045,584],{"class":557},[537,11047,837],{"id":836},[842,11049,11050,11060],{},[845,11051,11052],{},[848,11053,11054,11056,11058],{},[851,11055,853],{"align":912},[851,11057,856],{"align":912},[851,11059,859],{},[861,11061,11062,11076,11095,11109,11126],{},[848,11063,11064,11069,11072],{},[866,11065,11066],{"align":912},[532,11067,11068],{},"depth",[866,11070,11071],{"align":912},"Distance from the camera",[866,11073,11074],{},[532,11075,8883],{},[848,11077,11078,11082,11090],{},[866,11079,11080],{"align":912},[532,11081,870],{},[866,11083,11084,11085,11087,11088],{"align":912},"Similar to CSS ",[532,11086,870],{}," property. Cannot be used with ",[532,11089,893],{},[866,11091,11092,11094],{},[532,11093,1860],{}," (vertical center of the screen)",[848,11096,11097,11101,11107],{},[866,11098,11099],{"align":912},[532,11100,893],{},[866,11102,11084,11103,11087,11105],{"align":912},[532,11104,893],{},[532,11106,870],{},[866,11108],{},[848,11110,11111,11115,11121],{},[866,11112,11113],{"align":912},[532,11114,912],{},[866,11116,11084,11117,11087,11119],{"align":912},[532,11118,912],{},[532,11120,931],{},[866,11122,11123,11125],{},[532,11124,1860],{}," (horizontal center of the screen)",[848,11127,11128,11132,11138],{},[866,11129,11130],{"align":912},[532,11131,931],{},[866,11133,11084,11134,11087,11136],{"align":912},[532,11135,931],{},[532,11137,912],{},[866,11139],{},[1242,11141,1558],{},{"title":500,"searchDepth":501,"depth":502,"links":11143},[11144,11145],{"id":539,"depth":502,"text":15},{"id":836,"depth":502,"text":837},"Position objects in front of the camera with CSS-like positioning.",{},{"title":85,"description":11146},"HsnjizzUu-Otw_0NXfsXgH-NRKdmkNQdklnC4aRzjC8",1785417269265]