[{"data":1,"prerenderedAt":11138},["ShallowReactive",2],{"navigation":3,"/api/abstractions":478,"/api/abstractions-surround":499,"abstraction-list":504},[4,22],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","/getting-started","1.getting-started/1.index",[9,10,14,18],{"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},"Upgrade Guide","/getting-started/upgrade-guide","1.getting-started/4.upgrade-guide",{"title":23,"path":24,"stem":25,"children":26},"Api","/api","2.api",[27,30,84,114,156,194,288,314,348,398,444],{"title":28,"path":24,"stem":29},"All","2.api/index",{"title":31,"path":32,"stem":33,"children":34},"Abstractions","/api/abstractions","2.api/1.abstractions/index",[35,36,40,44,48,52,56,60,64,68,72,76,80],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39},"Align","/api/abstractions/align","2.api/1.abstractions/align",{"title":41,"path":42,"stem":43},"Billboard","/api/abstractions/billboard","2.api/1.abstractions/billboard",{"title":45,"path":46,"stem":47},"Camera Shake","/api/abstractions/camera-shake","2.api/1.abstractions/camera-shake",{"title":49,"path":50,"stem":51},"Decal","/api/abstractions/decal","2.api/1.abstractions/decal",{"title":53,"path":54,"stem":55},"Edges","/api/abstractions/edges","2.api/1.abstractions/edges",{"title":57,"path":58,"stem":59},"Fit","/api/abstractions/fit","2.api/1.abstractions/fit",{"title":61,"path":62,"stem":63},"Levioso (Float)","/api/abstractions/levioso","2.api/1.abstractions/levioso",{"title":65,"path":66,"stem":67},"Mask","/api/abstractions/mask","2.api/1.abstractions/mask",{"title":69,"path":70,"stem":71},"Outline","/api/abstractions/outline","2.api/1.abstractions/outline",{"title":73,"path":74,"stem":75},"Sampler","/api/abstractions/sampler","2.api/1.abstractions/sampler",{"title":77,"path":78,"stem":79},"ScreenSizer","/api/abstractions/screen-sizer","2.api/1.abstractions/screen-sizer",{"title":81,"path":82,"stem":83},"ScreenSpace","/api/abstractions/screen-space","2.api/1.abstractions/screen-space",{"title":85,"path":86,"stem":87,"children":88},"Controls","/api/controls","2.api/2.controls/index",[89,90,94,98,102,106,110],{"title":85,"path":86,"stem":87},{"title":91,"path":92,"stem":93},"Camera Controls","/api/controls/camera-controls","2.api/2.controls/camera-controls",{"title":95,"path":96,"stem":97},"Keyboard Controls","/api/controls/keyboard-controls","2.api/2.controls/keyboard-controls",{"title":99,"path":100,"stem":101},"Map Controls","/api/controls/map-controls","2.api/2.controls/map-controls",{"title":103,"path":104,"stem":105},"Orbit Controls","/api/controls/orbit-controls","2.api/2.controls/orbit-controls",{"title":107,"path":108,"stem":109},"PointerLock Controls","/api/controls/pointer-lock-controls","2.api/2.controls/pointer-lock-controls",{"title":111,"path":112,"stem":113},"Transform Controls","/api/controls/transform-controls","2.api/2.controls/transform-controls",{"title":115,"path":116,"stem":117,"children":118},"Loaders","/api/loaders","2.api/3.loaders/index",[119,120,124,128,132,136,140,144,148,152],{"title":115,"path":116,"stem":117},{"title":121,"path":122,"stem":123},"useGLTF","/api/loaders/use-gltf","2.api/3.loaders/1.use-gltf",{"title":125,"path":126,"stem":127},"GLTFModel","/api/loaders/gltf-model","2.api/3.loaders/2.gltf-model",{"title":129,"path":130,"stem":131},"useFBX","/api/loaders/use-fbx","2.api/3.loaders/3.use-fbx",{"title":133,"path":134,"stem":135},"FBXModel","/api/loaders/fbx-model","2.api/3.loaders/4.fbx-model",{"title":137,"path":138,"stem":139},"useTexture","/api/loaders/use-texture","2.api/3.loaders/5.use-texture",{"title":141,"path":142,"stem":143},"useTextures","/api/loaders/use-textures","2.api/3.loaders/6.use-textures",{"title":145,"path":146,"stem":147},"useSVG","/api/loaders/use-svg","2.api/3.loaders/7.use-svg",{"title":149,"path":150,"stem":151},"useProgress","/api/loaders/use-progress","2.api/3.loaders/use-progress",{"title":153,"path":154,"stem":155},"useVideoTexture","/api/loaders/use-video-texture","2.api/3.loaders/use-video-texture",{"title":157,"path":158,"stem":159,"children":160},"Materials","/api/materials","2.api/4.materials/index",[161,162,166,170,174,178,182,186,190],{"title":157,"path":158,"stem":159},{"title":163,"path":164,"stem":165},"Custom Shader Material","/api/materials/custom-shader-material","2.api/4.materials/custom-shader-material",{"title":167,"path":168,"stem":169},"Mesh Glass Material","/api/materials/glass-material","2.api/4.materials/glass-material",{"title":171,"path":172,"stem":173},"Holographic Material","/api/materials/holographic-material","2.api/4.materials/holographic-material",{"title":175,"path":176,"stem":177},"Mesh Discard Material","/api/materials/mesh-discard-material","2.api/4.materials/mesh-discard-material",{"title":179,"path":180,"stem":181},"Mesh Reflection Material","/api/materials/mesh-reflection-material","2.api/4.materials/mesh-reflection-material",{"title":183,"path":184,"stem":185},"Mesh Transmission Material","/api/materials/mesh-transmission-material","2.api/4.materials/mesh-transmission-material",{"title":187,"path":188,"stem":189},"Point Material","/api/materials/point-material","2.api/4.materials/point-material",{"title":191,"path":192,"stem":193},"Wobble Material","/api/materials/wobble-material","2.api/4.materials/wobble-material",{"title":195,"path":196,"stem":197,"children":198},"Shapes","/api/shapes","2.api/5.shapes/index",[199,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284],{"title":195,"path":196,"stem":197},{"title":201,"path":202,"stem":203},"Box","/api/shapes/box","2.api/5.shapes/box",{"title":205,"path":206,"stem":207},"CatmullRomCurve3","/api/shapes/catmullromcurve3","2.api/5.shapes/catmullromcurve3",{"title":209,"path":210,"stem":211},"Circle","/api/shapes/circle","2.api/5.shapes/circle",{"title":213,"path":214,"stem":215},"Cone","/api/shapes/cone","2.api/5.shapes/cone",{"title":217,"path":218,"stem":219},"Cubic Bezier Line","/api/shapes/cubic-bezier-line","2.api/5.shapes/cubic-bezier-line",{"title":221,"path":222,"stem":223},"Cylinder","/api/shapes/cylinder","2.api/5.shapes/cylinder",{"title":225,"path":226,"stem":227},"Dodecahedron","/api/shapes/dodecahedron","2.api/5.shapes/dodecahedron",{"title":229,"path":230,"stem":231},"Grid","/api/shapes/grid","2.api/5.shapes/grid",{"title":233,"path":234,"stem":235},"Icosahedron","/api/shapes/icosahedron","2.api/5.shapes/icosahedron",{"title":237,"path":238,"stem":239},"Line2","/api/shapes/line2","2.api/5.shapes/line2",{"title":241,"path":242,"stem":243},"Octahedron","/api/shapes/octahedron","2.api/5.shapes/octahedron",{"title":245,"path":246,"stem":247},"Plane","/api/shapes/plane","2.api/5.shapes/plane",{"title":249,"path":250,"stem":251},"Quadratic Bezier Line","/api/shapes/quadratic-bezier-line","2.api/5.shapes/quadratic-bezier-line",{"title":253,"path":254,"stem":255},"Ring","/api/shapes/ring","2.api/5.shapes/ring",{"title":257,"path":258,"stem":259},"Rounded Box","/api/shapes/rounded-box","2.api/5.shapes/rounded-box",{"title":261,"path":262,"stem":263},"Screen Quad","/api/shapes/screen-quad","2.api/5.shapes/screen-quad",{"title":265,"path":266,"stem":267},"Sphere","/api/shapes/sphere","2.api/5.shapes/sphere",{"title":269,"path":270,"stem":271},"Superformula","/api/shapes/superformula","2.api/5.shapes/superformula",{"title":273,"path":274,"stem":275},"Tetrahedron","/api/shapes/tetrahedron","2.api/5.shapes/tetrahedron",{"title":277,"path":278,"stem":279},"Torus","/api/shapes/torus","2.api/5.shapes/torus",{"title":281,"path":282,"stem":283},"Torus Knot","/api/shapes/torus-knot","2.api/5.shapes/torus-knot",{"title":285,"path":286,"stem":287},"Tube","/api/shapes/tube","2.api/5.shapes/tube",{"title":289,"path":290,"stem":291,"children":292},"Debug/Performance","/api/debug-performance","2.api/6.debug-performance/index",[293,294,298,302,306,310],{"title":289,"path":290,"stem":291},{"title":295,"path":296,"stem":297},"Helper","/api/debug-performance/helper","2.api/6.debug-performance/helper",{"title":299,"path":300,"stem":301},"LOD","/api/debug-performance/lod","2.api/6.debug-performance/lod",{"title":303,"path":304,"stem":305},"Stats","/api/debug-performance/stats","2.api/6.debug-performance/stats",{"title":307,"path":308,"stem":309},"StatsGl","/api/debug-performance/stats-gl","2.api/6.debug-performance/stats-gl",{"title":311,"path":312,"stem":313},"useBVH","/api/debug-performance/use-bvh","2.api/6.debug-performance/use-bvh",{"title":315,"path":316,"stem":317,"children":318},"Light/Shadow","/api/light-shadow","2.api/7.light-shadow/index",[319,320,324,328,332,336,340,344],{"title":315,"path":316,"stem":317},{"title":321,"path":322,"stem":323},"Accumulative Shadows","/api/light-shadow/accumulative-shadows","2.api/7.light-shadow/accumulative-shadows",{"title":325,"path":326,"stem":327},"Bake Shadows","/api/light-shadow/bake-shadows","2.api/7.light-shadow/bake-shadows",{"title":329,"path":330,"stem":331},"Circle Shadow","/api/light-shadow/circle-shadow","2.api/7.light-shadow/circle-shadow",{"title":333,"path":334,"stem":335},"Contact Shadows","/api/light-shadow/contact-shadows","2.api/7.light-shadow/contact-shadows",{"title":337,"path":338,"stem":339},"Lensflare","/api/light-shadow/lensflare","2.api/7.light-shadow/lensflare",{"title":341,"path":342,"stem":343},"Randomized Lights","/api/light-shadow/randomized-lights","2.api/7.light-shadow/randomized-lights",{"title":345,"path":346,"stem":347},"Soft Shadows","/api/light-shadow/soft-shadows","2.api/7.light-shadow/soft-shadows",{"title":349,"path":350,"stem":351,"children":352},"Staging","/api/staging","2.api/8.staging/index",[353,354,358,362,366,370,374,378,382,386,390,394],{"title":349,"path":350,"stem":351},{"title":355,"path":356,"stem":357},"Environment","/api/staging/environment","2.api/8.staging/1.environment",{"title":359,"path":360,"stem":361},"useEnvironment","/api/staging/use-environment","2.api/8.staging/2.use-environment",{"title":363,"path":364,"stem":365},"Lightformer","/api/staging/lightformer","2.api/8.staging/3.lightformer",{"title":367,"path":368,"stem":369},"Backdrop","/api/staging/backdrop","2.api/8.staging/backdrop",{"title":371,"path":372,"stem":373},"Ocean","/api/staging/ocean","2.api/8.staging/ocean",{"title":375,"path":376,"stem":377},"Precipitation","/api/staging/precipitation","2.api/8.staging/precipitation",{"title":379,"path":380,"stem":381},"Sky","/api/staging/sky","2.api/8.staging/sky",{"title":383,"path":384,"stem":385},"Smoke","/api/staging/smoke","2.api/8.staging/smoke",{"title":387,"path":388,"stem":389},"Sparkles","/api/staging/sparkles","2.api/8.staging/sparkles",{"title":391,"path":392,"stem":393},"Stage","/api/staging/stage","2.api/8.staging/stage",{"title":395,"path":396,"stem":397},"Stars","/api/staging/stars","2.api/8.staging/stars",{"title":399,"path":400,"stem":401,"children":402},"Objects","/api/objects","2.api/9.objects/index",[403,404,408,412,416,420,424,428,432,436,440],{"title":399,"path":400,"stem":401},{"title":405,"path":406,"stem":407},"AnimatedSprite","/api/objects/animated-sprite","2.api/9.objects/animated-sprite",{"title":409,"path":410,"stem":411},"CubeCamera","/api/objects/cube-camera","2.api/9.objects/cube-camera",{"title":413,"path":414,"stem":415},"Fbo","/api/objects/fbo","2.api/9.objects/fbo",{"title":417,"path":418,"stem":419},"GradientTexture","/api/objects/gradient-texture","2.api/9.objects/gradient-texture",{"title":421,"path":422,"stem":423},"HTML","/api/objects/html","2.api/9.objects/html",{"title":425,"path":426,"stem":427},"Image","/api/objects/image","2.api/9.objects/image",{"title":429,"path":430,"stem":431},"MarchingCubes","/api/objects/marching-cubes","2.api/9.objects/marching-cubes",{"title":433,"path":434,"stem":435},"Reflector","/api/objects/reflector","2.api/9.objects/reflector",{"title":437,"path":438,"stem":439},"Text","/api/objects/text","2.api/9.objects/text",{"title":441,"path":442,"stem":443},"Text3D","/api/objects/text-3d","2.api/9.objects/text-3d",{"title":445,"path":446,"stem":447,"children":448},"Miscellaneous","/api/miscellaneous","2.api/miscellaneous/index",[449,450,454,458,462,466,470,474],{"title":445,"path":446,"stem":447},{"title":451,"path":452,"stem":453},"Bounds","/api/miscellaneous/bounds","2.api/miscellaneous/bounds",{"title":455,"path":456,"stem":457},"GlobalAudio","/api/miscellaneous/global-audio","2.api/miscellaneous/global-audio",{"title":459,"path":460,"stem":461},"MouseParallax","/api/miscellaneous/mouse-parallax","2.api/miscellaneous/mouse-parallax",{"title":463,"path":464,"stem":465},"PositionalAudio","/api/miscellaneous/positional-audio","2.api/miscellaneous/positional-audio",{"title":467,"path":468,"stem":469},"useAnimations","/api/miscellaneous/use-animations","2.api/miscellaneous/use-animations",{"title":471,"path":472,"stem":473},"useGLTFExporter","/api/miscellaneous/use-gltf-exporter","2.api/miscellaneous/use-gltf-exporter",{"title":475,"path":476,"stem":477},"useIntersect","/api/miscellaneous/use-intersect","2.api/miscellaneous/use-intersect",{"id":479,"title":31,"body":480,"description":492,"extension":493,"links":494,"meta":495,"navigation":496,"path":32,"seo":497,"stem":33,"__hash__":498},"docs/2.api/1.abstractions/index.md",{"type":481,"value":482,"toc":487},"minimark",[483],[484,485],"api-list",{"list-name":486},"abstraction-list",{"title":488,"searchDepth":489,"depth":490,"links":491},"",1,2,[],"UI components reference","md",null,{},true,{"title":31,"description":492},"baHMAoaJElysrTy3x8ClFjAsCmHKTlx_oEIhv5zW7dM",[500,502],{"title":28,"path":24,"stem":29,"description":501,"children":-1},"Explore the complete API reference",{"title":37,"path":38,"stem":39,"description":503,"children":-1},"Calculate and align children within their parent using bounding boxes.",[505,1241,1555,2104,7206,7500,8125,8519,9169,9646,10449,10762],{"id":506,"title":37,"body":507,"description":503,"extension":493,"links":494,"meta":1238,"navigation":496,"path":38,"seo":1239,"stem":39,"__hash__":1240},"docs/2.api/1.abstractions/align.md",{"type":481,"value":508,"toc":1233},[509,515,524,528,822,826,829,1083,1087,1229],[510,511,512],"scene-controls-wrapper",{},[513,514],"abstractions-align",{},[516,517,518,519,523],"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 ",[520,521,522],"code",{},"cacheKey"," is set.",[525,526,15],"h2",{"id":527},"usage",[529,530,537],"pre",{"className":531,"code":532,"highlights":533,"language":536,"meta":488,"style":488},"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",[490,534,535],13,18,"vue",[520,538,539,573,609,630,640,646,656,679,691,701,706,728,733,751,762,773,783,793,803,813],{"__ignoreMap":488},[540,541,543,547,551,555,558,561,564,568,570],"span",{"class":542,"line":489},"line",[540,544,546],{"class":545},"sMK4o","\u003C",[540,548,550],{"class":549},"swJcz","script",[540,552,554],{"class":553},"spNyl"," setup",[540,556,557],{"class":553}," lang",[540,559,560],{"class":545},"=",[540,562,563],{"class":545},"\"",[540,565,567],{"class":566},"sfazB","ts",[540,569,563],{"class":545},[540,571,572],{"class":545},">\n",[540,574,577,581,584,588,591,594,597,600,603,606],{"class":575,"line":490},[542,576],"highlight",[540,578,580],{"class":579},"s7zQu","import",[540,582,583],{"class":545}," {",[540,585,587],{"class":586},"sTEyZ"," Align",[540,589,590],{"class":545},",",[540,592,593],{"class":586}," OrbitControls",[540,595,596],{"class":545}," }",[540,598,599],{"class":579}," from",[540,601,602],{"class":545}," '",[540,604,605],{"class":566},"@tresjs/cientos",[540,607,608],{"class":545},"'\n",[540,610,612,614,616,619,621,623,625,628],{"class":542,"line":611},3,[540,613,580],{"class":579},[540,615,583],{"class":545},[540,617,618],{"class":586}," TresCanvas",[540,620,596],{"class":545},[540,622,599],{"class":579},[540,624,602],{"class":545},[540,626,627],{"class":566},"@tresjs/core",[540,629,608],{"class":545},[540,631,633,636,638],{"class":542,"line":632},4,[540,634,635],{"class":545},"\u003C/",[540,637,550],{"class":549},[540,639,572],{"class":545},[540,641,643],{"class":542,"line":642},5,[540,644,645],{"emptyLinePlaceholder":496},"\n",[540,647,649,651,654],{"class":542,"line":648},6,[540,650,546],{"class":545},[540,652,653],{"class":549},"template",[540,655,572],{"class":545},[540,657,659,662,665,668,670,672,675,677],{"class":542,"line":658},7,[540,660,661],{"class":545},"  \u003C",[540,663,664],{"class":549},"TresCanvas",[540,666,667],{"class":553}," clear-color",[540,669,560],{"class":545},[540,671,563],{"class":545},[540,673,674],{"class":566},"#222",[540,676,563],{"class":545},[540,678,572],{"class":545},[540,680,682,685,688],{"class":542,"line":681},8,[540,683,684],{"class":545},"    \u003C",[540,686,687],{"class":549},"TresPerspectiveCamera",[540,689,690],{"class":545}," />\n",[540,692,694,696,699],{"class":542,"line":693},9,[540,695,684],{"class":545},[540,697,698],{"class":549},"OrbitControls",[540,700,690],{"class":545},[540,702,704],{"class":542,"line":703},10,[540,705,645],{"emptyLinePlaceholder":496},[540,707,709,711,714,717,719,721,724,726],{"class":542,"line":708},11,[540,710,684],{"class":545},[540,712,713],{"class":549},"TresAxesHelper",[540,715,716],{"class":553}," :scale",[540,718,560],{"class":545},[540,720,563],{"class":545},[540,722,723],{"class":566},"2",[540,725,563],{"class":545},[540,727,690],{"class":545},[540,729,731],{"class":542,"line":730},12,[540,732,645],{"emptyLinePlaceholder":496},[540,734,736,738,740,743,746,749],{"class":735,"line":534},[542,576],[540,737,684],{"class":545},[540,739,37],{"class":549},[540,741,742],{"class":553}," top",[540,744,745],{"class":553}," right",[540,747,748],{"class":553}," back",[540,750,572],{"class":545},[540,752,754,757,760],{"class":542,"line":753},14,[540,755,756],{"class":545},"      \u003C",[540,758,759],{"class":549},"TresMesh",[540,761,572],{"class":545},[540,763,765,768,771],{"class":542,"line":764},15,[540,766,767],{"class":545},"        \u003C",[540,769,770],{"class":549},"TresBoxGeometry",[540,772,690],{"class":545},[540,774,776,778,781],{"class":542,"line":775},16,[540,777,767],{"class":545},[540,779,780],{"class":549},"TresMeshNormalMaterial",[540,782,690],{"class":545},[540,784,786,789,791],{"class":542,"line":785},17,[540,787,788],{"class":545},"      \u003C/",[540,790,759],{"class":549},[540,792,572],{"class":545},[540,794,796,799,801],{"class":795,"line":535},[542,576],[540,797,798],{"class":545},"    \u003C/",[540,800,37],{"class":549},[540,802,572],{"class":545},[540,804,806,809,811],{"class":542,"line":805},19,[540,807,808],{"class":545},"  \u003C/",[540,810,664],{"class":549},[540,812,572],{"class":545},[540,814,816,818,820],{"class":542,"line":815},20,[540,817,635],{"class":545},[540,819,653],{"class":549},[540,821,572],{"class":545},[525,823,825],{"id":824},"props","Props",[516,827,828],{},"All props are optional.",[830,831,832,848],"table",{},[833,834,835],"thead",{},[836,837,838,842,845],"tr",{},[839,840,841],"th",{},"Prop",[839,843,844],{},"Description",[839,846,847],{},"Default",[849,850,851,875,894,913,931,950,968,984,1000,1016,1032,1054,1066],"tbody",{},[836,852,853,859,870],{},[854,855,856],"td",{},[520,857,858],{},"top",[854,860,861,862,865,866,869],{},"If ",[520,863,864],{},"true",", aligns bounding box bottom to ",[520,867,868],{},"0"," on the y-axis",[854,871,872],{},[520,873,874],{},"false",[836,876,877,882,890],{},[854,878,879],{},[520,880,881],{},"bottom",[854,883,861,884,886,887,889],{},[520,885,864],{},", aligns bounding box top to ",[520,888,868],{}," on the y-axis.",[854,891,892],{},[520,893,874],{},[836,895,896,901,909],{},[854,897,898],{},[520,899,900],{},"left",[854,902,861,903,905,906,908],{},[520,904,864],{},", aligns bounding box right to ",[520,907,868],{}," on the x-axis.",[854,910,911],{},[520,912,874],{},[836,914,915,920,927],{},[854,916,917],{},[520,918,919],{},"right",[854,921,861,922,924,925,908],{},[520,923,864],{},", aligns bounding box left to ",[520,926,868],{},[854,928,929],{},[520,930,874],{},[836,932,933,938,946],{},[854,934,935],{},[520,936,937],{},"front",[854,939,861,940,942,943,945],{},[520,941,864],{},", aligns bounding box back to ",[520,944,868],{}," on the z-axis.",[854,947,948],{},[520,949,874],{},[836,951,952,957,964],{},[854,953,954],{},[520,955,956],{},"back",[854,958,861,959,961,962,945],{},[520,960,864],{},", aligns bounding box front to ",[520,963,868],{},[854,965,966],{},[520,967,874],{},[836,969,970,975,980],{},[854,971,972],{},[520,973,974],{},"disable",[854,976,861,977,979],{},[520,978,864],{},", disables alignment on all axes.",[854,981,982],{},[520,983,874],{},[836,985,986,991,996],{},[854,987,988],{},[520,989,990],{},"disableX",[854,992,861,993,995],{},[520,994,864],{},", disables alignment on the x-axis.",[854,997,998],{},[520,999,874],{},[836,1001,1002,1007,1012],{},[854,1003,1004],{},[520,1005,1006],{},"disableY",[854,1008,861,1009,1011],{},[520,1010,864],{},", disables alignment on the y-axis.",[854,1013,1014],{},[520,1015,874],{},[836,1017,1018,1023,1028],{},[854,1019,1020],{},[520,1021,1022],{},"disableZ",[854,1024,861,1025,1027],{},[520,1026,864],{},", disables alignment on the z-axis.",[854,1029,1030],{},[520,1031,874],{},[836,1033,1034,1039,1050],{},[854,1035,1036],{},[520,1037,1038],{},"precise",[854,1040,1041,1042,1049],{},"See ",[1043,1044,1048],"a",{"href":1045,"rel":1046},"https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject",[1047],"nofollow","Box3.setFromObject",".",[854,1051,1052],{},[520,1053,864],{},[836,1055,1056,1061,1064],{},[854,1057,1058],{},[520,1059,1060],{},"onAlign",[854,1062,1063],{},"Callback that fires when updating, after measurement.",[854,1065],{},[836,1067,1068,1072,1078],{},[854,1069,1070],{},[520,1071,522],{},[854,1073,1074,1075,1077],{},"If set, component will only update when ",[520,1076,522],{},"'s value changes. If unset, component will update every frame.",[854,1079,1080],{},[520,1081,1082],{},"undefined",[525,1084,1086],{"id":1085},"aligncallbackoptions","AlignCallbackOptions",[529,1088,1091],{"className":1089,"code":1090,"language":567,"meta":488,"style":488},"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",[520,1092,1093,1108,1114,1125,1130,1139,1149,1158,1167,1177,1187,1197,1206,1215,1224],{"__ignoreMap":488},[540,1094,1095,1098,1101,1105],{"class":542,"line":489},[540,1096,1097],{"class":579},"export",[540,1099,1100],{"class":553}," interface",[540,1102,1104],{"class":1103},"sBMFI"," AlignCallbackOptions",[540,1106,1107],{"class":545}," {\n",[540,1109,1110],{"class":542,"line":490},[540,1111,1113],{"class":1112},"sHwdD","  /** The next parent above \u003CAlign /> */\n",[540,1115,1116,1119,1122],{"class":542,"line":611},[540,1117,1118],{"class":549},"  parent",[540,1120,1121],{"class":545},":",[540,1123,1124],{"class":1103}," Object3D\n",[540,1126,1127],{"class":542,"line":632},[540,1128,1129],{"class":1112},"  /** The outmost container group of the \u003CAlign/> component */\n",[540,1131,1132,1135,1137],{"class":542,"line":642},[540,1133,1134],{"class":549},"  container",[540,1136,1121],{"class":545},[540,1138,1124],{"class":1103},[540,1140,1141,1144,1146],{"class":542,"line":648},[540,1142,1143],{"class":549},"  width",[540,1145,1121],{"class":545},[540,1147,1148],{"class":1103}," number\n",[540,1150,1151,1154,1156],{"class":542,"line":658},[540,1152,1153],{"class":549},"  height",[540,1155,1121],{"class":545},[540,1157,1148],{"class":1103},[540,1159,1160,1163,1165],{"class":542,"line":681},[540,1161,1162],{"class":549},"  depth",[540,1164,1121],{"class":545},[540,1166,1148],{"class":1103},[540,1168,1169,1172,1174],{"class":542,"line":693},[540,1170,1171],{"class":549},"  boundingBox",[540,1173,1121],{"class":545},[540,1175,1176],{"class":1103}," Box3\n",[540,1178,1179,1182,1184],{"class":542,"line":703},[540,1180,1181],{"class":549},"  boundingSphere",[540,1183,1121],{"class":545},[540,1185,1186],{"class":1103}," Sphere\n",[540,1188,1189,1192,1194],{"class":542,"line":708},[540,1190,1191],{"class":549},"  center",[540,1193,1121],{"class":545},[540,1195,1196],{"class":1103}," Vector3\n",[540,1198,1199,1202,1204],{"class":542,"line":730},[540,1200,1201],{"class":549},"  verticalAlignment",[540,1203,1121],{"class":545},[540,1205,1148],{"class":1103},[540,1207,1208,1211,1213],{"class":542,"line":534},[540,1209,1210],{"class":549},"  horizontalAlignment",[540,1212,1121],{"class":545},[540,1214,1148],{"class":1103},[540,1216,1217,1220,1222],{"class":542,"line":753},[540,1218,1219],{"class":549},"  depthAlignment",[540,1221,1121],{"class":545},[540,1223,1148],{"class":1103},[540,1225,1226],{"class":542,"line":764},[540,1227,1228],{"class":545},"}\n",[1230,1231,1232],"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":488,"searchDepth":489,"depth":490,"links":1234},[1235,1236,1237],{"id":527,"depth":490,"text":15},{"id":824,"depth":490,"text":825},{"id":1085,"depth":490,"text":1086},{},{"title":37,"description":503},"2TNilwT1BiWwam7y0leE_VBx46wcrMjjhvIXPvGWsNg",{"id":1242,"title":41,"body":1243,"description":1551,"extension":493,"links":494,"meta":1552,"navigation":496,"path":42,"seo":1553,"stem":43,"__hash__":1554},"docs/2.api/1.abstractions/billboard.md",{"type":481,"value":1244,"toc":1547},[1245,1250,1257,1259,1468,1470,1544],[510,1246,1247],{},[1248,1249],"abstractions-billboard",{},[516,1251,1252,1253,1256],{},"Adds a ",[520,1254,1255],{},"THREE.Group"," that always faces the camera.",[525,1258,15],{"id":527},[529,1260,1263],{"className":531,"code":1261,"highlights":1262,"language":536,"meta":488,"style":488},"\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",[490,703,753],[520,1264,1265,1285,1314,1332,1340,1344,1352,1371,1379,1399,1408,1427,1435,1443,1452,1460],{"__ignoreMap":488},[540,1266,1267,1269,1271,1273,1275,1277,1279,1281,1283],{"class":542,"line":489},[540,1268,546],{"class":545},[540,1270,550],{"class":549},[540,1272,554],{"class":553},[540,1274,557],{"class":553},[540,1276,560],{"class":545},[540,1278,563],{"class":545},[540,1280,567],{"class":566},[540,1282,563],{"class":545},[540,1284,572],{"class":545},[540,1286,1288,1290,1292,1295,1297,1300,1302,1304,1306,1308,1310,1312],{"class":1287,"line":490},[542,576],[540,1289,580],{"class":579},[540,1291,583],{"class":545},[540,1293,1294],{"class":586}," Billboard",[540,1296,590],{"class":545},[540,1298,1299],{"class":586}," Box",[540,1301,590],{"class":545},[540,1303,593],{"class":586},[540,1305,596],{"class":545},[540,1307,599],{"class":579},[540,1309,602],{"class":545},[540,1311,605],{"class":566},[540,1313,608],{"class":545},[540,1315,1316,1318,1320,1322,1324,1326,1328,1330],{"class":542,"line":611},[540,1317,580],{"class":579},[540,1319,583],{"class":545},[540,1321,618],{"class":586},[540,1323,596],{"class":545},[540,1325,599],{"class":579},[540,1327,602],{"class":545},[540,1329,627],{"class":566},[540,1331,608],{"class":545},[540,1333,1334,1336,1338],{"class":542,"line":632},[540,1335,635],{"class":545},[540,1337,550],{"class":549},[540,1339,572],{"class":545},[540,1341,1342],{"class":542,"line":642},[540,1343,645],{"emptyLinePlaceholder":496},[540,1345,1346,1348,1350],{"class":542,"line":648},[540,1347,546],{"class":545},[540,1349,653],{"class":549},[540,1351,572],{"class":545},[540,1353,1354,1356,1358,1360,1362,1364,1367,1369],{"class":542,"line":658},[540,1355,661],{"class":545},[540,1357,664],{"class":549},[540,1359,667],{"class":553},[540,1361,560],{"class":545},[540,1363,563],{"class":545},[540,1365,1366],{"class":566},"#333333",[540,1368,563],{"class":545},[540,1370,572],{"class":545},[540,1372,1373,1375,1377],{"class":542,"line":681},[540,1374,684],{"class":545},[540,1376,698],{"class":549},[540,1378,690],{"class":545},[540,1380,1381,1383,1385,1388,1390,1392,1395,1397],{"class":542,"line":693},[540,1382,684],{"class":545},[540,1384,687],{"class":549},[540,1386,1387],{"class":553}," :position",[540,1389,560],{"class":545},[540,1391,563],{"class":545},[540,1393,1394],{"class":566},"[0, 0, 10]",[540,1396,563],{"class":545},[540,1398,690],{"class":545},[540,1400,1402,1404,1406],{"class":1401,"line":703},[542,576],[540,1403,684],{"class":545},[540,1405,41],{"class":549},[540,1407,572],{"class":545},[540,1409,1410,1412,1414,1416,1418,1420,1423,1425],{"class":542,"line":708},[540,1411,756],{"class":545},[540,1413,201],{"class":549},[540,1415,716],{"class":553},[540,1417,560],{"class":545},[540,1419,563],{"class":545},[540,1421,1422],{"class":566},"[0.5, 0.5, 0.001]",[540,1424,563],{"class":545},[540,1426,572],{"class":545},[540,1428,1429,1431,1433],{"class":542,"line":730},[540,1430,767],{"class":545},[540,1432,780],{"class":549},[540,1434,690],{"class":545},[540,1436,1437,1439,1441],{"class":542,"line":534},[540,1438,788],{"class":545},[540,1440,201],{"class":549},[540,1442,572],{"class":545},[540,1444,1446,1448,1450],{"class":1445,"line":753},[542,576],[540,1447,798],{"class":545},[540,1449,41],{"class":549},[540,1451,572],{"class":545},[540,1453,1454,1456,1458],{"class":542,"line":764},[540,1455,808],{"class":545},[540,1457,664],{"class":549},[540,1459,572],{"class":545},[540,1461,1462,1464,1466],{"class":542,"line":775},[540,1463,635],{"class":545},[540,1465,653],{"class":549},[540,1467,572],{"class":545},[525,1469,825],{"id":824},[830,1471,1472,1482],{},[833,1473,1474],{},[836,1475,1476,1478,1480],{},[839,1477,841],{"align":900},[839,1479,844],{"align":900},[839,1481,847],{},[849,1483,1484,1502,1516,1530],{},[836,1485,1486,1491,1498],{},[854,1487,1488],{"align":900},[520,1489,1490],{},"autoUpdate",[854,1492,1493,1494,1497],{"align":900},"Whether the ",[520,1495,1496],{},"\u003CBillboard />"," should face the camera automatically on every frame.",[854,1499,1500],{},[520,1501,864],{},[836,1503,1504,1509,1512],{},[854,1505,1506],{"align":900},[520,1507,1508],{},"lockX",[854,1510,1511],{"align":900},"Whether to lock the x-axis.",[854,1513,1514],{},[520,1515,874],{},[836,1517,1518,1523,1526],{},[854,1519,1520],{"align":900},[520,1521,1522],{},"lockY",[854,1524,1525],{"align":900},"Whether to lock the y-axis.",[854,1527,1528],{},[520,1529,874],{},[836,1531,1532,1537,1540],{},[854,1533,1534],{"align":900},[520,1535,1536],{},"lockZ",[854,1538,1539],{"align":900},"Whether to lock the z-axis.",[854,1541,1542],{},[520,1543,874],{},[1230,1545,1546],{},"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":488,"searchDepth":489,"depth":490,"links":1548},[1549,1550],{"id":527,"depth":490,"text":15},{"id":824,"depth":490,"text":825},"Make objects always face the camera automatically.",{},{"title":41,"description":1551},"wCDOC5MhR7Q22tA0BbCcbJXpmTRTkGj75EHC3nFIzjA",{"id":1556,"title":45,"body":1557,"description":2100,"extension":493,"links":494,"meta":2101,"navigation":496,"path":46,"seo":2102,"stem":47,"__hash__":2103},"docs/2.api/1.abstractions/camera-shake.md",{"type":481,"value":1558,"toc":2096},[1559,1564,1618,1620,1906,1945,1947,2094],[510,1560,1561],{},[1562,1563],"abstractions-camera-shake",{},[516,1565,1566,1569,1570,1574,1575,1579,1580,1583,1584,1574,1587,1590,1591,1594,1595,1574,1598,1574,1601,1604,1605,1608,1609,1049],{},[520,1567,1568],{},"\u003CCameraShake />"," is a component that adds ",[1571,1572,1573],"strong",{},"natural",", ",[1576,1577,1578],"em",{},"noise-driven motion"," to the ",[1571,1581,1582],{},"active camera",".\nIt offers ",[1571,1585,1586],{},"per-axis control",[1571,1588,1589],{},"adjustable intensity",", and ",[1576,1592,1593],{},"optional decay"," — perfect for ",[1576,1596,1597],{},"handheld feel",[1576,1599,1600],{},"footsteps",[1576,1602,1603],{},"impacts",", or ",[1576,1606,1607],{},"engine rumble"," — and is based on the ",[1043,1610,1613,1614,1617],{"href":1611,"rel":1612},"https://drei.docs.pmnd.rs/staging/camera-shake#camerashake",[1047],"Drei ",[520,1615,1616],{},"CameraShake"," component",[525,1619,15],{"id":527},[529,1621,1624],{"className":531,"code":1622,"highlights":1623,"language":536,"meta":488,"style":488},"\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",[490,708,775],[520,1625,1626,1646,1670,1688,1696,1700,1708,1726,1745,1756,1760,1815,1833,1853,1873,1881,1890,1898],{"__ignoreMap":488},[540,1627,1628,1630,1632,1634,1636,1638,1640,1642,1644],{"class":542,"line":489},[540,1629,546],{"class":545},[540,1631,550],{"class":549},[540,1633,554],{"class":553},[540,1635,557],{"class":553},[540,1637,560],{"class":545},[540,1639,563],{"class":545},[540,1641,567],{"class":566},[540,1643,563],{"class":545},[540,1645,572],{"class":545},[540,1647,1649,1651,1653,1656,1658,1660,1662,1664,1666,1668],{"class":1648,"line":490},[542,576],[540,1650,580],{"class":579},[540,1652,583],{"class":545},[540,1654,1655],{"class":586}," CameraShake",[540,1657,590],{"class":545},[540,1659,593],{"class":586},[540,1661,596],{"class":545},[540,1663,599],{"class":579},[540,1665,602],{"class":545},[540,1667,605],{"class":566},[540,1669,608],{"class":545},[540,1671,1672,1674,1676,1678,1680,1682,1684,1686],{"class":542,"line":611},[540,1673,580],{"class":579},[540,1675,583],{"class":545},[540,1677,618],{"class":586},[540,1679,596],{"class":545},[540,1681,599],{"class":579},[540,1683,602],{"class":545},[540,1685,627],{"class":566},[540,1687,608],{"class":545},[540,1689,1690,1692,1694],{"class":542,"line":632},[540,1691,635],{"class":545},[540,1693,550],{"class":549},[540,1695,572],{"class":545},[540,1697,1698],{"class":542,"line":642},[540,1699,645],{"emptyLinePlaceholder":496},[540,1701,1702,1704,1706],{"class":542,"line":648},[540,1703,546],{"class":545},[540,1705,653],{"class":549},[540,1707,572],{"class":545},[540,1709,1710,1712,1714,1716,1718,1720,1722,1724],{"class":542,"line":658},[540,1711,661],{"class":545},[540,1713,664],{"class":549},[540,1715,667],{"class":553},[540,1717,560],{"class":545},[540,1719,563],{"class":545},[540,1721,674],{"class":566},[540,1723,563],{"class":545},[540,1725,572],{"class":545},[540,1727,1728,1730,1732,1734,1736,1738,1741,1743],{"class":542,"line":681},[540,1729,684],{"class":545},[540,1731,687],{"class":549},[540,1733,1387],{"class":553},[540,1735,560],{"class":545},[540,1737,563],{"class":545},[540,1739,1740],{"class":566},"[0, 2, 6]",[540,1742,563],{"class":545},[540,1744,690],{"class":545},[540,1746,1747,1749,1751,1754],{"class":542,"line":693},[540,1748,684],{"class":545},[540,1750,698],{"class":549},[540,1752,1753],{"class":553}," make-default",[540,1755,690],{"class":545},[540,1757,1758],{"class":542,"line":703},[540,1759,645],{"emptyLinePlaceholder":496},[540,1761,1763,1765,1767,1770,1772,1774,1777,1779,1782,1784,1786,1789,1791,1794,1796,1798,1800,1802,1805,1807,1809,1811,1813],{"class":1762,"line":708},[542,576],[540,1764,684],{"class":545},[540,1766,1616],{"class":549},[540,1768,1769],{"class":553}," :intensity",[540,1771,560],{"class":545},[540,1773,563],{"class":545},[540,1775,1776],{"class":566},"1",[540,1778,563],{"class":545},[540,1780,1781],{"class":553}," :max-yaw",[540,1783,560],{"class":545},[540,1785,563],{"class":545},[540,1787,1788],{"class":566},"0.01",[540,1790,563],{"class":545},[540,1792,1793],{"class":553}," :max-pitch",[540,1795,560],{"class":545},[540,1797,563],{"class":545},[540,1799,1788],{"class":566},[540,1801,563],{"class":545},[540,1803,1804],{"class":553}," :max-roll",[540,1806,560],{"class":545},[540,1808,563],{"class":545},[540,1810,1788],{"class":566},[540,1812,563],{"class":545},[540,1814,690],{"class":545},[540,1816,1817,1819,1821,1823,1825,1827,1829,1831],{"class":542,"line":730},[540,1818,756],{"class":545},[540,1820,713],{"class":549},[540,1822,716],{"class":553},[540,1824,560],{"class":545},[540,1826,563],{"class":545},[540,1828,723],{"class":566},[540,1830,563],{"class":545},[540,1832,690],{"class":545},[540,1834,1835,1837,1839,1842,1844,1846,1849,1851],{"class":542,"line":534},[540,1836,756],{"class":545},[540,1838,759],{"class":549},[540,1840,1841],{"class":553}," :position-y",[540,1843,560],{"class":545},[540,1845,563],{"class":545},[540,1847,1848],{"class":566},"0.5",[540,1850,563],{"class":545},[540,1852,572],{"class":545},[540,1854,1855,1857,1859,1862,1864,1866,1869,1871],{"class":542,"line":753},[540,1856,767],{"class":545},[540,1858,770],{"class":549},[540,1860,1861],{"class":553}," :args",[540,1863,560],{"class":545},[540,1865,563],{"class":545},[540,1867,1868],{"class":566},"[1, 1, 1]",[540,1870,563],{"class":545},[540,1872,690],{"class":545},[540,1874,1875,1877,1879],{"class":542,"line":764},[540,1876,767],{"class":545},[540,1878,780],{"class":549},[540,1880,690],{"class":545},[540,1882,1884,1886,1888],{"class":1883,"line":775},[542,576],[540,1885,788],{"class":545},[540,1887,759],{"class":549},[540,1889,572],{"class":545},[540,1891,1892,1894,1896],{"class":542,"line":785},[540,1893,808],{"class":545},[540,1895,664],{"class":549},[540,1897,572],{"class":545},[540,1899,1900,1902,1904],{"class":542,"line":535},[540,1901,635],{"class":545},[540,1903,653],{"class":549},[540,1905,572],{"class":545},[1907,1908,1909,1930],"prose-note",{},[516,1910,1911,1913,1914,1919,1920,1923,1924,1929],{},[520,1912,1568],{}," is fully compatible with ",[1571,1915,1916],{},[520,1917,1918],{},"\u003COrbitControls />",".\nTo ensure it works ",[1576,1921,1922],{},"as expected",", make sure to add the ",[1571,1925,1926],{},[520,1927,1928],{},"make-default"," prop:",[529,1931,1933],{"className":531,"code":1932,"language":536,"meta":488,"style":488},"\u003COrbitControls make-default />\n",[520,1934,1935],{"__ignoreMap":488},[540,1936,1937,1939,1941,1943],{"class":542,"line":489},[540,1938,546],{"class":545},[540,1940,698],{"class":549},[540,1942,1753],{"class":553},[540,1944,690],{"class":545},[525,1946,825],{"id":824},[830,1948,1949,1959],{},[833,1950,1951],{},[836,1952,1953,1955,1957],{},[839,1954,841],{},[839,1956,844],{},[839,1958,847],{},[849,1960,1961,1975,1991,2009,2023,2037,2051,2066,2080],{},[836,1962,1963,1968,1971],{},[854,1964,1965],{},[520,1966,1967],{},"intensity",[854,1969,1970],{},"The intensity of the shake (0–1).",[854,1972,1973],{},[520,1974,1776],{},[836,1976,1977,1982,1987],{},[854,1978,1979],{},[520,1980,1981],{},"decay",[854,1983,861,1984,1986],{},[520,1985,864],{},", intensity decays over time.",[854,1988,1989],{},[520,1990,874],{},[836,1992,1993,1998,2004],{},[854,1994,1995],{},[520,1996,1997],{},"decayRate",[854,1999,2000,2001,2003],{},"How fast intensity changes when ",[520,2002,1981],{}," is enabled.",[854,2005,2006],{},[520,2007,2008],{},"0.65",[836,2010,2011,2016,2019],{},[854,2012,2013],{},[520,2014,2015],{},"maxYaw",[854,2017,2018],{},"Maximum yaw angle in radians.",[854,2020,2021],{},[520,2022,1788],{},[836,2024,2025,2030,2033],{},[854,2026,2027],{},[520,2028,2029],{},"maxPitch",[854,2031,2032],{},"Maximum pitch angle in radians.",[854,2034,2035],{},[520,2036,1788],{},[836,2038,2039,2044,2047],{},[854,2040,2041],{},[520,2042,2043],{},"maxRoll",[854,2045,2046],{},"Maximum roll angle in radians.",[854,2048,2049],{},[520,2050,1788],{},[836,2052,2053,2058,2061],{},[854,2054,2055],{},[520,2056,2057],{},"yawFrequency",[854,2059,2060],{},"Frequency of yaw oscillation.",[854,2062,2063],{},[520,2064,2065],{},"0.1",[836,2067,2068,2073,2076],{},[854,2069,2070],{},[520,2071,2072],{},"pitchFrequency",[854,2074,2075],{},"Frequency of pitch oscillation.",[854,2077,2078],{},[520,2079,2065],{},[836,2081,2082,2087,2090],{},[854,2083,2084],{},[520,2085,2086],{},"rollFrequency",[854,2088,2089],{},"Frequency of roll oscillation.",[854,2091,2092],{},[520,2093,2065],{},[1230,2095,1546],{},{"title":488,"searchDepth":489,"depth":490,"links":2097},[2098,2099],{"id":527,"depth":490,"text":15},{"id":824,"depth":490,"text":825},"Apply smooth camera shake to the active camera.",{},{"title":45,"description":2100},"_LkwoWvv_PX4M3TXVjPQu0NxYXzfoa26E2WQGUlWZPY",{"id":2105,"title":49,"body":2106,"description":7202,"extension":493,"links":494,"meta":7203,"navigation":496,"path":50,"seo":7204,"stem":51,"__hash__":7205},"docs/2.api/1.abstractions/decal.md",{"type":481,"value":2107,"toc":7167},[2108,2114,2196,2202,2204,2219,2674,2690,2694,2705,2868,2885,2888,2902,2957,2982,2986,2999,3004,3070,3077,3083,3100,3188,3193,3207,3282,3952,3957,3997,4010,4073,4076,4086,4172,4179,4199,4209,4212,4409,4421,4429,4444,4762,4766,4790,5153,5168,5188,5192,5208,5445,5451,5647,5653,5788,5797,5804,5860,5961,5966,6112,6117,6158,6162,6218,6222,6293,6297,6375,6382,6397,6438,6487,7164],[516,2109,2110,2113],{},[520,2111,2112],{},"\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.",[2115,2116,2117,2129,2142,2156,2163,2174,2186],"ul",{},[2118,2119,2120,2121,2124,2125,2128],"li",{},"🎨 Drop-in ",[1571,2122,2123],{},"editor UI"," via ",[520,2126,2127],{},"\u003CDecalDebugUI>"," — placement, rotate / scale / snap, tint, flip, layers, undo / redo, import / export.",[2118,2130,2131,2132,2124,2135,2141],{},"🛠 ",[1571,2133,2134],{},"Programmatic API",[1043,2136,2138],{"href":2137},"#programmatic-api-usedecaleditor",[520,2139,2140],{},"useDecalEditor()"," for custom panels and automation.",[2118,2143,2144,2145,2148,2149,2152,2153,1049],{},"🖼️ ",[1571,2146,2147],{},"Texture palette"," — pass an array of ",[520,2150,2151],{},"Texture"," to ",[520,2154,2155],{},":map",[2118,2157,2158,2159,2162],{},"🧩 ",[1571,2160,2161],{},"Custom material"," — override the default via the slot.",[2118,2164,2165,2166,2169,2170,2173],{},"💾 ",[1571,2167,2168],{},"Lossless JSON"," — ",[520,2171,2172],{},"v-model:data"," round-trips to plain JSON.",[2118,2175,2176,2177,2180,2181,2185],{},"⚡ ",[1571,2178,2179],{},"BVH-accelerated"," — auto-detected via ",[1043,2182,2183],{"href":312},[520,2184,311],{},"; 10–100× faster on dense meshes.",[2118,2187,2188,2189,2169,2192,2195],{},"📚 ",[1571,2190,2191],{},"Per-mesh stacking",[520,2193,2194],{},"zIndex"," with automatic polygon-offset.",[2197,2198,2199],"scene-wrapper",{},[2200,2201],"abstractions-decal",{},[525,2203,15],{"id":527},[516,2205,2206,2207,2209,2210,2213,2214,2216,2217,1049],{},"The minimal setup is a ",[520,2208,2112],{}," placed as a child of any ",[520,2211,2212],{},"\u003CTresMesh>",",\nwith a JSON list of stamped decals bound via ",[520,2215,2172],{}," and one or\nmore textures via ",[520,2218,2155],{},[529,2220,2222],{"className":531,"code":2221,"language":536,"meta":488,"style":488},"\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",[520,2223,2224,2244,2272,2290,2309,2313,2351,2355,2369,2374,2391,2419,2442,2468,2479,2495,2500,2505,2513,2517,2525,2534,2554,2563,2572,2581,2603,2647,2656,2665],{"__ignoreMap":488},[540,2225,2226,2228,2230,2232,2234,2236,2238,2240,2242],{"class":542,"line":489},[540,2227,546],{"class":545},[540,2229,550],{"class":549},[540,2231,554],{"class":553},[540,2233,557],{"class":553},[540,2235,560],{"class":545},[540,2237,563],{"class":545},[540,2239,567],{"class":566},[540,2241,563],{"class":545},[540,2243,572],{"class":545},[540,2245,2246,2248,2250,2253,2255,2257,2259,2262,2264,2266,2268,2270],{"class":542,"line":490},[540,2247,580],{"class":579},[540,2249,583],{"class":545},[540,2251,2252],{"class":586}," Decal",[540,2254,590],{"class":545},[540,2256,593],{"class":586},[540,2258,590],{"class":545},[540,2260,2261],{"class":586}," useTexture",[540,2263,596],{"class":545},[540,2265,599],{"class":579},[540,2267,602],{"class":545},[540,2269,605],{"class":566},[540,2271,608],{"class":545},[540,2273,2274,2276,2278,2280,2282,2284,2286,2288],{"class":542,"line":611},[540,2275,580],{"class":579},[540,2277,583],{"class":545},[540,2279,618],{"class":586},[540,2281,596],{"class":545},[540,2283,599],{"class":579},[540,2285,602],{"class":545},[540,2287,627],{"class":566},[540,2289,608],{"class":545},[540,2291,2292,2294,2296,2299,2301,2303,2305,2307],{"class":542,"line":632},[540,2293,580],{"class":579},[540,2295,583],{"class":545},[540,2297,2298],{"class":586}," reactive",[540,2300,596],{"class":545},[540,2302,599],{"class":579},[540,2304,602],{"class":545},[540,2306,536],{"class":566},[540,2308,608],{"class":545},[540,2310,2311],{"class":542,"line":642},[540,2312,645],{"emptyLinePlaceholder":496},[540,2314,2315,2318,2320,2323,2325,2328,2331,2334,2337,2340,2343,2346,2348],{"class":542,"line":648},[540,2316,2317],{"class":553},"const",[540,2319,583],{"class":545},[540,2321,2322],{"class":549}," state",[540,2324,1121],{"class":545},[540,2326,2327],{"class":586}," texture ",[540,2329,2330],{"class":545},"}",[540,2332,2333],{"class":545}," =",[540,2335,2261],{"class":2336},"s2Zo4",[540,2338,2339],{"class":586},"(",[540,2341,2342],{"class":545},"'",[540,2344,2345],{"class":566},"/textures/logo.png",[540,2347,2342],{"class":545},[540,2349,2350],{"class":586},")\n",[540,2352,2353],{"class":542,"line":658},[540,2354,645],{"emptyLinePlaceholder":496},[540,2356,2357,2359,2362,2364,2366],{"class":542,"line":681},[540,2358,2317],{"class":553},[540,2360,2361],{"class":586}," decals ",[540,2363,560],{"class":545},[540,2365,2298],{"class":2336},[540,2367,2368],{"class":586},"([\n",[540,2370,2371],{"class":542,"line":693},[540,2372,2373],{"class":545},"  {\n",[540,2375,2376,2379,2381,2383,2386,2388],{"class":542,"line":703},[540,2377,2378],{"class":549},"    id",[540,2380,1121],{"class":545},[540,2382,602],{"class":545},[540,2384,2385],{"class":566},"logo-1",[540,2387,2342],{"class":545},[540,2389,2390],{"class":545},",\n",[540,2392,2393,2396,2398,2401,2404,2406,2409,2411,2414,2417],{"class":542,"line":708},[540,2394,2395],{"class":549},"    position",[540,2397,1121],{"class":545},[540,2399,2400],{"class":586}," [",[540,2402,868],{"class":2403},"sbssI",[540,2405,590],{"class":545},[540,2407,2408],{"class":2403}," 0",[540,2410,590],{"class":545},[540,2412,2413],{"class":2403}," 0.5",[540,2415,2416],{"class":586},"]",[540,2418,2390],{"class":545},[540,2420,2421,2424,2426,2428,2430,2432,2434,2436,2438,2440],{"class":542,"line":730},[540,2422,2423],{"class":549},"    orientation",[540,2425,1121],{"class":545},[540,2427,2400],{"class":586},[540,2429,868],{"class":2403},[540,2431,590],{"class":545},[540,2433,2408],{"class":2403},[540,2435,590],{"class":545},[540,2437,2408],{"class":2403},[540,2439,2416],{"class":586},[540,2441,2390],{"class":545},[540,2443,2444,2447,2449,2451,2454,2456,2459,2461,2464,2466],{"class":542,"line":534},[540,2445,2446],{"class":549},"    size",[540,2448,1121],{"class":545},[540,2450,2400],{"class":586},[540,2452,2453],{"class":2403},"0.75",[540,2455,590],{"class":545},[540,2457,2458],{"class":2403}," 0.17",[540,2460,590],{"class":545},[540,2462,2463],{"class":2403}," 1",[540,2465,2416],{"class":586},[540,2467,2390],{"class":545},[540,2469,2470,2473,2475,2477],{"class":542,"line":753},[540,2471,2472],{"class":549},"    zIndex",[540,2474,1121],{"class":545},[540,2476,2408],{"class":2403},[540,2478,2390],{"class":545},[540,2480,2481,2484,2486,2488,2491,2493],{"class":542,"line":764},[540,2482,2483],{"class":549},"    map",[540,2485,1121],{"class":545},[540,2487,602],{"class":545},[540,2489,2490],{"class":566},"logo.png",[540,2492,2342],{"class":545},[540,2494,2390],{"class":545},[540,2496,2497],{"class":542,"line":775},[540,2498,2499],{"class":545},"  },\n",[540,2501,2502],{"class":542,"line":785},[540,2503,2504],{"class":586},"])\n",[540,2506,2507,2509,2511],{"class":542,"line":535},[540,2508,635],{"class":545},[540,2510,550],{"class":549},[540,2512,572],{"class":545},[540,2514,2515],{"class":542,"line":805},[540,2516,645],{"emptyLinePlaceholder":496},[540,2518,2519,2521,2523],{"class":542,"line":815},[540,2520,546],{"class":545},[540,2522,653],{"class":549},[540,2524,572],{"class":545},[540,2526,2528,2530,2532],{"class":542,"line":2527},21,[540,2529,661],{"class":545},[540,2531,664],{"class":549},[540,2533,572],{"class":545},[540,2535,2537,2539,2541,2543,2545,2547,2550,2552],{"class":542,"line":2536},22,[540,2538,684],{"class":545},[540,2540,687],{"class":549},[540,2542,1387],{"class":553},[540,2544,560],{"class":545},[540,2546,563],{"class":545},[540,2548,2549],{"class":566},"[2, 2, 3]",[540,2551,563],{"class":545},[540,2553,690],{"class":545},[540,2555,2557,2559,2561],{"class":542,"line":2556},23,[540,2558,684],{"class":545},[540,2560,698],{"class":549},[540,2562,690],{"class":545},[540,2564,2566,2568,2570],{"class":542,"line":2565},24,[540,2567,684],{"class":545},[540,2569,759],{"class":549},[540,2571,572],{"class":545},[540,2573,2575,2577,2579],{"class":542,"line":2574},25,[540,2576,756],{"class":545},[540,2578,770],{"class":549},[540,2580,690],{"class":545},[540,2582,2584,2586,2589,2592,2594,2596,2599,2601],{"class":542,"line":2583},26,[540,2585,756],{"class":545},[540,2587,2588],{"class":549},"TresMeshStandardMaterial",[540,2590,2591],{"class":553}," color",[540,2593,560],{"class":545},[540,2595,563],{"class":545},[540,2597,2598],{"class":566},"white",[540,2600,563],{"class":545},[540,2602,690],{"class":545},[540,2604,2606,2608,2610,2613,2615,2617,2620,2622,2625,2627,2629,2632,2634,2637,2639,2641,2643,2645],{"class":542,"line":2605},27,[540,2607,756],{"class":545},[540,2609,49],{"class":549},[540,2611,2612],{"class":553}," v-if",[540,2614,560],{"class":545},[540,2616,563],{"class":545},[540,2618,2619],{"class":566},"texture",[540,2621,563],{"class":545},[540,2623,2624],{"class":553}," v-model:data",[540,2626,560],{"class":545},[540,2628,563],{"class":545},[540,2630,2631],{"class":566},"decals",[540,2633,563],{"class":545},[540,2635,2636],{"class":553}," :map",[540,2638,560],{"class":545},[540,2640,563],{"class":545},[540,2642,2619],{"class":566},[540,2644,563],{"class":545},[540,2646,690],{"class":545},[540,2648,2650,2652,2654],{"class":542,"line":2649},28,[540,2651,798],{"class":545},[540,2653,759],{"class":549},[540,2655,572],{"class":545},[540,2657,2659,2661,2663],{"class":542,"line":2658},29,[540,2660,808],{"class":545},[540,2662,664],{"class":549},[540,2664,572],{"class":545},[540,2666,2668,2670,2672],{"class":542,"line":2667},30,[540,2669,635],{"class":545},[540,2671,653],{"class":549},[540,2673,572],{"class":545},[1907,2675,2676],{},[516,2677,2678,2679,2681,2682,2685,2686,2689],{},"The ",[520,2680,2172],{}," array is the ",[1571,2683,2684],{},"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 ",[520,2687,2688],{},".json"," file.",[525,2691,2693],{"id":2692},"multiple-textures-palette","Multiple textures (palette)",[516,2695,2696,2697,2699,2700,2704],{},"Pass an array to ",[520,2698,2155],{}," to give users a palette of textures to pick\nfrom. The array returned by ",[1043,2701,2702],{"href":142},[520,2703,141],{},"\nplugs in directly:",[529,2706,2708],{"className":531,"code":2707,"language":536,"meta":488,"style":488},"\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",[520,2709,2710,2730,2753,2757,2774,2785,2796,2807,2811,2819,2823,2831,2860],{"__ignoreMap":488},[540,2711,2712,2714,2716,2718,2720,2722,2724,2726,2728],{"class":542,"line":489},[540,2713,546],{"class":545},[540,2715,550],{"class":549},[540,2717,554],{"class":553},[540,2719,557],{"class":553},[540,2721,560],{"class":545},[540,2723,563],{"class":545},[540,2725,567],{"class":566},[540,2727,563],{"class":545},[540,2729,572],{"class":545},[540,2731,2732,2734,2736,2738,2740,2743,2745,2747,2749,2751],{"class":542,"line":490},[540,2733,580],{"class":579},[540,2735,583],{"class":545},[540,2737,2252],{"class":586},[540,2739,590],{"class":545},[540,2741,2742],{"class":586}," useTextures",[540,2744,596],{"class":545},[540,2746,599],{"class":579},[540,2748,602],{"class":545},[540,2750,605],{"class":566},[540,2752,608],{"class":545},[540,2754,2755],{"class":542,"line":611},[540,2756,645],{"emptyLinePlaceholder":496},[540,2758,2759,2761,2763,2766,2768,2770,2772],{"class":542,"line":632},[540,2760,2317],{"class":553},[540,2762,583],{"class":545},[540,2764,2765],{"class":586}," textures ",[540,2767,2330],{"class":545},[540,2769,2333],{"class":545},[540,2771,2742],{"class":2336},[540,2773,2368],{"class":586},[540,2775,2776,2779,2781,2783],{"class":542,"line":642},[540,2777,2778],{"class":545},"  '",[540,2780,2345],{"class":566},[540,2782,2342],{"class":545},[540,2784,2390],{"class":545},[540,2786,2787,2789,2792,2794],{"class":542,"line":648},[540,2788,2778],{"class":545},[540,2790,2791],{"class":566},"/textures/badge.png",[540,2793,2342],{"class":545},[540,2795,2390],{"class":545},[540,2797,2798,2800,2803,2805],{"class":542,"line":658},[540,2799,2778],{"class":545},[540,2801,2802],{"class":566},"/textures/sticker.png",[540,2804,2342],{"class":545},[540,2806,2390],{"class":545},[540,2808,2809],{"class":542,"line":681},[540,2810,2504],{"class":586},[540,2812,2813,2815,2817],{"class":542,"line":693},[540,2814,635],{"class":545},[540,2816,550],{"class":549},[540,2818,572],{"class":545},[540,2820,2821],{"class":542,"line":703},[540,2822,645],{"emptyLinePlaceholder":496},[540,2824,2825,2827,2829],{"class":542,"line":708},[540,2826,546],{"class":545},[540,2828,653],{"class":549},[540,2830,572],{"class":545},[540,2832,2833,2835,2837,2839,2841,2843,2845,2847,2849,2851,2853,2856,2858],{"class":542,"line":730},[540,2834,661],{"class":545},[540,2836,49],{"class":549},[540,2838,2624],{"class":553},[540,2840,560],{"class":545},[540,2842,563],{"class":545},[540,2844,2631],{"class":566},[540,2846,563],{"class":545},[540,2848,2636],{"class":553},[540,2850,560],{"class":545},[540,2852,563],{"class":545},[540,2854,2855],{"class":566},"textures",[540,2857,563],{"class":545},[540,2859,690],{"class":545},[540,2861,2862,2864,2866],{"class":542,"line":534},[540,2863,635],{"class":545},[540,2865,653],{"class":549},[540,2867,572],{"class":545},[516,2869,2870,2871,2169,2874,2876,2877,2880,2881,2884],{},"Each entry references its texture by ",[520,2872,2873],{},"name",[520,2875,2112],{}," auto-fills\n",[520,2878,2879],{},"texture.name"," from the URL filename when missing, so JSON ",[520,2882,2883],{},"map","\nfields round-trip cleanly.",[525,2886,2161],{"id":2887},"custom-material",[516,2889,2890,2891,2894,2895,2390,2898,2901],{},"The default material is ",[520,2892,2893],{},"MeshBasicMaterial",". Override it via the slot\nto plug in any Three.js material — ",[520,2896,2897],{},"MeshStandardMaterial",[520,2899,2900],{},"MeshPhysicalMaterial",", or a custom shader.",[529,2903,2905],{"className":531,"code":2904,"language":536,"meta":488,"style":488},"\u003CDecal v-model:data=\"decals\" :map=\"texture\">\n  \u003CTresMeshStandardMaterial :transparent=\"true\" :polygon-offset=\"true\" />\n\u003C/Decal>\n",[520,2906,2907,2944,2949],{"__ignoreMap":488},[540,2908,2909,2911,2913,2916,2918,2921,2923,2925,2927,2929,2932,2934,2936,2938,2940,2942],{"class":542,"line":489},[540,2910,546],{"class":545},[540,2912,49],{"class":549},[540,2914,2915],{"class":553}," v-model",[540,2917,1121],{"class":545},[540,2919,2920],{"class":553},"data",[540,2922,560],{"class":545},[540,2924,563],{"class":545},[540,2926,2631],{"class":586},[540,2928,563],{"class":545},[540,2930,2931],{"class":545}," :",[540,2933,2883],{"class":553},[540,2935,560],{"class":545},[540,2937,563],{"class":545},[540,2939,2619],{"class":586},[540,2941,563],{"class":545},[540,2943,572],{"class":545},[540,2945,2946],{"class":542,"line":490},[540,2947,2948],{"class":586},"  \u003CTresMeshStandardMaterial :transparent=\"true\" :polygon-offset=\"true\" />\n",[540,2950,2951,2953,2955],{"class":542,"line":611},[540,2952,635],{"class":545},[540,2954,49],{"class":549},[540,2956,572],{"class":545},[1907,2958,2959],{},[516,2960,2961,2962,2965,2966,2969,2970,2965,2973,2976,2977,2390,2979,2981],{},"Keep ",[520,2963,2964],{},"transparent: true"," and ",[520,2967,2968],{},"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 ",[520,2971,2972],{},".color",[520,2974,2975],{},".opacity"," (",[520,2978,2893],{},[520,2980,2897],{},", …) — bespoke shader materials are skipped\nsilently.",[525,2983,2985],{"id":2984},"stacking-decals-z-layering","Stacking decals (z-layering)",[516,2987,2988,2989,2991,2992,2995,2996,1049],{},"Each decal has a ",[520,2990,2194],{}," controlling its draw order on the parent\nmesh. Higher = on top. The component handles z-fighting via\n",[520,2993,2994],{},"polygonOffset"," automatically — but if you stack many decals near\nparallel surfaces and still see flicker, raise ",[520,2997,2998],{},"layerGap",[2197,3000,3001],{},[3002,3003],"abstractions-decal-stacking",{},[529,3005,3007],{"className":531,"code":3006,"language":536,"meta":488,"style":488},"\u003CDecal\n  v-model:data=\"decals\"\n  :map=\"textures\"\n  :layer-gap=\"0.002\"\n/>\n",[520,3008,3009,3016,3034,3049,3065],{"__ignoreMap":488},[540,3010,3011,3013],{"class":542,"line":489},[540,3012,546],{"class":545},[540,3014,3015],{"class":549},"Decal\n",[540,3017,3018,3021,3023,3025,3027,3029,3031],{"class":542,"line":490},[540,3019,3020],{"class":553},"  v-model",[540,3022,1121],{"class":545},[540,3024,2920],{"class":553},[540,3026,560],{"class":545},[540,3028,563],{"class":545},[540,3030,2631],{"class":586},[540,3032,3033],{"class":545},"\"\n",[540,3035,3036,3039,3041,3043,3045,3047],{"class":542,"line":611},[540,3037,3038],{"class":545},"  :",[540,3040,2883],{"class":553},[540,3042,560],{"class":545},[540,3044,563],{"class":545},[540,3046,2855],{"class":586},[540,3048,3033],{"class":545},[540,3050,3051,3053,3056,3058,3060,3063],{"class":542,"line":632},[540,3052,3038],{"class":545},[540,3054,3055],{"class":553},"layer-gap",[540,3057,560],{"class":545},[540,3059,563],{"class":545},[540,3061,3062],{"class":2403},"0.002",[540,3064,3033],{"class":545},[540,3066,3067],{"class":542,"line":642},[540,3068,3069],{"class":586},"/>\n",[516,3071,3072,3073,3076],{},"zIndex stacks are ",[1571,3074,3075],{},"per-mesh"," — two decals on different meshes never\ncompete for the same layer slot.",[525,3078,3080,3081],{"id":3079},"editable-mode-decaldebugui","Editable mode + ",[520,3082,2127],{},[516,3084,3085,3086,3089,3090,3092,3093,3096,3097,1049],{},"Add the ",[520,3087,3088],{},"editable"," prop to mount the interactive editor, then pair it\nwith ",[520,3091,2127],{}," — a full in-canvas editor that ships as a drop-in\nHTML overlay sitting ",[1571,3094,3095],{},"outside"," ",[520,3098,3099],{},"\u003CTresCanvas>",[3101,3102,3103,3117,3138],"prose-warning",{},[516,3104,3105,3107,3108,3111,3112,3114,3115,1049],{},[520,3106,2127],{}," needs its stylesheet — import it ",[1571,3109,3110],{},"once"," at your app\nentry. ",[520,3113,2112],{}," itself is style-less, so this is only needed when you\nmount ",[520,3116,2127],{},[529,3118,3120],{"className":1089,"code":3119,"language":567,"meta":488,"style":488},"// Vite / Vue — in main.ts\nimport '@tresjs/cientos/styles.css'\n",[520,3121,3122,3127],{"__ignoreMap":488},[540,3123,3124],{"class":542,"line":489},[540,3125,3126],{"class":1112},"// Vite / Vue — in main.ts\n",[540,3128,3129,3131,3133,3136],{"class":542,"line":490},[540,3130,580],{"class":579},[540,3132,602],{"class":545},[540,3134,3135],{"class":566},"@tresjs/cientos/styles.css",[540,3137,608],{"class":545},[529,3139,3141],{"className":1089,"code":3140,"language":567,"meta":488,"style":488},"// Nuxt — in nuxt.config.ts\nexport default defineNuxtConfig({\n  css: ['@tresjs/cientos/styles.css'],\n})\n",[520,3142,3143,3148,3163,3182],{"__ignoreMap":488},[540,3144,3145],{"class":542,"line":489},[540,3146,3147],{"class":1112},"// Nuxt — in nuxt.config.ts\n",[540,3149,3150,3152,3155,3158,3160],{"class":542,"line":490},[540,3151,1097],{"class":579},[540,3153,3154],{"class":579}," default",[540,3156,3157],{"class":2336}," defineNuxtConfig",[540,3159,2339],{"class":586},[540,3161,3162],{"class":545},"{\n",[540,3164,3165,3168,3170,3172,3174,3176,3178,3180],{"class":542,"line":611},[540,3166,3167],{"class":549},"  css",[540,3169,1121],{"class":545},[540,3171,2400],{"class":586},[540,3173,2342],{"class":545},[540,3175,3135],{"class":566},[540,3177,2342],{"class":545},[540,3179,2416],{"class":586},[540,3181,2390],{"class":545},[540,3183,3184,3186],{"class":542,"line":632},[540,3185,2330],{"class":545},[540,3187,2350],{"class":586},[2197,3189,3190],{},[3191,3192],"abstractions-decal-editable",{},[516,3194,3195,3196,3199,3200,3203,3204,1049],{},"Three panels: a floating ",[1571,3197,3198],{},"handle"," anchored to the editing decal, a\nbottom ",[1571,3201,3202],{},"dock"," (texture picker + edit tools), a right-side ",[1571,3205,3206],{},"layer\npanel",[2115,3208,3209,3219,3224,3230,3243,3248,3253,3259,3265,3271,3277],{},[2118,3210,3211,3214,3215,3218],{},[1571,3212,3213],{},"Floating handle"," (rotate + scale + snap + live ",[520,3216,3217],{},"scale% · rotation° · L\u003Cn>"," badge)",[2118,3220,3221],{},[1571,3222,3223],{},"Color tint & opacity",[2118,3225,3226,3229],{},[1571,3227,3228],{},"Mirror"," (flip X / flip Y)",[2118,3231,3232,2976,3235,3238,3239,3242],{},[1571,3233,3234],{},"Layer controls",[520,3236,3237],{},"L+"," / ",[520,3240,3241],{},"L-",")",[2118,3244,3245],{},[1571,3246,3247],{},"Visibility toggle",[2118,3249,3250],{},[1571,3251,3252],{},"Per-row remove",[2118,3254,3255,3258],{},[1571,3256,3257],{},"Layer panel"," (mesh-grouped, drag-to-reorder)",[2118,3260,3261,3264],{},[1571,3262,3263],{},"Texture picker"," (drag or click-to-arm)",[2118,3266,3267,3270],{},[1571,3268,3269],{},"Mode badge"," (placing / editing status)",[2118,3272,3273,3276],{},[1571,3274,3275],{},"Undo / Redo"," buttons",[2118,3278,3279,3276],{},[1571,3280,3281],{},"Import / Export",[529,3283,3285],{"className":531,"code":3284,"language":536,"meta":488,"style":488},"\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",[520,3286,3287,3307,3338,3365,3383,3411,3415,3450,3454,3489,3501,3512,3518,3522,3561,3601,3609,3613,3621,3666,3670,3678,3697,3705,3709,3740,3748,3766,3810,3818,3822,3853,3874,3893,3925,3934,3943],{"__ignoreMap":488},[540,3288,3289,3291,3293,3295,3297,3299,3301,3303,3305],{"class":542,"line":489},[540,3290,546],{"class":545},[540,3292,550],{"class":549},[540,3294,554],{"class":553},[540,3296,557],{"class":553},[540,3298,560],{"class":545},[540,3300,563],{"class":545},[540,3302,567],{"class":566},[540,3304,563],{"class":545},[540,3306,572],{"class":545},[540,3308,3309,3311,3313,3315,3317,3320,3322,3324,3326,3328,3330,3332,3334,3336],{"class":542,"line":490},[540,3310,580],{"class":579},[540,3312,583],{"class":545},[540,3314,2252],{"class":586},[540,3316,590],{"class":545},[540,3318,3319],{"class":586}," DecalDebugUI",[540,3321,590],{"class":545},[540,3323,593],{"class":586},[540,3325,590],{"class":545},[540,3327,2742],{"class":586},[540,3329,596],{"class":545},[540,3331,599],{"class":579},[540,3333,602],{"class":545},[540,3335,605],{"class":566},[540,3337,608],{"class":545},[540,3339,3340,3342,3345,3347,3350,3352,3355,3357,3359,3361,3363],{"class":542,"line":611},[540,3341,580],{"class":579},[540,3343,3344],{"class":579}," type",[540,3346,583],{"class":545},[540,3348,3349],{"class":586}," DecalEditorSession",[540,3351,590],{"class":545},[540,3353,3354],{"class":586}," DecalJsonEntry",[540,3356,596],{"class":545},[540,3358,599],{"class":579},[540,3360,602],{"class":545},[540,3362,605],{"class":566},[540,3364,608],{"class":545},[540,3366,3367,3369,3371,3373,3375,3377,3379,3381],{"class":542,"line":632},[540,3368,580],{"class":579},[540,3370,583],{"class":545},[540,3372,618],{"class":586},[540,3374,596],{"class":545},[540,3376,599],{"class":579},[540,3378,602],{"class":545},[540,3380,627],{"class":566},[540,3382,608],{"class":545},[540,3384,3385,3387,3389,3392,3394,3396,3398,3401,3403,3405,3407,3409],{"class":542,"line":642},[540,3386,580],{"class":579},[540,3388,583],{"class":545},[540,3390,3391],{"class":586}," computed",[540,3393,590],{"class":545},[540,3395,2298],{"class":586},[540,3397,590],{"class":545},[540,3399,3400],{"class":586}," shallowRef",[540,3402,596],{"class":545},[540,3404,599],{"class":579},[540,3406,602],{"class":545},[540,3408,536],{"class":566},[540,3410,608],{"class":545},[540,3412,3413],{"class":542,"line":648},[540,3414,645],{"emptyLinePlaceholder":496},[540,3416,3417,3419,3421,3423,3425,3427,3429,3432,3434,3437,3439,3441,3443,3446,3448],{"class":542,"line":658},[540,3418,2317],{"class":553},[540,3420,583],{"class":545},[540,3422,2765],{"class":586},[540,3424,2330],{"class":545},[540,3426,2333],{"class":545},[540,3428,2742],{"class":2336},[540,3430,3431],{"class":586},"([",[540,3433,2342],{"class":545},[540,3435,3436],{"class":566},"/textures/a.png",[540,3438,2342],{"class":545},[540,3440,590],{"class":545},[540,3442,602],{"class":545},[540,3444,3445],{"class":566},"/textures/b.png",[540,3447,2342],{"class":545},[540,3449,2504],{"class":586},[540,3451,3452],{"class":542,"line":681},[540,3453,645],{"emptyLinePlaceholder":496},[540,3455,3456,3458,3461,3463,3465,3467,3470,3472,3475,3477,3479,3482,3485,3487],{"class":542,"line":693},[540,3457,2317],{"class":553},[540,3459,3460],{"class":586}," layout ",[540,3462,560],{"class":545},[540,3464,2298],{"class":2336},[540,3466,546],{"class":545},[540,3468,3469],{"class":1103},"Record",[540,3471,546],{"class":545},[540,3473,3474],{"class":1103},"string",[540,3476,590],{"class":545},[540,3478,3354],{"class":1103},[540,3480,3481],{"class":586},"[]",[540,3483,3484],{"class":545},">>",[540,3486,2339],{"class":586},[540,3488,3162],{"class":545},[540,3490,3491,3494,3496,3499],{"class":542,"line":703},[540,3492,3493],{"class":549},"  cube",[540,3495,1121],{"class":545},[540,3497,3498],{"class":586}," []",[540,3500,2390],{"class":545},[540,3502,3503,3506,3508,3510],{"class":542,"line":708},[540,3504,3505],{"class":549},"  sphere",[540,3507,1121],{"class":545},[540,3509,3498],{"class":586},[540,3511,2390],{"class":545},[540,3513,3514,3516],{"class":542,"line":730},[540,3515,2330],{"class":545},[540,3517,2350],{"class":586},[540,3519,3520],{"class":542,"line":534},[540,3521,645],{"emptyLinePlaceholder":496},[540,3523,3524,3526,3529,3531,3533,3536,3539,3541,3543,3545,3548,3551,3554,3556,3559],{"class":542,"line":753},[540,3525,2317],{"class":553},[540,3527,3528],{"class":586}," decalRef ",[540,3530,560],{"class":545},[540,3532,3400],{"class":2336},[540,3534,3535],{"class":545},"\u003C{",[540,3537,3538],{"class":549}," editor",[540,3540,1121],{"class":545},[540,3542,3349],{"class":1103},[540,3544,596],{"class":545},[540,3546,3547],{"class":545}," |",[540,3549,3550],{"class":1103}," null",[540,3552,3553],{"class":545},">",[540,3555,2339],{"class":586},[540,3557,3558],{"class":545},"null",[540,3560,2350],{"class":586},[540,3562,3563,3565,3568,3570,3572,3574,3577,3580,3583,3585,3588,3591,3594,3597,3599],{"class":542,"line":764},[540,3564,2317],{"class":553},[540,3566,3567],{"class":586}," session ",[540,3569,560],{"class":545},[540,3571,3391],{"class":2336},[540,3573,2339],{"class":586},[540,3575,3576],{"class":545},"()",[540,3578,3579],{"class":553}," =>",[540,3581,3582],{"class":586}," decalRef",[540,3584,1049],{"class":545},[540,3586,3587],{"class":586},"value",[540,3589,3590],{"class":545},"?.",[540,3592,3593],{"class":586},"editor ",[540,3595,3596],{"class":545},"??",[540,3598,3550],{"class":545},[540,3600,2350],{"class":586},[540,3602,3603,3605,3607],{"class":542,"line":775},[540,3604,635],{"class":545},[540,3606,550],{"class":549},[540,3608,572],{"class":545},[540,3610,3611],{"class":542,"line":785},[540,3612,645],{"emptyLinePlaceholder":496},[540,3614,3615,3617,3619],{"class":542,"line":535},[540,3616,546],{"class":545},[540,3618,653],{"class":549},[540,3620,572],{"class":545},[540,3622,3623,3625,3628,3631,3633,3635,3638,3640,3643,3645,3647,3650,3652,3655,3657,3659,3662,3664],{"class":542,"line":805},[540,3624,661],{"class":545},[540,3626,3627],{"class":549},"DecalDebugUI",[540,3629,3630],{"class":553}," :session",[540,3632,560],{"class":545},[540,3634,563],{"class":545},[540,3636,3637],{"class":566},"session",[540,3639,563],{"class":545},[540,3641,3642],{"class":553}," :textures",[540,3644,560],{"class":545},[540,3646,563],{"class":545},[540,3648,3649],{"class":566},"textures ?? []",[540,3651,563],{"class":545},[540,3653,3654],{"class":553}," :data",[540,3656,560],{"class":545},[540,3658,563],{"class":545},[540,3660,3661],{"class":566},"layout",[540,3663,563],{"class":545},[540,3665,690],{"class":545},[540,3667,3668],{"class":542,"line":815},[540,3669,645],{"emptyLinePlaceholder":496},[540,3671,3672,3674,3676],{"class":542,"line":2527},[540,3673,661],{"class":545},[540,3675,664],{"class":549},[540,3677,572],{"class":545},[540,3679,3680,3682,3684,3686,3688,3690,3693,3695],{"class":542,"line":2536},[540,3681,684],{"class":545},[540,3683,687],{"class":549},[540,3685,1387],{"class":553},[540,3687,560],{"class":545},[540,3689,563],{"class":545},[540,3691,3692],{"class":566},"[2, 2, 4]",[540,3694,563],{"class":545},[540,3696,690],{"class":545},[540,3698,3699,3701,3703],{"class":542,"line":2556},[540,3700,684],{"class":545},[540,3702,698],{"class":549},[540,3704,690],{"class":545},[540,3706,3707],{"class":542,"line":2565},[540,3708,645],{"emptyLinePlaceholder":496},[540,3710,3711,3713,3715,3718,3720,3722,3725,3727,3729,3731,3733,3736,3738],{"class":542,"line":2574},[540,3712,684],{"class":545},[540,3714,759],{"class":549},[540,3716,3717],{"class":553}," name",[540,3719,560],{"class":545},[540,3721,563],{"class":545},[540,3723,3724],{"class":566},"cube",[540,3726,563],{"class":545},[540,3728,1387],{"class":553},[540,3730,560],{"class":545},[540,3732,563],{"class":545},[540,3734,3735],{"class":566},"[-1.2, 0, 0]",[540,3737,563],{"class":545},[540,3739,572],{"class":545},[540,3741,3742,3744,3746],{"class":542,"line":2583},[540,3743,756],{"class":545},[540,3745,770],{"class":549},[540,3747,690],{"class":545},[540,3749,3750,3752,3754,3756,3758,3760,3762,3764],{"class":542,"line":2605},[540,3751,756],{"class":545},[540,3753,2588],{"class":549},[540,3755,2591],{"class":553},[540,3757,560],{"class":545},[540,3759,563],{"class":545},[540,3761,2598],{"class":566},[540,3763,563],{"class":545},[540,3765,690],{"class":545},[540,3767,3768,3770,3772,3775,3777,3779,3782,3784,3786,3788,3790,3793,3795,3797,3799,3801,3803,3805,3808],{"class":542,"line":2649},[540,3769,756],{"class":545},[540,3771,49],{"class":549},[540,3773,3774],{"class":553}," ref",[540,3776,560],{"class":545},[540,3778,563],{"class":545},[540,3780,3781],{"class":566},"decalRef",[540,3783,563],{"class":545},[540,3785,2624],{"class":553},[540,3787,560],{"class":545},[540,3789,563],{"class":545},[540,3791,3792],{"class":566},"layout.cube",[540,3794,563],{"class":545},[540,3796,2636],{"class":553},[540,3798,560],{"class":545},[540,3800,563],{"class":545},[540,3802,2855],{"class":566},[540,3804,563],{"class":545},[540,3806,3807],{"class":553}," editable",[540,3809,690],{"class":545},[540,3811,3812,3814,3816],{"class":542,"line":2658},[540,3813,798],{"class":545},[540,3815,759],{"class":549},[540,3817,572],{"class":545},[540,3819,3820],{"class":542,"line":2667},[540,3821,645],{"emptyLinePlaceholder":496},[540,3823,3825,3827,3829,3831,3833,3835,3838,3840,3842,3844,3846,3849,3851],{"class":542,"line":3824},31,[540,3826,684],{"class":545},[540,3828,759],{"class":549},[540,3830,3717],{"class":553},[540,3832,560],{"class":545},[540,3834,563],{"class":545},[540,3836,3837],{"class":566},"sphere",[540,3839,563],{"class":545},[540,3841,1387],{"class":553},[540,3843,560],{"class":545},[540,3845,563],{"class":545},[540,3847,3848],{"class":566},"[1.2, 0, 0]",[540,3850,563],{"class":545},[540,3852,572],{"class":545},[540,3854,3856,3858,3861,3863,3865,3867,3870,3872],{"class":542,"line":3855},32,[540,3857,756],{"class":545},[540,3859,3860],{"class":549},"TresSphereGeometry",[540,3862,1861],{"class":553},[540,3864,560],{"class":545},[540,3866,563],{"class":545},[540,3868,3869],{"class":566},"[0.7]",[540,3871,563],{"class":545},[540,3873,690],{"class":545},[540,3875,3877,3879,3881,3883,3885,3887,3889,3891],{"class":542,"line":3876},33,[540,3878,756],{"class":545},[540,3880,2588],{"class":549},[540,3882,2591],{"class":553},[540,3884,560],{"class":545},[540,3886,563],{"class":545},[540,3888,2598],{"class":566},[540,3890,563],{"class":545},[540,3892,690],{"class":545},[540,3894,3896,3898,3900,3902,3904,3906,3909,3911,3913,3915,3917,3919,3921,3923],{"class":542,"line":3895},34,[540,3897,756],{"class":545},[540,3899,49],{"class":549},[540,3901,2624],{"class":553},[540,3903,560],{"class":545},[540,3905,563],{"class":545},[540,3907,3908],{"class":566},"layout.sphere",[540,3910,563],{"class":545},[540,3912,2636],{"class":553},[540,3914,560],{"class":545},[540,3916,563],{"class":545},[540,3918,2855],{"class":566},[540,3920,563],{"class":545},[540,3922,3807],{"class":553},[540,3924,690],{"class":545},[540,3926,3928,3930,3932],{"class":542,"line":3927},35,[540,3929,798],{"class":545},[540,3931,759],{"class":549},[540,3933,572],{"class":545},[540,3935,3937,3939,3941],{"class":542,"line":3936},36,[540,3938,808],{"class":545},[540,3940,664],{"class":549},[540,3942,572],{"class":545},[540,3944,3946,3948,3950],{"class":542,"line":3945},37,[540,3947,635],{"class":545},[540,3949,653],{"class":549},[540,3951,572],{"class":545},[3953,3954,3956],"h3",{"id":3955},"how-the-wiring-works","How the wiring works",[2115,3958,3959,3970,3979,3988],{},[2118,3960,3961,3964,3965,3967,3968,1049],{},[520,3962,3963],{},"v-model:data=\"layout.cube\""," — each ",[520,3966,2112],{}," owns one slice of the\nlayout object. The slice's key matches the parent mesh's ",[520,3969,2873],{},[2118,3971,3972,3975,3976,3978],{},[520,3973,3974],{},"ref=\"decalRef\""," — grab a reference to any ",[520,3977,2112],{}," in the canvas;\nthe session is canvas-shared so it doesn't matter which.",[2118,3980,3981,3984,3985,3987],{},[520,3982,3983],{},"session = decalRef.value?.editor"," — the editor session powers\n",[520,3986,2127],{},". Pass it through.",[2118,3989,3990,3993,3994,3996],{},[520,3991,3992],{},":data=\"layout\""," on ",[520,3995,2127],{}," — the full mesh-keyed layout, so\nthe overlay can render the layer panel and route imports back to each\nDecal by name.",[1907,3998,3999],{},[516,4000,4001,4002,4005,4006,4009],{},"The overlay is full-viewport (",[520,4003,4004],{},"position: fixed; inset: 0",") by default.\nWhen embedding inside a bounded stage (docs, modal, sidebar preview),\npass ",[520,4007,4008],{},"contained"," so the overlay positions itself absolutely against\nthe nearest positioned ancestor instead.",[529,4011,4013],{"className":531,"code":4012,"language":536,"meta":488,"style":488},"\u003Cdiv style=\"position: relative; height: 500px;\">\n  \u003CDecalDebugUI contained ... />\n  \u003CTresCanvas>...\u003C/TresCanvas>\n\u003C/div>\n",[520,4014,4015,4055,4060,4065],{"__ignoreMap":488},[540,4016,4017,4019,4022,4025,4027,4029,4033,4035,4038,4041,4044,4046,4049,4051,4053],{"class":542,"line":489},[540,4018,546],{"class":545},[540,4020,4021],{"class":549},"div",[540,4023,4024],{"class":553}," style",[540,4026,560],{"class":545},[540,4028,563],{"class":545},[540,4030,4032],{"class":4031},"sqsOY","position",[540,4034,1121],{"class":545},[540,4036,4037],{"class":586}," relative",[540,4039,4040],{"class":545},";",[540,4042,4043],{"class":4031}," height",[540,4045,1121],{"class":545},[540,4047,4048],{"class":2403}," 500px",[540,4050,4040],{"class":545},[540,4052,563],{"class":545},[540,4054,572],{"class":545},[540,4056,4057],{"class":542,"line":490},[540,4058,4059],{"class":586},"  \u003CDecalDebugUI contained ... />\n",[540,4061,4062],{"class":542,"line":611},[540,4063,4064],{"class":586},"  \u003CTresCanvas>...\u003C/TresCanvas>\n",[540,4066,4067,4069,4071],{"class":542,"line":632},[540,4068,635],{"class":545},[540,4070,4021],{"class":549},[540,4072,572],{"class":545},[525,4074,3281],{"id":4075},"import-export",[516,4077,4078,4079,4082,4083,4085],{},"The Export button in the dock auto-downloads the current layout as\n",[520,4080,4081],{},"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",[520,4084,2112],{}," automatically — no extra host code needed.",[529,4087,4089],{"className":531,"code":4088,"language":536,"meta":488,"style":488},"\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",[520,4090,4091,4096,4127,4131,4136],{"__ignoreMap":488},[540,4092,4093],{"class":542,"line":489},[540,4094,4095],{"class":1112},"\u003C!-- Custom filename -->\n",[540,4097,4098,4100,4102,4104,4107,4109,4112,4115,4117,4119,4122,4125],{"class":542,"line":490},[540,4099,546],{"class":545},[540,4101,3627],{"class":549},[540,4103,2931],{"class":545},[540,4105,4106],{"class":553},"export-filename",[540,4108,560],{"class":545},[540,4110,4111],{"class":545},"\"`${",[540,4113,4114],{"class":586},"sceneName",[540,4116,2330],{"class":545},[540,4118,2688],{"class":566},[540,4120,4121],{"class":545},"`\"",[540,4123,4124],{"class":545}," ...",[540,4126,690],{"class":545},[540,4128,4129],{"class":542,"line":611},[540,4130,645],{"emptyLinePlaceholder":496},[540,4132,4133],{"class":542,"line":632},[540,4134,4135],{"class":1112},"\u003C!-- Disable the built-in download — handle export yourself -->\n",[540,4137,4138,4140,4142,4144,4146,4148,4150,4152,4154,4157,4159,4161,4163,4166,4168,4170],{"class":542,"line":642},[540,4139,546],{"class":545},[540,4141,3627],{"class":549},[540,4143,2931],{"class":545},[540,4145,4106],{"class":553},[540,4147,560],{"class":545},[540,4149,563],{"class":545},[540,4151,3558],{"class":545},[540,4153,563],{"class":545},[540,4155,4156],{"class":545}," @",[540,4158,1097],{"class":553},[540,4160,560],{"class":545},[540,4162,563],{"class":545},[540,4164,4165],{"class":586},"postToBackend",[540,4167,563],{"class":545},[540,4169,4124],{"class":545},[540,4171,690],{"class":545},[525,4173,4175,4176,3242],{"id":4174},"targeting-a-loaded-model-glb","Targeting a loaded model (",[520,4177,4178],{},".glb",[516,4180,4181,4182,4184,4185,4191,4192,4195,4196,4198],{},"A ",[520,4183,2112],{}," can be a ",[1571,4186,4187,4188],{},"direct child of ",[520,4189,4190],{},"\u003Cprimitive>",". Auto-resolution\nwalks one step up the scene graph and only accepts a ",[520,4193,4194],{},"Mesh"," — so the\nbehaviour depends on what the ",[520,4197,4190],{}," wraps.",[3953,4200,4202,4203,4206,4207],{"id":4201},"when-object-is-a-mesh","When ",[520,4204,4205],{},":object"," is a ",[520,4208,4194],{},[516,4210,4211],{},"The decal auto-resolves the wrapped mesh as its target. This is the\nsimplest option for a single-mesh asset:",[529,4213,4215],{"className":531,"code":4214,"language":536,"meta":488,"style":488},"\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",[520,4216,4217,4237,4260,4264,4305,4310,4318,4322,4330,4362,4393,4401],{"__ignoreMap":488},[540,4218,4219,4221,4223,4225,4227,4229,4231,4233,4235],{"class":542,"line":489},[540,4220,546],{"class":545},[540,4222,550],{"class":549},[540,4224,554],{"class":553},[540,4226,557],{"class":553},[540,4228,560],{"class":545},[540,4230,563],{"class":545},[540,4232,567],{"class":566},[540,4234,563],{"class":545},[540,4236,572],{"class":545},[540,4238,4239,4241,4243,4245,4247,4250,4252,4254,4256,4258],{"class":542,"line":490},[540,4240,580],{"class":579},[540,4242,583],{"class":545},[540,4244,2252],{"class":586},[540,4246,590],{"class":545},[540,4248,4249],{"class":586}," useGLTF",[540,4251,596],{"class":545},[540,4253,599],{"class":579},[540,4255,602],{"class":545},[540,4257,605],{"class":566},[540,4259,608],{"class":545},[540,4261,4262],{"class":542,"line":611},[540,4263,645],{"emptyLinePlaceholder":496},[540,4265,4266,4268,4270,4273,4275,4277,4279,4281,4283,4286,4288,4290,4292,4295,4297,4301,4303],{"class":542,"line":632},[540,4267,2317],{"class":553},[540,4269,583],{"class":545},[540,4271,4272],{"class":586}," nodes ",[540,4274,2330],{"class":545},[540,4276,2333],{"class":545},[540,4278,4249],{"class":2336},[540,4280,2339],{"class":586},[540,4282,2342],{"class":545},[540,4284,4285],{"class":566},"/models/helmet.glb",[540,4287,2342],{"class":545},[540,4289,590],{"class":545},[540,4291,583],{"class":545},[540,4293,4294],{"class":549}," draco",[540,4296,1121],{"class":545},[540,4298,4300],{"class":4299},"sfNiH"," true",[540,4302,596],{"class":545},[540,4304,2350],{"class":586},[540,4306,4307],{"class":542,"line":642},[540,4308,4309],{"class":1112},"// nodes.Helmet is a Mesh in this asset.\n",[540,4311,4312,4314,4316],{"class":542,"line":648},[540,4313,635],{"class":545},[540,4315,550],{"class":549},[540,4317,572],{"class":545},[540,4319,4320],{"class":542,"line":658},[540,4321,645],{"emptyLinePlaceholder":496},[540,4323,4324,4326,4328],{"class":542,"line":681},[540,4325,546],{"class":545},[540,4327,653],{"class":549},[540,4329,572],{"class":545},[540,4331,4332,4334,4337,4339,4341,4343,4346,4348,4351,4353,4355,4358,4360],{"class":542,"line":693},[540,4333,661],{"class":545},[540,4335,4336],{"class":549},"primitive",[540,4338,2612],{"class":553},[540,4340,560],{"class":545},[540,4342,563],{"class":545},[540,4344,4345],{"class":566},"nodes?.Helmet",[540,4347,563],{"class":545},[540,4349,4350],{"class":553}," :object",[540,4352,560],{"class":545},[540,4354,563],{"class":545},[540,4356,4357],{"class":566},"nodes.Helmet",[540,4359,563],{"class":545},[540,4361,572],{"class":545},[540,4363,4364,4366,4368,4370,4372,4374,4377,4379,4381,4383,4385,4387,4389,4391],{"class":542,"line":703},[540,4365,684],{"class":545},[540,4367,49],{"class":549},[540,4369,2624],{"class":553},[540,4371,560],{"class":545},[540,4373,563],{"class":545},[540,4375,4376],{"class":566},"layout.helmet",[540,4378,563],{"class":545},[540,4380,2636],{"class":553},[540,4382,560],{"class":545},[540,4384,563],{"class":545},[540,4386,2855],{"class":566},[540,4388,563],{"class":545},[540,4390,3807],{"class":553},[540,4392,690],{"class":545},[540,4394,4395,4397,4399],{"class":542,"line":708},[540,4396,808],{"class":545},[540,4398,4336],{"class":549},[540,4400,572],{"class":545},[540,4402,4403,4405,4407],{"class":542,"line":730},[540,4404,635],{"class":545},[540,4406,653],{"class":549},[540,4408,572],{"class":545},[1907,4410,4411],{},[516,4412,4413,4414,4416,4417,4420],{},"The resolved parent is the ",[520,4415,4190],{},"'s retargeting proxy rather than\nthe raw object. This is transparent in practice — geometry, ",[520,4418,4419],{},"matrixWorld","\nand raycasting all forward to the wrapped object — so the decal projects\nand follows transforms correctly.",[3953,4422,4202,4424,4206,4426],{"id":4423},"when-object-is-a-group",[520,4425,4205],{},[520,4427,4428],{},"Group",[516,4430,4431,4432,4434,4435,4437,4438,4440,4441,1121],{},"A named node in a ",[520,4433,4178],{}," is often a ",[520,4436,4428],{}," containing several child\nmeshes (e.g. a ceramic body + a metallic interior). Auto-resolution\nreturns ",[520,4439,3558],{}," in that case and the decal silently does nothing — pass\nthe actual target child via ",[520,4442,4443],{},":mesh",[529,4445,4447],{"className":531,"code":4446,"language":536,"meta":488,"style":488},"\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",[520,4448,4449,4469,4491,4509,4531,4535,4572,4577,4601,4649,4653,4661,4665,4673,4703,4746,4754],{"__ignoreMap":488},[540,4450,4451,4453,4455,4457,4459,4461,4463,4465,4467],{"class":542,"line":489},[540,4452,546],{"class":545},[540,4454,550],{"class":549},[540,4456,554],{"class":553},[540,4458,557],{"class":553},[540,4460,560],{"class":545},[540,4462,563],{"class":545},[540,4464,567],{"class":566},[540,4466,563],{"class":545},[540,4468,572],{"class":545},[540,4470,4471,4473,4475,4477,4479,4481,4483,4485,4487,4489],{"class":542,"line":490},[540,4472,580],{"class":579},[540,4474,583],{"class":545},[540,4476,2252],{"class":586},[540,4478,590],{"class":545},[540,4480,4249],{"class":586},[540,4482,596],{"class":545},[540,4484,599],{"class":579},[540,4486,602],{"class":545},[540,4488,605],{"class":566},[540,4490,608],{"class":545},[540,4492,4493,4495,4497,4499,4501,4503,4505,4507],{"class":542,"line":611},[540,4494,580],{"class":579},[540,4496,583],{"class":545},[540,4498,3391],{"class":586},[540,4500,596],{"class":545},[540,4502,599],{"class":579},[540,4504,602],{"class":545},[540,4506,536],{"class":566},[540,4508,608],{"class":545},[540,4510,4511,4513,4515,4517,4520,4522,4524,4526,4529],{"class":542,"line":632},[540,4512,580],{"class":579},[540,4514,3344],{"class":579},[540,4516,583],{"class":545},[540,4518,4519],{"class":586}," Mesh",[540,4521,596],{"class":545},[540,4523,599],{"class":579},[540,4525,602],{"class":545},[540,4527,4528],{"class":566},"three",[540,4530,608],{"class":545},[540,4532,4533],{"class":542,"line":642},[540,4534,645],{"emptyLinePlaceholder":496},[540,4536,4537,4539,4541,4543,4545,4547,4549,4551,4553,4556,4558,4560,4562,4564,4566,4568,4570],{"class":542,"line":648},[540,4538,2317],{"class":553},[540,4540,583],{"class":545},[540,4542,4272],{"class":586},[540,4544,2330],{"class":545},[540,4546,2333],{"class":545},[540,4548,4249],{"class":2336},[540,4550,2339],{"class":586},[540,4552,2342],{"class":545},[540,4554,4555],{"class":566},"/models/mug.glb",[540,4557,2342],{"class":545},[540,4559,590],{"class":545},[540,4561,583],{"class":545},[540,4563,4294],{"class":549},[540,4565,1121],{"class":545},[540,4567,4300],{"class":4299},[540,4569,596],{"class":545},[540,4571,2350],{"class":586},[540,4573,4574],{"class":542,"line":658},[540,4575,4576],{"class":1112},"// nodes.Mug is a Group — pick the child you want to decal.\n",[540,4578,4579,4581,4584,4586,4588,4590,4592,4594,4596,4598],{"class":542,"line":681},[540,4580,2317],{"class":553},[540,4582,4583],{"class":586}," body ",[540,4585,560],{"class":545},[540,4587,3391],{"class":2336},[540,4589,546],{"class":545},[540,4591,4194],{"class":1103},[540,4593,3547],{"class":545},[540,4595,3550],{"class":1103},[540,4597,3553],{"class":545},[540,4599,4600],{"class":586},"(\n",[540,4602,4603,4606,4608,4611,4613,4615,4617,4620,4622,4625,4627,4629,4632,4634,4637,4640,4642,4644,4646],{"class":542,"line":693},[540,4604,4605],{"class":545},"  ()",[540,4607,3579],{"class":553},[540,4609,4610],{"class":586}," (nodes",[540,4612,1049],{"class":545},[540,4614,3587],{"class":586},[540,4616,3590],{"class":545},[540,4618,4619],{"class":586},"Mug",[540,4621,3590],{"class":545},[540,4623,4624],{"class":2336},"getObjectByName",[540,4626,2339],{"class":586},[540,4628,2342],{"class":545},[540,4630,4631],{"class":566},"Body",[540,4633,2342],{"class":545},[540,4635,4636],{"class":586},") ",[540,4638,4639],{"class":579},"as",[540,4641,4519],{"class":1103},[540,4643,4636],{"class":586},[540,4645,3596],{"class":545},[540,4647,4648],{"class":545}," null,\n",[540,4650,4651],{"class":542,"line":703},[540,4652,2350],{"class":586},[540,4654,4655,4657,4659],{"class":542,"line":708},[540,4656,635],{"class":545},[540,4658,550],{"class":549},[540,4660,572],{"class":545},[540,4662,4663],{"class":542,"line":730},[540,4664,645],{"emptyLinePlaceholder":496},[540,4666,4667,4669,4671],{"class":542,"line":534},[540,4668,546],{"class":545},[540,4670,653],{"class":549},[540,4672,572],{"class":545},[540,4674,4675,4677,4679,4681,4683,4685,4688,4690,4692,4694,4696,4699,4701],{"class":542,"line":753},[540,4676,661],{"class":545},[540,4678,4336],{"class":549},[540,4680,2612],{"class":553},[540,4682,560],{"class":545},[540,4684,563],{"class":545},[540,4686,4687],{"class":566},"nodes?.Mug",[540,4689,563],{"class":545},[540,4691,4350],{"class":553},[540,4693,560],{"class":545},[540,4695,563],{"class":545},[540,4697,4698],{"class":566},"nodes.Mug",[540,4700,563],{"class":545},[540,4702,572],{"class":545},[540,4704,4705,4707,4709,4711,4713,4715,4718,4720,4722,4724,4726,4728,4730,4733,4735,4737,4740,4742,4744],{"class":542,"line":764},[540,4706,684],{"class":545},[540,4708,49],{"class":549},[540,4710,2624],{"class":553},[540,4712,560],{"class":545},[540,4714,563],{"class":545},[540,4716,4717],{"class":566},"layout.mug",[540,4719,563],{"class":545},[540,4721,2636],{"class":553},[540,4723,560],{"class":545},[540,4725,563],{"class":545},[540,4727,2855],{"class":566},[540,4729,563],{"class":545},[540,4731,4732],{"class":553}," :mesh",[540,4734,560],{"class":545},[540,4736,563],{"class":545},[540,4738,4739],{"class":566},"body",[540,4741,563],{"class":545},[540,4743,3807],{"class":553},[540,4745,690],{"class":545},[540,4747,4748,4750,4752],{"class":542,"line":775},[540,4749,808],{"class":545},[540,4751,4336],{"class":549},[540,4753,572],{"class":545},[540,4755,4756,4758,4760],{"class":542,"line":785},[540,4757,635],{"class":545},[540,4759,653],{"class":549},[540,4761,572],{"class":545},[3953,4763,4765],{"id":4764},"targeting-an-extracted-sub-mesh","Targeting an extracted sub-mesh",[516,4767,4768,4769,4775,4776,4783,4784,4786,4787,1121],{},"Alternatively, ",[1571,4770,4771,4772,4774],{},"wrap a ",[520,4773,2212],{}," 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",[1043,4777,4780],{"href":4778,"rel":4779},"https://docs.tresjs.org/api/composables.html#usegraph",[1047],[520,4781,4782],{},"useGraph"," to\npull the sub-mesh, then build a regular ",[520,4785,2212],{}," around its\n",[520,4788,4789],{},":geometry",[529,4791,4793],{"className":531,"code":4792,"language":536,"meta":488,"style":488},"\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",[520,4794,4795,4815,4839,4857,4877,4895,4899,4931,4960,4974,5002,5010,5014,5022,5029,5043,5057,5071,5076,5107,5137,5145],{"__ignoreMap":488},[540,4796,4797,4799,4801,4803,4805,4807,4809,4811,4813],{"class":542,"line":489},[540,4798,546],{"class":545},[540,4800,550],{"class":549},[540,4802,554],{"class":553},[540,4804,557],{"class":553},[540,4806,560],{"class":545},[540,4808,563],{"class":545},[540,4810,567],{"class":566},[540,4812,563],{"class":545},[540,4814,572],{"class":545},[540,4816,4817,4819,4821,4824,4826,4829,4831,4833,4835,4837],{"class":542,"line":490},[540,4818,580],{"class":579},[540,4820,583],{"class":545},[540,4822,4823],{"class":586}," useGraph",[540,4825,590],{"class":545},[540,4827,4828],{"class":586}," useLoader",[540,4830,596],{"class":545},[540,4832,599],{"class":579},[540,4834,602],{"class":545},[540,4836,627],{"class":566},[540,4838,608],{"class":545},[540,4840,4841,4843,4845,4847,4849,4851,4853,4855],{"class":542,"line":611},[540,4842,580],{"class":579},[540,4844,583],{"class":545},[540,4846,2252],{"class":586},[540,4848,596],{"class":545},[540,4850,599],{"class":579},[540,4852,602],{"class":545},[540,4854,605],{"class":566},[540,4856,608],{"class":545},[540,4858,4859,4861,4863,4866,4868,4870,4872,4875],{"class":542,"line":632},[540,4860,580],{"class":579},[540,4862,583],{"class":545},[540,4864,4865],{"class":586}," GLTFLoader",[540,4867,596],{"class":545},[540,4869,599],{"class":579},[540,4871,602],{"class":545},[540,4873,4874],{"class":566},"three/examples/jsm/loaders/GLTFLoader.js",[540,4876,608],{"class":545},[540,4878,4879,4881,4883,4885,4887,4889,4891,4893],{"class":542,"line":642},[540,4880,580],{"class":579},[540,4882,583],{"class":545},[540,4884,3391],{"class":586},[540,4886,596],{"class":545},[540,4888,599],{"class":579},[540,4890,602],{"class":545},[540,4892,536],{"class":566},[540,4894,608],{"class":545},[540,4896,4897],{"class":542,"line":648},[540,4898,645],{"emptyLinePlaceholder":496},[540,4900,4901,4903,4905,4907,4909,4912,4914,4916,4918,4921,4923,4925,4927,4929],{"class":542,"line":658},[540,4902,2317],{"class":553},[540,4904,583],{"class":545},[540,4906,2322],{"class":549},[540,4908,1121],{"class":545},[540,4910,4911],{"class":586}," model ",[540,4913,2330],{"class":545},[540,4915,2333],{"class":545},[540,4917,4828],{"class":2336},[540,4919,4920],{"class":586},"(GLTFLoader",[540,4922,590],{"class":545},[540,4924,602],{"class":545},[540,4926,4285],{"class":566},[540,4928,2342],{"class":545},[540,4930,2350],{"class":586},[540,4932,4933,4935,4938,4940,4942,4944,4946,4948,4951,4953,4955,4957],{"class":542,"line":681},[540,4934,2317],{"class":553},[540,4936,4937],{"class":586}," scene ",[540,4939,560],{"class":545},[540,4941,3391],{"class":2336},[540,4943,2339],{"class":586},[540,4945,3576],{"class":545},[540,4947,3579],{"class":553},[540,4949,4950],{"class":586}," model",[540,4952,1049],{"class":545},[540,4954,3587],{"class":586},[540,4956,3590],{"class":545},[540,4958,4959],{"class":586},"scene)\n",[540,4961,4962,4964,4967,4969,4971],{"class":542,"line":693},[540,4963,2317],{"class":553},[540,4965,4966],{"class":586}," graph ",[540,4968,560],{"class":545},[540,4970,4823],{"class":2336},[540,4972,4973],{"class":586},"(scene)\n",[540,4975,4976,4978,4980,4982,4984,4986,4988,4990,4993,4995,4997,4999],{"class":542,"line":703},[540,4977,2317],{"class":553},[540,4979,4272],{"class":586},[540,4981,560],{"class":545},[540,4983,3391],{"class":2336},[540,4985,2339],{"class":586},[540,4987,3576],{"class":545},[540,4989,3579],{"class":553},[540,4991,4992],{"class":586}," graph",[540,4994,1049],{"class":545},[540,4996,3587],{"class":586},[540,4998,3590],{"class":545},[540,5000,5001],{"class":586},"nodes)\n",[540,5003,5004,5006,5008],{"class":542,"line":708},[540,5005,635],{"class":545},[540,5007,550],{"class":549},[540,5009,572],{"class":545},[540,5011,5012],{"class":542,"line":730},[540,5013,645],{"emptyLinePlaceholder":496},[540,5015,5016,5018,5020],{"class":542,"line":534},[540,5017,546],{"class":545},[540,5019,653],{"class":549},[540,5021,572],{"class":545},[540,5023,5024,5026],{"class":542,"line":753},[540,5025,661],{"class":545},[540,5027,5028],{"class":549},"TresMesh\n",[540,5030,5031,5034,5036,5038,5041],{"class":542,"line":764},[540,5032,5033],{"class":553},"    v-if",[540,5035,560],{"class":545},[540,5037,563],{"class":545},[540,5039,5040],{"class":566},"nodes?.Helmet.geometry",[540,5042,3033],{"class":545},[540,5044,5045,5048,5050,5052,5055],{"class":542,"line":775},[540,5046,5047],{"class":553},"    name",[540,5049,560],{"class":545},[540,5051,563],{"class":545},[540,5053,5054],{"class":566},"helmet",[540,5056,3033],{"class":545},[540,5058,5059,5062,5064,5066,5069],{"class":542,"line":785},[540,5060,5061],{"class":553},"    :geometry",[540,5063,560],{"class":545},[540,5065,563],{"class":545},[540,5067,5068],{"class":566},"nodes.Helmet.geometry",[540,5070,3033],{"class":545},[540,5072,5073],{"class":542,"line":535},[540,5074,5075],{"class":545},"  >\n",[540,5077,5078,5080,5082,5084,5086,5088,5091,5093,5096,5098,5100,5103,5105],{"class":542,"line":805},[540,5079,684],{"class":545},[540,5081,4336],{"class":549},[540,5083,4350],{"class":553},[540,5085,560],{"class":545},[540,5087,563],{"class":545},[540,5089,5090],{"class":566},"nodes.Helmet.material",[540,5092,563],{"class":545},[540,5094,5095],{"class":553}," attach",[540,5097,560],{"class":545},[540,5099,563],{"class":545},[540,5101,5102],{"class":566},"material",[540,5104,563],{"class":545},[540,5106,690],{"class":545},[540,5108,5109,5111,5113,5115,5117,5119,5121,5123,5125,5127,5129,5131,5133,5135],{"class":542,"line":815},[540,5110,684],{"class":545},[540,5112,49],{"class":549},[540,5114,2624],{"class":553},[540,5116,560],{"class":545},[540,5118,563],{"class":545},[540,5120,4376],{"class":566},[540,5122,563],{"class":545},[540,5124,2636],{"class":553},[540,5126,560],{"class":545},[540,5128,563],{"class":545},[540,5130,2855],{"class":566},[540,5132,563],{"class":545},[540,5134,3807],{"class":553},[540,5136,690],{"class":545},[540,5138,5139,5141,5143],{"class":542,"line":2527},[540,5140,808],{"class":545},[540,5142,759],{"class":549},[540,5144,572],{"class":545},[540,5146,5147,5149,5151],{"class":542,"line":2536},[540,5148,635],{"class":545},[540,5150,653],{"class":549},[540,5152,572],{"class":545},[516,5154,5155,5156,2965,5159,5161,5162,5164,5165,5167],{},"The mesh's ",[520,5157,5158],{},"geometry",[520,5160,5102],{}," come from the loaded model; the\n",[520,5163,2112],{}," lives inside a regular ",[520,5166,2212],{}," with a clean scene-graph\nparent.",[3101,5169,5170],{},[516,5171,5172,5173,5175,5176,5179,5180,5183,5184,5187],{},"A saved decal's ",[520,5174,4032],{}," is stored in ",[1571,5177,5178],{},"world space",", so it is\nre-projected onto the parent using the parent's transform ",[1571,5181,5182],{},"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. ",[520,5185,5186],{},"\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.",[525,5189,5191],{"id":5190},"json-schema","JSON schema",[516,5193,5194,5195,5197,5198,5201,5202,5204,5205,1049],{},"Each entry in the ",[520,5196,2920],{}," array follows the ",[520,5199,5200],{},"DecalJsonEntry"," shape; the\nlayout passed to ",[520,5203,2127],{}," groups these by mesh name as\n",[520,5206,5207],{},"DecalLayout = Record\u003Cstring, DecalJsonEntry[]>",[5209,5210,5211,5212,5216],"details",{},"\n  ",[5213,5214,5215],"summary",{},"Full schema",[529,5217,5219],{"className":1089,"code":5218,"language":567,"meta":488,"style":488},"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",[520,5220,5221,5230,5243,5270,5294,5318,5330,5346,5360,5371,5383,5395,5407,5411,5415,5440],{"__ignoreMap":488},[540,5222,5223,5226,5228],{"class":542,"line":489},[540,5224,5225],{"class":553},"interface",[540,5227,3354],{"class":1103},[540,5229,1107],{"class":545},[540,5231,5232,5235,5237,5240],{"class":542,"line":490},[540,5233,5234],{"class":549},"  id",[540,5236,1121],{"class":545},[540,5238,5239],{"class":1103}," string",[540,5241,5242],{"class":1112}," // stable UUID\n",[540,5244,5245,5248,5250,5252,5255,5257,5260,5262,5264,5267],{"class":542,"line":611},[540,5246,5247],{"class":549},"  position",[540,5249,1121],{"class":545},[540,5251,2400],{"class":586},[540,5253,5254],{"class":1103},"number",[540,5256,590],{"class":545},[540,5258,5259],{"class":1103}," number",[540,5261,590],{"class":545},[540,5263,5259],{"class":1103},[540,5265,5266],{"class":586},"] ",[540,5268,5269],{"class":1112},"// target-mesh local space (raycast hit, baked into the parent's frame)\n",[540,5271,5272,5275,5277,5279,5281,5283,5285,5287,5289,5291],{"class":542,"line":632},[540,5273,5274],{"class":549},"  orientation",[540,5276,1121],{"class":545},[540,5278,2400],{"class":586},[540,5280,5254],{"class":1103},[540,5282,590],{"class":545},[540,5284,5259],{"class":1103},[540,5286,590],{"class":545},[540,5288,5259],{"class":1103},[540,5290,5266],{"class":586},[540,5292,5293],{"class":1112},"// Euler XYZ\n",[540,5295,5296,5299,5301,5303,5305,5307,5309,5311,5313,5315],{"class":542,"line":642},[540,5297,5298],{"class":549},"  size",[540,5300,1121],{"class":545},[540,5302,2400],{"class":586},[540,5304,5254],{"class":1103},[540,5306,590],{"class":545},[540,5308,5259],{"class":1103},[540,5310,590],{"class":545},[540,5312,5259],{"class":1103},[540,5314,5266],{"class":586},[540,5316,5317],{"class":1112},"// extents along X/Y; Z = projection depth\n",[540,5319,5320,5323,5325,5327],{"class":542,"line":648},[540,5321,5322],{"class":549},"  zIndex",[540,5324,1121],{"class":545},[540,5326,5259],{"class":1103},[540,5328,5329],{"class":1112}," // per-mesh layer order, ≥ 0\n",[540,5331,5332,5335,5337,5339,5341,5343],{"class":542,"line":658},[540,5333,5334],{"class":549},"  map",[540,5336,1121],{"class":545},[540,5338,5239],{"class":1103},[540,5340,3547],{"class":545},[540,5342,3550],{"class":1103},[540,5344,5345],{"class":1112}," // matches a texture's .name\n",[540,5347,5348,5351,5354,5357],{"class":542,"line":681},[540,5349,5350],{"class":549},"  flipX",[540,5352,5353],{"class":545},"?:",[540,5355,5356],{"class":1103}," boolean",[540,5358,5359],{"class":1112}," // omitted when false\n",[540,5361,5362,5365,5367,5369],{"class":542,"line":693},[540,5363,5364],{"class":549},"  flipY",[540,5366,5353],{"class":545},[540,5368,5356],{"class":1103},[540,5370,5359],{"class":1112},[540,5372,5373,5376,5378,5380],{"class":542,"line":703},[540,5374,5375],{"class":549},"  color",[540,5377,5353],{"class":545},[540,5379,5239],{"class":1103},[540,5381,5382],{"class":1112}," // hex (e.g. '#ff6b35'), omitted when no tint\n",[540,5384,5385,5388,5390,5392],{"class":542,"line":708},[540,5386,5387],{"class":549},"  opacity",[540,5389,5353],{"class":545},[540,5391,5259],{"class":1103},[540,5393,5394],{"class":1112}," // 0..1, omitted when 1\n",[540,5396,5397,5400,5402,5404],{"class":542,"line":730},[540,5398,5399],{"class":549},"  visible",[540,5401,5353],{"class":545},[540,5403,5356],{"class":1103},[540,5405,5406],{"class":1112}," // omitted when true; false hides the decal\n",[540,5408,5409],{"class":542,"line":534},[540,5410,1228],{"class":545},[540,5412,5413],{"class":542,"line":753},[540,5414,645],{"emptyLinePlaceholder":496},[540,5416,5417,5420,5423,5425,5428,5430,5432,5434,5436,5438],{"class":542,"line":764},[540,5418,5419],{"class":553},"type",[540,5421,5422],{"class":1103}," DecalLayout",[540,5424,2333],{"class":545},[540,5426,5427],{"class":1103}," Record",[540,5429,546],{"class":545},[540,5431,3474],{"class":1103},[540,5433,590],{"class":545},[540,5435,3354],{"class":1103},[540,5437,3481],{"class":586},[540,5439,572],{"class":545},[540,5441,5442],{"class":542,"line":775},[540,5443,5444],{"class":1112},"// { sphere: [...], cube: [...] }\n",[525,5446,5448,5450],{"id":5447},"decal-props",[520,5449,2112],{}," props",[830,5452,5453,5463],{},[833,5454,5455],{},[836,5456,5457,5459,5461],{},[839,5458,841],{},[839,5460,844],{},[839,5462,847],{},[849,5464,5465,5481,5501,5538,5556,5570,5584,5604,5632],{},[836,5466,5467,5471,5477],{},[854,5468,5469],{},[1571,5470,2920],{},[854,5472,5473,5474,5476],{},"Two-way list of stamped decals (use with ",[520,5475,2172],{},").",[854,5478,5479],{},[520,5480,3481],{},[836,5482,5483,5487,5497],{},[854,5484,5485],{},[1571,5486,2883],{},[854,5488,5489,5490,5492,5493,5496],{},"A single ",[520,5491,2151],{}," or array of ",[520,5494,5495],{},"Texture[]",". With multiple, the editor lets the user cycle through them as a palette.",[854,5498,5499],{},[520,5500,3558],{},[836,5502,5503,5508,5534],{},[854,5504,5505],{},[1571,5506,5507],{},"mesh",[854,5509,5510,5511,5513,5514,5517,5518,5520,5521,5524,5525,3238,5527,3238,5530,5533],{},"Optional explicit target mesh (",[520,5512,4194],{}," or ",[520,5515,5516],{},"ShallowRef\u003CMesh>","). When omitted, the scene-graph parent of ",[520,5519,2112],{}," is auto-resolved via a hidden anchor ",[520,5522,5523],{},"\u003CTresGroup>",". The decal mesh is imperatively parented to the target so it follows the target's runtime ",[520,5526,4032],{},[520,5528,5529],{},"rotation",[520,5531,5532],{},"scale"," via the scene-graph hierarchy.",[854,5535,5536],{},[520,5537,3558],{},[836,5539,5540,5544,5552],{},[854,5541,5542],{},[1571,5543,3088],{},[854,5545,4202,5546,5548,5549,5551],{},[520,5547,864],{},", mounts the interactive editor (raycast, hover, click-to-place, drag-from-thumbnail). Required for ",[520,5550,2127],{}," interactions to work on this Decal.",[854,5553,5554],{},[520,5555,874],{},[836,5557,5558,5563,5566],{},[854,5559,5560],{},[1571,5561,5562],{},"baseSize",[854,5564,5565],{},"Reference size used to derive each decal's size from the texture aspect ratio.",[854,5567,5568],{},[520,5569,1776],{},[836,5571,5572,5577,5580],{},[854,5573,5574],{},[1571,5575,5576],{},"baseOffset",[854,5578,5579],{},"Distance along the surface normal (parent units) to avoid z-fighting between the decal and the host mesh.",[854,5581,5582],{},[520,5583,1788],{},[836,5585,5586,5590,5599],{},[854,5587,5588],{},[1571,5589,2998],{},[854,5591,5592,5593,5595,5596,5598],{},"Extra offset added per ",[520,5594,2194],{}," step on top of ",[520,5597,5576],{},". Increase if stacked decals still flicker.",[854,5600,5601],{},[520,5602,5603],{},"0.001",[836,5605,5606,5611,5627],{},[854,5607,5608],{},[1571,5609,5610],{},"cullThreshold",[854,5612,5613,5614,5617,5618,5623,5624,5626],{},"Drops projected triangles whose face normal makes an angle steeper than ",[520,5615,5616],{},"acos(threshold)"," with the projector. Mitigates ",[1043,5619,5622],{"href":5620,"rel":5621},"https://github.com/mrdoob/three.js/issues/21187",[1047],"#21187",". Pass ",[520,5625,868],{}," to disable.",[854,5628,5629],{},[520,5630,5631],{},"0.2",[836,5633,5634,5639,5642],{},[854,5635,5636],{},[1571,5637,5638],{},"edgeColor",[854,5640,5641],{},"Color of the edge outline drawn around a decal while it is hovered (pointer or layer panel) in editable mode.",[854,5643,5644],{},[520,5645,5646],{},"#0000ff",[525,5648,5650,5652],{"id":5649},"decal-events",[520,5651,2112],{}," events",[830,5654,5655,5667],{},[833,5656,5657],{},[836,5658,5659,5662,5665],{},[839,5660,5661],{},"Event",[839,5663,5664],{},"Payload",[839,5666,844],{},[849,5668,5669,5684,5699,5713,5733,5751,5768],{},[836,5670,5671,5676,5681],{},[854,5672,5673],{},[520,5674,5675],{},"update:data",[854,5677,5678],{},[520,5679,5680],{},"DecalJsonEntry[]",[854,5682,5683],{},"v-model partner — fires whenever the JSON list changes.",[836,5685,5686,5691,5696],{},[854,5687,5688],{},[520,5689,5690],{},"add",[854,5692,5693],{},[520,5694,5695],{},"DecalEntry",[854,5697,5698],{},"A new decal has been committed (create mode → confirm).",[836,5700,5701,5706,5710],{},[854,5702,5703],{},[520,5704,5705],{},"update",[854,5707,5708],{},[520,5709,5695],{},[854,5711,5712],{},"An existing decal has been committed (update mode → confirm).",[836,5714,5715,5720,5724],{},[854,5716,5717],{},[520,5718,5719],{},"delete",[854,5721,5722],{},[520,5723,5695],{},[854,5725,5726,5727,3238,5730,5476],{},"A decal has been removed (delete button or ",[520,5728,5729],{},"Del",[520,5731,5732],{},"Backspace",[836,5734,5735,5740,5744],{},[854,5736,5737],{},[520,5738,5739],{},"select",[854,5741,5742],{},[520,5743,5695],{},[854,5745,5746,5747,5750],{},"Edition began on ",[520,5748,5749],{},"entry"," (panel click, 3D click, or programmatic).",[836,5752,5753,5758,5761],{},[854,5754,5755],{},[520,5756,5757],{},"cancel",[854,5759,5760],{},"—",[854,5762,5763,5764,5767],{},"Edition was aborted without commit (",[520,5765,5766],{},"Esc",", click-outside in create mode).",[836,5769,5770,5775,5780],{},[854,5771,5772],{},[520,5773,5774],{},"decalClick",[854,5776,5777],{},[520,5778,5779],{},"{ entry: DecalEntry, event: MouseEvent }",[854,5781,5782,5783,5785,5786,1049],{},"Fires on click of any stamped decal, even when ",[520,5784,3088],{}," is ",[520,5787,874],{},[525,5789,5791,5793,5794,3242],{"id":5790},"decal-exposed-via-ref",[520,5792,2112],{}," exposed (via ",[520,5795,5796],{},"ref",[516,5798,5799,5800,5803],{},"The template ref resolves to ",[520,5801,5802],{},"DecalImperativeApi"," — import the type for\nfull autocompletion:",[529,5805,5807],{"className":1089,"code":5806,"language":567,"meta":488,"style":488},"import type { DecalImperativeApi } from '@tresjs/cientos'\n\nconst decalRef = ref\u003CDecalImperativeApi | null>(null)\n",[520,5808,5809,5830,5834],{"__ignoreMap":488},[540,5810,5811,5813,5815,5817,5820,5822,5824,5826,5828],{"class":542,"line":489},[540,5812,580],{"class":579},[540,5814,3344],{"class":579},[540,5816,583],{"class":545},[540,5818,5819],{"class":586}," DecalImperativeApi",[540,5821,596],{"class":545},[540,5823,599],{"class":579},[540,5825,602],{"class":545},[540,5827,605],{"class":566},[540,5829,608],{"class":545},[540,5831,5832],{"class":542,"line":490},[540,5833,645],{"emptyLinePlaceholder":496},[540,5835,5836,5838,5840,5842,5844,5846,5848,5850,5852,5854,5856,5858],{"class":542,"line":611},[540,5837,2317],{"class":553},[540,5839,3528],{"class":586},[540,5841,560],{"class":545},[540,5843,3774],{"class":2336},[540,5845,546],{"class":545},[540,5847,5802],{"class":1103},[540,5849,3547],{"class":545},[540,5851,3550],{"class":1103},[540,5853,3553],{"class":545},[540,5855,2339],{"class":586},[540,5857,3558],{"class":545},[540,5859,2350],{"class":586},[830,5861,5862,5874],{},[833,5863,5864],{},[836,5865,5866,5869,5872],{},[839,5867,5868],{},"Property",[839,5870,5871],{},"Type",[839,5873,844],{},[849,5875,5876,5894,5912,5930,5945],{},[836,5877,5878,5883,5888],{},[854,5879,5880],{},[520,5881,5882],{},"editor",[854,5884,5885],{},[520,5886,5887],{},"DecalEditorSession",[854,5889,5890,5891,1049],{},"The canvas-shared editor session. Pass it to ",[520,5892,5893],{},"\u003CDecalDebugUI :session>",[836,5895,5896,5901,5906],{},[854,5897,5898],{},[520,5899,5900],{},"beginEditById",[854,5902,5903],{},[520,5904,5905],{},"(id: string) => boolean",[854,5907,5908,5909,5911],{},"Programmatically start editing a specific decal. Returns ",[520,5910,874],{}," if the id is unknown.",[836,5913,5914,5919,5924],{},[854,5915,5916],{},[520,5917,5918],{},"commit",[854,5920,5921],{},[520,5922,5923],{},"() => void",[854,5925,5926,5927,5476],{},"Commit the in-flight edit (same as ",[520,5928,5929],{},"Enter",[836,5931,5932,5936,5940],{},[854,5933,5934],{},[520,5935,5757],{},[854,5937,5938],{},[520,5939,5923],{},[854,5941,5942,5943,5476],{},"Abort the in-flight edit (same as ",[520,5944,5766],{},[836,5946,5947,5952,5956],{},[854,5948,5949],{},[520,5950,5951],{},"remove",[854,5953,5954],{},[520,5955,5923],{},[854,5957,5958,5959,5476],{},"Delete the currently edited decal (same as ",[520,5960,5729],{},[525,5962,5964,5450],{"id":5963},"decaldebugui-props",[520,5965,2127],{},[830,5967,5968,5978],{},[833,5969,5970],{},[836,5971,5972,5974,5976],{},[839,5973,841],{},[839,5975,844],{},[839,5977,847],{},[849,5979,5980,6003,6028,6041,6061,6076,6099],{},[836,5981,5982,5986,5999],{},[854,5983,5984],{},[1571,5985,3637],{},[854,5987,5988,5991,5992,5994,5995,5998],{},[520,5989,5990],{},"DecalEditorSession | null"," — obtained from any ",[520,5993,2112],{}," ref via ",[520,5996,5997],{},"decalRef.value?.editor",". Mandatory for the overlay to wire up the interactive logic.",[854,6000,6001],{},[520,6002,3558],{},[836,6004,6005,6009,6023],{},[854,6006,6007],{},[1571,6008,2920],{},[854,6010,6011,6012,6015,6016,6019,6020,6022],{},"Mesh-name-keyed map of decal slices — ",[520,6013,6014],{},"{ sphere: [...], cube: [...] }",". Each key matches a ",[520,6017,6018],{},"\u003CTresMesh name=\"...\">"," whose child ",[520,6021,2112],{}," owns the slice.",[854,6024,6025],{},[520,6026,6027],{},"{}",[836,6029,6030,6034,6037],{},[854,6031,6032],{},[1571,6033,2855],{},[854,6035,6036],{},"The full texture palette shown in the dock's picker.",[854,6038,6039],{},[520,6040,3481],{},[836,6042,6043,6048,6057],{},[854,6044,6045],{},[1571,6046,6047],{},"theme",[854,6049,6050,5513,6053,6056],{},[520,6051,6052],{},"'light'",[520,6054,6055],{},"'dark'"," — overlay theme tokens.",[854,6058,6059],{},[520,6060,6052],{},[836,6062,6063,6068,6071],{},[854,6064,6065],{},[1571,6066,6067],{},"snapAngle",[854,6069,6070],{},"Rotation step (degrees) applied when the snap toggle is on. Snap-tick ring on the handle adapts automatically.",[854,6072,6073],{},[520,6074,6075],{},"15",[836,6077,6078,6083,6095],{},[854,6079,6080],{},[1571,6081,6082],{},"exportFilename",[854,6084,6085,6086,5623,6088,6090,6091,6094],{},"Filename for the built-in JSON download. When omitted, defaults to ",[520,6087,4081],{},[520,6089,3558],{}," to skip the auto-download (the ",[520,6092,6093],{},"@export"," event still fires).",[854,6096,6097],{},[520,6098,4081],{},[836,6100,6101,6105,6108],{},[854,6102,6103],{},[1571,6104,4008],{},[854,6106,6107],{},"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.",[854,6109,6110],{},[520,6111,874],{},[525,6113,6115,5652],{"id":6114},"decaldebugui-events",[520,6116,2127],{},[830,6118,6119,6129],{},[833,6120,6121],{},[836,6122,6123,6125,6127],{},[839,6124,5661],{},[839,6126,5664],{},[839,6128,844],{},[849,6130,6131,6145],{},[836,6132,6133,6137,6142],{},[854,6134,6135],{},[520,6136,1097],{},[854,6138,6139],{},[520,6140,6141],{},"DecalLayout",[854,6143,6144],{},"Fires after the user clicks Export. The download (if enabled) has already been triggered — use this for side effects (POST, analytics…).",[836,6146,6147,6151,6155],{},[854,6148,6149],{},[520,6150,580],{},[854,6152,6153],{},[520,6154,6141],{},[854,6156,6157],{},"Fires after the user picks a JSON file. The layout has been sanitised (unknown keys dropped) and already applied to the bound Decals.",[525,6159,6161],{"id":6160},"caveats","Caveats",[2115,6163,6164,6179,6196,6212],{},[2118,6165,6166,6167,6170,6171,6174,6175,6178],{},"✨ The overlay sits at ",[520,6168,6169],{},"position: fixed; inset: 0; pointer-events: none"," with\nindividual panels opting back in. It sits ",[1571,6172,6173],{},"above"," the canvas by default\n(",[520,6176,6177],{},"z-index: 1000000",") — adjust via host CSS if needed.",[2118,6180,6181,6182,6184,6185,6188,6189,1574,6192,6195],{},"🎨 ",[520,6183,2127],{}," ships its own theme in a global stylesheet under the\n",[520,6186,6187],{},".cientos-decal-ui"," namespace, so host styles aren't affected. The CSS\nvariables (",[520,6190,6191],{},"--accent",[520,6193,6194],{},"--dock-bg",", etc.) can be overridden by targeting\nthe namespace.",[2118,6197,6198,6199,6202,6203,6205,6206,6208,6209,6211],{},"🔶 Decals are ",[1571,6200,6201],{},"per-canvas"," — if you have multiple ",[520,6204,3099],{}," in your\napp, each one has its own independent session. Pair each ",[520,6207,2127],{},"\nwith the right ",[520,6210,3637],{}," (from one of the Decals inside that canvas).",[2118,6213,6214,6215,1049],{},"🧩 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 ",[520,6216,6217],{},":mesh=\"meshRef\"",[525,6219,6221],{"id":6220},"limitations","Limitations",[1907,6223,6224,6238,6245,6288],{},[516,6225,6226,6227,6230,6231,3238,6233,3238,6235,6237],{},"Decal vertices are baked into the ",[1571,6228,6229],{},"target mesh's local space"," at\nbuild time (the decal mesh is imperatively re-parented to the target,\nso ",[520,6232,4032],{},[520,6234,5529],{},[520,6236,5532],{}," on the parent are followed via\nthe scene graph — no rebuild needed).",[516,6239,6240,6241,6244],{},"Runtime deformations that change vertex positions outside of a\ntransform are ",[1571,6242,6243],{},"not"," followed:",[2115,6246,6247,6260,6268,6275],{},[2118,6248,6249,6254,6255,1049],{},[1571,6250,6251],{},[520,6252,6253],{},"SkinnedMesh"," skinning is not applied — the decal stays in rest\npose. See ",[1043,6256,6259],{"href":6257,"rel":6258},"https://github.com/mrdoob/three.js/issues/7926",[1047],"three.js#7926",[2118,6261,6262,6267],{},[1571,6263,6264],{},[520,6265,6266],{},"morphAttributes"," on the parent are ignored.",[2118,6269,6270,6271,6274],{},"Direct mutations of the parent's ",[520,6272,6273],{},"geometry.attributes.position","\n(e.g. CPU wave displacement, GPGPU) — the projection is baked once.",[2118,6276,6277,6278,6282,6283,6285,6286,1049],{},"Decals near silhouettes can wrap around onto opposite faces (see\n",[1043,6279,6281],{"href":5620,"rel":6280},[1047],"three.js#21187",") —\nmitigated by the ",[520,6284,5610],{}," prop, default ",[520,6287,5631],{},[516,6289,6290,6292],{},[520,6291,2112],{}," warns once per parent mesh when it detects these conditions.",[525,6294,6296],{"id":6295},"keyboard-shortcuts","Keyboard shortcuts",[830,6298,6299,6309],{},[833,6300,6301],{},[836,6302,6303,6306],{},[839,6304,6305],{},"Shortcut",[839,6307,6308],{},"Action",[849,6310,6311,6320,6329,6341,6354,6367],{},[836,6312,6313,6317],{},[854,6314,6315],{},[520,6316,5929],{},[854,6318,6319],{},"Confirm the in-flight edit",[836,6321,6322,6326],{},[854,6323,6324],{},[520,6325,5766],{},[854,6327,6328],{},"Cancel (revert updates, drop pending placements)",[836,6330,6331,6338],{},[854,6332,6333,3238,6335],{},[520,6334,5729],{},[520,6336,6337],{},"⌫",[854,6339,6340],{},"Delete the edited decal (or cancel a create)",[836,6342,6343,6351],{},[854,6344,6345,3238,6348],{},[520,6346,6347],{},"⌘Z",[520,6349,6350],{},"Ctrl+Z",[854,6352,6353],{},"Undo",[836,6355,6356,6364],{},[854,6357,6358,3238,6361],{},[520,6359,6360],{},"⇧⌘Z",[520,6362,6363],{},"Ctrl+⇧Z",[854,6365,6366],{},"Redo",[836,6368,6369,6372],{},[854,6370,6371],{},"Click outside",[854,6373,6374],{},"Auto-commit an in-flight update; cancel a create",[525,6376,6378,6379,3242],{"id":6377},"programmatic-api-usedecaleditor","Programmatic API (",[520,6380,6381],{},"useDecalEditor",[516,6383,6384,6385,6387,6388,6390,6391,6393,6394,6396],{},"Skip ",[520,6386,2127],{}," entirely or augment it with custom panels —\n",[520,6389,2140],{}," returns the same canvas-scoped session every Decal\nshares. Call it from any component inside ",[520,6392,3099],{}," (after at\nleast one ",[520,6395,2112],{}," has mounted).",[529,6398,6400],{"className":1089,"code":6399,"language":567,"meta":488,"style":488},"import { useDecalEditor } from '@tresjs/cientos'\n\nconst session = useDecalEditor()\n",[520,6401,6402,6421,6425],{"__ignoreMap":488},[540,6403,6404,6406,6408,6411,6413,6415,6417,6419],{"class":542,"line":489},[540,6405,580],{"class":579},[540,6407,583],{"class":545},[540,6409,6410],{"class":586}," useDecalEditor",[540,6412,596],{"class":545},[540,6414,599],{"class":579},[540,6416,602],{"class":545},[540,6418,605],{"class":566},[540,6420,608],{"class":545},[540,6422,6423],{"class":542,"line":490},[540,6424,645],{"emptyLinePlaceholder":496},[540,6426,6427,6429,6431,6433,6435],{"class":542,"line":611},[540,6428,2317],{"class":553},[540,6430,3567],{"class":586},[540,6432,560],{"class":545},[540,6434,6410],{"class":2336},[540,6436,6437],{"class":586},"()\n",[516,6439,6440,6441,1574,6444,2390,6447,1574,6450,6453,6454,2390,6456,1574,6459,1574,6462,6465,6466,6469,6470,6473,6474,1574,6477,1574,6480,2390,6483,6486],{},"The session exposes reactive state (",[520,6442,6443],{},"editingEntry",[520,6445,6446],{},"editingMode",[520,6448,6449],{},"canUndo",[520,6451,6452],{},"canRedo",", …), by-id mutators (",[520,6455,5900],{},[520,6457,6458],{},"setZIndexById",[520,6460,6461],{},"setVisibilityById",[520,6463,6464],{},"removeById","), batched updates\n(",[520,6467,6468],{},"setMeshData","), commit / delete / cancel listeners, undo / redo, and\na ",[520,6471,6472],{},"registerDecalEntry"," hook for external entries. Helper utilities\n(",[520,6475,6476],{},"ensureTextureNames",[520,6478,6479],{},"getTextureName",[520,6481,6482],{},"getTextureAspect",[520,6484,6485],{},"invalidateDecalGeometry",") are exported alongside.",[5209,6488,5211,6489,6492,6496,6571,6575,6646,6662,6666,6702,6708,6712,6851,6855,6901,6904,6908,6922,7092,7096],{},[5213,6490,6491],{},"Full API reference",[3953,6493,6495],{"id":6494},"reactive-state","Reactive state",[529,6497,6499],{"className":1089,"code":6498,"language":567,"meta":488,"style":488},"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",[520,6500,6501,6513,6525,6537,6548,6560],{"__ignoreMap":488},[540,6502,6503,6505,6507,6510],{"class":542,"line":489},[540,6504,3637],{"class":586},[540,6506,1049],{"class":545},[540,6508,6509],{"class":586},"editingEntry ",[540,6511,6512],{"class":1112},"// ShallowRef\u003CDecalEntry | null>\n",[540,6514,6515,6517,6519,6522],{"class":542,"line":490},[540,6516,3637],{"class":586},[540,6518,1049],{"class":545},[540,6520,6521],{"class":586},"editingMode ",[540,6523,6524],{"class":1112},"// Ref\u003C'create' | 'update' | null>\n",[540,6526,6527,6529,6531,6534],{"class":542,"line":611},[540,6528,3637],{"class":586},[540,6530,1049],{"class":545},[540,6532,6533],{"class":586},"lockedMeshUuid ",[540,6535,6536],{"class":1112},"// Ref\u003Cstring | null>\n",[540,6538,6539,6541,6543,6546],{"class":542,"line":632},[540,6540,3637],{"class":586},[540,6542,1049],{"class":545},[540,6544,6545],{"class":586},"hoveredEntry ",[540,6547,6512],{"class":1112},[540,6549,6550,6552,6554,6557],{"class":542,"line":642},[540,6551,3637],{"class":586},[540,6553,1049],{"class":545},[540,6555,6556],{"class":586},"canUndo ",[540,6558,6559],{"class":1112},"// Ref\u003Cboolean>\n",[540,6561,6562,6564,6566,6569],{"class":542,"line":648},[540,6563,3637],{"class":586},[540,6565,1049],{"class":545},[540,6567,6568],{"class":586},"canRedo ",[540,6570,6559],{"class":1112},[3953,6572,6574],{"id":6573},"mutating-decals-by-id","Mutating decals by id",[529,6576,6578],{"className":1089,"code":6577,"language":567,"meta":488,"style":488},"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",[520,6579,6580,6594,6613,6633],{"__ignoreMap":488},[540,6581,6582,6584,6586,6588,6591],{"class":542,"line":489},[540,6583,3637],{"class":586},[540,6585,1049],{"class":545},[540,6587,5900],{"class":2336},[540,6589,6590],{"class":586},"(id) ",[540,6592,6593],{"class":1112},"// start editing a placed decal\n",[540,6595,6596,6598,6600,6602,6605,6607,6610],{"class":542,"line":490},[540,6597,3637],{"class":586},[540,6599,1049],{"class":545},[540,6601,6458],{"class":2336},[540,6603,6604],{"class":586},"(id",[540,6606,590],{"class":545},[540,6608,6609],{"class":586}," newZ) ",[540,6611,6612],{"class":1112},"// reorder one decal\n",[540,6614,6615,6617,6619,6621,6623,6625,6628,6630],{"class":542,"line":611},[540,6616,3637],{"class":586},[540,6618,1049],{"class":545},[540,6620,6461],{"class":2336},[540,6622,6604],{"class":586},[540,6624,590],{"class":545},[540,6626,6627],{"class":4299}," false",[540,6629,4636],{"class":586},[540,6631,6632],{"class":1112},"// hide / show\n",[540,6634,6635,6637,6639,6641,6643],{"class":542,"line":632},[540,6636,3637],{"class":586},[540,6638,1049],{"class":545},[540,6640,6464],{"class":2336},[540,6642,6590],{"class":586},[540,6644,6645],{"class":1112},"// delete\n",[516,6647,6648,6649,6652,6653,6655,6656,6658,6659,6661],{},"When the targeted id matches the ",[1571,6650,6651],{},"currently editing"," entry, mutations\nland on the in-flight buffer (committed on ",[520,6654,5929],{},", reverted on ",[520,6657,5766],{},").\nOtherwise they update ",[520,6660,2920],{}," immediately and record history.",[3953,6663,6665],{"id":6664},"batched-mesh-updates","Batched mesh updates",[529,6667,6669],{"className":1089,"code":6668,"language":567,"meta":488,"style":488},"session.setMeshData(meshName, nextEntries, { recordHistory: true })\n",[520,6670,6671],{"__ignoreMap":488},[540,6672,6673,6675,6677,6679,6682,6684,6687,6689,6691,6694,6696,6698,6700],{"class":542,"line":489},[540,6674,3637],{"class":586},[540,6676,1049],{"class":545},[540,6678,6468],{"class":2336},[540,6680,6681],{"class":586},"(meshName",[540,6683,590],{"class":545},[540,6685,6686],{"class":586}," nextEntries",[540,6688,590],{"class":545},[540,6690,583],{"class":545},[540,6692,6693],{"class":549}," recordHistory",[540,6695,1121],{"class":545},[540,6697,4300],{"class":4299},[540,6699,596],{"class":545},[540,6701,2350],{"class":586},[516,6703,6704,6705,6707],{},"A single emit avoids the stale-snapshot race that hits multiple\nback-to-back ",[520,6706,6458],{}," calls in the same tick.",[3953,6709,6711],{"id":6710},"listening-to-commits","Listening to commits",[529,6713,6715],{"className":1089,"code":6714,"language":567,"meta":488,"style":488},"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",[520,6716,6717,6752,6777,6783,6811,6834,6838,6843],{"__ignoreMap":488},[540,6718,6719,6721,6724,6726,6729,6731,6734,6736,6738,6741,6743,6746,6748,6750],{"class":542,"line":489},[540,6720,2317],{"class":553},[540,6722,6723],{"class":586}," off ",[540,6725,560],{"class":545},[540,6727,6728],{"class":586}," session",[540,6730,1049],{"class":545},[540,6732,6733],{"class":2336},"onCommit",[540,6735,2339],{"class":586},[540,6737,2339],{"class":545},[540,6739,5749],{"class":6740},"sHdIc",[540,6742,590],{"class":545},[540,6744,6745],{"class":6740}," mode",[540,6747,3242],{"class":545},[540,6749,3579],{"class":553},[540,6751,1107],{"class":545},[540,6753,6754,6757,6759,6762,6764,6767,6769,6772,6774],{"class":542,"line":490},[540,6755,6756],{"class":586},"  console",[540,6758,1049],{"class":545},[540,6760,6761],{"class":2336},"log",[540,6763,2339],{"class":549},[540,6765,6766],{"class":586},"mode",[540,6768,590],{"class":545},[540,6770,6771],{"class":586}," entry",[540,6773,4636],{"class":549},[540,6775,6776],{"class":1112},"// mode: 'create' | 'update'\n",[540,6778,6779,6781],{"class":542,"line":611},[540,6780,2330],{"class":545},[540,6782,2350],{"class":586},[540,6784,6785,6787,6789,6792,6794,6796,6798,6800,6802,6804,6807,6809],{"class":542,"line":632},[540,6786,3637],{"class":586},[540,6788,1049],{"class":545},[540,6790,6791],{"class":2336},"onDelete",[540,6793,2339],{"class":586},[540,6795,2339],{"class":545},[540,6797,5749],{"class":6740},[540,6799,3242],{"class":545},[540,6801,3579],{"class":553},[540,6803,583],{"class":545},[540,6805,6806],{"class":1112}," /* … */",[540,6808,596],{"class":545},[540,6810,2350],{"class":586},[540,6812,6813,6815,6817,6820,6822,6824,6826,6828,6830,6832],{"class":542,"line":642},[540,6814,3637],{"class":586},[540,6816,1049],{"class":545},[540,6818,6819],{"class":2336},"onCancel",[540,6821,2339],{"class":586},[540,6823,3576],{"class":545},[540,6825,3579],{"class":553},[540,6827,583],{"class":545},[540,6829,6806],{"class":1112},[540,6831,596],{"class":545},[540,6833,2350],{"class":586},[540,6835,6836],{"class":542,"line":648},[540,6837,645],{"emptyLinePlaceholder":496},[540,6839,6840],{"class":542,"line":658},[540,6841,6842],{"class":1112},"// All return an unsubscribe function:\n",[540,6844,6845,6848],{"class":542,"line":681},[540,6846,6847],{"class":2336},"onBeforeUnmount",[540,6849,6850],{"class":586},"(off)\n",[3953,6852,6854],{"id":6853},"undo-redo","Undo / redo",[529,6856,6858],{"className":1089,"code":6857,"language":567,"meta":488,"style":488},"session.canUndo.value // Ref\u003Cboolean>\nsession.undo() // returns true if something was undone\nsession.redo()\n",[520,6859,6860,6875,6890],{"__ignoreMap":488},[540,6861,6862,6864,6866,6868,6870,6873],{"class":542,"line":489},[540,6863,3637],{"class":586},[540,6865,1049],{"class":545},[540,6867,6449],{"class":586},[540,6869,1049],{"class":545},[540,6871,6872],{"class":586},"value ",[540,6874,6559],{"class":1112},[540,6876,6877,6879,6881,6884,6887],{"class":542,"line":490},[540,6878,3637],{"class":586},[540,6880,1049],{"class":545},[540,6882,6883],{"class":2336},"undo",[540,6885,6886],{"class":586},"() ",[540,6888,6889],{"class":1112},"// returns true if something was undone\n",[540,6891,6892,6894,6896,6899],{"class":542,"line":611},[540,6893,3637],{"class":586},[540,6895,1049],{"class":545},[540,6897,6898],{"class":2336},"redo",[540,6900,6437],{"class":586},[516,6902,6903],{},"History is per-canvas, capped at 100 operations, disabled mid-edit.",[3953,6905,6907],{"id":6906},"power-user-external-entries","Power user — external entries",[516,6909,6910,6911,6913,6914,6917,6918,6921],{},"Plug a decal-like object that lives outside a ",[520,6912,2112],{}," (custom data\nsource, server snapshot, fake entry for tests) by registering a\n",[520,6915,6916],{},"DecalEntryActions"," bundle so the ",[520,6919,6920],{},"*ById"," session methods route to it:",[529,6923,6925],{"className":1089,"code":6924,"language":567,"meta":488,"style":488},"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",[520,6926,6927,6948,6952,6973,6992,7014,7036,7053,7064],{"__ignoreMap":488},[540,6928,6929,6931,6933,6935,6938,6940,6942,6944,6946],{"class":542,"line":489},[540,6930,580],{"class":579},[540,6932,3344],{"class":579},[540,6934,583],{"class":545},[540,6936,6937],{"class":586}," DecalEntryActions",[540,6939,596],{"class":545},[540,6941,599],{"class":579},[540,6943,602],{"class":545},[540,6945,605],{"class":566},[540,6947,608],{"class":545},[540,6949,6950],{"class":542,"line":490},[540,6951,645],{"emptyLinePlaceholder":496},[540,6953,6954,6956,6958,6960,6962,6964,6967,6969,6971],{"class":542,"line":611},[540,6955,3637],{"class":586},[540,6957,1049],{"class":545},[540,6959,6472],{"class":2336},[540,6961,2339],{"class":586},[540,6963,2342],{"class":545},[540,6965,6966],{"class":566},"decal-7",[540,6968,2342],{"class":545},[540,6970,590],{"class":545},[540,6972,1107],{"class":545},[540,6974,6975,6978,6980,6983,6985,6987,6989],{"class":542,"line":632},[540,6976,6977],{"class":2336},"  beginEdit",[540,6979,1121],{"class":545},[540,6981,6982],{"class":545}," ()",[540,6984,3579],{"class":553},[540,6986,583],{"class":545},[540,6988,6806],{"class":1112},[540,6990,6991],{"class":545}," },\n",[540,6993,6994,6997,6999,7001,7004,7006,7008,7010,7012],{"class":542,"line":642},[540,6995,6996],{"class":2336},"  setZIndex",[540,6998,1121],{"class":545},[540,7000,2976],{"class":545},[540,7002,7003],{"class":6740},"newZ",[540,7005,3242],{"class":545},[540,7007,3579],{"class":553},[540,7009,583],{"class":545},[540,7011,6806],{"class":1112},[540,7013,6991],{"class":545},[540,7015,7016,7019,7021,7023,7026,7028,7030,7032,7034],{"class":542,"line":648},[540,7017,7018],{"class":2336},"  setVisibility",[540,7020,1121],{"class":545},[540,7022,2976],{"class":545},[540,7024,7025],{"class":6740},"visible",[540,7027,3242],{"class":545},[540,7029,3579],{"class":553},[540,7031,583],{"class":545},[540,7033,6806],{"class":1112},[540,7035,6991],{"class":545},[540,7037,7038,7041,7043,7045,7047,7049,7051],{"class":542,"line":658},[540,7039,7040],{"class":2336},"  remove",[540,7042,1121],{"class":545},[540,7044,6982],{"class":545},[540,7046,3579],{"class":553},[540,7048,583],{"class":545},[540,7050,6806],{"class":1112},[540,7052,6991],{"class":545},[540,7054,7055,7057,7060,7062],{"class":542,"line":681},[540,7056,2330],{"class":545},[540,7058,7059],{"class":579}," satisfies",[540,7061,6937],{"class":1103},[540,7063,2350],{"class":586},[540,7065,7066,7068,7070,7072,7074,7076,7078,7081,7083,7085,7087,7089],{"class":542,"line":693},[540,7067,6847],{"class":2336},[540,7069,2339],{"class":586},[540,7071,3576],{"class":545},[540,7073,3579],{"class":553},[540,7075,6728],{"class":586},[540,7077,1049],{"class":545},[540,7079,7080],{"class":2336},"unregisterDecalEntry",[540,7082,2339],{"class":586},[540,7084,2342],{"class":545},[540,7086,6966],{"class":566},[540,7088,2342],{"class":545},[540,7090,7091],{"class":586},"))\n",[3953,7093,7095],{"id":7094},"helper-utilities","Helper utilities",[830,7097,7098,7107],{},[833,7099,7100],{},[836,7101,7102,7104],{},[839,7103,295],{},[839,7105,7106],{},"Use",[849,7108,7109,7129,7141,7154],{},[836,7110,7111,7116],{},[854,7112,7113],{},[520,7114,7115],{},"ensureTextureNames(textures)",[854,7117,7118,7119,7121,7122,7125,7126,1049],{},"Back-fills ",[520,7120,2879],{}," from ",[520,7123,7124],{},"userData.name"," or the filename in ",[520,7127,7128],{},"image.src",[836,7130,7131,7136],{},[854,7132,7133],{},[520,7134,7135],{},"getTextureName(texture)",[854,7137,7138,7139,1049],{},"Single-texture variant — returns a stable name or ",[520,7140,3558],{},[836,7142,7143,7148],{},[854,7144,7145],{},[520,7146,7147],{},"getTextureAspect(texture)",[854,7149,7150,7153],{},[520,7151,7152],{},"{ x, y }"," aspect ratio for custom-sized decals.",[836,7155,7156,7161],{},[854,7157,7158],{},[520,7159,7160],{},"invalidateDecalGeometry(mesh)",[854,7162,7163],{},"Force a rebuild on the next frame — call when the parent mesh moved or swapped.",[1230,7165,7166],{},"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":488,"searchDepth":489,"depth":490,"links":7168},[7169,7170,7171,7172,7173,7177,7178,7186,7187,7189,7191,7193,7195,7197,7198,7199,7200],{"id":527,"depth":490,"text":15},{"id":2692,"depth":490,"text":2693},{"id":2887,"depth":490,"text":2161},{"id":2984,"depth":490,"text":2985},{"id":3079,"depth":490,"text":7174,"children":7175},"Editable mode + \u003CDecalDebugUI>",[7176],{"id":3955,"depth":611,"text":3956},{"id":4075,"depth":490,"text":3281},{"id":4174,"depth":490,"text":7179,"children":7180},"Targeting a loaded model (.glb)",[7181,7183,7185],{"id":4201,"depth":611,"text":7182},"When :object is a Mesh",{"id":4423,"depth":611,"text":7184},"When :object is a Group",{"id":4764,"depth":611,"text":4765},{"id":5190,"depth":490,"text":5191},{"id":5447,"depth":490,"text":7188},"\u003CDecal> props",{"id":5649,"depth":490,"text":7190},"\u003CDecal> events",{"id":5790,"depth":490,"text":7192},"\u003CDecal> exposed (via ref)",{"id":5963,"depth":490,"text":7194},"\u003CDecalDebugUI> props",{"id":6114,"depth":490,"text":7196},"\u003CDecalDebugUI> events",{"id":6160,"depth":490,"text":6161},{"id":6220,"depth":490,"text":6221},{"id":6295,"depth":490,"text":6296},{"id":6377,"depth":490,"text":7201},"Programmatic API (useDecalEditor)","Project a texture onto a mesh's surface — with an optional in-canvas editor UI.",{},{"title":49,"description":7202},"nqt2hDhRcN1seFAcvm0knRwz3m-KmMDv-8VwRbWGyfQ",{"id":7207,"title":53,"body":7208,"description":7496,"extension":493,"links":494,"meta":7497,"navigation":496,"path":54,"seo":7498,"stem":55,"__hash__":7499},"docs/2.api/1.abstractions/edges.md",{"type":481,"value":7209,"toc":7492},[7210,7215,7231,7233,7410,7412,7429,7490],[510,7211,7212],{},[7213,7214],"abstractions-edges",{},[516,7216,2678,7217,7220,7221,7226,7227,7230],{},[520,7218,7219],{},"cientos"," package provides an abstraction of ",[1043,7222,7225],{"href":7223,"rel":7224},"https://threejs.org/docs/#api/en/geometries/EdgesGeometry",[1047],"EdgesGeometry"," from Three.js, ",[520,7228,7229],{},"\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.",[525,7232,15],{"id":527},[529,7234,7237],{"className":531,"code":7235,"highlights":7236,"language":536,"meta":488,"style":488},"\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",[611,730],[520,7238,7239,7259,7277,7305,7313,7317,7325,7333,7352,7360,7368,7377,7386,7394,7402],{"__ignoreMap":488},[540,7240,7241,7243,7245,7247,7249,7251,7253,7255,7257],{"class":542,"line":489},[540,7242,546],{"class":545},[540,7244,550],{"class":549},[540,7246,554],{"class":553},[540,7248,557],{"class":553},[540,7250,560],{"class":545},[540,7252,563],{"class":545},[540,7254,567],{"class":566},[540,7256,563],{"class":545},[540,7258,572],{"class":545},[540,7260,7261,7263,7265,7267,7269,7271,7273,7275],{"class":542,"line":490},[540,7262,580],{"class":579},[540,7264,583],{"class":545},[540,7266,618],{"class":586},[540,7268,596],{"class":545},[540,7270,599],{"class":579},[540,7272,602],{"class":545},[540,7274,627],{"class":566},[540,7276,608],{"class":545},[540,7278,7280,7282,7284,7286,7288,7291,7293,7295,7297,7299,7301,7303],{"class":7279,"line":611},[542,576],[540,7281,580],{"class":579},[540,7283,583],{"class":545},[540,7285,1299],{"class":586},[540,7287,590],{"class":545},[540,7289,7290],{"class":586}," Edges",[540,7292,590],{"class":545},[540,7294,593],{"class":586},[540,7296,596],{"class":545},[540,7298,599],{"class":579},[540,7300,602],{"class":545},[540,7302,605],{"class":566},[540,7304,608],{"class":545},[540,7306,7307,7309,7311],{"class":542,"line":632},[540,7308,635],{"class":545},[540,7310,550],{"class":549},[540,7312,572],{"class":545},[540,7314,7315],{"class":542,"line":642},[540,7316,645],{"emptyLinePlaceholder":496},[540,7318,7319,7321,7323],{"class":542,"line":648},[540,7320,546],{"class":545},[540,7322,653],{"class":549},[540,7324,572],{"class":545},[540,7326,7327,7329,7331],{"class":542,"line":658},[540,7328,661],{"class":545},[540,7330,664],{"class":549},[540,7332,572],{"class":545},[540,7334,7335,7337,7339,7341,7343,7345,7348,7350],{"class":542,"line":681},[540,7336,684],{"class":545},[540,7338,687],{"class":549},[540,7340,1387],{"class":553},[540,7342,560],{"class":545},[540,7344,563],{"class":545},[540,7346,7347],{"class":566},"[0, 2, 5]",[540,7349,563],{"class":545},[540,7351,690],{"class":545},[540,7353,7354,7356,7358],{"class":542,"line":693},[540,7355,684],{"class":545},[540,7357,698],{"class":549},[540,7359,690],{"class":545},[540,7361,7362,7364,7366],{"class":542,"line":703},[540,7363,684],{"class":545},[540,7365,201],{"class":549},[540,7367,572],{"class":545},[540,7369,7370,7372,7375],{"class":542,"line":708},[540,7371,756],{"class":545},[540,7373,7374],{"class":549},"TresMeshBasicMaterial",[540,7376,690],{"class":545},[540,7378,7380,7382,7384],{"class":7379,"line":730},[542,576],[540,7381,756],{"class":545},[540,7383,53],{"class":549},[540,7385,690],{"class":545},[540,7387,7388,7390,7392],{"class":542,"line":534},[540,7389,798],{"class":545},[540,7391,201],{"class":549},[540,7393,572],{"class":545},[540,7395,7396,7398,7400],{"class":542,"line":753},[540,7397,808],{"class":545},[540,7399,664],{"class":549},[540,7401,572],{"class":545},[540,7403,7404,7406,7408],{"class":542,"line":764},[540,7405,635],{"class":545},[540,7407,653],{"class":549},[540,7409,572],{"class":545},[525,7411,825],{"id":824},[516,7413,7414,7416,7417,7422,7423,7428],{},[520,7415,7229],{}," is based on ",[1043,7418,7421],{"href":7419,"rel":7420},"https://threejs.org/docs/#api/en/objects/LineSegments",[1047],"LineSegments"," & ",[1043,7424,7427],{"href":7425,"rel":7426},"https://threejs.org/docs/#api/en/objects/Line",[1047],"Line"," and supports all of its props.",[830,7430,7431,7441],{},[833,7432,7433],{},[836,7434,7435,7437,7439],{},[839,7436,841],{"align":900},[839,7438,844],{"align":900},[839,7440,847],{},[849,7442,7443,7474],{},[836,7444,7445,7450,7469],{},[854,7446,7447],{"align":900},[1571,7448,7449],{},"color",[854,7451,7452,7455,7456,7459,7460,2169,7465],{"align":900},[520,7453,7454],{},"THREE.Color"," — Color of the edges. ",[7457,7458],"br",{}," More informations : ",[1043,7461,7464],{"href":7462,"rel":7463},"https://docs.tresjs.org/api/instances-arguments-and-props.html#colors",[1047],"TresColor",[1043,7466,7454],{"href":7467,"rel":7468},"https://threejs.org/docs/#api/en/math/Color",[1047],[854,7470,7471],{},[520,7472,7473],{},"#ff0000",[836,7475,7476,7481,7486],{},[854,7477,7478],{"align":900},[1571,7479,7480],{},"threshold",[854,7482,7483,7485],{"align":900},[520,7484,5254],{}," — An edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value",[854,7487,7488],{},[520,7489,1776],{},[1230,7491,1546],{},{"title":488,"searchDepth":489,"depth":490,"links":7493},[7494,7495],{"id":527,"depth":490,"text":15},{"id":824,"depth":490,"text":825},"Render visible edges of objects with enhanced visual quality.",{},{"title":53,"description":7496},"mRAeZ9k02RaCisz4JzfTtekMB9_pkyMIRW_17D1E3qo",{"id":7501,"title":57,"body":7502,"description":8121,"extension":493,"links":494,"meta":8122,"navigation":496,"path":58,"seo":8123,"stem":59,"__hash__":8124},"docs/2.api/1.abstractions/fit.md",{"type":481,"value":7503,"toc":8117},[7504,7509,7515,7525,7531,7533,7981,7983,8114],[2197,7505,7506],{},[7507,7508],"abstractions-fit",{},[516,7510,7511,7514],{},[520,7512,7513],{},"\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.",[516,7516,7517,7518,7521,7522,1049],{},"Alternatively, the children can be fit into a ",[520,7519,7520],{},"Box3"," or an ",[520,7523,7524],{},"Object3D",[516,7526,7527,7528,7530],{},"Or the children can simply be resized. With ",[520,7529,7513],{}," the children are scaled relative to the center of their calculated bounding box.",[525,7532,15],{"id":527},[529,7534,7537],{"className":531,"code":7535,"highlights":7536,"language":536,"meta":488,"style":488},"\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",[490,815,2605],[520,7538,7539,7559,7583,7601,7625,7629,7648,7690,7728,7755,7760,7764,7780,7795,7803,7807,7815,7834,7852,7860,7869,7875,7889,7903,7917,7931,7936,7945,7965,7973],{"__ignoreMap":488},[540,7540,7541,7543,7545,7547,7549,7551,7553,7555,7557],{"class":542,"line":489},[540,7542,546],{"class":545},[540,7544,550],{"class":549},[540,7546,554],{"class":553},[540,7548,557],{"class":553},[540,7550,560],{"class":545},[540,7552,563],{"class":545},[540,7554,567],{"class":566},[540,7556,563],{"class":545},[540,7558,572],{"class":545},[540,7560,7562,7564,7566,7569,7571,7573,7575,7577,7579,7581],{"class":7561,"line":490},[542,576],[540,7563,580],{"class":579},[540,7565,583],{"class":545},[540,7567,7568],{"class":586}," Fit",[540,7570,590],{"class":545},[540,7572,593],{"class":586},[540,7574,596],{"class":545},[540,7576,599],{"class":579},[540,7578,602],{"class":545},[540,7580,605],{"class":566},[540,7582,608],{"class":545},[540,7584,7585,7587,7589,7591,7593,7595,7597,7599],{"class":542,"line":611},[540,7586,580],{"class":579},[540,7588,583],{"class":545},[540,7590,618],{"class":586},[540,7592,596],{"class":545},[540,7594,599],{"class":579},[540,7596,602],{"class":545},[540,7598,627],{"class":566},[540,7600,608],{"class":545},[540,7602,7603,7605,7607,7610,7612,7615,7617,7619,7621,7623],{"class":542,"line":632},[540,7604,580],{"class":579},[540,7606,583],{"class":545},[540,7608,7609],{"class":586}," BoxGeometry",[540,7611,590],{"class":545},[540,7613,7614],{"class":586}," MeshNormalMaterial",[540,7616,596],{"class":545},[540,7618,599],{"class":579},[540,7620,602],{"class":545},[540,7622,4528],{"class":566},[540,7624,608],{"class":545},[540,7626,7627],{"class":542,"line":642},[540,7628,645],{"emptyLinePlaceholder":496},[540,7630,7631,7633,7636,7638,7640,7643,7645],{"class":542,"line":648},[540,7632,2317],{"class":553},[540,7634,7635],{"class":586}," positions",[540,7637,1121],{"class":545},[540,7639,5259],{"class":1103},[540,7641,7642],{"class":586},"[][] ",[540,7644,560],{"class":545},[540,7646,7647],{"class":586}," []\n",[540,7649,7650,7653,7655,7658,7661,7663,7666,7668,7670,7673,7676,7678,7680,7683,7686,7688],{"class":542,"line":658},[540,7651,7652],{"class":579},"for",[540,7654,2976],{"class":586},[540,7656,7657],{"class":553},"let",[540,7659,7660],{"class":586}," y ",[540,7662,560],{"class":545},[540,7664,7665],{"class":2403}," 100",[540,7667,4040],{"class":545},[540,7669,7660],{"class":586},[540,7671,7672],{"class":545},"\u003C=",[540,7674,7675],{"class":2403}," 120",[540,7677,4040],{"class":545},[540,7679,7660],{"class":586},[540,7681,7682],{"class":545},"+=",[540,7684,7685],{"class":2403}," 10",[540,7687,4636],{"class":586},[540,7689,3162],{"class":545},[540,7691,7692,7695,7697,7699,7702,7704,7706,7708,7710,7713,7715,7717,7719,7722,7724,7726],{"class":542,"line":681},[540,7693,7694],{"class":579},"  for",[540,7696,2976],{"class":549},[540,7698,7657],{"class":553},[540,7700,7701],{"class":586}," x",[540,7703,2333],{"class":545},[540,7705,7665],{"class":2403},[540,7707,4040],{"class":545},[540,7709,7701],{"class":586},[540,7711,7712],{"class":545}," \u003C=",[540,7714,7675],{"class":2403},[540,7716,4040],{"class":545},[540,7718,7701],{"class":586},[540,7720,7721],{"class":545}," +=",[540,7723,7685],{"class":2403},[540,7725,4636],{"class":549},[540,7727,3162],{"class":545},[540,7729,7730,7733,7735,7738,7740,7743,7745,7748,7750,7753],{"class":542,"line":693},[540,7731,7732],{"class":586},"    positions",[540,7734,1049],{"class":545},[540,7736,7737],{"class":2336},"push",[540,7739,3431],{"class":549},[540,7741,7742],{"class":586},"x",[540,7744,590],{"class":545},[540,7746,7747],{"class":586}," y",[540,7749,590],{"class":545},[540,7751,7752],{"class":2403}," 9999",[540,7754,2504],{"class":549},[540,7756,7757],{"class":542,"line":703},[540,7758,7759],{"class":545},"  }\n",[540,7761,7762],{"class":542,"line":708},[540,7763,1228],{"class":545},[540,7765,7766,7768,7771,7773,7776,7778],{"class":542,"line":730},[540,7767,2317],{"class":553},[540,7769,7770],{"class":586}," geom ",[540,7772,560],{"class":545},[540,7774,7775],{"class":545}," new",[540,7777,7609],{"class":2336},[540,7779,6437],{"class":586},[540,7781,7782,7784,7787,7789,7791,7793],{"class":542,"line":534},[540,7783,2317],{"class":553},[540,7785,7786],{"class":586}," mat ",[540,7788,560],{"class":545},[540,7790,7775],{"class":545},[540,7792,7614],{"class":2336},[540,7794,6437],{"class":586},[540,7796,7797,7799,7801],{"class":542,"line":753},[540,7798,635],{"class":545},[540,7800,550],{"class":549},[540,7802,572],{"class":545},[540,7804,7805],{"class":542,"line":764},[540,7806,645],{"emptyLinePlaceholder":496},[540,7808,7809,7811,7813],{"class":542,"line":775},[540,7810,546],{"class":545},[540,7812,653],{"class":549},[540,7814,572],{"class":545},[540,7816,7817,7819,7821,7823,7825,7827,7830,7832],{"class":542,"line":785},[540,7818,661],{"class":545},[540,7820,664],{"class":549},[540,7822,667],{"class":553},[540,7824,560],{"class":545},[540,7826,563],{"class":545},[540,7828,7829],{"class":566},"#4F4F4F",[540,7831,563],{"class":545},[540,7833,572],{"class":545},[540,7835,7836,7838,7840,7842,7844,7846,7848,7850],{"class":542,"line":535},[540,7837,684],{"class":545},[540,7839,687],{"class":549},[540,7841,1387],{"class":553},[540,7843,560],{"class":545},[540,7845,563],{"class":545},[540,7847,1868],{"class":566},[540,7849,563],{"class":545},[540,7851,690],{"class":545},[540,7853,7854,7856,7858],{"class":542,"line":805},[540,7855,684],{"class":545},[540,7857,698],{"class":549},[540,7859,690],{"class":545},[540,7861,7863,7865,7867],{"class":7862,"line":815},[542,576],[540,7864,684],{"class":545},[540,7866,57],{"class":549},[540,7868,572],{"class":545},[540,7870,7871,7873],{"class":542,"line":2527},[540,7872,756],{"class":545},[540,7874,5028],{"class":549},[540,7876,7877,7880,7882,7884,7887],{"class":542,"line":2536},[540,7878,7879],{"class":553},"        v-for",[540,7881,560],{"class":545},[540,7883,563],{"class":545},[540,7885,7886],{"class":566},"(pos, index) in positions",[540,7888,3033],{"class":545},[540,7890,7891,7894,7896,7898,7901],{"class":542,"line":2556},[540,7892,7893],{"class":553},"        :key",[540,7895,560],{"class":545},[540,7897,563],{"class":545},[540,7899,7900],{"class":566},"index",[540,7902,3033],{"class":545},[540,7904,7905,7908,7910,7912,7915],{"class":542,"line":2565},[540,7906,7907],{"class":553},"        :position",[540,7909,560],{"class":545},[540,7911,563],{"class":545},[540,7913,7914],{"class":566},"pos",[540,7916,3033],{"class":545},[540,7918,7919,7922,7924,7926,7929],{"class":542,"line":2574},[540,7920,7921],{"class":553},"        :args",[540,7923,560],{"class":545},[540,7925,563],{"class":545},[540,7927,7928],{"class":566},"[geom, mat]",[540,7930,3033],{"class":545},[540,7932,7933],{"class":542,"line":2583},[540,7934,7935],{"class":545},"      />\n",[540,7937,7939,7941,7943],{"class":7938,"line":2605},[542,576],[540,7940,798],{"class":545},[540,7942,57],{"class":549},[540,7944,572],{"class":545},[540,7946,7947,7949,7952,7954,7956,7958,7961,7963],{"class":542,"line":2649},[540,7948,684],{"class":545},[540,7950,7951],{"class":549},"TresGridHelper",[540,7953,1861],{"class":553},[540,7955,560],{"class":545},[540,7957,563],{"class":545},[540,7959,7960],{"class":566},"[1, 1]",[540,7962,563],{"class":545},[540,7964,690],{"class":545},[540,7966,7967,7969,7971],{"class":542,"line":2658},[540,7968,808],{"class":545},[540,7970,664],{"class":549},[540,7972,572],{"class":545},[540,7974,7975,7977,7979],{"class":542,"line":2667},[540,7976,635],{"class":545},[540,7978,653],{"class":549},[540,7980,572],{"class":545},[525,7982,825],{"id":824},[830,7984,7985,7994],{},[833,7986,7987],{},[836,7988,7989,7992],{},[839,7990,7991],{"align":900},"Name",[839,7993,844],{"align":900},[849,7995,7996,8090],{},[836,7997,7998,8003],{},[854,7999,8000],{"align":900},[1571,8001,8002],{},"into",[854,8004,861,8005,8007,8008,8082,8084,8085,8087],{"align":900},[520,8006,8002],{}," is:",[2115,8009,8010,8019,8027,8035,8043,8054,8061],{},[2118,8011,8012,8013,8015,8016,8018],{},"omitted or explicitly ",[520,8014,1082],{},": position/scale children to fit into a 1 × 1 × 1 ",[520,8017,7520],{}," at world origin.",[2118,8020,8021,8023,8024,8026],{},[520,8022,3558],{},": turn off ",[520,8025,7513],{},"; reset scale/position of children.",[2118,8028,8029,8031,8032,1049],{},[520,8030,5254],{},": convert argument to ",[520,8033,8034],{},"Vector3(number, number, number)",[2118,8036,8037,8031,8040,1049],{},[520,8038,8039],{},"[number, number, number]",[520,8041,8042],{},"Vector3",[2118,8044,8045,8047,8048,8050,8051,8053],{},[520,8046,8042],{},": position/scale children to fit inside a ",[520,8049,7520],{}," of size ",[520,8052,8042],{}," at target objects' cumulative center.",[2118,8055,8056,8058,8059,1049],{},[520,8057,7520],{},": position/scale children to fit inside ",[520,8060,7520],{},[2118,8062,8063,8065,8066,8068,8069,8068,8076,8078,8079,8081],{},[520,8064,7524],{},": position/scale children to fit inside calculated ",[520,8067,7520],{},". ",[1043,8070,1041,8073],{"href":8071,"rel":8072},"https://threejs.org/docs/#api/en/math/Box3.setFromObject",[1047],[520,8074,8075],{},"THREE.Box3.setFromObject",[520,8077,7513],{}," must not contain the ",[520,8080,7524],{}," and vice-versa.",[7457,8083],{},"default:",[7457,8086],{},[520,8088,8089],{},"new Box3(new Vector3(-0.5, -0.5, -0.5), new Vector3(0.5, 0.5, 0.5))",[836,8091,8092,8096],{},[854,8093,8094],{"align":900},[1571,8095,1038],{},[854,8097,8098,8106,8108,8084,8110,8112],{"align":900},[1043,8099,1041,8101,8103,8104],{"href":1045,"rel":8100},[1047],[520,8102,1038],{}," argument in ",[520,8105,8075],{},[7457,8107],{},[7457,8109],{},[7457,8111],{},[520,8113,874],{},[1230,8115,8116],{},"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":488,"searchDepth":489,"depth":490,"links":8118},[8119,8120],{"id":527,"depth":490,"text":15},{"id":824,"depth":490,"text":825},"Uniformly scale and position children to fit into a defined space.",{},{"title":57,"description":8121},"8AurvuiiZvTbSuZQKf_ksydDO09mH9Fnt7AaTb_9ZtA",{"id":8126,"title":61,"body":8127,"description":8515,"extension":493,"links":494,"meta":8516,"navigation":496,"path":62,"seo":8517,"stem":63,"__hash__":8518},"docs/2.api/1.abstractions/levioso.md",{"type":481,"value":8128,"toc":8511},[8129,8134,8141,8150,8152,8436,8438,8509],[510,8130,8131],{},[8132,8133],"abstractions-levioso",{},[516,8135,8136],{},[8137,8138],"img",{"alt":8139,"src":8140},"Leviosa","https://media.giphy.com/media/HaCFT5ghY6L1m/giphy.gif",[516,8142,2678,8143,8145,8146,8149],{},[520,8144,7219],{}," package provides a ",[520,8147,8148],{},"\u003CLevioso />"," wrapper that makes its content … float, just like Magic 🪄✨",[525,8151,15],{"id":527},[529,8153,8156],{"className":531,"code":8154,"highlights":8155,"language":536,"meta":488,"style":488},"\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",[611,708,534],[520,8157,8158,8178,8200,8230,8234,8242,8246,8254,8274,8305,8313,8335,8343,8352,8371,8401,8420,8428],{"__ignoreMap":488},[540,8159,8160,8162,8164,8166,8168,8170,8172,8174,8176],{"class":542,"line":489},[540,8161,546],{"class":545},[540,8163,550],{"class":549},[540,8165,554],{"class":553},[540,8167,557],{"class":553},[540,8169,560],{"class":545},[540,8171,563],{"class":545},[540,8173,567],{"class":566},[540,8175,563],{"class":545},[540,8177,572],{"class":545},[540,8179,8180,8182,8184,8186,8188,8190,8193,8195,8197],{"class":542,"line":490},[540,8181,580],{"class":579},[540,8183,583],{"class":545},[540,8185,618],{"class":586},[540,8187,596],{"class":545},[540,8189,599],{"class":579},[540,8191,8192],{"class":545}," \"",[540,8194,627],{"class":566},[540,8196,563],{"class":545},[540,8198,8199],{"class":545},";\n",[540,8201,8203,8205,8207,8210,8212,8214,8216,8218,8220,8222,8224,8226,8228],{"class":8202,"line":611},[542,576],[540,8204,580],{"class":579},[540,8206,583],{"class":545},[540,8208,8209],{"class":586}," Levioso",[540,8211,590],{"class":545},[540,8213,593],{"class":586},[540,8215,590],{"class":545},[540,8217,1299],{"class":586},[540,8219,596],{"class":545},[540,8221,599],{"class":579},[540,8223,8192],{"class":545},[540,8225,605],{"class":566},[540,8227,563],{"class":545},[540,8229,8199],{"class":545},[540,8231,8232],{"class":542,"line":632},[540,8233,645],{"emptyLinePlaceholder":496},[540,8235,8236,8238,8240],{"class":542,"line":642},[540,8237,635],{"class":545},[540,8239,550],{"class":549},[540,8241,572],{"class":545},[540,8243,8244],{"class":542,"line":648},[540,8245,645],{"emptyLinePlaceholder":496},[540,8247,8248,8250,8252],{"class":542,"line":658},[540,8249,546],{"class":545},[540,8251,653],{"class":549},[540,8253,572],{"class":545},[540,8255,8256,8258,8260,8263,8265,8267,8270,8272],{"class":542,"line":681},[540,8257,661],{"class":545},[540,8259,664],{"class":549},[540,8261,8262],{"class":553}," :clear-color",[540,8264,560],{"class":545},[540,8266,563],{"class":545},[540,8268,8269],{"class":566},"0x82dbc5",[540,8271,563],{"class":545},[540,8273,572],{"class":545},[540,8275,8276,8278,8280,8282,8284,8286,8289,8291,8294,8296,8298,8301,8303],{"class":542,"line":693},[540,8277,684],{"class":545},[540,8279,687],{"class":549},[540,8281,1387],{"class":553},[540,8283,560],{"class":545},[540,8285,563],{"class":545},[540,8287,8288],{"class":566},"[0, 0, 5]",[540,8290,563],{"class":545},[540,8292,8293],{"class":553}," :look-at",[540,8295,560],{"class":545},[540,8297,563],{"class":545},[540,8299,8300],{"class":566},"[0, 0, 0]",[540,8302,563],{"class":545},[540,8304,690],{"class":545},[540,8306,8307,8309,8311],{"class":542,"line":703},[540,8308,684],{"class":545},[540,8310,698],{"class":549},[540,8312,690],{"class":545},[540,8314,8316,8318,8321,8324,8326,8328,8331,8333],{"class":8315,"line":708},[542,576],[540,8317,684],{"class":545},[540,8319,8320],{"class":549},"Levioso",[540,8322,8323],{"class":553}," :speed",[540,8325,560],{"class":545},[540,8327,563],{"class":545},[540,8329,8330],{"class":566},"4",[540,8332,563],{"class":545},[540,8334,572],{"class":545},[540,8336,8337,8339,8341],{"class":542,"line":730},[540,8338,756],{"class":545},[540,8340,201],{"class":549},[540,8342,690],{"class":545},[540,8344,8346,8348,8350],{"class":8345,"line":534},[542,576],[540,8347,798],{"class":545},[540,8349,8320],{"class":549},[540,8351,572],{"class":545},[540,8353,8354,8356,8359,8361,8363,8365,8367,8369],{"class":542,"line":753},[540,8355,684],{"class":545},[540,8357,8358],{"class":549},"TresAmbientLight",[540,8360,1769],{"class":553},[540,8362,560],{"class":545},[540,8364,563],{"class":545},[540,8366,1776],{"class":566},[540,8368,563],{"class":545},[540,8370,690],{"class":545},[540,8372,8373,8375,8378,8380,8382,8384,8386,8388,8390,8392,8394,8397,8399],{"class":542,"line":764},[540,8374,684],{"class":545},[540,8376,8377],{"class":549},"TresDirectionalLight",[540,8379,1769],{"class":553},[540,8381,560],{"class":545},[540,8383,563],{"class":545},[540,8385,1776],{"class":566},[540,8387,563],{"class":545},[540,8389,1387],{"class":553},[540,8391,560],{"class":545},[540,8393,563],{"class":545},[540,8395,8396],{"class":566},"[2, 2, 2]",[540,8398,563],{"class":545},[540,8400,690],{"class":545},[540,8402,8403,8405,8407,8409,8411,8413,8416,8418],{"class":542,"line":775},[540,8404,684],{"class":545},[540,8406,7951],{"class":549},[540,8408,1387],{"class":553},[540,8410,560],{"class":545},[540,8412,563],{"class":545},[540,8414,8415],{"class":566},"[0, -1, 0]",[540,8417,563],{"class":545},[540,8419,690],{"class":545},[540,8421,8422,8424,8426],{"class":542,"line":785},[540,8423,808],{"class":545},[540,8425,664],{"class":549},[540,8427,572],{"class":545},[540,8429,8430,8432,8434],{"class":542,"line":535},[540,8431,635],{"class":545},[540,8433,653],{"class":549},[540,8435,572],{"class":545},[525,8437,825],{"id":824},[830,8439,8440,8450],{},[833,8441,8442],{},[836,8443,8444,8446,8448],{},[839,8445,841],{"align":900},[839,8447,844],{"align":900},[839,8449,847],{},[849,8451,8452,8466,8480,8494],{},[836,8453,8454,8459,8462],{},[854,8455,8456],{"align":900},[520,8457,8458],{},"speed",[854,8460,8461],{"align":900},"Floating speed, higher it rocks more 🤘.",[854,8463,8464],{},[520,8465,1776],{},[836,8467,8468,8473,8476],{},[854,8469,8470],{"align":900},[520,8471,8472],{},"rotationFactor",[854,8474,8475],{"align":900},"Factor for Euler rotation.",[854,8477,8478],{},[520,8479,1776],{},[836,8481,8482,8487,8490],{},[854,8483,8484],{"align":900},[520,8485,8486],{},"floatFactor",[854,8488,8489],{"align":900},"Factor for Up/down movement.",[854,8491,8492],{},[520,8493,1776],{},[836,8495,8496,8501,8504],{},[854,8497,8498],{"align":900},[520,8499,8500],{},"range",[854,8502,8503],{"align":900},"Range of y-axis values the object will float within.",[854,8505,8506],{},[520,8507,8508],{},"[-0.1, 0.1]",[1230,8510,1546],{},{"title":488,"searchDepth":489,"depth":490,"links":8512},[8513,8514],{"id":527,"depth":490,"text":15},{"id":824,"depth":490,"text":825},"Make content float like magic with smooth animations.",{},{"title":61,"description":8515},"ua7tauTYcB_xqNVlXaBIkTupNCoAiUCKWGlTSK5eTSk",{"id":8520,"title":65,"body":8521,"description":9165,"extension":493,"links":494,"meta":9166,"navigation":496,"path":66,"seo":9167,"stem":67,"__hash__":9168},"docs/2.api/1.abstractions/mask.md",{"type":481,"value":8522,"toc":9160},[8523,8528,8534,8567,8569,9032,9034,9097,9101,9108,9113,9128,9157],[510,8524,8525],{},[8526,8527],"abstractions-mask",{},[516,8529,8530,8533],{},[520,8531,8532],{},"\u003CMask/>"," uses the stencil buffer to cut out areas of the screen.",[3101,8535,8536,8554],{},[516,8537,8538,8539,8542,8543,8546,8547,8550,8551,1049],{},"To use ",[520,8540,8541],{},"\u003CMask />"," you ",[1576,8544,8545],{},"must"," add ",[520,8548,8549],{},":stencil=\"true\""," to your ",[520,8552,8553],{},"\u003CTresCanvas />",[516,8555,8556,8558,8559,8566],{},[520,8557,8541],{}," relies on the ",[1043,8560,8563],{"href":8561,"rel":8562},"https://threejs.org/docs/#api/en/renderers/WebGLRenderer",[1047],[520,8564,8565],{},"stencil buffer",". In recent versions of THREE.js, by default, the stencil buffer is not created.",[525,8568,15],{"id":527},[529,8570,8573],{"className":531,"code":8571,"highlights":8572,"language":536,"meta":488,"style":488},"\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",[490,775,785,535,805],[520,8574,8575,8595,8624,8642,8650,8654,8662,8692,8700,8708,8712,8731,8739,8759,8777,8785,8805,8815,8835,8844,8852,8856,8876,8884,8904,8912,8916,8935,8943,8961,8969,8973,8992,9000,9008,9016,9024],{"__ignoreMap":488},[540,8576,8577,8579,8581,8583,8585,8587,8589,8591,8593],{"class":542,"line":489},[540,8578,546],{"class":545},[540,8580,550],{"class":549},[540,8582,554],{"class":553},[540,8584,557],{"class":553},[540,8586,560],{"class":545},[540,8588,563],{"class":545},[540,8590,567],{"class":566},[540,8592,563],{"class":545},[540,8594,572],{"class":545},[540,8596,8598,8600,8602,8605,8607,8609,8611,8614,8616,8618,8620,8622],{"class":8597,"line":490},[542,576],[540,8599,580],{"class":579},[540,8601,583],{"class":545},[540,8603,8604],{"class":586}," Mask",[540,8606,590],{"class":545},[540,8608,593],{"class":586},[540,8610,590],{"class":545},[540,8612,8613],{"class":586}," useMask",[540,8615,596],{"class":545},[540,8617,599],{"class":579},[540,8619,602],{"class":545},[540,8621,605],{"class":566},[540,8623,608],{"class":545},[540,8625,8626,8628,8630,8632,8634,8636,8638,8640],{"class":542,"line":611},[540,8627,580],{"class":579},[540,8629,583],{"class":545},[540,8631,618],{"class":586},[540,8633,596],{"class":545},[540,8635,599],{"class":579},[540,8637,602],{"class":545},[540,8639,627],{"class":566},[540,8641,608],{"class":545},[540,8643,8644,8646,8648],{"class":542,"line":632},[540,8645,635],{"class":545},[540,8647,550],{"class":549},[540,8649,572],{"class":545},[540,8651,8652],{"class":542,"line":642},[540,8653,645],{"emptyLinePlaceholder":496},[540,8655,8656,8658,8660],{"class":542,"line":648},[540,8657,546],{"class":545},[540,8659,653],{"class":549},[540,8661,572],{"class":545},[540,8663,8664,8666,8668,8671,8673,8675,8677,8679,8681,8683,8685,8688,8690],{"class":542,"line":658},[540,8665,661],{"class":545},[540,8667,664],{"class":549},[540,8669,8670],{"class":553}," :stencil",[540,8672,560],{"class":545},[540,8674,563],{"class":545},[540,8676,864],{"class":566},[540,8678,563],{"class":545},[540,8680,667],{"class":553},[540,8682,560],{"class":545},[540,8684,563],{"class":545},[540,8686,8687],{"class":566},"#4f4f4f",[540,8689,563],{"class":545},[540,8691,572],{"class":545},[540,8693,8694,8696,8698],{"class":542,"line":681},[540,8695,684],{"class":545},[540,8697,687],{"class":549},[540,8699,690],{"class":545},[540,8701,8702,8704,8706],{"class":542,"line":693},[540,8703,684],{"class":545},[540,8705,698],{"class":549},[540,8707,690],{"class":545},[540,8709,8710],{"class":542,"line":703},[540,8711,645],{"emptyLinePlaceholder":496},[540,8713,8714,8716,8719,8721,8723,8725,8727,8729],{"class":542,"line":708},[540,8715,684],{"class":545},[540,8717,8718],{"class":549},"TresGroup",[540,8720,716],{"class":553},[540,8722,560],{"class":545},[540,8724,563],{"class":545},[540,8726,723],{"class":566},[540,8728,563],{"class":545},[540,8730,572],{"class":545},[540,8732,8733,8735,8737],{"class":542,"line":730},[540,8734,756],{"class":545},[540,8736,759],{"class":549},[540,8738,572],{"class":545},[540,8740,8741,8743,8746,8748,8750,8752,8755,8757],{"class":542,"line":534},[540,8742,767],{"class":545},[540,8744,8745],{"class":549},"TresRingGeometry",[540,8747,1861],{"class":553},[540,8749,560],{"class":545},[540,8751,563],{"class":545},[540,8753,8754],{"class":566},"[0.95, 1, 64]",[540,8756,563],{"class":545},[540,8758,690],{"class":545},[540,8760,8761,8763,8765,8767,8769,8771,8773,8775],{"class":542,"line":753},[540,8762,767],{"class":545},[540,8764,7374],{"class":549},[540,8766,2591],{"class":553},[540,8768,560],{"class":545},[540,8770,563],{"class":545},[540,8772,2598],{"class":566},[540,8774,563],{"class":545},[540,8776,690],{"class":545},[540,8778,8779,8781,8783],{"class":542,"line":764},[540,8780,788],{"class":545},[540,8782,759],{"class":549},[540,8784,572],{"class":545},[540,8786,8788,8790,8792,8795,8797,8799,8801,8803],{"class":8787,"line":775},[542,576],[540,8789,756],{"class":545},[540,8791,65],{"class":549},[540,8793,8794],{"class":553}," :id",[540,8796,560],{"class":545},[540,8798,563],{"class":545},[540,8800,1776],{"class":566},[540,8802,563],{"class":545},[540,8804,572],{"class":545},[540,8806,8808,8810,8813],{"class":8807,"line":785},[542,576],[540,8809,767],{"class":545},[540,8811,8812],{"class":549},"TresCircleGeometry",[540,8814,690],{"class":545},[540,8816,8818,8820,8822,8824,8826,8828,8831,8833],{"class":8817,"line":535},[542,576],[540,8819,767],{"class":545},[540,8821,7374],{"class":549},[540,8823,2591],{"class":553},[540,8825,560],{"class":545},[540,8827,563],{"class":545},[540,8829,8830],{"class":566},"#fbb03b",[540,8832,563],{"class":545},[540,8834,690],{"class":545},[540,8836,8838,8840,8842],{"class":8837,"line":805},[542,576],[540,8839,788],{"class":545},[540,8841,65],{"class":549},[540,8843,572],{"class":545},[540,8845,8846,8848,8850],{"class":542,"line":815},[540,8847,798],{"class":545},[540,8849,8718],{"class":549},[540,8851,572],{"class":545},[540,8853,8854],{"class":542,"line":2527},[540,8855,645],{"emptyLinePlaceholder":496},[540,8857,8858,8860,8862,8865,8867,8869,8872,8874],{"class":542,"line":2536},[540,8859,684],{"class":545},[540,8861,759],{"class":549},[540,8863,8864],{"class":553}," :position-z",[540,8866,560],{"class":545},[540,8868,563],{"class":545},[540,8870,8871],{"class":566},"-1",[540,8873,563],{"class":545},[540,8875,572],{"class":545},[540,8877,8878,8880,8882],{"class":542,"line":2556},[540,8879,756],{"class":545},[540,8881,770],{"class":549},[540,8883,690],{"class":545},[540,8885,8886,8888,8890,8893,8895,8897,8900,8902],{"class":542,"line":2565},[540,8887,756],{"class":545},[540,8889,780],{"class":549},[540,8891,8892],{"class":553}," v-bind",[540,8894,560],{"class":545},[540,8896,563],{"class":545},[540,8898,8899],{"class":566},"useMask(1)",[540,8901,563],{"class":545},[540,8903,690],{"class":545},[540,8905,8906,8908,8910],{"class":542,"line":2574},[540,8907,798],{"class":545},[540,8909,759],{"class":549},[540,8911,572],{"class":545},[540,8913,8914],{"class":542,"line":2583},[540,8915,645],{"emptyLinePlaceholder":496},[540,8917,8918,8920,8922,8924,8926,8928,8931,8933],{"class":542,"line":2605},[540,8919,684],{"class":545},[540,8921,759],{"class":549},[540,8923,8864],{"class":553},[540,8925,560],{"class":545},[540,8927,563],{"class":545},[540,8929,8930],{"class":566},"-3",[540,8932,563],{"class":545},[540,8934,572],{"class":545},[540,8936,8937,8939,8941],{"class":542,"line":2649},[540,8938,756],{"class":545},[540,8940,770],{"class":549},[540,8942,690],{"class":545},[540,8944,8945,8947,8949,8951,8953,8955,8957,8959],{"class":542,"line":2658},[540,8946,756],{"class":545},[540,8948,780],{"class":549},[540,8950,8892],{"class":553},[540,8952,560],{"class":545},[540,8954,563],{"class":545},[540,8956,8899],{"class":566},[540,8958,563],{"class":545},[540,8960,690],{"class":545},[540,8962,8963,8965,8967],{"class":542,"line":2667},[540,8964,798],{"class":545},[540,8966,759],{"class":549},[540,8968,572],{"class":545},[540,8970,8971],{"class":542,"line":3824},[540,8972,645],{"emptyLinePlaceholder":496},[540,8974,8975,8977,8979,8981,8983,8985,8988,8990],{"class":542,"line":3855},[540,8976,684],{"class":545},[540,8978,759],{"class":549},[540,8980,8864],{"class":553},[540,8982,560],{"class":545},[540,8984,563],{"class":545},[540,8986,8987],{"class":566},"-5",[540,8989,563],{"class":545},[540,8991,572],{"class":545},[540,8993,8994,8996,8998],{"class":542,"line":3876},[540,8995,756],{"class":545},[540,8997,770],{"class":549},[540,8999,690],{"class":545},[540,9001,9002,9004,9006],{"class":542,"line":3895},[540,9003,756],{"class":545},[540,9005,780],{"class":549},[540,9007,690],{"class":545},[540,9009,9010,9012,9014],{"class":542,"line":3927},[540,9011,798],{"class":545},[540,9013,759],{"class":549},[540,9015,572],{"class":545},[540,9017,9018,9020,9022],{"class":542,"line":3936},[540,9019,808],{"class":545},[540,9021,664],{"class":549},[540,9023,572],{"class":545},[540,9025,9026,9028,9030],{"class":542,"line":3945},[540,9027,635],{"class":545},[540,9029,653],{"class":549},[540,9031,572],{"class":545},[525,9033,825],{"id":824},[830,9035,9036,9046],{},[833,9037,9038],{},[836,9039,9040,9042,9044],{},[839,9041,841],{"align":900},[839,9043,844],{"align":900},[839,9045,847],{},[849,9047,9048,9065,9081],{},[836,9049,9050,9057,9063],{},[854,9051,9052],{"align":900},[1571,9053,9054],{},[520,9055,9056],{},"id",[854,9058,9059,9060,9062],{"align":900},"Id of the stencil buffer to use. Each mask must have a ",[520,9061,5254],{}," id. Multiple masks can refer to the same id.",[854,9064],{},[836,9066,9067,9074,9077],{},[854,9068,9069],{"align":900},[1571,9070,9071],{},[520,9072,9073],{},"colorWrite",[854,9075,9076],{"align":900},"Whether the colors of the mask's own material will leak through.",[854,9078,9079],{},[520,9080,874],{},[836,9082,9083,9090,9093],{},[854,9084,9085],{"align":900},[1571,9086,9087],{},[520,9088,9089],{},"depthWrite",[854,9091,9092],{"align":900},"Whether the depth of the mask's own material will leak through.",[854,9094,9095],{},[520,9096,874],{},[525,9098,9100],{"id":9099},"usemask","useMask",[516,9102,9103,9104,9107],{},"Composable that returns the stencil configuration to apply a mask to a material. Use it with ",[520,9105,9106],{},"v-bind"," on materials that should be affected by the mask.",[516,9109,9110],{},[1571,9111,9112],{},"Parameters:",[2115,9114,9115,9120],{},[2118,9116,9117,9119],{},[520,9118,9056],{}," - The mask id to use (number or Ref)",[2118,9121,9122,9125,9126],{},[520,9123,9124],{},"inverse"," - Whether to invert the mask (boolean or Ref), defaults to ",[520,9127,874],{},[529,9129,9131],{"className":531,"code":9130,"language":536,"meta":488,"style":488},"\u003CTresMeshNormalMaterial v-bind=\"useMask(1)\" />\n",[520,9132,9133],{"__ignoreMap":488},[540,9134,9135,9137,9139,9141,9143,9145,9147,9149,9151,9153,9155],{"class":542,"line":489},[540,9136,546],{"class":545},[540,9138,780],{"class":549},[540,9140,8892],{"class":553},[540,9142,560],{"class":545},[540,9144,563],{"class":545},[540,9146,9100],{"class":2336},[540,9148,2339],{"class":586},[540,9150,1776],{"class":2403},[540,9152,3242],{"class":586},[540,9154,563],{"class":545},[540,9156,690],{"class":545},[1230,9158,9159],{},"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":488,"searchDepth":489,"depth":490,"links":9161},[9162,9163,9164],{"id":527,"depth":490,"text":15},{"id":824,"depth":490,"text":825},{"id":9099,"depth":490,"text":9100},"Cut out areas of the screen using the stencil buffer.",{},{"title":65,"description":9165},"R8IKeS_cog0AR5hyMVg359sjKmupKD2bH-5ixZXY8zY",{"id":9170,"title":69,"body":9171,"description":9642,"extension":493,"links":494,"meta":9643,"navigation":496,"path":70,"seo":9644,"stem":71,"__hash__":9645},"docs/2.api/1.abstractions/outline.md",{"type":481,"value":9172,"toc":9638},[9173,9178,9189,9191,9538,9540,9636],[510,9174,9175],{},[9176,9177],"abstractions-outline",{},[516,9179,9180,9183,9184,2965,9186,1049],{},[520,9181,9182],{},"\u003COutline />"," creates an inverted-hull outline using its parent's geometry. Supported parents are ",[520,9185,2212],{},[520,9187,9188],{},"\u003CTresSkinnedMesh>",[525,9190,15],{"id":527},[529,9192,9195],{"className":531,"code":9193,"highlights":9194,"language":536,"meta":488,"style":488},"\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",[611,764,815],[520,9196,9197,9217,9235,9259,9267,9271,9279,9297,9305,9313,9332,9363,9383,9391,9400,9432,9440,9458,9477,9485,9514,9522,9530],{"__ignoreMap":488},[540,9198,9199,9201,9203,9205,9207,9209,9211,9213,9215],{"class":542,"line":489},[540,9200,546],{"class":545},[540,9202,550],{"class":549},[540,9204,554],{"class":553},[540,9206,557],{"class":553},[540,9208,560],{"class":545},[540,9210,563],{"class":545},[540,9212,567],{"class":566},[540,9214,563],{"class":545},[540,9216,572],{"class":545},[540,9218,9219,9221,9223,9225,9227,9229,9231,9233],{"class":542,"line":490},[540,9220,580],{"class":579},[540,9222,583],{"class":545},[540,9224,618],{"class":586},[540,9226,596],{"class":545},[540,9228,599],{"class":579},[540,9230,602],{"class":545},[540,9232,627],{"class":566},[540,9234,608],{"class":545},[540,9236,9238,9240,9242,9244,9246,9249,9251,9253,9255,9257],{"class":9237,"line":611},[542,576],[540,9239,580],{"class":579},[540,9241,583],{"class":545},[540,9243,593],{"class":586},[540,9245,590],{"class":545},[540,9247,9248],{"class":586}," Outline",[540,9250,596],{"class":545},[540,9252,599],{"class":579},[540,9254,602],{"class":545},[540,9256,605],{"class":566},[540,9258,608],{"class":545},[540,9260,9261,9263,9265],{"class":542,"line":632},[540,9262,635],{"class":545},[540,9264,550],{"class":549},[540,9266,572],{"class":545},[540,9268,9269],{"class":542,"line":642},[540,9270,645],{"emptyLinePlaceholder":496},[540,9272,9273,9275,9277],{"class":542,"line":648},[540,9274,546],{"class":545},[540,9276,653],{"class":549},[540,9278,572],{"class":545},[540,9280,9281,9283,9285,9287,9289,9291,9293,9295],{"class":542,"line":658},[540,9282,661],{"class":545},[540,9284,664],{"class":549},[540,9286,667],{"class":553},[540,9288,560],{"class":545},[540,9290,563],{"class":545},[540,9292,8687],{"class":566},[540,9294,563],{"class":545},[540,9296,572],{"class":545},[540,9298,9299,9301,9303],{"class":542,"line":681},[540,9300,684],{"class":545},[540,9302,687],{"class":549},[540,9304,690],{"class":545},[540,9306,9307,9309,9311],{"class":542,"line":693},[540,9308,684],{"class":545},[540,9310,698],{"class":549},[540,9312,690],{"class":545},[540,9314,9315,9317,9319,9321,9323,9325,9328,9330],{"class":542,"line":703},[540,9316,684],{"class":545},[540,9318,8358],{"class":549},[540,9320,1769],{"class":553},[540,9322,560],{"class":545},[540,9324,563],{"class":545},[540,9326,9327],{"class":566},"3.14",[540,9329,563],{"class":545},[540,9331,690],{"class":545},[540,9333,9334,9336,9339,9341,9343,9345,9348,9350,9352,9354,9356,9359,9361],{"class":542,"line":708},[540,9335,684],{"class":545},[540,9337,9338],{"class":549},"TresPointLight",[540,9340,1769],{"class":553},[540,9342,560],{"class":545},[540,9344,563],{"class":545},[540,9346,9347],{"class":566},"50",[540,9349,563],{"class":545},[540,9351,1387],{"class":553},[540,9353,560],{"class":545},[540,9355,563],{"class":545},[540,9357,9358],{"class":566},"[2, 2, 0]",[540,9360,563],{"class":545},[540,9362,690],{"class":545},[540,9364,9365,9367,9369,9372,9374,9376,9379,9381],{"class":542,"line":730},[540,9366,684],{"class":545},[540,9368,759],{"class":549},[540,9370,9371],{"class":553}," :position-x",[540,9373,560],{"class":545},[540,9375,563],{"class":545},[540,9377,9378],{"class":566},"-0.75",[540,9380,563],{"class":545},[540,9382,572],{"class":545},[540,9384,9385,9387,9389],{"class":542,"line":534},[540,9386,756],{"class":545},[540,9388,770],{"class":549},[540,9390,690],{"class":545},[540,9392,9393,9395,9398],{"class":542,"line":753},[540,9394,756],{"class":545},[540,9396,9397],{"class":549},"TresMeshPhongMaterial",[540,9399,690],{"class":545},[540,9401,9403,9405,9407,9410,9412,9414,9417,9419,9421,9423,9425,9428,9430],{"class":9402,"line":764},[542,576],[540,9404,756],{"class":545},[540,9406,69],{"class":549},[540,9408,9409],{"class":553}," :thickness",[540,9411,560],{"class":545},[540,9413,563],{"class":545},[540,9415,9416],{"class":566},"7.5",[540,9418,563],{"class":545},[540,9420,2591],{"class":553},[540,9422,560],{"class":545},[540,9424,563],{"class":545},[540,9426,9427],{"class":566},"#82dbc5",[540,9429,563],{"class":545},[540,9431,690],{"class":545},[540,9433,9434,9436,9438],{"class":542,"line":775},[540,9435,798],{"class":545},[540,9437,759],{"class":549},[540,9439,572],{"class":545},[540,9441,9442,9444,9446,9448,9450,9452,9454,9456],{"class":542,"line":785},[540,9443,684],{"class":545},[540,9445,759],{"class":549},[540,9447,9371],{"class":553},[540,9449,560],{"class":545},[540,9451,563],{"class":545},[540,9453,2453],{"class":566},[540,9455,563],{"class":545},[540,9457,572],{"class":545},[540,9459,9460,9462,9464,9466,9468,9470,9473,9475],{"class":542,"line":535},[540,9461,756],{"class":545},[540,9463,3860],{"class":549},[540,9465,1861],{"class":553},[540,9467,560],{"class":545},[540,9469,563],{"class":545},[540,9471,9472],{"class":566},"[0.5]",[540,9474,563],{"class":545},[540,9476,690],{"class":545},[540,9478,9479,9481,9483],{"class":542,"line":805},[540,9480,756],{"class":545},[540,9482,9397],{"class":549},[540,9484,690],{"class":545},[540,9486,9488,9490,9492,9494,9496,9498,9500,9502,9504,9506,9508,9510,9512],{"class":9487,"line":815},[542,576],[540,9489,756],{"class":545},[540,9491,69],{"class":549},[540,9493,9409],{"class":553},[540,9495,560],{"class":545},[540,9497,563],{"class":545},[540,9499,9416],{"class":566},[540,9501,563],{"class":545},[540,9503,2591],{"class":553},[540,9505,560],{"class":545},[540,9507,563],{"class":545},[540,9509,8830],{"class":566},[540,9511,563],{"class":545},[540,9513,690],{"class":545},[540,9515,9516,9518,9520],{"class":542,"line":2527},[540,9517,798],{"class":545},[540,9519,759],{"class":549},[540,9521,572],{"class":545},[540,9523,9524,9526,9528],{"class":542,"line":2536},[540,9525,808],{"class":545},[540,9527,664],{"class":549},[540,9529,572],{"class":545},[540,9531,9532,9534,9536],{"class":542,"line":2556},[540,9533,635],{"class":545},[540,9535,653],{"class":549},[540,9537,572],{"class":545},[525,9539,825],{"id":824},[830,9541,9542,9552],{},[833,9543,9544],{},[836,9545,9546,9548,9550],{},[839,9547,825],{},[839,9549,844],{},[839,9551,847],{},[849,9553,9554,9566,9578,9590,9602,9615],{},[836,9555,9556,9558,9561],{},[854,9557,7449],{},[854,9559,9560],{},"Outline color",[854,9562,9563],{},[520,9564,9565],{},"'black'",[836,9567,9568,9571,9574],{},[854,9569,9570],{},"screenspace",[854,9572,9573],{},"Whether line thickness is independent of zoom",[854,9575,9576],{},[520,9577,874],{},[836,9579,9580,9583,9586],{},[854,9581,9582],{},"opacity",[854,9584,9585],{},"Outline opacity",[854,9587,9588],{},[520,9589,1776],{},[836,9591,9592,9595,9598],{},[854,9593,9594],{},"transparent",[854,9596,9597],{},"Outline transparency",[854,9599,9600],{},[520,9601,874],{},[836,9603,9604,9607,9610],{},[854,9605,9606],{},"thickness",[854,9608,9609],{},"Outline thickness",[854,9611,9612],{},[520,9613,9614],{},"0.05",[836,9616,9617,9620,9631],{},[854,9618,9619],{},"angle",[854,9621,9622,9623,9625,9626],{},"Geometry crease angle (",[520,9624,868],{}," is no crease).  See ",[1043,9627,9630],{"href":9628,"rel":9629},"https://threejs.org/docs/#examples/en/utils/BufferGeometryUtils.toCreasedNormals",[1047],"BufferGeometryUtils.toCreasedNormals",[854,9632,9633],{},[520,9634,9635],{},"Math.PI",[1230,9637,1546],{},{"title":488,"searchDepth":489,"depth":490,"links":9639},[9640,9641],{"id":527,"depth":490,"text":15},{"id":824,"depth":490,"text":825},"Create inverted-hull outlines using parent geometry.",{},{"title":69,"description":9642},"Qb5LM-UoZ_zkrRGWyAbuOtaH4q-8vTeY2hMA8LObyAM",{"id":9647,"title":73,"body":9648,"description":10445,"extension":493,"links":494,"meta":10446,"navigation":496,"path":74,"seo":10447,"stem":75,"__hash__":10448},"docs/2.api/1.abstractions/sampler.md",{"type":481,"value":9649,"toc":10440},[9650,9655,9658,9660,9954,9956,10021,10025,10032,10437],[510,9651,9652],{},[9653,9654],"abstractions-sampler",{},[516,9656,9657],{},"Declarative abstraction around MeshSurfaceSampler & InstancedMesh. It samples points from the passed mesh and transforms an InstancedMesh's matrix to distribute instances on the points.",[525,9659,15],{"id":527},[529,9661,9664],{"className":531,"code":9662,"highlights":9663,"language":536,"meta":488,"style":488},"\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",[490,708,730,534,753,764,775,785,535,805,815],[520,9665,9666,9686,9710,9728,9736,9740,9748,9767,9786,9794,9798,9818,9827,9837,9846,9851,9872,9892,9901,9910,9919,9938,9946],{"__ignoreMap":488},[540,9667,9668,9670,9672,9674,9676,9678,9680,9682,9684],{"class":542,"line":489},[540,9669,546],{"class":545},[540,9671,550],{"class":549},[540,9673,554],{"class":553},[540,9675,557],{"class":553},[540,9677,560],{"class":545},[540,9679,563],{"class":545},[540,9681,567],{"class":566},[540,9683,563],{"class":545},[540,9685,572],{"class":545},[540,9687,9689,9691,9693,9695,9697,9700,9702,9704,9706,9708],{"class":9688,"line":490},[542,576],[540,9690,580],{"class":579},[540,9692,583],{"class":545},[540,9694,593],{"class":586},[540,9696,590],{"class":545},[540,9698,9699],{"class":586}," Sampler",[540,9701,596],{"class":545},[540,9703,599],{"class":579},[540,9705,602],{"class":545},[540,9707,605],{"class":566},[540,9709,608],{"class":545},[540,9711,9712,9714,9716,9718,9720,9722,9724,9726],{"class":542,"line":611},[540,9713,580],{"class":579},[540,9715,583],{"class":545},[540,9717,618],{"class":586},[540,9719,596],{"class":545},[540,9721,599],{"class":579},[540,9723,602],{"class":545},[540,9725,627],{"class":566},[540,9727,608],{"class":545},[540,9729,9730,9732,9734],{"class":542,"line":632},[540,9731,635],{"class":545},[540,9733,550],{"class":549},[540,9735,572],{"class":545},[540,9737,9738],{"class":542,"line":642},[540,9739,645],{"emptyLinePlaceholder":496},[540,9741,9742,9744,9746],{"class":542,"line":648},[540,9743,546],{"class":545},[540,9745,653],{"class":549},[540,9747,572],{"class":545},[540,9749,9750,9752,9754,9756,9758,9760,9763,9765],{"class":542,"line":658},[540,9751,661],{"class":545},[540,9753,664],{"class":549},[540,9755,667],{"class":553},[540,9757,560],{"class":545},[540,9759,563],{"class":545},[540,9761,9762],{"class":566},"#82DBC5",[540,9764,563],{"class":545},[540,9766,572],{"class":545},[540,9768,9769,9771,9773,9775,9777,9779,9782,9784],{"class":542,"line":681},[540,9770,684],{"class":545},[540,9772,687],{"class":549},[540,9774,1387],{"class":553},[540,9776,560],{"class":545},[540,9778,563],{"class":545},[540,9780,9781],{"class":566},"[0, 0.5, 5]",[540,9783,563],{"class":545},[540,9785,690],{"class":545},[540,9787,9788,9790,9792],{"class":542,"line":693},[540,9789,684],{"class":545},[540,9791,698],{"class":549},[540,9793,690],{"class":545},[540,9795,9796],{"class":542,"line":703},[540,9797,645],{"emptyLinePlaceholder":496},[540,9799,9801,9803,9805,9808,9810,9812,9814,9816],{"class":9800,"line":708},[542,576],[540,9802,684],{"class":545},[540,9804,73],{"class":549},[540,9806,9807],{"class":553}," :count",[540,9809,560],{"class":545},[540,9811,563],{"class":545},[540,9813,9347],{"class":566},[540,9815,563],{"class":545},[540,9817,572],{"class":545},[540,9819,9821,9823,9825],{"class":9820,"line":730},[542,576],[540,9822,756],{"class":545},[540,9824,759],{"class":549},[540,9826,572],{"class":545},[540,9828,9830,9832,9835],{"class":9829,"line":534},[542,576],[540,9831,767],{"class":545},[540,9833,9834],{"class":549},"TresTorusGeometry",[540,9836,690],{"class":545},[540,9838,9840,9842,9844],{"class":9839,"line":753},[542,576],[540,9841,788],{"class":545},[540,9843,759],{"class":549},[540,9845,572],{"class":545},[540,9847,9849],{"class":9848,"line":764},[542,576],[540,9850,645],{"emptyLinePlaceholder":496},[540,9852,9854,9856,9859,9861,9863,9865,9868,9870],{"class":9853,"line":775},[542,576],[540,9855,756],{"class":545},[540,9857,9858],{"class":549},"TresInstancedMesh",[540,9860,1861],{"class":553},[540,9862,560],{"class":545},[540,9864,563],{"class":545},[540,9866,9867],{"class":566},"[null!, null!, 1000]",[540,9869,563],{"class":545},[540,9871,572],{"class":545},[540,9873,9875,9877,9879,9881,9883,9885,9888,9890],{"class":9874,"line":785},[542,576],[540,9876,767],{"class":545},[540,9878,770],{"class":549},[540,9880,1861],{"class":553},[540,9882,560],{"class":545},[540,9884,563],{"class":545},[540,9886,9887],{"class":566},"[0.1, 0.1, 0.1]",[540,9889,563],{"class":545},[540,9891,690],{"class":545},[540,9893,9895,9897,9899],{"class":9894,"line":535},[542,576],[540,9896,767],{"class":545},[540,9898,780],{"class":549},[540,9900,690],{"class":545},[540,9902,9904,9906,9908],{"class":9903,"line":805},[542,576],[540,9905,788],{"class":545},[540,9907,9858],{"class":549},[540,9909,572],{"class":545},[540,9911,9913,9915,9917],{"class":9912,"line":815},[542,576],[540,9914,798],{"class":545},[540,9916,73],{"class":549},[540,9918,572],{"class":545},[540,9920,9921,9923,9925,9927,9929,9931,9934,9936],{"class":542,"line":2527},[540,9922,684],{"class":545},[540,9924,7951],{"class":549},[540,9926,1861],{"class":553},[540,9928,560],{"class":545},[540,9930,563],{"class":545},[540,9932,9933],{"class":566},"[10, 10]",[540,9935,563],{"class":545},[540,9937,690],{"class":545},[540,9939,9940,9942,9944],{"class":542,"line":2536},[540,9941,808],{"class":545},[540,9943,664],{"class":549},[540,9945,572],{"class":545},[540,9947,9948,9950,9952],{"class":542,"line":2556},[540,9949,635],{"class":545},[540,9951,653],{"class":549},[540,9953,572],{"class":545},[525,9955,825],{"id":824},[830,9957,9958,9966],{},[833,9959,9960],{},[836,9961,9962,9964],{},[839,9963,825],{},[839,9965,844],{},[849,9967,9968,9977,9988,9999,10010],{},[836,9969,9970,9972],{},[854,9971,5507],{},[854,9973,9974,9976],{},[1571,9975,4194],{}," Surface mesh from which to sample",[836,9978,9979,9982],{},[854,9980,9981],{},"count",[854,9983,9984,9987],{},[1571,9985,9986],{},"Number"," Number of samples",[836,9989,9990,9993],{},[854,9991,9992],{},"instanceMesh",[854,9994,9995,9998],{},[1571,9996,9997],{},"InstanceMesh"," InstanceMesh to scatter",[836,10000,10001,10004],{},[854,10002,10003],{},"weight",[854,10005,10006,10009],{},[1571,10007,10008],{},"String"," A vertex attribute to be used as a weight when sampling",[836,10011,10012,10015],{},[854,10013,10014],{},"transform",[854,10016,10017,10020],{},[1571,10018,10019],{},"Function"," A function that can be used as a custom sampling",[525,10022,10024],{"id":10023},"usesurfacesampler","useSurfaceSampler",[516,10026,10027,10028],{},"A hook to obtain the result of the ",[10029,10030,10031],"sampler",{}," as a buffer. Useful for driving anything other than InstancedMesh via the Sampler.",[529,10033,10036],{"className":531,"code":10034,"highlights":10035,"language":536,"meta":488,"style":488},"\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",[490,703],[520,10037,10038,10058,10082,10100,10123,10127,10140,10153,10157,10177,10211,10217,10225,10229,10237,10255,10273,10281,10285,10304,10312,10320,10324,10331,10345,10359,10364,10383,10391,10399,10403,10421,10429],{"__ignoreMap":488},[540,10039,10040,10042,10044,10046,10048,10050,10052,10054,10056],{"class":542,"line":489},[540,10041,546],{"class":545},[540,10043,550],{"class":549},[540,10045,554],{"class":553},[540,10047,557],{"class":553},[540,10049,560],{"class":545},[540,10051,563],{"class":545},[540,10053,567],{"class":566},[540,10055,563],{"class":545},[540,10057,572],{"class":545},[540,10059,10061,10063,10065,10067,10069,10072,10074,10076,10078,10080],{"class":10060,"line":490},[542,576],[540,10062,580],{"class":579},[540,10064,583],{"class":545},[540,10066,593],{"class":586},[540,10068,590],{"class":545},[540,10070,10071],{"class":586}," useSurfaceSampler",[540,10073,596],{"class":545},[540,10075,599],{"class":579},[540,10077,602],{"class":545},[540,10079,605],{"class":566},[540,10081,608],{"class":545},[540,10083,10084,10086,10088,10090,10092,10094,10096,10098],{"class":542,"line":611},[540,10085,580],{"class":579},[540,10087,583],{"class":545},[540,10089,618],{"class":586},[540,10091,596],{"class":545},[540,10093,599],{"class":579},[540,10095,602],{"class":545},[540,10097,627],{"class":566},[540,10099,608],{"class":545},[540,10101,10102,10104,10106,10108,10110,10113,10115,10117,10119,10121],{"class":542,"line":632},[540,10103,580],{"class":579},[540,10105,583],{"class":545},[540,10107,3774],{"class":586},[540,10109,590],{"class":545},[540,10111,10112],{"class":586}," watch",[540,10114,596],{"class":545},[540,10116,599],{"class":579},[540,10118,602],{"class":545},[540,10120,536],{"class":566},[540,10122,608],{"class":545},[540,10124,10125],{"class":542,"line":642},[540,10126,645],{"emptyLinePlaceholder":496},[540,10128,10129,10131,10134,10136,10138],{"class":542,"line":648},[540,10130,2317],{"class":553},[540,10132,10133],{"class":586}," torusRef ",[540,10135,560],{"class":545},[540,10137,3774],{"class":2336},[540,10139,6437],{"class":586},[540,10141,10142,10144,10147,10149,10151],{"class":542,"line":658},[540,10143,2317],{"class":553},[540,10145,10146],{"class":586}," instancesRef ",[540,10148,560],{"class":545},[540,10150,3774],{"class":2336},[540,10152,6437],{"class":586},[540,10154,10155],{"class":542,"line":681},[540,10156,645],{"emptyLinePlaceholder":496},[540,10158,10159,10162,10165,10167,10169,10171,10173,10175],{"class":542,"line":693},[540,10160,10161],{"class":2336},"watch",[540,10163,10164],{"class":586},"(torusRef",[540,10166,590],{"class":545},[540,10168,2976],{"class":545},[540,10170,3587],{"class":6740},[540,10172,3242],{"class":545},[540,10174,3579],{"class":553},[540,10176,1107],{"class":545},[540,10178,10180,10183,10185,10187,10189,10192,10194,10197,10199,10201,10203,10205,10207,10209],{"class":10179,"line":703},[542,576],[540,10181,10182],{"class":2336},"  useSurfaceSampler",[540,10184,2339],{"class":549},[540,10186,3587],{"class":586},[540,10188,590],{"class":545},[540,10190,10191],{"class":2403}," 50",[540,10193,590],{"class":545},[540,10195,10196],{"class":586}," instancesRef",[540,10198,1049],{"class":545},[540,10200,3587],{"class":586},[540,10202,590],{"class":545},[540,10204,602],{"class":545},[540,10206,7449],{"class":566},[540,10208,2342],{"class":545},[540,10210,2350],{"class":549},[540,10212,10213,10215],{"class":542,"line":708},[540,10214,2330],{"class":545},[540,10216,2350],{"class":586},[540,10218,10219,10221,10223],{"class":542,"line":730},[540,10220,635],{"class":545},[540,10222,550],{"class":549},[540,10224,572],{"class":545},[540,10226,10227],{"class":542,"line":534},[540,10228,645],{"emptyLinePlaceholder":496},[540,10230,10231,10233,10235],{"class":542,"line":753},[540,10232,546],{"class":545},[540,10234,653],{"class":549},[540,10236,572],{"class":545},[540,10238,10239,10241,10243,10245,10247,10249,10251,10253],{"class":542,"line":764},[540,10240,661],{"class":545},[540,10242,664],{"class":549},[540,10244,667],{"class":553},[540,10246,560],{"class":545},[540,10248,563],{"class":545},[540,10250,9762],{"class":566},[540,10252,563],{"class":545},[540,10254,572],{"class":545},[540,10256,10257,10259,10261,10263,10265,10267,10269,10271],{"class":542,"line":775},[540,10258,684],{"class":545},[540,10260,687],{"class":549},[540,10262,1387],{"class":553},[540,10264,560],{"class":545},[540,10266,563],{"class":545},[540,10268,9781],{"class":566},[540,10270,563],{"class":545},[540,10272,690],{"class":545},[540,10274,10275,10277,10279],{"class":542,"line":785},[540,10276,684],{"class":545},[540,10278,698],{"class":549},[540,10280,690],{"class":545},[540,10282,10283],{"class":542,"line":535},[540,10284,645],{"emptyLinePlaceholder":496},[540,10286,10287,10289,10291,10293,10295,10297,10300,10302],{"class":542,"line":805},[540,10288,684],{"class":545},[540,10290,759],{"class":549},[540,10292,3774],{"class":553},[540,10294,560],{"class":545},[540,10296,563],{"class":545},[540,10298,10299],{"class":566},"torusRef",[540,10301,563],{"class":545},[540,10303,572],{"class":545},[540,10305,10306,10308,10310],{"class":542,"line":815},[540,10307,756],{"class":545},[540,10309,9834],{"class":549},[540,10311,690],{"class":545},[540,10313,10314,10316,10318],{"class":542,"line":2527},[540,10315,798],{"class":545},[540,10317,759],{"class":549},[540,10319,572],{"class":545},[540,10321,10322],{"class":542,"line":2536},[540,10323,645],{"emptyLinePlaceholder":496},[540,10325,10326,10328],{"class":542,"line":2556},[540,10327,684],{"class":545},[540,10329,10330],{"class":549},"TresInstancedMesh\n",[540,10332,10333,10336,10338,10340,10343],{"class":542,"line":2565},[540,10334,10335],{"class":553},"      ref",[540,10337,560],{"class":545},[540,10339,563],{"class":545},[540,10341,10342],{"class":566},"instancesRef",[540,10344,3033],{"class":545},[540,10346,10347,10350,10352,10354,10357],{"class":542,"line":2574},[540,10348,10349],{"class":553},"      :args",[540,10351,560],{"class":545},[540,10353,563],{"class":545},[540,10355,10356],{"class":566},"[null!, null!, 1_000]",[540,10358,3033],{"class":545},[540,10360,10361],{"class":542,"line":2583},[540,10362,10363],{"class":545},"    >\n",[540,10365,10366,10368,10370,10372,10374,10376,10379,10381],{"class":542,"line":2605},[540,10367,756],{"class":545},[540,10369,3860],{"class":549},[540,10371,1861],{"class":553},[540,10373,560],{"class":545},[540,10375,563],{"class":545},[540,10377,10378],{"class":566},"[0.1, 32, 32]",[540,10380,563],{"class":545},[540,10382,690],{"class":545},[540,10384,10385,10387,10389],{"class":542,"line":2649},[540,10386,756],{"class":545},[540,10388,780],{"class":549},[540,10390,690],{"class":545},[540,10392,10393,10395,10397],{"class":542,"line":2658},[540,10394,798],{"class":545},[540,10396,9858],{"class":549},[540,10398,572],{"class":545},[540,10400,10401],{"class":542,"line":2667},[540,10402,645],{"emptyLinePlaceholder":496},[540,10404,10405,10407,10409,10411,10413,10415,10417,10419],{"class":542,"line":3824},[540,10406,684],{"class":545},[540,10408,7951],{"class":549},[540,10410,1861],{"class":553},[540,10412,560],{"class":545},[540,10414,563],{"class":545},[540,10416,9933],{"class":566},[540,10418,563],{"class":545},[540,10420,690],{"class":545},[540,10422,10423,10425,10427],{"class":542,"line":3855},[540,10424,808],{"class":545},[540,10426,664],{"class":549},[540,10428,572],{"class":545},[540,10430,10431,10433,10435],{"class":542,"line":3876},[540,10432,635],{"class":545},[540,10434,653],{"class":549},[540,10436,572],{"class":545},[1230,10438,10439],{},"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":488,"searchDepth":489,"depth":490,"links":10441},[10442,10443,10444],{"id":527,"depth":490,"text":15},{"id":824,"depth":490,"text":825},{"id":10023,"depth":490,"text":10024},"Distribute instances on mesh surfaces using MeshSurfaceSampler.",{},{"title":73,"description":10445},"xQHwbKTVWdqSN1pcdzaa4wwWk4iBXV0lk_0HL4ZdPuo",{"id":10450,"title":77,"body":10451,"description":10758,"extension":493,"links":494,"meta":10759,"navigation":496,"path":78,"seo":10760,"stem":79,"__hash__":10761},"docs/2.api/1.abstractions/screen-sizer.md",{"type":481,"value":10452,"toc":10754},[10453,10458,10467,10470,10472,10744,10746,10752],[2197,10454,10455],{},[10456,10457],"abstractions-screen-sizer",{},[516,10459,1252,10460,10463,10464,10466],{},[520,10461,10462],{},"\u003CTresObject3D />"," wrapper that scales to \"screen space\". By default ",[520,10465,1776],{}," THREE world unit will be translated to 1 screen pixel.",[516,10468,10469],{},"E.g. a BoxGeometry with a height, width, and depth of 100 each, will be scaled to 100 screen pixels in each dimension.",[525,10471,15],{"id":527},[529,10473,10476],{"className":531,"code":10474,"highlights":10475,"language":536,"meta":488,"style":488},"\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",[611,703,764],[520,10477,10478,10498,10516,10540,10548,10552,10560,10579,10598,10606,10615,10623,10642,10650,10658,10667,10686,10694,10702,10710,10728,10736],{"__ignoreMap":488},[540,10479,10480,10482,10484,10486,10488,10490,10492,10494,10496],{"class":542,"line":489},[540,10481,546],{"class":545},[540,10483,550],{"class":549},[540,10485,554],{"class":553},[540,10487,557],{"class":553},[540,10489,560],{"class":545},[540,10491,563],{"class":545},[540,10493,567],{"class":566},[540,10495,563],{"class":545},[540,10497,572],{"class":545},[540,10499,10500,10502,10504,10506,10508,10510,10512,10514],{"class":542,"line":490},[540,10501,580],{"class":579},[540,10503,583],{"class":545},[540,10505,618],{"class":586},[540,10507,596],{"class":545},[540,10509,599],{"class":579},[540,10511,602],{"class":545},[540,10513,627],{"class":566},[540,10515,608],{"class":545},[540,10517,10519,10521,10523,10525,10527,10530,10532,10534,10536,10538],{"class":10518,"line":611},[542,576],[540,10520,580],{"class":579},[540,10522,583],{"class":545},[540,10524,593],{"class":586},[540,10526,590],{"class":545},[540,10528,10529],{"class":586}," ScreenSizer",[540,10531,596],{"class":545},[540,10533,599],{"class":579},[540,10535,602],{"class":545},[540,10537,605],{"class":566},[540,10539,608],{"class":545},[540,10541,10542,10544,10546],{"class":542,"line":632},[540,10543,635],{"class":545},[540,10545,550],{"class":549},[540,10547,572],{"class":545},[540,10549,10550],{"class":542,"line":642},[540,10551,645],{"emptyLinePlaceholder":496},[540,10553,10554,10556,10558],{"class":542,"line":648},[540,10555,546],{"class":545},[540,10557,653],{"class":549},[540,10559,572],{"class":545},[540,10561,10562,10564,10566,10568,10570,10572,10575,10577],{"class":542,"line":658},[540,10563,661],{"class":545},[540,10565,664],{"class":549},[540,10567,667],{"class":553},[540,10569,560],{"class":545},[540,10571,563],{"class":545},[540,10573,10574],{"class":566},"#3f3f3f",[540,10576,563],{"class":545},[540,10578,572],{"class":545},[540,10580,10581,10583,10585,10587,10589,10591,10594,10596],{"class":542,"line":681},[540,10582,684],{"class":545},[540,10584,687],{"class":549},[540,10586,1387],{"class":553},[540,10588,560],{"class":545},[540,10590,563],{"class":545},[540,10592,10593],{"class":566},"[10, 10, 10]",[540,10595,563],{"class":545},[540,10597,690],{"class":545},[540,10599,10600,10602,10604],{"class":542,"line":693},[540,10601,684],{"class":545},[540,10603,698],{"class":549},[540,10605,690],{"class":545},[540,10607,10609,10611,10613],{"class":10608,"line":703},[542,576],[540,10610,684],{"class":545},[540,10612,77],{"class":549},[540,10614,572],{"class":545},[540,10616,10617,10619,10621],{"class":542,"line":708},[540,10618,756],{"class":545},[540,10620,759],{"class":549},[540,10622,572],{"class":545},[540,10624,10625,10627,10629,10631,10633,10635,10638,10640],{"class":542,"line":730},[540,10626,767],{"class":545},[540,10628,770],{"class":549},[540,10630,1861],{"class":553},[540,10632,560],{"class":545},[540,10634,563],{"class":545},[540,10636,10637],{"class":566},"[100, 100, 100]",[540,10639,563],{"class":545},[540,10641,690],{"class":545},[540,10643,10644,10646,10648],{"class":542,"line":534},[540,10645,767],{"class":545},[540,10647,780],{"class":549},[540,10649,690],{"class":545},[540,10651,10652,10654,10656],{"class":542,"line":753},[540,10653,788],{"class":545},[540,10655,759],{"class":549},[540,10657,572],{"class":545},[540,10659,10661,10663,10665],{"class":10660,"line":764},[542,576],[540,10662,798],{"class":545},[540,10664,77],{"class":549},[540,10666,572],{"class":545},[540,10668,10669,10671,10673,10675,10677,10679,10682,10684],{"class":542,"line":775},[540,10670,684],{"class":545},[540,10672,759],{"class":549},[540,10674,9371],{"class":553},[540,10676,560],{"class":545},[540,10678,563],{"class":545},[540,10680,10681],{"class":566},"5",[540,10683,563],{"class":545},[540,10685,572],{"class":545},[540,10687,10688,10690,10692],{"class":542,"line":785},[540,10689,756],{"class":545},[540,10691,770],{"class":549},[540,10693,690],{"class":545},[540,10695,10696,10698,10700],{"class":542,"line":535},[540,10697,756],{"class":545},[540,10699,780],{"class":549},[540,10701,690],{"class":545},[540,10703,10704,10706,10708],{"class":542,"line":805},[540,10705,798],{"class":545},[540,10707,759],{"class":549},[540,10709,572],{"class":545},[540,10711,10712,10714,10716,10718,10720,10722,10724,10726],{"class":542,"line":815},[540,10713,684],{"class":545},[540,10715,7951],{"class":549},[540,10717,1861],{"class":553},[540,10719,560],{"class":545},[540,10721,563],{"class":545},[540,10723,9933],{"class":566},[540,10725,563],{"class":545},[540,10727,690],{"class":545},[540,10729,10730,10732,10734],{"class":542,"line":2527},[540,10731,808],{"class":545},[540,10733,664],{"class":549},[540,10735,572],{"class":545},[540,10737,10738,10740,10742],{"class":542,"line":2536},[540,10739,635],{"class":545},[540,10741,653],{"class":549},[540,10743,572],{"class":545},[525,10745,825],{"id":824},[516,10747,10748,10749,1049],{},"Inherits all props from ",[520,10750,10751],{},"THREE.Object3D",[1230,10753,1546],{},{"title":488,"searchDepth":489,"depth":490,"links":10755},[10756,10757],{"id":527,"depth":490,"text":15},{"id":824,"depth":490,"text":825},"Scale objects to screen space where 1 unit equals 1 pixel.",{},{"title":77,"description":10758},"tMjbiq6RDx6TiRe5Yr52gRCjsYdoekkV4e0s25K29s0",{"id":10763,"title":81,"body":10764,"description":11134,"extension":493,"links":494,"meta":11135,"navigation":496,"path":82,"seo":11136,"stem":83,"__hash__":11137},"docs/2.api/1.abstractions/screen-space.md",{"type":481,"value":10765,"toc":11130},[10766,10771,10784,10806,10808,11034,11036,11128],[510,10767,10768],{},[10769,10770],"abstractions-screen-space",{},[516,10772,10773,10776,10777,10780,10781,1049],{},[520,10774,10775],{},"\u003CScreenSpace />"," wraps its children in a ",[520,10778,10779],{},"\u003CTresGroup />"," and positions them in front of the active camera at ",[520,10782,10783],{},":depth",[516,10785,10786,10787,1574,10789,1574,10791,1574,10793,10795,10796,10799,10800,7521,10803,1049],{},"Additionally, the ",[520,10788,858],{},[520,10790,881],{},[520,10792,900],{},[520,10794,919],{}," props can be used to position them similarly to CSS ",[520,10797,10798],{},"position: absolute"," property when using a ",[520,10801,10802],{},"PerspectiveCamera",[520,10804,10805],{},"OrtographicCamera",[525,10807,15],{"id":527},[529,10809,10812],{"className":531,"code":10810,"highlights":10811,"language":536,"meta":488,"style":488},"\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",[490,708,775],[520,10813,10814,10834,10858,10876,10884,10888,10896,10915,10923,10931,10935,10955,10963,10971,10979,10987,10996,11000,11018,11026],{"__ignoreMap":488},[540,10815,10816,10818,10820,10822,10824,10826,10828,10830,10832],{"class":542,"line":489},[540,10817,546],{"class":545},[540,10819,550],{"class":549},[540,10821,554],{"class":553},[540,10823,557],{"class":553},[540,10825,560],{"class":545},[540,10827,563],{"class":545},[540,10829,567],{"class":566},[540,10831,563],{"class":545},[540,10833,572],{"class":545},[540,10835,10837,10839,10841,10843,10845,10848,10850,10852,10854,10856],{"class":10836,"line":490},[542,576],[540,10838,580],{"class":579},[540,10840,583],{"class":545},[540,10842,593],{"class":586},[540,10844,590],{"class":545},[540,10846,10847],{"class":586}," ScreenSpace",[540,10849,596],{"class":545},[540,10851,599],{"class":579},[540,10853,602],{"class":545},[540,10855,605],{"class":566},[540,10857,608],{"class":545},[540,10859,10860,10862,10864,10866,10868,10870,10872,10874],{"class":542,"line":611},[540,10861,580],{"class":579},[540,10863,583],{"class":545},[540,10865,618],{"class":586},[540,10867,596],{"class":545},[540,10869,599],{"class":579},[540,10871,602],{"class":545},[540,10873,627],{"class":566},[540,10875,608],{"class":545},[540,10877,10878,10880,10882],{"class":542,"line":632},[540,10879,635],{"class":545},[540,10881,550],{"class":549},[540,10883,572],{"class":545},[540,10885,10886],{"class":542,"line":642},[540,10887,645],{"emptyLinePlaceholder":496},[540,10889,10890,10892,10894],{"class":542,"line":648},[540,10891,546],{"class":545},[540,10893,653],{"class":549},[540,10895,572],{"class":545},[540,10897,10898,10900,10902,10904,10906,10908,10911,10913],{"class":542,"line":658},[540,10899,661],{"class":545},[540,10901,664],{"class":549},[540,10903,667],{"class":553},[540,10905,560],{"class":545},[540,10907,563],{"class":545},[540,10909,10910],{"class":566},"#333",[540,10912,563],{"class":545},[540,10914,572],{"class":545},[540,10916,10917,10919,10921],{"class":542,"line":681},[540,10918,684],{"class":545},[540,10920,687],{"class":549},[540,10922,690],{"class":545},[540,10924,10925,10927,10929],{"class":542,"line":693},[540,10926,684],{"class":545},[540,10928,698],{"class":549},[540,10930,690],{"class":545},[540,10932,10933],{"class":542,"line":703},[540,10934,645],{"emptyLinePlaceholder":496},[540,10936,10938,10940,10942,10945,10947,10949,10951,10953],{"class":10937,"line":708},[542,576],[540,10939,684],{"class":545},[540,10941,81],{"class":549},[540,10943,10944],{"class":553}," :depth",[540,10946,560],{"class":545},[540,10948,563],{"class":545},[540,10950,10681],{"class":566},[540,10952,563],{"class":545},[540,10954,572],{"class":545},[540,10956,10957,10959,10961],{"class":542,"line":730},[540,10958,756],{"class":545},[540,10960,759],{"class":549},[540,10962,572],{"class":545},[540,10964,10965,10967,10969],{"class":542,"line":534},[540,10966,767],{"class":545},[540,10968,9834],{"class":549},[540,10970,690],{"class":545},[540,10972,10973,10975,10977],{"class":542,"line":753},[540,10974,767],{"class":545},[540,10976,780],{"class":549},[540,10978,690],{"class":545},[540,10980,10981,10983,10985],{"class":542,"line":764},[540,10982,788],{"class":545},[540,10984,759],{"class":549},[540,10986,572],{"class":545},[540,10988,10990,10992,10994],{"class":10989,"line":775},[542,576],[540,10991,798],{"class":545},[540,10993,81],{"class":549},[540,10995,572],{"class":545},[540,10997,10998],{"class":542,"line":785},[540,10999,645],{"emptyLinePlaceholder":496},[540,11001,11002,11004,11006,11008,11010,11012,11014,11016],{"class":542,"line":535},[540,11003,684],{"class":545},[540,11005,7951],{"class":549},[540,11007,1861],{"class":553},[540,11009,560],{"class":545},[540,11011,563],{"class":545},[540,11013,9933],{"class":566},[540,11015,563],{"class":545},[540,11017,690],{"class":545},[540,11019,11020,11022,11024],{"class":542,"line":805},[540,11021,808],{"class":545},[540,11023,664],{"class":549},[540,11025,572],{"class":545},[540,11027,11028,11030,11032],{"class":542,"line":815},[540,11029,635],{"class":545},[540,11031,653],{"class":549},[540,11033,572],{"class":545},[525,11035,825],{"id":824},[830,11037,11038,11048],{},[833,11039,11040],{},[836,11041,11042,11044,11046],{},[839,11043,841],{"align":900},[839,11045,844],{"align":900},[839,11047,847],{},[849,11049,11050,11064,11083,11097,11114],{},[836,11051,11052,11057,11060],{},[854,11053,11054],{"align":900},[520,11055,11056],{},"depth",[854,11058,11059],{"align":900},"Distance from the camera",[854,11061,11062],{},[520,11063,8871],{},[836,11065,11066,11070,11078],{},[854,11067,11068],{"align":900},[520,11069,858],{},[854,11071,11072,11073,11075,11076],{"align":900},"Similar to CSS ",[520,11074,858],{}," property. Cannot be used with ",[520,11077,881],{},[854,11079,11080,11082],{},[520,11081,1848],{}," (vertical center of the screen)",[836,11084,11085,11089,11095],{},[854,11086,11087],{"align":900},[520,11088,881],{},[854,11090,11072,11091,11075,11093],{"align":900},[520,11092,881],{},[520,11094,858],{},[854,11096],{},[836,11098,11099,11103,11109],{},[854,11100,11101],{"align":900},[520,11102,900],{},[854,11104,11072,11105,11075,11107],{"align":900},[520,11106,900],{},[520,11108,919],{},[854,11110,11111,11113],{},[520,11112,1848],{}," (horizontal center of the screen)",[836,11115,11116,11120,11126],{},[854,11117,11118],{"align":900},[520,11119,919],{},[854,11121,11072,11122,11075,11124],{"align":900},[520,11123,919],{},[520,11125,900],{},[854,11127],{},[1230,11129,1546],{},{"title":488,"searchDepth":489,"depth":490,"links":11131},[11132,11133],{"id":527,"depth":490,"text":15},{"id":824,"depth":490,"text":825},"Position objects in front of the camera with CSS-like positioning.",{},{"title":81,"description":11134},"HsnjizzUu-Otw_0NXfsXgH-NRKdmkNQdklnC4aRzjC8",1782052429113]