[{"data":1,"prerenderedAt":1869},["ShallowReactive",2],{"navigation":3,"/api/abstractions/instances":498,"/api/abstractions/instances-surround":1864},[4,26],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","/getting-started","1.getting-started/1.index",[9,10,14,18,22],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation Guide","/getting-started/installation","1.getting-started/2.installation",{"title":15,"path":16,"stem":17},"Usage","/getting-started/usage","1.getting-started/3.usage",{"title":19,"path":20,"stem":21},"Loading Models","/getting-started/loading-models","1.getting-started/4.loading-models",{"title":23,"path":24,"stem":25},"Upgrade Guide","/getting-started/upgrade-guide","1.getting-started/5.upgrade-guide",{"title":27,"path":28,"stem":29,"children":30},"Api","/api","2.api",[31,34,96,126,168,210,308,334,368,418,464],{"title":32,"path":28,"stem":33},"All","2.api/index",{"title":35,"path":36,"stem":37,"children":38},"Abstractions","/api/abstractions","2.api/1.abstractions/index",[39,40,44,48,52,56,60,64,68,72,76,80,84,88,92],{"title":35,"path":36,"stem":37},{"title":41,"path":42,"stem":43},"Align","/api/abstractions/align","2.api/1.abstractions/align",{"title":45,"path":46,"stem":47},"Billboard","/api/abstractions/billboard","2.api/1.abstractions/billboard",{"title":49,"path":50,"stem":51},"Camera Shake","/api/abstractions/camera-shake","2.api/1.abstractions/camera-shake",{"title":53,"path":54,"stem":55},"Decal","/api/abstractions/decal","2.api/1.abstractions/decal",{"title":57,"path":58,"stem":59},"Edges","/api/abstractions/edges","2.api/1.abstractions/edges",{"title":61,"path":62,"stem":63},"Fit","/api/abstractions/fit","2.api/1.abstractions/fit",{"title":65,"path":66,"stem":67},"Instances","/api/abstractions/instances","2.api/1.abstractions/instances",{"title":69,"path":70,"stem":71},"Levioso (Float)","/api/abstractions/levioso","2.api/1.abstractions/levioso",{"title":73,"path":74,"stem":75},"Mask","/api/abstractions/mask","2.api/1.abstractions/mask",{"title":77,"path":78,"stem":79},"Merged","/api/abstractions/merged","2.api/1.abstractions/merged",{"title":81,"path":82,"stem":83},"Outline","/api/abstractions/outline","2.api/1.abstractions/outline",{"title":85,"path":86,"stem":87},"Sampler","/api/abstractions/sampler","2.api/1.abstractions/sampler",{"title":89,"path":90,"stem":91},"ScreenSizer","/api/abstractions/screen-sizer","2.api/1.abstractions/screen-sizer",{"title":93,"path":94,"stem":95},"ScreenSpace","/api/abstractions/screen-space","2.api/1.abstractions/screen-space",{"title":97,"path":98,"stem":99,"children":100},"Controls","/api/controls","2.api/2.controls/index",[101,102,106,110,114,118,122],{"title":97,"path":98,"stem":99},{"title":103,"path":104,"stem":105},"Camera Controls","/api/controls/camera-controls","2.api/2.controls/camera-controls",{"title":107,"path":108,"stem":109},"Keyboard Controls","/api/controls/keyboard-controls","2.api/2.controls/keyboard-controls",{"title":111,"path":112,"stem":113},"Map Controls","/api/controls/map-controls","2.api/2.controls/map-controls",{"title":115,"path":116,"stem":117},"Orbit Controls","/api/controls/orbit-controls","2.api/2.controls/orbit-controls",{"title":119,"path":120,"stem":121},"PointerLock Controls","/api/controls/pointer-lock-controls","2.api/2.controls/pointer-lock-controls",{"title":123,"path":124,"stem":125},"Transform Controls","/api/controls/transform-controls","2.api/2.controls/transform-controls",{"title":127,"path":128,"stem":129,"children":130},"Loaders","/api/loaders","2.api/3.loaders/index",[131,132,136,140,144,148,152,156,160,164],{"title":127,"path":128,"stem":129},{"title":133,"path":134,"stem":135},"useGLTF","/api/loaders/use-gltf","2.api/3.loaders/1.use-gltf",{"title":137,"path":138,"stem":139},"GLTFModel","/api/loaders/gltf-model","2.api/3.loaders/2.gltf-model",{"title":141,"path":142,"stem":143},"useFBX","/api/loaders/use-fbx","2.api/3.loaders/3.use-fbx",{"title":145,"path":146,"stem":147},"FBXModel","/api/loaders/fbx-model","2.api/3.loaders/4.fbx-model",{"title":149,"path":150,"stem":151},"useTexture","/api/loaders/use-texture","2.api/3.loaders/5.use-texture",{"title":153,"path":154,"stem":155},"useTextures","/api/loaders/use-textures","2.api/3.loaders/6.use-textures",{"title":157,"path":158,"stem":159},"useSVG","/api/loaders/use-svg","2.api/3.loaders/7.use-svg",{"title":161,"path":162,"stem":163},"useProgress","/api/loaders/use-progress","2.api/3.loaders/use-progress",{"title":165,"path":166,"stem":167},"useVideoTexture","/api/loaders/use-video-texture","2.api/3.loaders/use-video-texture",{"title":169,"path":170,"stem":171,"children":172},"Materials","/api/materials","2.api/4.materials/index",[173,174,178,182,186,190,194,198,202,206],{"title":169,"path":170,"stem":171},{"title":175,"path":176,"stem":177},"Custom Shader Material","/api/materials/custom-shader-material","2.api/4.materials/custom-shader-material",{"title":179,"path":180,"stem":181},"Mesh Glass Material","/api/materials/glass-material","2.api/4.materials/glass-material",{"title":183,"path":184,"stem":185},"Holographic Material","/api/materials/holographic-material","2.api/4.materials/holographic-material",{"title":187,"path":188,"stem":189},"Mesh Discard Material","/api/materials/mesh-discard-material","2.api/4.materials/mesh-discard-material",{"title":191,"path":192,"stem":193},"Mesh Portal Material","/api/materials/mesh-portal-material","2.api/4.materials/mesh-portal-material",{"title":195,"path":196,"stem":197},"Mesh Reflection Material","/api/materials/mesh-reflection-material","2.api/4.materials/mesh-reflection-material",{"title":199,"path":200,"stem":201},"Mesh Transmission Material","/api/materials/mesh-transmission-material","2.api/4.materials/mesh-transmission-material",{"title":203,"path":204,"stem":205},"Point Material","/api/materials/point-material","2.api/4.materials/point-material",{"title":207,"path":208,"stem":209},"Wobble Material","/api/materials/wobble-material","2.api/4.materials/wobble-material",{"title":211,"path":212,"stem":213,"children":214},"Shapes","/api/shapes","2.api/5.shapes/index",[215,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304],{"title":211,"path":212,"stem":213},{"title":217,"path":218,"stem":219},"Box","/api/shapes/box","2.api/5.shapes/box",{"title":221,"path":222,"stem":223},"CatmullRomCurve3","/api/shapes/catmullromcurve3","2.api/5.shapes/catmullromcurve3",{"title":225,"path":226,"stem":227},"Circle","/api/shapes/circle","2.api/5.shapes/circle",{"title":229,"path":230,"stem":231},"Cone","/api/shapes/cone","2.api/5.shapes/cone",{"title":233,"path":234,"stem":235},"Cubic Bezier Line","/api/shapes/cubic-bezier-line","2.api/5.shapes/cubic-bezier-line",{"title":237,"path":238,"stem":239},"Cylinder","/api/shapes/cylinder","2.api/5.shapes/cylinder",{"title":241,"path":242,"stem":243},"Dodecahedron","/api/shapes/dodecahedron","2.api/5.shapes/dodecahedron",{"title":245,"path":246,"stem":247},"Grid","/api/shapes/grid","2.api/5.shapes/grid",{"title":249,"path":250,"stem":251},"Icosahedron","/api/shapes/icosahedron","2.api/5.shapes/icosahedron",{"title":253,"path":254,"stem":255},"Line2","/api/shapes/line2","2.api/5.shapes/line2",{"title":257,"path":258,"stem":259},"Octahedron","/api/shapes/octahedron","2.api/5.shapes/octahedron",{"title":261,"path":262,"stem":263},"Plane","/api/shapes/plane","2.api/5.shapes/plane",{"title":265,"path":266,"stem":267},"Quadratic Bezier Line","/api/shapes/quadratic-bezier-line","2.api/5.shapes/quadratic-bezier-line",{"title":269,"path":270,"stem":271},"Ring","/api/shapes/ring","2.api/5.shapes/ring",{"title":273,"path":274,"stem":275},"Rounded Box","/api/shapes/rounded-box","2.api/5.shapes/rounded-box",{"title":277,"path":278,"stem":279},"Rounded Plane","/api/shapes/rounded-plane","2.api/5.shapes/rounded-plane",{"title":281,"path":282,"stem":283},"Screen Quad","/api/shapes/screen-quad","2.api/5.shapes/screen-quad",{"title":285,"path":286,"stem":287},"Sphere","/api/shapes/sphere","2.api/5.shapes/sphere",{"title":289,"path":290,"stem":291},"Superformula","/api/shapes/superformula","2.api/5.shapes/superformula",{"title":293,"path":294,"stem":295},"Tetrahedron","/api/shapes/tetrahedron","2.api/5.shapes/tetrahedron",{"title":297,"path":298,"stem":299},"Torus","/api/shapes/torus","2.api/5.shapes/torus",{"title":301,"path":302,"stem":303},"Torus Knot","/api/shapes/torus-knot","2.api/5.shapes/torus-knot",{"title":305,"path":306,"stem":307},"Tube","/api/shapes/tube","2.api/5.shapes/tube",{"title":309,"path":310,"stem":311,"children":312},"Debug/Performance","/api/debug-performance","2.api/6.debug-performance/index",[313,314,318,322,326,330],{"title":309,"path":310,"stem":311},{"title":315,"path":316,"stem":317},"Helper","/api/debug-performance/helper","2.api/6.debug-performance/helper",{"title":319,"path":320,"stem":321},"LOD","/api/debug-performance/lod","2.api/6.debug-performance/lod",{"title":323,"path":324,"stem":325},"Stats","/api/debug-performance/stats","2.api/6.debug-performance/stats",{"title":327,"path":328,"stem":329},"StatsGl","/api/debug-performance/stats-gl","2.api/6.debug-performance/stats-gl",{"title":331,"path":332,"stem":333},"useBVH","/api/debug-performance/use-bvh","2.api/6.debug-performance/use-bvh",{"title":335,"path":336,"stem":337,"children":338},"Light/Shadow","/api/light-shadow","2.api/7.light-shadow/index",[339,340,344,348,352,356,360,364],{"title":335,"path":336,"stem":337},{"title":341,"path":342,"stem":343},"Accumulative Shadows","/api/light-shadow/accumulative-shadows","2.api/7.light-shadow/accumulative-shadows",{"title":345,"path":346,"stem":347},"Bake Shadows","/api/light-shadow/bake-shadows","2.api/7.light-shadow/bake-shadows",{"title":349,"path":350,"stem":351},"Circle Shadow","/api/light-shadow/circle-shadow","2.api/7.light-shadow/circle-shadow",{"title":353,"path":354,"stem":355},"Contact Shadows","/api/light-shadow/contact-shadows","2.api/7.light-shadow/contact-shadows",{"title":357,"path":358,"stem":359},"Lensflare","/api/light-shadow/lensflare","2.api/7.light-shadow/lensflare",{"title":361,"path":362,"stem":363},"Randomized Lights","/api/light-shadow/randomized-lights","2.api/7.light-shadow/randomized-lights",{"title":365,"path":366,"stem":367},"Soft Shadows","/api/light-shadow/soft-shadows","2.api/7.light-shadow/soft-shadows",{"title":369,"path":370,"stem":371,"children":372},"Staging","/api/staging","2.api/8.staging/index",[373,374,378,382,386,390,394,398,402,406,410,414],{"title":369,"path":370,"stem":371},{"title":375,"path":376,"stem":377},"Environment","/api/staging/environment","2.api/8.staging/1.environment",{"title":379,"path":380,"stem":381},"useEnvironment","/api/staging/use-environment","2.api/8.staging/2.use-environment",{"title":383,"path":384,"stem":385},"Lightformer","/api/staging/lightformer","2.api/8.staging/3.lightformer",{"title":387,"path":388,"stem":389},"Backdrop","/api/staging/backdrop","2.api/8.staging/backdrop",{"title":391,"path":392,"stem":393},"Ocean","/api/staging/ocean","2.api/8.staging/ocean",{"title":395,"path":396,"stem":397},"Precipitation","/api/staging/precipitation","2.api/8.staging/precipitation",{"title":399,"path":400,"stem":401},"Sky","/api/staging/sky","2.api/8.staging/sky",{"title":403,"path":404,"stem":405},"Smoke","/api/staging/smoke","2.api/8.staging/smoke",{"title":407,"path":408,"stem":409},"Sparkles","/api/staging/sparkles","2.api/8.staging/sparkles",{"title":411,"path":412,"stem":413},"Stage","/api/staging/stage","2.api/8.staging/stage",{"title":415,"path":416,"stem":417},"Stars","/api/staging/stars","2.api/8.staging/stars",{"title":419,"path":420,"stem":421,"children":422},"Objects","/api/objects","2.api/9.objects/index",[423,424,428,432,436,440,444,448,452,456,460],{"title":419,"path":420,"stem":421},{"title":425,"path":426,"stem":427},"AnimatedSprite","/api/objects/animated-sprite","2.api/9.objects/animated-sprite",{"title":429,"path":430,"stem":431},"CubeCamera","/api/objects/cube-camera","2.api/9.objects/cube-camera",{"title":433,"path":434,"stem":435},"Fbo","/api/objects/fbo","2.api/9.objects/fbo",{"title":437,"path":438,"stem":439},"GradientTexture","/api/objects/gradient-texture","2.api/9.objects/gradient-texture",{"title":441,"path":442,"stem":443},"HTML","/api/objects/html","2.api/9.objects/html",{"title":445,"path":446,"stem":447},"Image","/api/objects/image","2.api/9.objects/image",{"title":449,"path":450,"stem":451},"MarchingCubes","/api/objects/marching-cubes","2.api/9.objects/marching-cubes",{"title":453,"path":454,"stem":455},"Reflector","/api/objects/reflector","2.api/9.objects/reflector",{"title":457,"path":458,"stem":459},"Refractor","/api/objects/refractor","2.api/9.objects/refractor",{"title":461,"path":462,"stem":463},"Text3D","/api/objects/text-3d","2.api/9.objects/text-3d",{"title":465,"path":466,"stem":467,"children":468},"Miscellaneous","/api/miscellaneous","2.api/miscellaneous/index",[469,470,474,478,482,486,490,494],{"title":465,"path":466,"stem":467},{"title":471,"path":472,"stem":473},"Bounds","/api/miscellaneous/bounds","2.api/miscellaneous/bounds",{"title":475,"path":476,"stem":477},"GlobalAudio","/api/miscellaneous/global-audio","2.api/miscellaneous/global-audio",{"title":479,"path":480,"stem":481},"MouseParallax","/api/miscellaneous/mouse-parallax","2.api/miscellaneous/mouse-parallax",{"title":483,"path":484,"stem":485},"PositionalAudio","/api/miscellaneous/positional-audio","2.api/miscellaneous/positional-audio",{"title":487,"path":488,"stem":489},"useAnimations","/api/miscellaneous/use-animations","2.api/miscellaneous/use-animations",{"title":491,"path":492,"stem":493},"useGLTFExporter","/api/miscellaneous/use-gltf-exporter","2.api/miscellaneous/use-gltf-exporter",{"title":495,"path":496,"stem":497},"useIntersect","/api/miscellaneous/use-intersect","2.api/miscellaneous/use-intersect",{"id":499,"title":65,"body":500,"description":1858,"extension":1859,"links":1860,"meta":1861,"navigation":698,"path":66,"seo":1862,"stem":67,"__hash__":1863},"docs/2.api/1.abstractions/instances.md",{"type":501,"value":502,"toc":1844},"minimark",[503,509,535,553,557,1058,1072,1076,1089,1162,1166,1169,1228,1232,1235,1250,1253,1257,1260,1335,1339,1356,1426,1455,1462,1466,1475,1525,1528,1532,1535,1553,1560,1563,1610,1626,1630,1634,1725,1734,1736,1819,1831,1840],[504,505,506],"scene-controls-wrapper",{},[507,508],"abstractions-instances",{},[510,511,512,513,517,518,521,522,525,526,529,530,534],"p",{},"Rendering the same mesh many times is one drawcall per copy, and drawcalls are what a scene runs\nout of first. ",[514,515,516],"code",{},"\u003CInstances />"," owns a single ",[514,519,520],{},"THREE.InstancedMesh"," and ",[514,523,524],{},"\u003CInstance />"," is a\nplaceholder that registers itself with it, so a ",[514,527,528],{},"v-for"," of a thousand nodes costs ",[531,532,533],"strong",{},"one"," drawcall.",[510,536,537,538,540,541,544,545,548,549,552],{},"An ",[514,539,524],{}," behaves like any other node in the graph: give it ",[514,542,543],{},"position",", nest it under a\ngroup, animate that group, toggle it with ",[514,546,547],{},"v-if",", listen for ",[514,550,551],{},"@click"," on one of them.",[554,555,15],"h2",{"id":556},"usage",[558,559,573],"pre",{"className":560,"code":561,"highlights":562,"language":571,"meta":572,"style":572},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { TresCanvas } from '@tresjs/core'\nimport { Instance, Instances } from '@tresjs/cientos'\nimport { BoxGeometry, MeshStandardMaterial } from 'three'\n\nconst geometry = new BoxGeometry(0.35, 0.35, 0.35)\nconst material = new MeshStandardMaterial()\n\nconst cubes = Array.from({ length: 900 }, (_, i) => [i % 30 - 15, 0, Math.floor(i / 30) - 15])\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas>\n    \u003CTresPerspectiveCamera :position=\"[14, 10, 14]\" />\n    \u003CInstances :geometry=\"geometry\" :material=\"material\">\n      \u003CInstance\n        v-for=\"(position, i) in cubes\"\n        :key=\"i\"\n        :position=\"position\"\n        color=\"#38bdf8\"\n      />\n    \u003C/Instances>\n  \u003C/TresCanvas>\n\u003C/template>\n",[563,564,565,566,567,568,569,570],3,14,16,17,18,19,20,21,"vue","",[514,574,575,610,639,667,693,700,736,753,758,861,871,876,886,897,921,954,963,979,994,1008,1023,1029,1039,1049],{"__ignoreMap":572},[576,577,580,584,588,592,595,598,601,605,607],"span",{"class":578,"line":579},"line",1,[576,581,583],{"class":582},"sMK4o","\u003C",[576,585,587],{"class":586},"swJcz","script",[576,589,591],{"class":590},"spNyl"," setup",[576,593,594],{"class":590}," lang",[576,596,597],{"class":582},"=",[576,599,600],{"class":582},"\"",[576,602,604],{"class":603},"sfazB","ts",[576,606,600],{"class":582},[576,608,609],{"class":582},">\n",[576,611,613,617,620,624,627,630,633,636],{"class":578,"line":612},2,[576,614,616],{"class":615},"s7zQu","import",[576,618,619],{"class":582}," {",[576,621,623],{"class":622},"sTEyZ"," TresCanvas",[576,625,626],{"class":582}," }",[576,628,629],{"class":615}," from",[576,631,632],{"class":582}," '",[576,634,635],{"class":603},"@tresjs/core",[576,637,638],{"class":582},"'\n",[576,640,643,645,647,650,653,656,658,660,662,665],{"class":641,"line":563},[578,642],"highlight",[576,644,616],{"class":615},[576,646,619],{"class":582},[576,648,649],{"class":622}," Instance",[576,651,652],{"class":582},",",[576,654,655],{"class":622}," Instances",[576,657,626],{"class":582},[576,659,629],{"class":615},[576,661,632],{"class":582},[576,663,664],{"class":603},"@tresjs/cientos",[576,666,638],{"class":582},[576,668,670,672,674,677,679,682,684,686,688,691],{"class":578,"line":669},4,[576,671,616],{"class":615},[576,673,619],{"class":582},[576,675,676],{"class":622}," BoxGeometry",[576,678,652],{"class":582},[576,680,681],{"class":622}," MeshStandardMaterial",[576,683,626],{"class":582},[576,685,629],{"class":615},[576,687,632],{"class":582},[576,689,690],{"class":603},"three",[576,692,638],{"class":582},[576,694,696],{"class":578,"line":695},5,[576,697,699],{"emptyLinePlaceholder":698},true,"\n",[576,701,703,706,709,711,714,717,720,724,726,729,731,733],{"class":578,"line":702},6,[576,704,705],{"class":590},"const",[576,707,708],{"class":622}," geometry ",[576,710,597],{"class":582},[576,712,713],{"class":582}," new",[576,715,676],{"class":716},"s2Zo4",[576,718,719],{"class":622},"(",[576,721,723],{"class":722},"sbssI","0.35",[576,725,652],{"class":582},[576,727,728],{"class":722}," 0.35",[576,730,652],{"class":582},[576,732,728],{"class":722},[576,734,735],{"class":622},")\n",[576,737,739,741,744,746,748,750],{"class":578,"line":738},7,[576,740,705],{"class":590},[576,742,743],{"class":622}," material ",[576,745,597],{"class":582},[576,747,713],{"class":582},[576,749,681],{"class":716},[576,751,752],{"class":622},"()\n",[576,754,756],{"class":578,"line":755},8,[576,757,699],{"emptyLinePlaceholder":698},[576,759,761,763,766,768,771,774,777,779,782,785,788,791,794,797,801,803,806,809,812,815,818,821,824,827,829,832,834,837,839,842,845,848,850,853,856,858],{"class":578,"line":760},9,[576,762,705],{"class":590},[576,764,765],{"class":622}," cubes ",[576,767,597],{"class":582},[576,769,770],{"class":622}," Array",[576,772,773],{"class":582},".",[576,775,776],{"class":716},"from",[576,778,719],{"class":622},[576,780,781],{"class":582},"{",[576,783,784],{"class":586}," length",[576,786,787],{"class":582},":",[576,789,790],{"class":722}," 900",[576,792,793],{"class":582}," },",[576,795,796],{"class":582}," (",[576,798,800],{"class":799},"sHdIc","_",[576,802,652],{"class":582},[576,804,805],{"class":799}," i",[576,807,808],{"class":582},")",[576,810,811],{"class":590}," =>",[576,813,814],{"class":622}," [i ",[576,816,817],{"class":582},"%",[576,819,820],{"class":722}," 30",[576,822,823],{"class":582}," -",[576,825,826],{"class":722}," 15",[576,828,652],{"class":582},[576,830,831],{"class":722}," 0",[576,833,652],{"class":582},[576,835,836],{"class":622}," Math",[576,838,773],{"class":582},[576,840,841],{"class":716},"floor",[576,843,844],{"class":622},"(i ",[576,846,847],{"class":582},"/",[576,849,820],{"class":722},[576,851,852],{"class":622},") ",[576,854,855],{"class":582},"-",[576,857,826],{"class":722},[576,859,860],{"class":622},"])\n",[576,862,864,867,869],{"class":578,"line":863},10,[576,865,866],{"class":582},"\u003C/",[576,868,587],{"class":586},[576,870,609],{"class":582},[576,872,874],{"class":578,"line":873},11,[576,875,699],{"emptyLinePlaceholder":698},[576,877,879,881,884],{"class":578,"line":878},12,[576,880,583],{"class":582},[576,882,883],{"class":586},"template",[576,885,609],{"class":582},[576,887,889,892,895],{"class":578,"line":888},13,[576,890,891],{"class":582},"  \u003C",[576,893,894],{"class":586},"TresCanvas",[576,896,609],{"class":582},[576,898,900,903,906,909,911,913,916,918],{"class":899,"line":564},[578,642],[576,901,902],{"class":582},"    \u003C",[576,904,905],{"class":586},"TresPerspectiveCamera",[576,907,908],{"class":590}," :position",[576,910,597],{"class":582},[576,912,600],{"class":582},[576,914,915],{"class":603},"[14, 10, 14]",[576,917,600],{"class":582},[576,919,920],{"class":582}," />\n",[576,922,924,926,928,931,933,935,938,940,943,945,947,950,952],{"class":578,"line":923},15,[576,925,902],{"class":582},[576,927,65],{"class":586},[576,929,930],{"class":590}," :geometry",[576,932,597],{"class":582},[576,934,600],{"class":582},[576,936,937],{"class":603},"geometry",[576,939,600],{"class":582},[576,941,942],{"class":590}," :material",[576,944,597],{"class":582},[576,946,600],{"class":582},[576,948,949],{"class":603},"material",[576,951,600],{"class":582},[576,953,609],{"class":582},[576,955,957,960],{"class":956,"line":565},[578,642],[576,958,959],{"class":582},"      \u003C",[576,961,962],{"class":586},"Instance\n",[576,964,966,969,971,973,976],{"class":965,"line":566},[578,642],[576,967,968],{"class":590},"        v-for",[576,970,597],{"class":582},[576,972,600],{"class":582},[576,974,975],{"class":603},"(position, i) in cubes",[576,977,978],{"class":582},"\"\n",[576,980,982,985,987,989,992],{"class":981,"line":567},[578,642],[576,983,984],{"class":590},"        :key",[576,986,597],{"class":582},[576,988,600],{"class":582},[576,990,991],{"class":603},"i",[576,993,978],{"class":582},[576,995,997,1000,1002,1004,1006],{"class":996,"line":568},[578,642],[576,998,999],{"class":590},"        :position",[576,1001,597],{"class":582},[576,1003,600],{"class":582},[576,1005,543],{"class":603},[576,1007,978],{"class":582},[576,1009,1011,1014,1016,1018,1021],{"class":1010,"line":569},[578,642],[576,1012,1013],{"class":590},"        color",[576,1015,597],{"class":582},[576,1017,600],{"class":582},[576,1019,1020],{"class":603},"#38bdf8",[576,1022,978],{"class":582},[576,1024,1026],{"class":1025,"line":570},[578,642],[576,1027,1028],{"class":582},"      />\n",[576,1030,1032,1035,1037],{"class":578,"line":1031},22,[576,1033,1034],{"class":582},"    \u003C/",[576,1036,65],{"class":586},[576,1038,609],{"class":582},[576,1040,1042,1045,1047],{"class":578,"line":1041},23,[576,1043,1044],{"class":582},"  \u003C/",[576,1046,894],{"class":586},[576,1048,609],{"class":582},[576,1050,1052,1054,1056],{"class":578,"line":1051},24,[576,1053,866],{"class":582},[576,1055,883],{"class":586},[576,1057,609],{"class":582},[1059,1060,1061],"prose-note",{},[510,1062,1063,1064,521,1066,1068,1069,1071],{},"The ",[514,1065,937],{},[514,1067,949],{}," are yours: ",[514,1070,516],{}," never disposes them.",[554,1073,1075],{"id":1074},"per-instance-color","Per-instance color",[510,1077,1078,1080,1081,1084,1085,1088],{},[514,1079,524],{}," takes a ",[514,1082,1083],{},"color"," prop, written into the batch's ",[514,1086,1087],{},"instanceColor"," buffer. The buffer is\nonly allocated once at least one instance asks for a color, so an uncolored batch pays nothing.",[558,1090,1092],{"className":560,"code":1091,"language":571,"meta":572,"style":572},"\u003CInstance :position=\"[0, 0, 0]\" :color=\"isSelected ? '#f97316' : '#38bdf8'\" />\n",[514,1093,1094],{"__ignoreMap":572},[576,1095,1096,1098,1101,1104,1106,1108,1110,1113,1116,1118,1120,1122,1124,1127,1129,1131,1133,1135,1137,1140,1143,1145,1148,1151,1153,1155,1157,1160],{"class":578,"line":579},[576,1097,583],{"class":582},[576,1099,1100],{"class":586},"Instance",[576,1102,1103],{"class":582}," :",[576,1105,543],{"class":590},[576,1107,597],{"class":582},[576,1109,600],{"class":582},[576,1111,1112],{"class":622},"[",[576,1114,1115],{"class":722},"0",[576,1117,652],{"class":582},[576,1119,831],{"class":722},[576,1121,652],{"class":582},[576,1123,831],{"class":722},[576,1125,1126],{"class":622},"]",[576,1128,600],{"class":582},[576,1130,1103],{"class":582},[576,1132,1083],{"class":590},[576,1134,597],{"class":582},[576,1136,600],{"class":582},[576,1138,1139],{"class":622},"isSelected ",[576,1141,1142],{"class":582},"?",[576,1144,632],{"class":582},[576,1146,1147],{"class":603},"#f97316",[576,1149,1150],{"class":582},"'",[576,1152,1103],{"class":582},[576,1154,632],{"class":582},[576,1156,1020],{"class":603},[576,1158,1159],{"class":582},"'\"",[576,1161,920],{"class":582},[554,1163,1165],{"id":1164},"pointer-events","Pointer events",[510,1167,1168],{},"Each placeholder raycasts against the batch's geometry at its own transform, so pointer events land\non the single instance you clicked, not on the whole batch.",[558,1170,1172],{"className":560,"code":1171,"language":571,"meta":572,"style":572},"\u003CInstance :position=\"position\" @click=\"select(id)\" @pointer-enter=\"hover(id)\" />\n",[514,1173,1174],{"__ignoreMap":572},[576,1175,1176,1178,1180,1182,1184,1186,1188,1190,1192,1195,1198,1200,1202,1205,1208,1210,1212,1215,1217,1219,1222,1224,1226],{"class":578,"line":579},[576,1177,583],{"class":582},[576,1179,1100],{"class":586},[576,1181,1103],{"class":582},[576,1183,543],{"class":590},[576,1185,597],{"class":582},[576,1187,600],{"class":582},[576,1189,543],{"class":622},[576,1191,600],{"class":582},[576,1193,1194],{"class":582}," @",[576,1196,1197],{"class":590},"click",[576,1199,597],{"class":582},[576,1201,600],{"class":582},[576,1203,1204],{"class":716},"select",[576,1206,1207],{"class":622},"(id)",[576,1209,600],{"class":582},[576,1211,1194],{"class":582},[576,1213,1214],{"class":590},"pointer-enter",[576,1216,597],{"class":582},[576,1218,600],{"class":582},[576,1220,1221],{"class":716},"hover",[576,1223,1207],{"class":622},[576,1225,600],{"class":582},[576,1227,920],{"class":582},[554,1229,1231],{"id":1230},"hiding-instances","Hiding instances",[510,1233,1234],{},"Two ways, and they differ in what they cost:",[1236,1237,1238,1245],"ul",{},[1239,1240,1241,1244],"li",{},[514,1242,1243],{},":visible=\"false\""," keeps the instance registered but drops it from the batch for that frame.\nUse it for something that toggles often.",[1239,1246,1247,1249],{},[514,1248,547],{}," unmounts the placeholder and unregisters it. Use it when the node is really gone.",[510,1251,1252],{},"Either way the remaining instances are packed densely, so hidden ones cost nothing on the GPU.",[554,1254,1256],{"id":1255},"nesting-and-transforms","Nesting and transforms",[510,1258,1259],{},"Instances read their world matrix, so parent transforms work exactly as you would expect:",[558,1261,1263],{"className":560,"code":1262,"language":571,"meta":572,"style":572},"\u003CInstances :geometry=\"geometry\" :material=\"material\">\n  \u003CLevioso>\n    \u003CTresGroup :position=\"[0, 3, 0]\">\n      \u003C!-- floats with the group, still the same drawcall -->\n      \u003CInstance v-for=\"i in 12\" :key=\"i\" :position=\"ringPosition(i)\" />\n    \u003C/TresGroup>\n  \u003C/Levioso>\n\u003C/Instances>\n",[514,1264,1265,1297,1302,1307,1312,1317,1322,1327],{"__ignoreMap":572},[576,1266,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295],{"class":578,"line":579},[576,1268,583],{"class":582},[576,1270,65],{"class":586},[576,1272,1103],{"class":582},[576,1274,937],{"class":590},[576,1276,597],{"class":582},[576,1278,600],{"class":582},[576,1280,937],{"class":622},[576,1282,600],{"class":582},[576,1284,1103],{"class":582},[576,1286,949],{"class":590},[576,1288,597],{"class":582},[576,1290,600],{"class":582},[576,1292,949],{"class":622},[576,1294,600],{"class":582},[576,1296,609],{"class":582},[576,1298,1299],{"class":578,"line":612},[576,1300,1301],{"class":622},"  \u003CLevioso>\n",[576,1303,1304],{"class":578,"line":563},[576,1305,1306],{"class":622},"    \u003CTresGroup :position=\"[0, 3, 0]\">\n",[576,1308,1309],{"class":578,"line":669},[576,1310,1311],{"class":622},"      \u003C!-- floats with the group, still the same drawcall -->\n",[576,1313,1314],{"class":578,"line":695},[576,1315,1316],{"class":622},"      \u003CInstance v-for=\"i in 12\" :key=\"i\" :position=\"ringPosition(i)\" />\n",[576,1318,1319],{"class":578,"line":702},[576,1320,1321],{"class":622},"    \u003C/TresGroup>\n",[576,1323,1324],{"class":578,"line":738},[576,1325,1326],{"class":622},"  \u003C/Levioso>\n",[576,1328,1329,1331,1333],{"class":578,"line":755},[576,1330,866],{"class":582},[576,1332,65],{"class":586},[576,1334,609],{"class":582},[554,1336,1338],{"id":1337},"animating-instances","Animating instances",[510,1340,1341,1342,1345,1346,1349,1350,1080,1352,1355],{},"Anything that moves an instance's node moves it in the batch, because the batch re-reads world\nmatrices every frame. An ",[514,1343,1344],{},"AnimationMixer"," included: a mixer resolves its tracks by ",[514,1347,1348],{},"Object3D","\nname, and an ",[514,1351,524],{},[514,1353,1354],{},"name"," like any other node, so a clip can drive one directly.",[558,1357,1359],{"className":560,"code":1358,"language":571,"meta":572,"style":572},"\u003CInstances :geometry=\"geometry\" :material=\"material\">\n  \u003C!-- \"Blade\" is driven by the clip; everything under \"Rotor\" rides along with it -->\n  \u003CTresGroup name=\"Rotor\">\n    \u003CInstance name=\"Blade\" />\n    \u003CInstance v-for=\"i in 12\" :key=\"i\" :position=\"ringPosition(i)\" />\n  \u003C/TresGroup>\n\u003C/Instances>\n",[514,1360,1361,1393,1398,1403,1408,1413,1418],{"__ignoreMap":572},[576,1362,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391],{"class":578,"line":579},[576,1364,583],{"class":582},[576,1366,65],{"class":586},[576,1368,1103],{"class":582},[576,1370,937],{"class":590},[576,1372,597],{"class":582},[576,1374,600],{"class":582},[576,1376,937],{"class":622},[576,1378,600],{"class":582},[576,1380,1103],{"class":582},[576,1382,949],{"class":590},[576,1384,597],{"class":582},[576,1386,600],{"class":582},[576,1388,949],{"class":622},[576,1390,600],{"class":582},[576,1392,609],{"class":582},[576,1394,1395],{"class":578,"line":612},[576,1396,1397],{"class":622},"  \u003C!-- \"Blade\" is driven by the clip; everything under \"Rotor\" rides along with it -->\n",[576,1399,1400],{"class":578,"line":563},[576,1401,1402],{"class":622},"  \u003CTresGroup name=\"Rotor\">\n",[576,1404,1405],{"class":578,"line":669},[576,1406,1407],{"class":622},"    \u003CInstance name=\"Blade\" />\n",[576,1409,1410],{"class":578,"line":695},[576,1411,1412],{"class":622},"    \u003CInstance v-for=\"i in 12\" :key=\"i\" :position=\"ringPosition(i)\" />\n",[576,1414,1415],{"class":578,"line":702},[576,1416,1417],{"class":622},"  \u003C/TresGroup>\n",[576,1419,1420,1422,1424],{"class":578,"line":738},[576,1421,866],{"class":582},[576,1423,65],{"class":586},[576,1425,609],{"class":582},[1059,1427,1428],{},[510,1429,1430,1431,1434,1435,521,1437,1440,1441,1443,1444,1447,1448,1450,1451,1454],{},"Inside a ",[514,1432,1433],{},"\u003CMerged />",", ",[514,1436,1354],{},[514,1438,1439],{},"batch"," are different things: ",[514,1442,1439],{}," picks which\n",[514,1445,1446],{},"InstancedMesh"," to join, ",[514,1449,1354],{}," is what this node is called. ",[514,1452,1453],{},"tres gltf --instance"," emits both,\nbecause a batch is keyed after its first mesh and every copy in it shares that key.",[510,1456,1457,1458,1461],{},"A track that finds no node is not silent: three logs\n",[514,1459,1460],{},"THREE.PropertyBinding: No target node found for track: \u003Cname>.position."," once for it.",[554,1463,1465],{"id":1464},"limit-and-growth","Limit and growth",[510,1467,1468,1471,1472,1474],{},[514,1469,1470],{},"limit"," is the initial buffer allocation, not a cap. If more instances register than it allows, the\nbatch reallocates its buffers (doubling), keeps every instance, and warns once in dev telling you\nwhich ",[514,1473,1470],{}," would have avoided the reallocation.",[558,1476,1478],{"className":560,"code":1477,"language":571,"meta":572,"style":572},"\u003CInstances :geometry=\"geometry\" :material=\"material\" :limit=\"5000\">\n",[514,1479,1480],{"__ignoreMap":572},[576,1481,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502,1504,1506,1508,1510,1512,1514,1516,1518,1521,1523],{"class":578,"line":579},[576,1483,583],{"class":582},[576,1485,65],{"class":586},[576,1487,1103],{"class":582},[576,1489,937],{"class":590},[576,1491,597],{"class":582},[576,1493,600],{"class":582},[576,1495,937],{"class":622},[576,1497,600],{"class":582},[576,1499,1103],{"class":582},[576,1501,949],{"class":590},[576,1503,597],{"class":582},[576,1505,600],{"class":582},[576,1507,949],{"class":622},[576,1509,600],{"class":582},[576,1511,1103],{"class":582},[576,1513,1470],{"class":590},[576,1515,597],{"class":582},[576,1517,600],{"class":582},[576,1519,1520],{"class":722},"5000",[576,1522,600],{"class":582},[576,1524,609],{"class":582},[510,1526,1527],{},"Set it close to your real maximum when you know it: reallocating mid-scene is avoidable work.",[554,1529,1531],{"id":1530},"why-every-instance-shows-up-in-the-scene-graph","Why every instance shows up in the scene graph",[510,1533,1534],{},"Open the devtools on a batch of 500 and you will see 500 nodes. That is expected, not a leak.",[510,1536,1537,1538,1540,1541,1543,1544,1546,1547,1549,1550,1552],{},"Each ",[514,1539,524],{}," is a real ",[514,1542,1348],{}," in the graph. That is precisely what buys you the ergonomics:\n",[514,1545,543],{}," is just a transform, nesting under a group works because the group is its parent, ",[514,1548,547],{},"\nworks because unmounting a node unregisters it, and ",[514,1551,551],{}," works because there is a node to hit.\nThe batch reads each node's world matrix every frame and packs it into the instance buffer.",[510,1554,1555,1556,1559],{},"What those nodes do ",[531,1557,1558],{},"not"," do is render. They carry no geometry and never enter the render list, so\n500 of them still cost one drawcall. What you are seeing in the graph is bookkeeping, not draw work.",[510,1561,1562],{},"The costs that are real:",[1564,1565,1566,1579],"table",{},[1567,1568,1569],"thead",{},[1570,1571,1572,1576],"tr",{},[1573,1574],"th",{"align":1575},"left",[1573,1577,1578],{"align":1575},"Cost",[1580,1581,1582,1591,1599],"tbody",{},[1570,1583,1584,1588],{},[1585,1586,1587],"td",{"align":1575},"Per frame",[1585,1589,1590],{"align":1575},"One world-matrix update and one matrix multiply per instance.",[1570,1592,1593,1596],{},[1585,1594,1595],{"align":1575},"On pointer move",[1585,1597,1598],{"align":1575},"A raycast per instance, but only for instances that have a pointer handler (or inherit one from an ancestor). A scatter with no handlers costs nothing.",[1570,1600,1601,1604],{},[1585,1602,1603],{"align":1575},"Memory",[1585,1605,1606,1607,1609],{"align":1575},"One bare ",[514,1608,1348],{}," per instance.",[1059,1611,1612],{},[510,1613,1614,1615,1618,1619,1622,1623,1625],{},"If you have tens of thousands of instances that never move, never toggle and never need picking, a\n",[514,1616,1617],{},"TresInstancedMesh"," whose ",[514,1620,1621],{},"instanceMatrix"," you fill yourself will always be cheaper. ",[514,1624,516],{},"\ntrades that per-node overhead for being able to write instances as ordinary Vue nodes.",[554,1627,1629],{"id":1628},"props","Props",[1631,1632,65],"h3",{"id":1633},"instances",[1564,1635,1636,1649],{},[1567,1637,1638],{},[1570,1639,1640,1643,1646],{},[1573,1641,1642],{"align":1575},"Prop",[1573,1644,1645],{"align":1575},"Description",[1573,1647,1648],{},"Default",[1580,1650,1651,1666,1679,1693,1709],{},[1570,1652,1653,1657,1660],{},[1585,1654,1655],{"align":1575},[514,1656,937],{},[1585,1658,1659],{"align":1575},"Geometry shared by every instance. Not disposed by the component.",[1585,1661,1662],{},[1663,1664,1665],"em",{},"required",[1570,1667,1668,1672,1675],{},[1585,1669,1670],{"align":1575},[514,1671,949],{},[1585,1673,1674],{"align":1575},"Material shared by every instance. Not disposed by the component.",[1585,1676,1677],{},[1663,1678,1665],{},[1570,1680,1681,1685,1688],{},[1585,1682,1683],{"align":1575},[514,1684,1470],{},[1585,1686,1687],{"align":1575},"Initial buffer allocation. Grows automatically when exceeded.",[1585,1689,1690],{},[514,1691,1692],{},"1000",[1570,1694,1695,1699,1704],{},[1585,1696,1697],{"align":1575},[514,1698,1439],{},[1585,1700,1701,1702,773],{"align":1575},"Key this batch registers under with an ancestor ",[514,1703,1433],{},[1585,1705,1706],{},[514,1707,1708],{},"undefined",[1570,1710,1711,1715,1721],{},[1585,1712,1713],{"align":1575},[514,1714,1354],{},[1585,1716,1717,1718,1720],{"align":1575},"Name for the ",[514,1719,1446],{}," itself.",[1585,1722,1723],{},[514,1724,1708],{},[510,1726,1727,1728,1730,1731,773],{},"Exposes the underlying ",[514,1729,520],{}," through ",[514,1732,1733],{},"instance",[1631,1735,1100],{"id":1733},[1564,1737,1738,1748],{},[1567,1739,1740],{},[1570,1741,1742,1744,1746],{},[1573,1743,1642],{"align":1575},[1573,1745,1645],{"align":1575},[1573,1747,1648],{},[1580,1749,1750,1769,1786,1801],{},[1570,1751,1752,1756,1765],{},[1585,1753,1754],{"align":1575},[514,1755,1439],{},[1585,1757,1758,1759,1762,1763,773],{"align":1575},"Batch to join, by its key in ",[514,1760,1761],{},"\u003CMerged :meshes />",". Omit for the nearest ",[514,1764,516],{},[1585,1766,1767],{},[514,1768,1708],{},[1570,1770,1771,1775,1782],{},[1585,1772,1773],{"align":1575},[514,1774,1354],{},[1585,1776,1777,1778,1781],{"align":1575},"Name for this instance's node, so a mixer or ",[514,1779,1780],{},"getObjectByName"," can find it.",[1585,1783,1784],{},[514,1785,1708],{},[1570,1787,1788,1792,1797],{},[1585,1789,1790],{"align":1575},[514,1791,1083],{},[1585,1793,1794,1795,773],{"align":1575},"Per-instance color, written into ",[514,1796,1087],{},[1585,1798,1799],{},[514,1800,1708],{},[1570,1802,1803,1808,1814],{},[1585,1804,1805],{"align":1575},[514,1806,1807],{},"visible",[1585,1809,1810,1813],{"align":1575},[514,1811,1812],{},"false"," drops the instance from the batch without unregistering it.",[1585,1815,1816],{},[514,1817,1818],{},"true",[510,1820,1821,1822,1434,1824,1434,1827,1830],{},"Transform props (",[514,1823,543],{},[514,1825,1826],{},"rotation",[514,1828,1829],{},"scale",", …) and pointer events behave like any other node.",[1832,1833,1834],"read-more",{"to":78},[510,1835,1836,1837,1839],{},"Instancing several meshes at once, for example every node of a glTF model, is what ",[514,1838,1433],{}," is for.",[1841,1842,1843],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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":572,"searchDepth":579,"depth":612,"links":1845},[1846,1847,1848,1849,1850,1851,1852,1853,1854],{"id":556,"depth":612,"text":15},{"id":1074,"depth":612,"text":1075},{"id":1164,"depth":612,"text":1165},{"id":1230,"depth":612,"text":1231},{"id":1255,"depth":612,"text":1256},{"id":1337,"depth":612,"text":1338},{"id":1464,"depth":612,"text":1465},{"id":1530,"depth":612,"text":1531},{"id":1628,"depth":612,"text":1629,"children":1855},[1856,1857],{"id":1633,"depth":563,"text":65},{"id":1733,"depth":563,"text":1100},"Draw thousands of copies of one mesh in a single drawcall, declaratively.","md",null,{},{"title":65,"description":1858},"8vKhux_ZHYFi--jFcKf3FugQpxaRNQANDCDzZT-Htl8",[1865,1867],{"title":61,"path":62,"stem":63,"description":1866,"children":-1},"Uniformly scale and position children to fit into a defined space.",{"title":69,"path":70,"stem":71,"description":1868,"children":-1},"Make content float like magic with smooth animations.",1786965204503]