[{"data":1,"prerenderedAt":1327},["ShallowReactive",2],{"\u002Fblog\u002Fwhats-new-june-2026":3,"author-alvarosabu":1302,"formatted-blog-post-\u002Fblog\u002Fwhats-new-june-2026":1321},{"id":4,"title":5,"author":6,"body":7,"category":1285,"date":1286,"description":1287,"draft":1288,"extension":1289,"meta":1290,"navigation":151,"path":1291,"readingTime":1292,"seo":1297,"stem":1298,"thumbnail":1299,"url":1300,"__hash__":1301},"blog\u002Fblog\u002Fwhats-new-june-2026.md","The Loop Chronicles: June 2026 Recap","alvarosabu",{"type":8,"value":9,"toc":1271},"minimark",[10,24,29,56,67,353,356,361,368,438,458,472,476,483,490,496,508,1001,1021,1027,1036,1041,1048,1077,1084,1089,1096,1100,1103,1127,1130,1157,1161,1164,1236,1240,1252,1264,1267],[11,12,13,14,18,19,23],"p",{},"Yo! Welcome to the first edition of ",[15,16,17],"strong",{},"The Loop Chronicles",", our monthly pass through everything that landed across the TresJS ecosystem. And what a month to kick things off: June 2026 brought ",[20,21,22],"em",{},"physics"," to the scene graph. Let's dive in 🤿.",[25,26,28],"h2",{"id":27},"rapier-physics-has-entered-the-scene","Rapier Physics has entered the scene",[11,30,31,32,45,46,51,52,55],{},"The big one. We shipped the ",[15,33,34,35],{},"first alpha of ",[36,37,41],"a",{"href":38,"rel":39},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@tresjs\u002Frapier",[40],"nofollow",[42,43,44],"code",{},"@tresjs\u002Frapier",": declarative physics for TresJS, powered by ",[36,47,50],{"href":48,"rel":49},"https:\u002F\u002Frapier.rs\u002F",[40],"Rapier"," and its official ",[42,53,54],{},"@dimforge\u002Frapier3d-compat"," WASM bindings.",[11,57,58,59,62,63,66],{},"No more hand-wiring a physics loop. Wrap your world in a ",[42,60,61],{},"\u003CPhysics>"," provider, drop in some ",[42,64,65],{},"\u003CRigidBody>"," and let the simulation do the rest:",[68,69,74],"pre",{"className":70,"code":71,"language":72,"meta":73,"style":73},"language-vue shiki shiki-themes catppuccin-latte catppuccin-latte catppuccin-frappe","\u003Cscript setup lang=\"ts\">\nimport { Physics, RigidBody } from '@tresjs\u002Frapier'\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CTresCanvas>\n    \u003CPhysics>\n      \u003CRigidBody>\n        \u003CTresMesh>\n          \u003CTresBoxGeometry \u002F>\n          \u003CTresMeshNormalMaterial \u002F>\n        \u003C\u002FTresMesh>\n      \u003C\u002FRigidBody>\n\n      \u003CRigidBody type=\"fixed\">\n        \u003CTresMesh :rotation=\"[-Math.PI \u002F 2, 0, 0]\">\n          \u003CTresPlaneGeometry :args=\"[10, 10]\" \u002F>\n        \u003C\u002FTresMesh>\n      \u003C\u002FRigidBody>\n    \u003C\u002FPhysics>\n  \u003C\u002FTresCanvas>\n\u003C\u002Ftemplate>\n","vue","",[42,75,76,106,136,146,153,163,174,185,196,207,219,229,239,249,254,271,288,306,315,324,334,344],{"__ignoreMap":73},[77,78,81,85,89,93,96,99,103],"span",{"class":79,"line":80},"line",1,[77,82,84],{"class":83},"sWdzt","\u003C",[77,86,88],{"class":87},"slJ5s","script",[77,90,92],{"class":91},"s1cdE"," setup",[77,94,95],{"class":91}," lang",[77,97,98],{"class":83},"=",[77,100,102],{"class":101},"s9Zht","\"ts\"",[77,104,105],{"class":83},">\n",[77,107,109,113,117,121,124,127,130,133],{"class":79,"line":108},2,[77,110,112],{"class":111},"sZyUJ","import",[77,114,116],{"class":115},"spKPg"," {",[77,118,120],{"class":119},"s9Av-"," Physics",[77,122,123],{"class":115},",",[77,125,126],{"class":119}," RigidBody ",[77,128,129],{"class":115},"}",[77,131,132],{"class":111}," from",[77,134,135],{"class":101}," '@tresjs\u002Frapier'\n",[77,137,139,142,144],{"class":79,"line":138},3,[77,140,141],{"class":83},"\u003C\u002F",[77,143,88],{"class":87},[77,145,105],{"class":83},[77,147,149],{"class":79,"line":148},4,[77,150,152],{"emptyLinePlaceholder":151},true,"\n",[77,154,156,158,161],{"class":79,"line":155},5,[77,157,84],{"class":83},[77,159,160],{"class":87},"template",[77,162,105],{"class":83},[77,164,166,169,172],{"class":79,"line":165},6,[77,167,168],{"class":83},"  \u003C",[77,170,171],{"class":87},"TresCanvas",[77,173,105],{"class":83},[77,175,177,180,183],{"class":79,"line":176},7,[77,178,179],{"class":83},"    \u003C",[77,181,182],{"class":87},"Physics",[77,184,105],{"class":83},[77,186,188,191,194],{"class":79,"line":187},8,[77,189,190],{"class":83},"      \u003C",[77,192,193],{"class":87},"RigidBody",[77,195,105],{"class":83},[77,197,199,202,205],{"class":79,"line":198},9,[77,200,201],{"class":83},"        \u003C",[77,203,204],{"class":87},"TresMesh",[77,206,105],{"class":83},[77,208,210,213,216],{"class":79,"line":209},10,[77,211,212],{"class":83},"          \u003C",[77,214,215],{"class":87},"TresBoxGeometry",[77,217,218],{"class":83}," \u002F>\n",[77,220,222,224,227],{"class":79,"line":221},11,[77,223,212],{"class":83},[77,225,226],{"class":87},"TresMeshNormalMaterial",[77,228,218],{"class":83},[77,230,232,235,237],{"class":79,"line":231},12,[77,233,234],{"class":83},"        \u003C\u002F",[77,236,204],{"class":87},[77,238,105],{"class":83},[77,240,242,245,247],{"class":79,"line":241},13,[77,243,244],{"class":83},"      \u003C\u002F",[77,246,193],{"class":87},[77,248,105],{"class":83},[77,250,252],{"class":79,"line":251},14,[77,253,152],{"emptyLinePlaceholder":151},[77,255,257,259,261,264,266,269],{"class":79,"line":256},15,[77,258,190],{"class":83},[77,260,193],{"class":87},[77,262,263],{"class":91}," type",[77,265,98],{"class":83},[77,267,268],{"class":101},"\"fixed\"",[77,270,105],{"class":83},[77,272,274,276,278,281,283,286],{"class":79,"line":273},16,[77,275,201],{"class":83},[77,277,204],{"class":87},[77,279,280],{"class":91}," :rotation",[77,282,98],{"class":83},[77,284,285],{"class":101},"\"[-Math.PI \u002F 2, 0, 0]\"",[77,287,105],{"class":83},[77,289,291,293,296,299,301,304],{"class":79,"line":290},17,[77,292,212],{"class":83},[77,294,295],{"class":87},"TresPlaneGeometry",[77,297,298],{"class":91}," :args",[77,300,98],{"class":83},[77,302,303],{"class":101},"\"[10, 10]\"",[77,305,218],{"class":83},[77,307,309,311,313],{"class":79,"line":308},18,[77,310,234],{"class":83},[77,312,204],{"class":87},[77,314,105],{"class":83},[77,316,318,320,322],{"class":79,"line":317},19,[77,319,244],{"class":83},[77,321,193],{"class":87},[77,323,105],{"class":83},[77,325,327,330,332],{"class":79,"line":326},20,[77,328,329],{"class":83},"    \u003C\u002F",[77,331,182],{"class":87},[77,333,105],{"class":83},[77,335,337,340,342],{"class":79,"line":336},21,[77,338,339],{"class":83},"  \u003C\u002F",[77,341,171],{"class":87},[77,343,105],{"class":83},[77,345,347,349,351],{"class":79,"line":346},22,[77,348,141],{"class":83},[77,350,160],{"class":87},[77,352,105],{"class":83},[11,354,355],{},"Here it is in action: a clump of rigid bodies pulled toward a center point, colliding and jostling in real time. Move your mouse around to push them.",[357,358],"blog-embed-lab",{"src":359,"title":360},"https:\u002F\u002Flab.tresjs.org\u002Fexperiments\u002Frapier-object-clump\u002F","Rapier object clump physics demo",[11,362,363,364,367],{},"What's in the box for ",[42,365,366],{},"1.0.0-alpha.0",":",[369,370,371],"prose-list",{},[372,373,374,393,399,409,424,432],"ul",{},[375,376,377,381,382,385,386,388,389,392],"li",{},[15,378,379],{},[42,380,61],{}," ",[15,383,384],{},"provider"," with ",[42,387,193],{},", automatic ",[15,390,391],{},"and"," custom colliders, and joints",[375,394,395,398],{},[15,396,397],{},"Full collider shapes"," support: cuboids, balls, capsules, trimeshes and friends",[375,400,401,404,405,408],{},[15,402,403],{},"Collision events"," and ",[15,406,407],{},"contact force events"," so you can react when things actually hit",[375,410,411,381,416,381,418,423],{},[15,412,413],{},[42,414,415],{},"collisionGroups",[15,417,391],{},[15,419,420],{},[42,421,422],{},"solverGroups"," for fine-grained filtering of what collides with what",[375,425,426,431],{},[15,427,428],{},[42,429,430],{},"useRapierContext"," to reach into the physics world from your own composables",[375,433,434,435,437],{},"Smarter collider position & rotation handling, plus extra ",[42,436,193],{}," props",[439,440,441],"prose-note",{},[11,442,443,444,447,448,451,452,457],{},"This package is in ",[15,445,446],{},"alpha",", so the API isn't stable yet and breaking changes can land between releases without a major bump. Install with ",[42,449,450],{},"pnpm add @tresjs\u002Frapier@alpha"," and pin the exact version. Docs live at ",[36,453,456],{"href":454,"rel":455},"https:\u002F\u002Frapier.tresjs.org",[40],"rapier.tresjs.org",".",[11,459,460,461,404,466,471],{},"Huge thanks to ",[36,462,465],{"href":463,"rel":464},"https:\u002F\u002Fgithub.com\u002FJaimeTorrealba",[40],"Jaime Torrealba",[36,467,470],{"href":468,"rel":469},"https:\u002F\u002Fgithub.com\u002FNeosoulink",[40],"Nathan Mande"," for pushing this one over the line 🙌.",[25,473,475],{"id":474},"new-features-landed-in-cientos","New features landed in Cientos",[11,477,478,479,482],{},"Cientos ",[42,480,481],{},"@tresjs\u002Fcientos@5.8.1"," got a few genuinely fun additions this month.",[484,485,487],"h3",{"id":486},"decal",[42,488,489],{},"Decal",[491,492,493],"embed-scene",{},[494,495],"blog-embed-scene-decal",{},[11,497,498,499,502,503,507],{},"Technically this one slipped in on ",[15,500,501],{},"May 28",", but it's too good to leave on the cutting-room floor. The new ",[15,504,505],{},[42,506,489],{}," abstraction projects a flat texture onto the surface of a mesh, conforming to its geometry instead of sitting flat like a plane. Stickers, logos, bullet holes, labels: stamp them right onto your models.",[68,509,511],{"className":70,"code":510,"language":72,"meta":73,"style":73},"\u003Cscript setup lang=\"ts\">\nimport { Decal, DecalDebugUI, useGLTF, useTextures } from '@tresjs\u002Fcientos'\n\n\u002F\u002F A palette of stickers to stamp onto the mesh\nconst { textures } = useTextures([\n  '\u002Fdecal\u002Ftresjs-dark.png',\n  '\u002Fdecal\u002Fvue.png',\n  '\u002Fdecal\u002Fthreejs.png',\n])\n\nconst { nodes } = useGLTF('\u002Fmodels\u002FMug.glb', { draco: true })\n\n\u002F\u002F Decals serialize to plain JSON via v-model:data\nconst decals = reactive([\n  { id: 'logo', position: [-0.9, 2, 0.4], orientation: [0, -1.1, 0], size: [0.9, 0.2, 1], zIndex: 0, map: 'tresjs-dark.png' },\n])\n\nconst decalRef = ref()\nconst session = computed(() => decalRef.value?.editor ?? null)\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003C!-- Drop-in editor: place, rotate, scale, layer, undo\u002Fredo -->\n  \u003CDecalDebugUI :session=\"session\" :textures=\"textures ?? []\" :data=\"{ mug: decals }\" \u002F>\n\n  \u003Cprimitive :object=\"nodes.Mug\">\n    \u003CDecal ref=\"decalRef\" v-model:data=\"decals\" :map=\"textures\" editable \u002F>\n  \u003C\u002Fprimitive>\n\u003C\u002Ftemplate>\n",[42,512,513,529,560,564,570,592,600,607,614,619,623,663,667,672,686,800,804,808,823,865,873,877,885,891,925,930,948,983,992],{"__ignoreMap":73},[77,514,515,517,519,521,523,525,527],{"class":79,"line":80},[77,516,84],{"class":83},[77,518,88],{"class":87},[77,520,92],{"class":91},[77,522,95],{"class":91},[77,524,98],{"class":83},[77,526,102],{"class":101},[77,528,105],{"class":83},[77,530,531,533,535,538,540,543,545,548,550,553,555,557],{"class":79,"line":108},[77,532,112],{"class":111},[77,534,116],{"class":115},[77,536,537],{"class":119}," Decal",[77,539,123],{"class":115},[77,541,542],{"class":119}," DecalDebugUI",[77,544,123],{"class":115},[77,546,547],{"class":119}," useGLTF",[77,549,123],{"class":115},[77,551,552],{"class":119}," useTextures ",[77,554,129],{"class":115},[77,556,132],{"class":111},[77,558,559],{"class":101}," '@tresjs\u002Fcientos'\n",[77,561,562],{"class":79,"line":138},[77,563,152],{"emptyLinePlaceholder":151},[77,565,566],{"class":79,"line":148},[77,567,569],{"class":568},"sMnCH","\u002F\u002F A palette of stickers to stamp onto the mesh\n",[77,571,572,575,577,580,582,585,589],{"class":79,"line":155},[77,573,574],{"class":111},"const",[77,576,116],{"class":115},[77,578,579],{"class":119}," textures ",[77,581,129],{"class":115},[77,583,584],{"class":83}," =",[77,586,588],{"class":587},"s0faT"," useTextures",[77,590,591],{"class":119},"([\n",[77,593,594,597],{"class":79,"line":165},[77,595,596],{"class":101},"  '\u002Fdecal\u002Ftresjs-dark.png'",[77,598,599],{"class":115},",\n",[77,601,602,605],{"class":79,"line":176},[77,603,604],{"class":101},"  '\u002Fdecal\u002Fvue.png'",[77,606,599],{"class":115},[77,608,609,612],{"class":79,"line":187},[77,610,611],{"class":101},"  '\u002Fdecal\u002Fthreejs.png'",[77,613,599],{"class":115},[77,615,616],{"class":79,"line":198},[77,617,618],{"class":119},"])\n",[77,620,621],{"class":79,"line":209},[77,622,152],{"emptyLinePlaceholder":151},[77,624,625,627,629,632,634,636,638,641,644,646,648,651,653,657,660],{"class":79,"line":221},[77,626,574],{"class":111},[77,628,116],{"class":115},[77,630,631],{"class":119}," nodes ",[77,633,129],{"class":115},[77,635,584],{"class":83},[77,637,547],{"class":587},[77,639,640],{"class":119},"(",[77,642,643],{"class":101},"'\u002Fmodels\u002FMug.glb'",[77,645,123],{"class":115},[77,647,116],{"class":115},[77,649,650],{"class":119}," draco",[77,652,367],{"class":83},[77,654,656],{"class":655},"sREMW"," true",[77,658,659],{"class":115}," }",[77,661,662],{"class":119},")\n",[77,664,665],{"class":79,"line":231},[77,666,152],{"emptyLinePlaceholder":151},[77,668,669],{"class":79,"line":241},[77,670,671],{"class":568},"\u002F\u002F Decals serialize to plain JSON via v-model:data\n",[77,673,674,676,679,681,684],{"class":79,"line":251},[77,675,574],{"class":111},[77,677,678],{"class":119}," decals ",[77,680,98],{"class":83},[77,682,683],{"class":587}," reactive",[77,685,591],{"class":119},[77,687,688,691,694,696,699,701,704,706,709,712,715,717,720,722,725,728,730,733,735,737,740,742,745,748,750,753,755,757,760,762,764,766,768,771,773,776,778,780,783,785,787,789,792,794,797],{"class":79,"line":256},[77,689,690],{"class":115},"  {",[77,692,693],{"class":119}," id",[77,695,367],{"class":83},[77,697,698],{"class":101}," 'logo'",[77,700,123],{"class":115},[77,702,703],{"class":119}," position",[77,705,367],{"class":83},[77,707,708],{"class":119}," [",[77,710,711],{"class":83},"-",[77,713,714],{"class":655},"0.9",[77,716,123],{"class":115},[77,718,719],{"class":655}," 2",[77,721,123],{"class":115},[77,723,724],{"class":655}," 0.4",[77,726,727],{"class":119},"]",[77,729,123],{"class":115},[77,731,732],{"class":119}," orientation",[77,734,367],{"class":83},[77,736,708],{"class":119},[77,738,739],{"class":655},"0",[77,741,123],{"class":115},[77,743,744],{"class":83}," -",[77,746,747],{"class":655},"1.1",[77,749,123],{"class":115},[77,751,752],{"class":655}," 0",[77,754,727],{"class":119},[77,756,123],{"class":115},[77,758,759],{"class":119}," size",[77,761,367],{"class":83},[77,763,708],{"class":119},[77,765,714],{"class":655},[77,767,123],{"class":115},[77,769,770],{"class":655}," 0.2",[77,772,123],{"class":115},[77,774,775],{"class":655}," 1",[77,777,727],{"class":119},[77,779,123],{"class":115},[77,781,782],{"class":119}," zIndex",[77,784,367],{"class":83},[77,786,752],{"class":655},[77,788,123],{"class":115},[77,790,791],{"class":119}," map",[77,793,367],{"class":83},[77,795,796],{"class":101}," 'tresjs-dark.png'",[77,798,799],{"class":115}," },\n",[77,801,802],{"class":79,"line":273},[77,803,618],{"class":119},[77,805,806],{"class":79,"line":290},[77,807,152],{"emptyLinePlaceholder":151},[77,809,810,812,815,817,820],{"class":79,"line":308},[77,811,574],{"class":111},[77,813,814],{"class":119}," decalRef ",[77,816,98],{"class":83},[77,818,819],{"class":587}," ref",[77,821,822],{"class":119},"()\n",[77,824,825,827,830,832,835,837,840,843,846,848,851,854,857,860,863],{"class":79,"line":317},[77,826,574],{"class":111},[77,828,829],{"class":119}," session ",[77,831,98],{"class":83},[77,833,834],{"class":587}," computed",[77,836,640],{"class":119},[77,838,839],{"class":115},"()",[77,841,842],{"class":83}," =>",[77,844,845],{"class":119}," decalRef",[77,847,457],{"class":83},[77,849,850],{"class":119},"value",[77,852,853],{"class":83},"?.",[77,855,856],{"class":119},"editor ",[77,858,859],{"class":83},"??",[77,861,862],{"class":111}," null",[77,864,662],{"class":119},[77,866,867,869,871],{"class":79,"line":326},[77,868,141],{"class":83},[77,870,88],{"class":87},[77,872,105],{"class":83},[77,874,875],{"class":79,"line":336},[77,876,152],{"emptyLinePlaceholder":151},[77,878,879,881,883],{"class":79,"line":346},[77,880,84],{"class":83},[77,882,160],{"class":87},[77,884,105],{"class":83},[77,886,888],{"class":79,"line":887},23,[77,889,890],{"class":568},"  \u003C!-- Drop-in editor: place, rotate, scale, layer, undo\u002Fredo -->\n",[77,892,894,896,899,902,904,907,910,912,915,918,920,923],{"class":79,"line":893},24,[77,895,168],{"class":83},[77,897,898],{"class":87},"DecalDebugUI",[77,900,901],{"class":91}," :session",[77,903,98],{"class":83},[77,905,906],{"class":101},"\"session\"",[77,908,909],{"class":91}," :textures",[77,911,98],{"class":83},[77,913,914],{"class":101},"\"textures ?? []\"",[77,916,917],{"class":91}," :data",[77,919,98],{"class":83},[77,921,922],{"class":101},"\"{ mug: decals }\"",[77,924,218],{"class":83},[77,926,928],{"class":79,"line":927},25,[77,929,152],{"emptyLinePlaceholder":151},[77,931,933,935,938,941,943,946],{"class":79,"line":932},26,[77,934,168],{"class":83},[77,936,937],{"class":87},"primitive",[77,939,940],{"class":91}," :object",[77,942,98],{"class":83},[77,944,945],{"class":101},"\"nodes.Mug\"",[77,947,105],{"class":83},[77,949,951,953,955,957,959,962,965,967,970,973,975,978,981],{"class":79,"line":950},27,[77,952,179],{"class":83},[77,954,489],{"class":87},[77,956,819],{"class":91},[77,958,98],{"class":83},[77,960,961],{"class":101},"\"decalRef\"",[77,963,964],{"class":91}," v-model:data",[77,966,98],{"class":83},[77,968,969],{"class":101},"\"decals\"",[77,971,972],{"class":91}," :map",[77,974,98],{"class":83},[77,976,977],{"class":101},"\"textures\"",[77,979,980],{"class":91}," editable",[77,982,218],{"class":83},[77,984,986,988,990],{"class":79,"line":985},28,[77,987,339],{"class":83},[77,989,937],{"class":87},[77,991,105],{"class":83},[77,993,995,997,999],{"class":79,"line":994},29,[77,996,141],{"class":83},[77,998,160],{"class":87},[77,1000,105],{"class":83},[11,1002,1003,1004,1007,1008,1011,1012,1014,1015,1020],{},"It does more than stamp-and-forget: multiple decals stack with z-layering, layouts serialize to plain JSON via ",[42,1005,1006],{},"v-model:data",", and an ",[42,1009,1010],{},"editable"," mode plus ",[42,1013,898],{}," give you an in-canvas editor to place and tweak decals by hand (with undo\u002Fredo). See the ",[36,1016,1019],{"href":1017,"rel":1018},"https:\u002F\u002Fcientos.tresjs.org\u002Fapi\u002Fabstractions\u002Fdecal.html",[40],"Decal docs"," for the full editor workflow.",[484,1022,1024],{"id":1023},"meshtransmissionmaterial",[42,1025,1026],{},"MeshTransmissionMaterial",[11,1028,1029,1030,1035],{},"That gorgeous glass \u002F frosted look, with thickness, roughness and chromatic aberration, is now one component away (",[36,1031,1034],{"href":1032,"rel":1033},"https:\u002F\u002Fgithub.com\u002FTresjs\u002Ftres\u002Fpull\u002F1436",[40],"#1436",").",[491,1037,1038],{},[1039,1040],"blog-embed-scene-transmission",{},[484,1042,1044,1045],{"id":1043},"a-sharper-environment","A sharper ",[42,1046,1047],{},"Environment",[11,1049,1050,1051,1057,1058,1063,1064,1067,1068,1071,1072,1035],{},"The new ",[15,1052,1053,1056],{},[42,1054,1055],{},"quality"," prop"," (",[36,1059,1062],{"href":1060,"rel":1061},"https:\u002F\u002Fgithub.com\u002FTresjs\u002Ftres\u002Fissues\u002F1418",[40],"#1418",") lets you serve ",[15,1065,1066],{},"2k or 4k"," preset HDRs depending on how crisp (or how light) you need your reflections. We also fixed ",[42,1069,1070],{},"Environment url"," reactivity and cleaned up the docs demo (",[36,1073,1076],{"href":1074,"rel":1075},"https:\u002F\u002Fgithub.com\u002FTresjs\u002Ftres\u002Fissues\u002F1407",[40],"#1407",[484,1078,1080,1081],{"id":1079},"more-reliable-pointerlockcontrols","More reliable ",[42,1082,1083],{},"PointerLockControls",[11,1085,1086,1088],{},[42,1087,1083],{}," got its event-listener logic refactored for more dependable lock\u002Funlock handling.",[11,1090,1091,1092,1095],{},"Thanks to Alfarish Fizikri, ",[36,1093,465],{"href":463,"rel":1094},[40]," and everyone who reviewed and tested these.",[25,1097,1099],{"id":1098},"everything-in-sync","Everything in sync",[11,1101,1102],{},"To keep the ecosystem aligned, we also rolled out matching releases for the rest of the family:",[369,1104,1105],{},[372,1106,1107,1113,1120],{},[375,1108,1109],{},[15,1110,1111],{},[42,1112,481],{},[375,1114,1115],{},[15,1116,1117],{},[42,1118,1119],{},"@tresjs\u002Fpost-processing@3.7.4",[375,1121,1122],{},[15,1123,1124],{},[42,1125,1126],{},"@tresjs\u002Fnuxt@5.6.3",[11,1128,1129],{},"Updating is the usual one-liner. Bump them together and you're good:",[68,1131,1135],{"className":1132,"code":1133,"language":1134,"meta":73,"style":73},"language-bash shiki shiki-themes catppuccin-latte catppuccin-latte catppuccin-frappe","pnpm up @tresjs\u002Fcore @tresjs\u002Fcientos @tresjs\u002Fpost-processing @tresjs\u002Fnuxt\n","bash",[42,1136,1137],{"__ignoreMap":73},[77,1138,1139,1142,1145,1148,1151,1154],{"class":79,"line":80},[77,1140,1141],{"class":587},"pnpm",[77,1143,1144],{"class":101}," up",[77,1146,1147],{"class":101}," @tresjs\u002Fcore",[77,1149,1150],{"class":101}," @tresjs\u002Fcientos",[77,1152,1153],{"class":101}," @tresjs\u002Fpost-processing",[77,1155,1156],{"class":101}," @tresjs\u002Fnuxt\n",[25,1158,1160],{"id":1159},"from-the-community","From the community",[11,1162,1163],{},"The best part of any month is seeing what you all ship. Here's a handful of things built with TresJS that caught our eye 👀:",[369,1165,1166],{},[372,1167,1168,1185,1197,1212,1224],{},[375,1169,1170,1175,1176,1180,1181,1184],{},[1171,1172],"magic-link",{"label":1173,"to":1174},"ChanIok","https:\u002F\u002Fgithub.com\u002FChanIok"," built ",[1171,1177],{"label":1178,"to":1179},"BuildingMomo","https:\u002F\u002Fbuild.infinitymomo.com",", a visual home-design editor for ",[20,1182,1183],{},"Infinity Nikki"," that lets players move, copy and merge whole building clusters in 3D. Easily the most ambitious thing we saw this month.",[375,1186,1187,1191,1192,1196],{},[1171,1188],{"label":1189,"to":1190},"Akshara Hegde","https:\u002F\u002Fgithub.com\u002Faksharahegde"," shipped ",[1171,1193],{"label":1194,"to":1195},"usb-tressa","https:\u002F\u002Fusb-tressa.vercel.app",", an interactive USB-connector showcase with product, exploded and wireframe views, all in Nuxt + Tres.",[375,1198,1199,1203,1204,1208,1209,457],{},[1171,1200],{"label":1201,"to":1202},"Lucie Haberer","https:\u002F\u002Fgithub.com\u002Flihbr"," released ",[1171,1205],{"label":1206,"to":1207},"Farbe Films","https:\u002F\u002Fnuxt-starter-prismic-farbe.vercel.app",", an open 3D e-commerce starter for Nuxt + Prismic with real-time product rendering and scroll-driven motion, built on ",[42,1210,1211],{},"@tresjs\u002Fnuxt",[375,1213,1214,1218,1219,1223],{},[1171,1215],{"label":1216,"to":1217},"lumixraku","https:\u002F\u002Fgithub.com\u002Flumixraku"," made an ",[1171,1220],{"label":1221,"to":1222},"interactive 3D periodic table","https:\u002F\u002F3d-periodic-table-liart.vercel.app",": click an element to dive into its atomic structure, then explore compounds as ball-and-stick molecules.",[375,1225,1226,1230,1231,1235],{},[1171,1227],{"label":1228,"to":1229},"Vasileios Varveroglou","https:\u002F\u002Fgithub.com\u002FVarveroglouVasileios"," built a ",[1171,1232],{"label":1233,"to":1234},"3D portfolio","https:\u002F\u002Fvarveroglouvasileios.github.io"," where projects and social links float in an interactive universe, reacting to your cursor with GSAP-driven motion.",[25,1237,1239],{"id":1238},"see-you-next-month","See you next month",[11,1241,1242,1243,1248,1249,457],{},"Physics is the headline, but it's just the start. The rapier API will keep evolving through alpha, so jump in early, break things, and ",[36,1244,1247],{"href":1245,"rel":1246},"https:\u002F\u002Fgithub.com\u002FTresjs\u002Ftres\u002Fissues",[40],"tell us what hurts",". Your feedback shapes where it lands for ",[42,1250,1251],{},"1.0.0",[11,1253,1254,1255,1260,1261,457],{},"Got something cool built with Tres? Share it in our ",[36,1256,1259],{"href":1257,"rel":1258},"https:\u002F\u002Fdiscord.gg\u002FUCr96AQmWn",[40],"Discord",". It might headline the next ",[20,1262,1263],{},"Loop Chronicles",[11,1265,1266],{},"Happy 3D ✌️.",[1268,1269,1270],"style",{},"html pre.shiki code .sWdzt, html code.shiki .sWdzt{--shiki-light:#179299;--shiki-default:#179299;--shiki-dark:#81C8BE}html pre.shiki code .slJ5s, html code.shiki .slJ5s{--shiki-light:#1E66F5;--shiki-default:#1E66F5;--shiki-dark:#8CAAEE}html pre.shiki code .s1cdE, html code.shiki .s1cdE{--shiki-light:#DF8E1D;--shiki-default:#DF8E1D;--shiki-dark:#E5C890}html pre.shiki code .s9Zht, html code.shiki .s9Zht{--shiki-light:#40A02B;--shiki-default:#40A02B;--shiki-dark:#A6D189}html pre.shiki code .sZyUJ, html code.shiki .sZyUJ{--shiki-light:#8839EF;--shiki-default:#8839EF;--shiki-dark:#CA9EE6}html pre.shiki code .spKPg, html code.shiki .spKPg{--shiki-light:#7C7F93;--shiki-default:#7C7F93;--shiki-dark:#949CBB}html pre.shiki code .s9Av-, html code.shiki .s9Av-{--shiki-light:#4C4F69;--shiki-default:#4C4F69;--shiki-dark:#C6D0F5}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 .sMnCH, html code.shiki .sMnCH{--shiki-light:#7C7F93;--shiki-light-font-style:italic;--shiki-default:#7C7F93;--shiki-default-font-style:italic;--shiki-dark:#949CBB;--shiki-dark-font-style:italic}html pre.shiki code .s0faT, html code.shiki .s0faT{--shiki-light:#1E66F5;--shiki-light-font-style:italic;--shiki-default:#1E66F5;--shiki-default-font-style:italic;--shiki-dark:#8CAAEE;--shiki-dark-font-style:italic}html pre.shiki code .sREMW, html code.shiki .sREMW{--shiki-light:#FE640B;--shiki-default:#FE640B;--shiki-dark:#EF9F76}",{"title":73,"searchDepth":108,"depth":108,"links":1272},[1273,1274,1282,1283,1284],{"id":27,"depth":108,"text":28},{"id":474,"depth":108,"text":475,"children":1275},[1276,1277,1278,1280],{"id":486,"depth":138,"text":489},{"id":1023,"depth":138,"text":1026},{"id":1043,"depth":138,"text":1279},"A sharper Environment",{"id":1079,"depth":138,"text":1281},"More reliable PointerLockControls",{"id":1098,"depth":108,"text":1099},{"id":1159,"depth":108,"text":1160},{"id":1238,"depth":108,"text":1239},"updates","2026-06-30","Physics lands in TresJS! A recap of June 2026 - the first alpha of @tresjs\u002Frapier, transmission materials and more.",false,"md",{},"\u002Fblog\u002Fwhats-new-june-2026",{"text":1293,"minutes":1294,"time":1295,"words":1296},"4 min read",3.915,234900,783,{"title":5,"description":1287},"blog\u002Fwhats-new-june-2026","\u002Fblog\u002Fwhats-new-june-2026\u002Fthe-loop-chronicles-june-2026.png",null,"xcohplC3fvpeOk_sgaEN_OgL7ixHTE9Ku52QcxlTVcA",{"id":1303,"title":1304,"avatar":1305,"body":1306,"description":73,"email":1310,"extension":1289,"github":6,"meta":1311,"name":1315,"navigation":151,"path":1316,"seo":1317,"slug":6,"stem":1318,"twitter":6,"website":1319,"__hash__":1320},"authors\u002Fauthors\u002Falvarosabu.md","Alvarosabu","\u002Favatars\u002Falvarosabu.png",{"type":8,"value":1307,"toc":1308},[],{"title":73,"searchDepth":108,"depth":108,"links":1309},[],"hola@alvarosaburido.dev",{"readingTime":1312},{"text":1313,"minutes":1314,"time":1314,"words":1314},"0 min read",0,"Alvaro Saburido","\u002Fauthors\u002Falvarosabu",{"description":73},"authors\u002Falvarosabu","https:\u002F\u002Falvarosaburido.dev","CmwieKa4qc2RGTVr4mry8wF-8Mb9vtJoJrhpP_Qz5kk",{"id":4,"title":5,"author":6,"body":7,"category":1285,"date":1286,"description":1287,"draft":1288,"extension":1289,"meta":1290,"navigation":151,"path":1291,"readingTime":1292,"seo":1297,"stem":1298,"thumbnail":1299,"url":1300,"__hash__":1301,"authors":1322},[1323],{"name":1315,"description":1324,"avatar":1325,"to":1319,"target":1326},"@alvarosabu",{"src":1305},"_blank",1782809320868]