From edf772be3e8744261a829cab64c9d6557440c07f Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Fri, 29 Mar 2024 00:15:04 +0900 Subject: [PATCH 1/4] Examples: Added JoltPhysics.js example. --- examples/files.json | 1 + examples/jsm/physics/JoltPhysics.js | 280 ++++++++++++++++++ examples/physics_jolt_instancing.html | 164 ++++++++++ .../screenshots/physics_jolt_instancing.jpg | Bin 0 -> 25369 bytes 4 files changed, 445 insertions(+) create mode 100644 examples/jsm/physics/JoltPhysics.js create mode 100644 examples/physics_jolt_instancing.html create mode 100644 examples/screenshots/physics_jolt_instancing.jpg diff --git a/examples/files.json b/examples/files.json index 217c1eebeb69e2..4efa769638dfcf 100644 --- a/examples/files.json +++ b/examples/files.json @@ -428,6 +428,7 @@ "physics_ammo_rope", "physics_ammo_terrain", "physics_ammo_volume", + "physics_jolt_instancing", "physics_rapier_instancing" ], "misc": [ diff --git a/examples/jsm/physics/JoltPhysics.js b/examples/jsm/physics/JoltPhysics.js new file mode 100644 index 00000000000000..fac480ea4dc53e --- /dev/null +++ b/examples/jsm/physics/JoltPhysics.js @@ -0,0 +1,280 @@ +import { Clock, Vector3, Quaternion, Matrix4 } from 'three'; + +const JOLT_PATH = 'https://cdn.jsdelivr.net/npm/jolt-physics@0.20.0/dist/jolt-physics.wasm-compat.js'; + +const frameRate = 60; + +let Jolt = null; + +function getShape( geometry ) { + + const parameters = geometry.parameters; + + // TODO change type to is* + + if ( geometry.type === 'BoxGeometry' ) { + + const sx = parameters.width !== undefined ? parameters.width / 2 : 0.5; + const sy = parameters.height !== undefined ? parameters.height / 2 : 0.5; + const sz = parameters.depth !== undefined ? parameters.depth / 2 : 0.5; + + return new Jolt.BoxShape( new Jolt.Vec3( sx, sy, sz ), 0.05, null ); + + } else if ( geometry.type === 'SphereGeometry' || geometry.type === 'IcosahedronGeometry' ) { + + const radius = parameters.radius !== undefined ? parameters.radius : 1; + + return new Jolt.SphereShape( radius, null ); + + } + + return null; + +} + +// Object layers +const LAYER_NON_MOVING = 0; +const LAYER_MOVING = 1; +const NUM_OBJECT_LAYERS = 2; + +function setupCollisionFiltering( settings ) { + + let objectFilter = new Jolt.ObjectLayerPairFilterTable( NUM_OBJECT_LAYERS ); + objectFilter.EnableCollision( LAYER_NON_MOVING, LAYER_MOVING ); + objectFilter.EnableCollision( LAYER_MOVING, LAYER_MOVING ); + + const BP_LAYER_NON_MOVING = new Jolt.BroadPhaseLayer( 0 ); + const BP_LAYER_MOVING = new Jolt.BroadPhaseLayer( 1 ); + const NUM_BROAD_PHASE_LAYERS = 2; + + let bpInterface = new Jolt.BroadPhaseLayerInterfaceTable( NUM_OBJECT_LAYERS, NUM_BROAD_PHASE_LAYERS ); + bpInterface.MapObjectToBroadPhaseLayer( LAYER_NON_MOVING, BP_LAYER_NON_MOVING ); + bpInterface.MapObjectToBroadPhaseLayer( LAYER_MOVING, BP_LAYER_MOVING ); + + settings.mObjectLayerPairFilter = objectFilter; + settings.mBroadPhaseLayerInterface = bpInterface; + settings.mObjectVsBroadPhaseLayerFilter = new Jolt.ObjectVsBroadPhaseLayerFilterTable( settings.mBroadPhaseLayerInterface, NUM_BROAD_PHASE_LAYERS, settings.mObjectLayerPairFilter, NUM_OBJECT_LAYERS ); + +}; + +async function JoltPhysics() { + + if ( Jolt === null ) { + + const { default: initJolt } = await import( JOLT_PATH ); + Jolt = await initJolt(); + + } + + const settings = new Jolt.JoltSettings(); + setupCollisionFiltering( settings ); + + const jolt = new Jolt.JoltInterface( settings ); + Jolt.destroy( settings ); + + const physicsSystem = jolt.GetPhysicsSystem(); + const bodyInterface = physicsSystem.GetBodyInterface(); + + const meshes = []; + const meshMap = new WeakMap(); + + const _position = new Vector3(); + const _quaternion = new Quaternion(); + const _scale = new Vector3( 1, 1, 1 ); + + const _matrix = new Matrix4(); + + function addScene( scene ) { + + scene.traverse( function ( child ) { + + if ( child.isMesh ) { + + const physics = child.userData.physics; + + if ( physics ) { + + addMesh( child, physics.mass, physics.restitution ); + + } + + } + + } ); + + } + + function addMesh( mesh, mass = 0, restitution = 0 ) { + + const shape = getShape( mesh.geometry ); + + if ( shape === null ) return; + + // shape.setMass( mass ); + // shape.setRestitution( restitution ); + + const body = mesh.isInstancedMesh + ? createInstancedBody( mesh, mass, shape ) + : createBody( mesh.position, mesh.quaternion, mass, shape ); + + if ( mass > 0 ) { + + meshes.push( mesh ); + meshMap.set( mesh, body ); + + } + + } + + function createInstancedBody( mesh, mass, shape ) { + + const array = mesh.instanceMatrix.array; + + const bodies = []; + + for ( let i = 0; i < mesh.count; i ++ ) { + + const position = _position.fromArray( array, i * 16 + 12 ); + const quaternion = _quaternion.setFromRotationMatrix( _matrix.fromArray( array, i * 16 ) ); // TODO Copilot did this + bodies.push( createBody( position, quaternion, mass, shape ) ); + + } + + return bodies; + + } + + function createBody( position, quaternion, mass, shape ) { + + const pos = new Jolt.Vec3( position.x, position.y, position.z ); + const rot = new Jolt.Quat( quaternion.x, quaternion.y, quaternion.z, quaternion.w ); + + const motion = mass > 0 ? Jolt.EMotionType_Dynamic : Jolt.EMotionType_Static; + const layer = mass > 0 ? LAYER_MOVING : LAYER_NON_MOVING; + + let creationSettings = new Jolt.BodyCreationSettings( shape, pos, rot, motion, layer ); + let body = bodyInterface.CreateBody( creationSettings ); + + bodyInterface.AddBody( body.GetID(), Jolt.EActivation_Activate ); + + Jolt.destroy( creationSettings ); + + return body; + + } + + function setMeshPosition( mesh, position, index = 0 ) { + + const body = meshMap.get( mesh ); + + if ( mesh.isInstancedMesh ) { + + const body2 = body[ index ]; + + bodyInterface.RemoveBody( body2.GetID() ); + bodyInterface.DestroyBody( body2.GetID() ); + + let shape = body2.GetShape(); + let newBody = createBody( position, { x: 0, y: 0, z: 0, w: 1 }, 1, shape ); + + body[ index ] = newBody; + + } else { + + // TODO: Implement this + + } + + } + + function setMeshVelocity( mesh, velocity, index = 0 ) { + + /* + let body = meshMap.get( mesh ); + + if ( mesh.isInstancedMesh ) { + + body = body[ index ]; + + } + + body.setLinvel( velocity ); + */ + + } + + // + + const clock = new Clock(); + + function step() { + + let deltaTime = clock.getDelta(); + + // Don't go below 30 Hz to prevent spiral of death + deltaTime = Math.min( deltaTime, 1.0 / 30.0 ); + + // When running below 55 Hz, do 2 steps instead of 1 + const numSteps = deltaTime > 1.0 / 55.0 ? 2 : 1; + + // Step the physics world + jolt.Step( deltaTime, numSteps ); + + // + + for ( let i = 0, l = meshes.length; i < l; i ++ ) { + + const mesh = meshes[ i ]; + + if ( mesh.isInstancedMesh ) { + + const array = mesh.instanceMatrix.array; + const bodies = meshMap.get( mesh ); + + for ( let j = 0; j < bodies.length; j ++ ) { + + const body = bodies[ j ]; + + const position = body.GetPosition(); + const quaternion = body.GetRotation(); + + _position.set( position.GetX(), position.GetY(), position.GetZ() ); + _quaternion.set( quaternion.GetX(), quaternion.GetY(), quaternion.GetZ(), quaternion.GetW() ); + + _matrix.compose( _position, _quaternion, _scale ).toArray( array, j * 16 ); + + } + + mesh.instanceMatrix.needsUpdate = true; + mesh.computeBoundingSphere(); + + } else { + + const body = meshMap.get( mesh ); + + const position = body.GetPosition(); + const quaternion = body.GetRotation(); + + mesh.position.set( position.GetX(), position.GetY(), position.GetZ() ); + mesh.quaternion.set( quaternion.GetX(), quaternion.GetY(), quaternion.GetZ(), quaternion.GetW() ); + + } + + } + + } + + // animate + + setInterval( step, 1000 / frameRate ); + + return { + addScene: addScene, + addMesh: addMesh, + setMeshPosition: setMeshPosition, + setMeshVelocity: setMeshVelocity + }; + +} + +export { JoltPhysics }; diff --git a/examples/physics_jolt_instancing.html b/examples/physics_jolt_instancing.html new file mode 100644 index 00000000000000..cfb6ad835ed78c --- /dev/null +++ b/examples/physics_jolt_instancing.html @@ -0,0 +1,164 @@ + + + + three.js physics - jolt instancing + + + + + + +
+ three.js physics - jolt instancing +
+ + + + + + diff --git a/examples/screenshots/physics_jolt_instancing.jpg b/examples/screenshots/physics_jolt_instancing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d0ccac346d03e61d6ad87673041a7c1634d44d35 GIT binary patch literal 25369 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 JUIhJ}{x|cP7qS2V literal 0 HcmV?d00001 From f773e2ca83b306a238dd7c68046b2e70597df951 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Fri, 29 Mar 2024 13:56:59 +0900 Subject: [PATCH 2/4] JoltPhysics.js: Added restitution. --- examples/jsm/physics/JoltPhysics.js | 43 +++++++++++++++-------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/examples/jsm/physics/JoltPhysics.js b/examples/jsm/physics/JoltPhysics.js index fac480ea4dc53e..0a5a455f57f1a1 100644 --- a/examples/jsm/physics/JoltPhysics.js +++ b/examples/jsm/physics/JoltPhysics.js @@ -110,12 +110,9 @@ async function JoltPhysics() { if ( shape === null ) return; - // shape.setMass( mass ); - // shape.setRestitution( restitution ); - const body = mesh.isInstancedMesh - ? createInstancedBody( mesh, mass, shape ) - : createBody( mesh.position, mesh.quaternion, mass, shape ); + ? createInstancedBody( mesh, mass, restitution, shape ) + : createBody( mesh.position, mesh.quaternion, mass, restitution, shape ); if ( mass > 0 ) { @@ -126,7 +123,7 @@ async function JoltPhysics() { } - function createInstancedBody( mesh, mass, shape ) { + function createInstancedBody( mesh, mass, restitution, shape ) { const array = mesh.instanceMatrix.array; @@ -136,7 +133,7 @@ async function JoltPhysics() { const position = _position.fromArray( array, i * 16 + 12 ); const quaternion = _quaternion.setFromRotationMatrix( _matrix.fromArray( array, i * 16 ) ); // TODO Copilot did this - bodies.push( createBody( position, quaternion, mass, shape ) ); + bodies.push( createBody( position, quaternion, mass, restitution, shape ) ); } @@ -144,16 +141,18 @@ async function JoltPhysics() { } - function createBody( position, quaternion, mass, shape ) { + function createBody( position, rotation, mass, restitution, shape ) { const pos = new Jolt.Vec3( position.x, position.y, position.z ); - const rot = new Jolt.Quat( quaternion.x, quaternion.y, quaternion.z, quaternion.w ); + const rot = new Jolt.Quat( rotation.x, rotation.y, rotation.z, rotation.w ); const motion = mass > 0 ? Jolt.EMotionType_Dynamic : Jolt.EMotionType_Static; const layer = mass > 0 ? LAYER_MOVING : LAYER_NON_MOVING; - let creationSettings = new Jolt.BodyCreationSettings( shape, pos, rot, motion, layer ); - let body = bodyInterface.CreateBody( creationSettings ); + const creationSettings = new Jolt.BodyCreationSettings( shape, pos, rot, motion, layer ); + creationSettings.mRestitution = restitution; + + const body = bodyInterface.CreateBody( creationSettings ); bodyInterface.AddBody( body.GetID(), Jolt.EActivation_Activate ); @@ -165,19 +164,21 @@ async function JoltPhysics() { function setMeshPosition( mesh, position, index = 0 ) { - const body = meshMap.get( mesh ); - if ( mesh.isInstancedMesh ) { - const body2 = body[ index ]; + const bodies = meshMap.get( mesh ); + + const body = bodies[ index ]; + + bodyInterface.RemoveBody( body.GetID() ); + bodyInterface.DestroyBody( body.GetID() ); - bodyInterface.RemoveBody( body2.GetID() ); - bodyInterface.DestroyBody( body2.GetID() ); + const physics = mesh.userData.physics; - let shape = body2.GetShape(); - let newBody = createBody( position, { x: 0, y: 0, z: 0, w: 1 }, 1, shape ); + let shape = body.GetShape(); + let body2 = createBody( position, { x: 0, y: 0, z: 0, w: 1 }, physics.mass, physics.restitution, shape ); - body[ index ] = newBody; + bodies[ index ] = body2; } else { @@ -253,10 +254,10 @@ async function JoltPhysics() { const body = meshMap.get( mesh ); const position = body.GetPosition(); - const quaternion = body.GetRotation(); + const rotation = body.GetRotation(); mesh.position.set( position.GetX(), position.GetY(), position.GetZ() ); - mesh.quaternion.set( quaternion.GetX(), quaternion.GetY(), quaternion.GetZ(), quaternion.GetW() ); + mesh.quaternion.set( rotation.GetX(), rotation.GetY(), rotation.GetZ(), rotation.GetW() ); } From defb9febff09ee18fcbc06d851980092cf9df91f Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Fri, 29 Mar 2024 14:08:17 +0900 Subject: [PATCH 3/4] Examples: Updated screenshot. --- .../screenshots/physics_jolt_instancing.jpg | Bin 25369 -> 26817 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/screenshots/physics_jolt_instancing.jpg b/examples/screenshots/physics_jolt_instancing.jpg index d0ccac346d03e61d6ad87673041a7c1634d44d35..edba70c7ce9f6c839ad685b07d8cc255c16396c9 100644 GIT binary patch delta 24797 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 IU;_{T*~utUo&W#< delta 23269 zcmYhCcR1T``0vwdzuH<|R;g%hYHxxrRTQm>;cGyLN4Aq)McE^IL+~Bg~&LJiFCLm|5iH1GBosFVZF{&+%xduiE=h!zt zEf_`iuEgJ&dh?o2_U#mVyukA2DshJGvHsq5`aM~ofk#rH?BJDfhH}Xc46F5WyrQMK zq*|2e!$jGhUYwndiFu6x_a1uAetusuo5*Ze4&!;2+@Z)h#-1iwfAGXM>gy6P_xuJ^ zrw3h7Z*iaxPggE0>X$>APN7u!=}td(>VW&q)vI87*`Hofyr)ihW-XkCoKp9mJmJx)}A<9-P^| z73~DaBem&o$ad5eK)$PV)zkv$a9=*vftUhS(sq={v-T}$(c3f2e<0hp5sc^evQk}- zvVy^eK*pIAUARKabzx`MbKifUT7_gyqAk*RdV|b@UrAj>%GBNA^f90wp1$ot@9WAI zlI_zSOfMu|&~02RE`qrJ0;`v@y_!eh;xpNKb&Ng6R4VdB5d+R?%fU5k$JwaG8icEK z5GhI$6{&Q)S=9QX6bHSsCFlLqEdqD0p2l>-7V7z(Suu57{o$uBt)x_=zGEE?GWDsW zgtg(@Psx_H5a3FsDl4yTnzFuj(xBUQi7cO|K6#*uX4X0Rss@5W9O9xV(#c+~Jdxpq zlKo^0ngq+pS)G*lX(X3aa_U!v!zMS`b54}nqdnKEn)PAAc4`KrI|x)h;D8KiyXo!v zX_RD2^!sLF|DYtvD&Wr(jys*c6paP_!u=1`|C5+d-ZxPz6hxBZ^CD$6tx zV`e!k%$(ShT!g&I@Uc%#O`>!>zM*gE7v9+xmdu`S$baY$Ns%43bJE}{K;k6m; zUrKdnJxSfb3oFrj2f8%)axkHT%s_BuS~L&5&bxoOmKl@&&Hqf=<~*IGf}^8%yhjDx z-82*fs#R8^?H0AZQzZ1ZxGIli-{06q#SQI41|mKAzfyO^6r0eF#>_Wj-e-)_g ztsNM4{NSh$VgIEuJZma>{kZ98jXt%$9P&e-Qp3!?=>1tI$VNpevIQ(j9wmb(s=fan z%GyQy)-m4wx|3a(#@hSo)fMJRzhfjc!IM85P<=rIdB|63Qq4a+D1RsR<>x&^TtXJw4cO z#FN85H~p!BrE*d?O|k{T#zOgA0{<6Sfj_)EH=BM6{zWvznM3bvSgqpSJ9|P)l0ut< zjug_L_&E<$?k)Sld$l4JB}aq7_QAqq64D7;Ep2?ReBMvG9?4G9E{M*A2&~m--ZN5j znFU@PlPOV^u`Zras#iZ!79aZ7b)}svCEF>VEA?0r?VOC>)pT`*l25^-ZTwEXv$)Jd zrGNo50~)Eru`}yq*6MSW-r2`i4R^Q(&Vk5#|;QJ)haNzS&W~+5&g>U~r z3~hgoP(*&(f@7_z(f&zkQV^^JE2a=8-bVf-FuQQW)6OF({~t&OIY!zH0O!@5^LaMYo%Umb1{x{oK#hQ~DzVOah(FjRj zZnD9;U;UIu6GtUc)w6*3UN7j1;&4^t>94M3J{ORa7fREyE`Su3z*G^_GY^*CIVfx84WfokZ7PuHVg79*#|(Vmamiuth%d zJHs3(-GX_m^A1heMkRU1o$9&TV5^*~8>N!!a!|VbeUDTacQzd+`WRYo!;l(n=*RII z@#Te&8vbiDbPrn^;PMLErDBfyjfo4CnBjStZK~lfS?Y-6H|;G~d02lM81iR+I|)X* zA-MwlZNJbgUjl!eLJF;o6BBxFFG09Xqq?|``rUHmD%EECROMWEJ=)agCQMi_yuoR? z&j|Csu_vDcJ?($kpV=o3Ia#Y`bVXmaQW4C~#uu^TS^|XvQWiZLCm$RM>ZlpSFFt7lG-x$9NU5{>0Jqa@;3aI3=7myzoMT{J6e6U=*-n6 zGH6K{i)mM)2&Bq~!HgA4E6g?$t4#tuK2J#WK>EOxAO5g|ZgR4PW?m$BCeVn}D)j)S z*nkIjd^{a9>PWxh#%FWu>;;Y{Ny4Edw&CWN!vx8TZw2A8Snmg`&U*tlX3eofwWF$t zxiH1M7frg|XRK`32$7+PZ6`P;zb%c7U2g4U^?3E8zcck>>#ir!a4%5(P`_(&|E84( zt0O{3@c=IKy}?+4gSQU(p?<2ZIsw>>r^9FFMV>M!(WT+IOuWaS%_-&!CFPlWgF91s zPd8d0jkyXsSEK3}tDl;Pu<$=)CMg3f@7;3v?}ec? zQ@>jJe*f-U7g*IAK?y5LUJiAVy7zaYXSaWDj@*peT}PIUN8Z;zv)^a`7!L@Ho<;mu zBe}!(%Ho&Sfy(6D#zOk#w#Ue*R(9B4*O}d9pvIE9srDzS1CEG)Ae}TDLr_S&`De;& zvFDk%!S9Qe+m$VWko%n9wsA>-zd7oKF#N&frdwKRjc3Wl*TXF(CfMeZDuE%x-p`&k zopa9YI5F?5>Vwdn1~SK78@1DLeS$(kgl+`4eQjD&P+rDanrVt{s-sMQtVx}XKV2^h z1f%QBquup32X{>P)V+cw@f9T4o7E4C_C8hiX9E*xfeiPDa!j!=;k3q5S*-(FJ-x#8 zE3yW3JgFuU*39Odqjk`I2t!-2l0dSkog8q`7WWTC!HDyGR`H>31nW>c;%8ZcN*A+Z z7iH#u#&eAVLs_fP443u`T9kw-c+HCE)`0DQ%oO9(7xv;v(!j&D*rR|~5i=1HR4R6M zmS}f&5M{0Bj>Uv!w@bw>BmbM{{X?y&0ROK#?H*$~=`SjYaf|;E5+a9EtA5OMkOAig zm+%nw(qncq3>h0!r68xfoH{J<+i*?^?^7bNhMzsp4+Q;`VkBQjvz>N3l_WfuTzu%_ zkC-U+^uEzDzVfDfv?a&*?`>!M+d`}6p&Kab% zgeJY8W3~H=br0uHIrJUx19r;K2Pqj>>g{DU?@fP$u6pG$ljUH(IG%70{Bd~6dY!aI`*!cxGMrw^sW6q#p;o$cbpj%kbdd#;c~Rfmc21~Y(xFm?yq zs(Y`?+l`p6K81h`tK!UT9odYR=A#HO{&xC&mFD_pspJ0B>E8qLwDqj+xvKOhGj!?d zF{1G~Dt$~O4ZrQwv$nrSVuMPU&Ha|UGyS7vPU0xa{?SLLi#IV?iY0_9kz)%kn5R zpe8}1<*#>(+^oyqVb)hG>+rPKMtq7HJpzO$Z0;$m_uM)S!u3aZ+@;9s^ z>%^=uz_?5v+E#El!|^KT&2d=qu^r_E#LDB zd2HLe4ZWfzpFGLea}y&D3(59v0#yWRlt`|_CXRhcQ;4Q-8&hRAV6g*Dm3DFDL_?%; zy`8B0u-;yv@hhRFC;z~7R+T2cymlK8xwZ3C*y^h+h)ou2-NqVBOSun<-zdB+YFOf(6Es&7t5VwEf0$Z%OR7YLNTfUAcTgOARvsOO6{{6?iAZidL$Z&Bq z1*FIy_PaVo|MiYnBbKkUh7oxrFT=bXw+JQfj^>wZ%+DmMTaNY}kGM*DfC~7}A3*O`L0;K@g@~o^ZgAPu zIu}hJP0Vv_D^YA=rCPq_$ZJQ-E@TQ;cC-I^rwoV>8 zSS0N=`36Yps;2!L(|^dAg~9(!y8@-d2l;hRems+P*cq%&ZLY{^{@l!n*kpTB*N|Y) z5Y?Ui=VgS5bm?sNQv6&h&b^Ha@(*-VGxb61uy(qbPit+R*ThLHP|}b?E%YKLY+V_v zdW0Qv#t;<5HHqkRQHRE`pG50LOoWgmSKP+{PbYIDYKAL%`|^pSZ2|-J;$5!|!e!kB z)s^7`%wsNnCF7^)x))Q3?$cdHnw`64HxAP!Qd{k^V7-fL-QZX$1A9Esg|*0AHfMIx zEOW4l##>(r)?o%z&Yy-tYjI_kzv|)z)dC!Yyp9@(T6YL-7*WP9y&QYN6+T%7d0DCL zs6hJjMpbxS>ROb#~()i1W7m^Ta< zGw(nsKaVpmJFlzMu5wJ*5B3xA^KPo0qP6d=FHiFNMb85GxVyQiX9{jHOJte#)f6Lt z_&aX`Re9S3IN?Y|VGYV9*Y2$*uIR;_>IMiTtxEk0@FmK`kn&^PWN!`ZuZq0vd*7G8B09pU-+yG z>(}R(EtM$!uE60qpX+AsZ+5oL05xQt=TMv71J1bL0qr_%Ho{SD*ZzU5!S{(M(+P=y zrt8UC(eEpp+#ie2n}$d=3T@}TKy!YyfQGZlxaB=0gtH>4)DUu`y6(EMekQS8Jmq!* z9~z4*qN@IO+sF)FS8|lfHhljNq!(-ma{?-qcK?A)$f!Ps8Zdm*W}{WyFDeKgBRg{ftr^ykQga8iG>*e1`IzCj1b-rqrhl z^LQG8Rie|hNWpIX_qsM;$6(&mgN3|kK`wwmn`h@O^4v~;`5%Z8Pp(Hs6f3Jdys3cv z2ciyuC`TiN?sxa3cmE;p)%*h`&789=XeD4?G@A>pn&(UD@_a{@WGW@QPX@ydI5zTV zNamx}y4HZFPgzz-wCWM%Au`=5=S_GJM2?wh5jaPUG|Q@YP{{?C6O` zb%NTMFys{RSLI1TAMK`y(Y@)%ZN7b5R=oIK#;ZS6N5iZK7!FN*Hk!^+<_jWTqT>P` znfhE_%W259eHAVIK=%Wc2#B&B;8%Y7>Bi9wuGA4}OZs*fxkF?>M1R3)FQyb-nl4j! zLlaWz<2>MK?`m2d^q+2gL8!A{D}rs~+>AVy_n)G4AoG|a(+4RGCJvBLbeJ=`9=>Ea zKvBO|R~&4(uor4(-yUeMB0CtAZFytJM0_=Mg+=ggow>Jy)0%v{wTNaMATV2l{zU+9 zSDiDED2Vn;$lJnQf-LF;+Qc$H!Ee14lY2pue_PiFl5568k%M~RF9FFHiQTOFc~*Fd zTys91QkH{rX&0{@I~%08-M1iPf;T)W7VzZ`IzJaC1zu$Q16l6S=@V2sfzVv)QPS%( zy|h|GMYg|!?;2WZYSJ|MO2R3=)_oIqaS9CC|9y*;%&Zbc%&q3L78uWw)yvAUY@gG!|-sD>z&tzEs>XF)rrgqcB zSxpH%`=C5JNB`DjzaD8#M^t@c`!L}Oxf{&1>kX~h3g*C@UnIw71vo$7R(-&hW2r++ z=Z@J&u4Zrbp8Z1Z@aZB|0qDy`t@O1$`3rL7qzygH5R$UKAnN6QH=%oblTUJOw}mmc zH#7Ke@VyoyJ(UA2x2uGx@#E!?2DFWi1b^z0L-Bh1tEeZPR1h5QQ5ekkmN9t zVxAWyhp;$qKt&C(v53Na4o&6<&i<~#iFfeAor*NB(QLPf?nS1+mQ=T`IHwW}+)N+5 z$$GE(wH>V^5jyPn(E=l&A!$}%S30o88d_?8xFer%lM3cmK&0|nyP?L`Rsy|FN z_@T*Ra7&qc8cn^Db&eeTnu+&%RzUwY?i z-%Uy3`!MSs;Eol3z5{i4&LOR8;QrfTLEBeczv@$Yn_hVWn4ipwxwQ|N+32YHWR#Cw zv{!*>;3Fn-DW20P>K#mr;?@XyemT3C$9Z|Ckg04Aqbhh-^^>67vK#9A-PEE(2RF2G zx2Ly|Pxj$?^cI}o+p3r@d}lpqv^eJ5MXsR9k5NYruH&>!*PxsxuzVndI8ErqQPc5Y zcM!Ed_j3Vx*qG{8=T#Ng3dgoPU-7&D1rN8(q&qhGZ^EW}AGk$4gHGa>XVOTe{c}yi zNlp6-bc_E$@xkm{iV_JOt&c~|*Noat1LSpvcu{kwo_U%w6>p&91hKHn<27c14WE-8 zN93zubDT7jUg`sSBEaaNlOXOsGPh$q>&cBMH`i(&*~ad5(mk}VCo&{~ zHS7Nj%n8IAr0kPMCHyx3W}45KKoi$t&b@z8`&ORt*nTAegjXBZ>t_j8;3j=GFV(Z*)4x|U_%fn*l$KBJ^R zXQU+hLbv{QzfX)Q9vEVpBMo6OrY0Dl){4H83fNSIP_qcaaxWNJx#jXPY3^^>*M8mzD=3CnjLo zf1vhPUIHz;OK=j0;p<=3b4)cYRVmrAQ6;gV2_*`Rm}BA4Y?>Um^ayu&=CkK@6Z|}E zANq_tXoU#QfSCXB=|50$v#Q3T=$9_V9{`GQ`C3J_-Xk#+PnVQvh6>intkv~Dz4?wC zyd49T^Y++-PIs?dtsR1$gzX2u`EKP{BU79CHf#LD(Ms)^i(i{XNvVD5@_gNK>Jl(@ zvZzPnxyS;pG2WCSNSNe&8>}=H`;(!f!|buB_+gT@LVU~+ZQIbQ+|}SZArdcH3T*Gz z#LQu_+5tWQM^ABByY-J@CaimkiK|79OD^F^gEiq3U_Z;z9Smx%CiFCXGub>-Y><2U z0PozOvHtO!q0^5WBO))dNu5O4YOLR)|7Fz;C$wgw)l{K#wWZyBoJkHtn|Z_I5$2lV zW(M4Ca&8`Rvg$cX?!vab74{~;PEocXez%ajW$)Osk?84L$`cJ?2AHcjS@bg|3}eO^ zELbR8DMy>Q(r}_9Yo*#!C-(LyP^}jyiY&eVK=zA|V!szKYjBSV_UF_ZpfwW2@!bjW z!Cb-P(7Sso2}q^N$BknT=K3Lh^qpy4299;B2KC2X7-RD9R0sNr%Ogd2~e)pb<=%<-j;y;j3MN#o1dP-zc>4yOVK zys;POUW)A(iNRb%UCkJyhJb-6=e>#99j;Fuc7_70HnzGTQYQl7BVaG^9t#G-yEP+JbjCj7j(^@to2kSK!_)uO()l@+^M|@}N!Y zImfz~*0;6juV%K?F8mT7dhW&MNlg2zD*d`ycHE>sxbI5j<-{@+6C&S?9ZuK7a|N$B zyHI<$>>r~9oE0P2P%F?efqVLk`c&sXG@(*Sr1Vw5kdW#Us4t_up1$PCatv4yQx}2A zvI^-a;g`=>oMRQw183*YZX++%^6h#@xvn+zu^#6sTt}_1sZ;`O&_<$#4~(Yh%n;AX zw{8*~PL}Mtpr6_3F_NdNf6KS8VX0q+i!_U>@U!>oi@9>LCMSOqxVUoZY0NPf9tNbi z!(`Ci5C#8XxZsa-BQ;HFz|~Zyhp)_$-qvbM=0c|sIw0JaM`dh05FisF$&;&^2X>eXJ z6*+Ic<}MS=F(@%0s#{2!NluYP)|^_@Vn)e!6Z2OQ!C<4PW|c+YT(TyOU?LF3_TG9` zfV8Q~N%z&R#*bA$ML$((Mz=|$&e^=ViIjkb6^i0m=lMDpMd{6rMrx|nKkU!H%mM-w z20HV80^8wBMUlAlUew+7Gs~uDo}9Od;ZHIbO~2S&=^YG6jNm-tZj(*3?7ELsp;Ggx z&7<%k(eaydI|!6mBq-#bvxYRwUTt$-e8T2OBAs=wfX z$y)QHp{)r|>^tZsb)r)miut-{RljrQj{0LydZ6^=5hze)HAxij%DbI}R%KX}D4Ujy zmMMPve97-=`$zWMy|J-w&y>_N?fi~)HTaKqs6LFET=buahi z8tHj@gca9jkH*B7pPI}KAKMo%*WI(&Jm@Pko5_lDF&p6A;a=hp?XwC<()5I0*Zu6V zG47(z;=BpjJ~{Y%k(qvHndw7MIG;xkA7_e*s^Hz}mn}DpjcJ)*D;{l(BGj5?H~J)( z0}e&+i%MJ+^YIC7%&7gHOnzpk06<)qv^tTYY?O7b%*6CAM*o-MgHJ0fqipS$Hw`#t zu>ME#DmDH@h$es4u{{(;LP?9p3o-fNzv$$QC;M19AE5_y(QVdr_t#BkJ9$ELFC^@% zOOl3Zl*js+IbZiVw+ZdFplcNbcEsS4yM2dBMG(=lSikExtV}$YeOKB5!7)Vf(d5bW zp_mbhiOg#h{0;;E9G!Es`$%hF>BS)5x!H9i-`MoIj3xTho20<|SC;0h8QafW0!*~% zVF8^eFT0q5u_U^jVwqcFIX!c<3bM%Hgs5h_jt18;yaXSPR|3QJy1_J~sqB^ZCHC0O zA-_HsVra+DSu_6~+-d}LS~H6o5I>wtl8@>J51=&UZk;V`_P$h(Z$T%&ctJAF14WrD zrmO9Wq~O%kVbiFd_kR0`uL~(6`_BCmd)KN*RC0Cgp(QQV2G#D;lrUcv8h+v%J-D{X zUtJ9aZ{N2&7t7URlF%?VLE@eAI9=0Gqp7G4<)CZR-!kw%Cw~A1%^Q@_7sw|=GJrtm zSizUY;#;XYIw>nY2=5XE&z^#Q-BxikEAo11=Yh_Ey`uf@bn9HjK+vJW-m%w2^&b+L zHVnlx&6Q@F5kr?cHTjDQW%-eK52}>4Y&63KMyL%7Vd~UR{(;2DhhR{V0TD+=sbU&o z*UEW7V8gR*9B{U2`I&?jZ2C&=BJ=PW@@pw0uS9}8XV2(Bl^QHMu9#&r729m0IaD^) zwChjT4t&;F5Wd$98+EQr`N#tiZV7T>D|afYwL1;(X_k(QbC`T$W`fYvkl&pT@@?HX z(!9`&B;T?ls5~d2e#g;ipv}1(67-Gjyq9~zZ%~l00e+XrD7rUR1lHdy^egRR#({Ts zcUsG3!xWl$1|ETT&T$Qh$inX$ghtR>42PLE9w)DQxX3w_exGVuU$gZM2s}Dh;6Q$Q z@B98y4drz5U#DliOPM4A7Lse?`LM04OABoWe$_P}S+)3Qf2D4B{uKPpElk$K>%6ZG zefStj0XqvxUVN_roE{wS;nP2R3(CJF*v2(i85#MFSopn5yy6jV7XN#PLouKBXvgNr zl39(;_m`OL{1ngecj%|HZ;wN6`OO0OpFi>yBlo;30hk_zqeQF&e`+3#x z7~15d`;G`hi9DNRruW3N48)Tk_p_IT%C?o8`gO>gE$8#IfT1(T#vdi80douN-0DEb zrGyz8eEU&w?Q8F#TWClbO13-Dksy8Nb9YZTgkQDEyst%36^v>42LdhZSKR2ayVK*T znIo$v>Q-&4cI=wbq|itYvBL$p{ztSr=&EyPW|)9{ZtpqfBN%lk_Lw^u9eKWip z9b4LO(p?5G^glUG&KlA4=ua-e+PnDm#1MG8=Ojj3r^_8rDi!xDIV|LbRPuS^TLdl` z7qjys*>380E_@hGat^4*wffc^9XOGEA4c^A7%~InDd|~uBf!tqM4W5foInfF?>lh< zJ1gk)@;LJC!0TSO>-U=6JU_uGqRAR(CODXN$9D3~yhXgm7*Zdd1pm-|UST$BsyypT zk2uoUbk>S1fc&#s1vhXDa_N z{TsOUWm4z$GHa}LCRu3#TtxdU!_K|K+HF67Q}TxV`OBG1Re5EJY4rPMRPjO{qetdx z*9WWb{pr;XqQ0vdwTJ*tbX&58-KXGz#{U`$9DK+e#8AnW@S30Qt`wR{s$N9C6TO@t zV*U%+ZX%x0I)W?90>O_H&&0jLhut0GEdtP6&gO`cS=7wIut2AkN7TD@MLT)(%_LPg zrXsRZl)CF#USxsD%v*HYaxcl+94gxGIZyxUBzAM;Kk6pl}Q zBL4fiB;PBu(SWj}I;ciMdB2Qx_(8d(?0eWPnJB64P2E`R1Xh*@p4O|oB!wZF0*k7F z5_KBV!(0)vOdbQdVnJ2CZ!?8dF{Tlry6tzUUjL#{$af`Cb1t4rb(XV}_7x zd_@60?}^Liy!h!=B&|DxeN-H;r(nC&@@|s(9%jVB+vCsZpHXQ8SzMb|q1t`EA8rP( zFWTsyr#*4_abiN#(t_xt zzI36(t!&*-%x){<*N~-@pBy0?k}>c;?OC>-7rF0Qg5Fwto8_Z+ zc_dD}VJC`~82^64yALT?JwTeQL5JTO_#G&0;qgo{WZ}ViJi`Jj5RuKm!%iys#2!%cFGDjeKXzLk&f3})NbZeC230VV_>g2Y3h`+Y)Hw)$e8wc#R@Wb2m?C91jJ-RQIP2vc?|eUz+V z$QMGX5Nw^`Pg;xkStBOI(YdNyU8rVQIZ|`-0e~!V{xXssF_Gm6!RP%}ik<_XYeiNx z^F2vY_L{bf!t|%UX0r8o+J4gh@HcXIj*;-<!mFsG@3>AC_#6P;?Lja zvbc2QsuqYQaSqKYq02EoWg1NaQ=SN8f}Al{`BA34(fH(YW&X811n^BQM`Aar;lk5O z?We5pT@p81vW>|UHaBtnTKI9MbOw`)>hlnQvN8M0POs+CVT14;z5Y{68P8`9jf!i3 zmrqIiy-dT95tE99h7s(>H>|d3mODksjG>Ef54~p~>(7y*LPnQ5fB9qc`0ceAht)|{ z%Tz9=Chw+^`AR{SE@CQtz~03 z;Ws(6OvE1i{c^d#6afk_6jR-MkLVzFV6Nq|{y1Fxlim?hoi2IlS2gQKuZHi|I+Gci z=HuXcgMzh8TQ^wIcm^_A_huJz9o!97P9(gdx)Z7Aephehei~B6w&mC&mb|8&<&&U0 zO{Oy5GLa7B{5kdwmS!Io!Hl_ zlyNw#tJ)k82iC32SrTP5uY6>4nrd`imi1F1@^M>ULA&fOrDP6Ipp!-Y&hs3w-E%1mRjv~b%+_A~|K-bA{Pon-lc<8| zQ~gx^j603uSALV*!UK`axL>e0pNjB1C0Gr_sJ$z6|1>vVUo*$dN$(%1BseyB*g~49 zPcU2%g5&3LgFYHXwHciLUz+pyy!sb@2V@tjuT0WZuBmUoEPFx8Q1?mO8!60Tp?g#Z`+z6za$lgor@~nNPCv- zUF|#i^FXm!Z-*4;rZ>ooPA#8Wu!6;0k1XqZkMXwdk;r*)umJDLQCA~IE#iO^224fn zhpT!9sP|@{L|`1B6yk!bIvZ-C5J6c_E}OI#!GdM$?-N~0j<0sq^)Pvxu|&WYA>RYO zTjAXnE~h~{gV}zy|AkF6^>tcylf-y)BPm^7P%#{l@iVA@c(a-HyMmH9RjZjVES2TKuM>6?hi&V4M`D0yY@ z^X6+ZYXLhO5rS)W3YGcesj6ojvoF(lY`>z-0??_f?0Nnfcnj6ab`=`-o;I>q4CI+ zp@Z_^dv`Z17a3A(d|NTQ315cAXF4gPQ&}O8M{6ri#-WW01IKhkd0g9c_t5}wnSQtU z8YuHqszB)bzVKIWv1_8=1nv#m$+A-?m>G5xlwvYmuUpzfhQrq6E)zrh)3Y^uLtM@i z7=>WAUYs}#7^b&MS#+$aY9a5$fLRo;kyJ18nk@pE3Bs>T9n%wrYI2!hewkIy_DlS^ zDJJ^q%H`;;UsM$N1H(KyJ2uqKvnuCkc>r*>pa5&1I;#0}Pto59(xFcl z33O4-+5r-mgQ&M$sTH6WovCtv%CJaWS;V9io$2F*VDIjeGxBLJlzMaTjHPO{wz!lp zSjpPlnt$^EG;vL2rs%f+ou^b!uY)|uJcQ$_d~?Z`wokij%Kt!V3ptU5TOUApR98Sw z@WKnvMbjpm-XS-S5#-noQ$E!R_;xd+qx94&fu?nPX@x6<^c3g@LD4k`4nv(Yi{k6Q z9|o4bu-?z7LC|&NiW7uR@W7`d4f_SJ11q#(b4ONG5AL=8Fdb)nYPkQ{#*2BMhWSr@ zRge|6+`GwnK55bC=GzHH5SFFASZEcdgTl9hDCKDV_%mV_9yiF+JFt4~JvJZ+wr9ck z#BppTzWmhb9{}py<>(VBV~H;u&^&g{6vAMSUHVRs&_01vI6<9*OH)u%{nSLY{d)~e%tp_-ok_deqsS-txr+EpWI5XN$1f--^nF3eOvcXZSDcH}3W;?Ubt+1|{( zE6^NRT&VufF^6HsSU==Sfa$&+ir{@+Cr&OY4u=E)LBv^}YT&yO*Fa1B#Ps43;!t;ceDK)+PjakMMoPbi2~^N%b8S^|TwD-icC0 z!l>*n@$4(vd@{&2By&AD*7Nh?`hrM&wO_TH@2ulcfCqNKV0*9SP{D<5U@=v#2(B$H zVDF3o6nvjt0+*M;3W0LO3xYbJj%j7w(t&O?28Yxpnf2LoJ}Nm_eUIgQ+vRMt9Dj5& zM~QdwYtI&i(q-xDZI1m|O-f2{>bq8f!?vJD*AUTV52`eILNMEFBA5H{5dc%}je)2J z2%RHuTYNEvm`Q`5WrDVwsR)$Hqe~x-Q1sBjVG)MatNMyz3=&tk%OfqC0%iqpXUbHp zpDnD}+BZT}_VcODtxrsyX&anz6q7R+w>cC$-IU@#TsfnQe2?BuI`7J*tBxMbu13#_ zg($Ro=Jkij-y~_{OLmkI!1$$TqW~$?KJ9HV0sTqtZlkO&jjH~u^By%9KX_X)E8()c zhd6M)p*7EzP0c0VlqTLE*+~&U&_doVbD|LTS*hcOgzGSqrQy0NkWVw|ts%CMS~vF2 zLoO^s^YUI)BVjFcyI91G_-WQ$^9Hr15oXg5i~KtReQOY>bKV&PF9l0i9>cp4 zp|}G4^1&;WyUibUo^8Uf-FeC^XHbBLcVmPkX+TE(!B#yUKjss`{UH)hnvL;=9rA6z z_H9^2Bc!bWhK0WXWjVPg@BZb#K*G1)*Q3Ra)pykxY{jmN70~otkzI3L6&N10_P5U~ zhB+Jeij=CI@3%Gn1Fa@hD+=0gm68MrG*KGe)uu@y2M0GMk(<~38a%Rp9j5qtsPFkG z8Q=yvf00Dv3h4dRQns5~4KPdAI9Dc^%hJ;TS=)wqOK)dj)g?yeMg1o@M+HdfGqQ1L zf7|71c~CQ}OLZ%1?H4I8?VadpFf+Pa*Ui_bP2aZ4glT>6UKEE%Ih?=W?HQ7xSkC+1 zqC{p8+xOiR4w?Nv^M|P4C{~{EK+lKdVz+J=5#*D&+-FOim~B=%)0>e4_C0Y)h8jZg zCzxgQ;RiB6efD(4Xd8Ops!&_u+v0R`qOfoO#@xJP*5HXSR`D9xI6 zH9!M@tG8sDd*VJ0dNgoed%Jmqb9pJm%@MO?w#HkSI@YP5x~UhRsCIVfT6tL~fjquL z8@zNEnV-OTGjDk;6~fK%;{L?X+0n2hhtRnN z37n=!i<#-m?ZfpIz2;Fvz70f8`%h)e^?eR)WpNiR!6KJGpia6F`~daP!}if?OGjT{ zX5f#VnEW+F2i9c-HhzKpwfg_&L@N>gz(a73#nscm@PL#y<#Ss)Y{_PcM)VAWT> zf0~4%LZVS{`GgRxMV24#c+7Rd*rZ1?^G3Ff%Z#FvZ|_k>Ij1#$dJwgv)VJUk^56qh zCpZ?kk@uSo^0!>lnMJR1U$}Z}GPIXpMyv`I&dFojs&U(Sz7v-N#{{Z(>+jBq2$kB_Q!;B^TQ(zsk3EyTnx8?q#+^KvUf%0!Hhs7x)hUD8*;#PxjI zPa1TKyKz==--$`M)s+a(l2m>rInZ#V7C!u9zbp4~%SYqZi|#K@!TkR~qakwY2^7Tt zuz!`m6ECpO+j#cUDaaJVyc98G+e%f)hwK@)pJng#m*21?J^%&fW|R{@X*BwL1<+#g zFK>T5#f3-*isLa|2M%{MN?~4EZu8B?D^tB|nV>z=iz4DJ)SKw(E`wu2=L4LuX#Cm43VA@{T$a|EJwR;#Mr zUCRCIvkSXBJQZb&28VH}@uA%SYw!bD!tY46kwEiei_NQ>*Q2RSCsz`In~5)M^^z1d zW*ujib|3dKQun>8=F-j0jMmYZ9pd>03=FlcS^xcAj{H3C#3lD7yFjxDs}tkC5@Wx< z+p;B`Q~O>r_+9Wj&sH&FH-2w%umjUQ#~D3m^+~z*PIJ<2&(NAH95PC&Hb1Ab-ND8K zgnI?@#`XL4eS#^4lDtjkz|@qg`P5XlUt|Q#MX`YKbNjhIqpkdY%`Bg}k`&UFqxbMq z7uB-y5DNlu=caW5rW*v8{bhRPQ++p06^a7HFMZKe2T!Y#H3eZFoB4h|uKm{+^C2?6 zSAI7Lfq6U7dW#xPIY-WYwP&@{V<)b3#FF9jH>U3VXP{a6 z+wY?uu+Mwv6sZiu7Oo_ioR$wj$|ADjZomgx_Rfs<-TlHgq)Ln79+%!g!8to|;Fyw_ zS2R>eOxZkRXabx$vD{@`ZD}@>ztx?^uD)8KVg9oiTFS&8epu-=YrPTh62a9dhaX>x zDfWpE=!DkM^|)Ro2Cu!q(=Yp*n!nVpD74z6RS{%>y*iQY#bln$Nx=ov!Y?csn;2TMlQirU%u{jRKFg-((=WOp z)@&+2`+6x+9s-n-i+dF77IYt{wa2;^Be}P~KUMgcPop8PgD)SdQ)~YDgzmMu_}Sb4 z613a%X~8{E>P3t#PC>CT1oHI1jDa=nfZs44`{IbZr)k*7PuUun^J%pU z6Tt&s{J$4UnIx{%6cNE)a&e&!2L9S#g-MkzH`xjkp91$+@ok@R9+e*$9X!#0T=Drg zDh@T?|9*d>R{z<${L4?WRfymR12SLK;2C$8{DOx826pi*|5n|I#U<_8Yz*k>uKZ)Q ze;IoDUjbVhq~!n?bLleMqS=*53e)mKNqyWhSs`Pypl&_b*UtG7YiDE*j8mi%hM!hwszvVfAKXcLY1QJeIKV|%FXIj zh8vbH%1+PIvE=^%4z-*8IW4bYoUP1KE5OKd!GYqu3b2fwnz{LErfSpIkNnuwj6d-M422_$e8v12+wLe{^{d?Q(`j#xabHkIub(x=PL`@4gUXY0iZ3&8P1>uP#*6x2k`M zx$yJCz8CRli{S9R#ETD{k~jJ>3c#uo59wOw6zRGg*3}dYz;Z z7-3k9touecKT}Nd2ha!5f3sih72y8>18aI-wc=+;6-rl@KMj(Z$N)DiZoqkMQiN~RMTd+zJXpjZD&G`uYnNJNUq{p~=4)#sYY&kGzw*hOe&936`=gGZoql(Zf`pcq zXWU^Y%@=2(?I%OhHJ=L4ZLQg?(B<52;Hd+up2v>0{XyX#O@POEZ(2C&e9)Czl2_eY zF;|P}@V!@`ne?pM)983TeolTolL0Ute*w(+)8WOxi>?;v>axP> zF^#*I^5TFpEItTWS!i2J|fuNk*8^wa7e$#ue5%7#Q9-%xGy!wN z{y*^-huD~IjOtecJBMab_-24KN5&5ryl)TgFu;IP92NRt&;}j;p{eS~B-FL@DQ3@? zEUtF`7{vfhYvG6{w>NV5lEO4!yac4b;JD_1G%Ynhe+DIi(e-=HLg@j@OB_nO54K6- zfF-c-M}|B~Onw;gJf3zkw%2y}KbYcxGqn$go-xyyiF7I41C8-6@P8@*fOs>-zFC-f zcJpZGK0*Fe0imVYc*f>P?d0&7xkWg{`gmSH-oQVt0D6vr;q4;E&MA|__V&|l8-k!E zPu74Pf8y^4_-n_WAGq+hi?oQZtS(dupqD)0E6g=jcUT{DF6 zC+wH-hvD|Ro*~lg@2;kXK_#quh2NPR3_2A7MsRugvx>$zS}~V3k2;=DfTvki<-1#4 z(ecm3okL2weJXDYM9bN(hUH=Fis(H<&-_((f1WVA(Z#oe?I0G~lC{Ix#75}b3c!y{ zXY;R{;(2DYFb@%cZB7bW$9pyS{+skY?i|i1lx8Y)>iao8FMDsLzGj3a{xs^A z3*!F(1$-oPVdS%aqWLK+t~!YK2V#8yB-e?;Tpi*TBQ&R(ktddXG zjT?Y@#=u5%jPb)9{)Lxgu$k=$e^tUe z^E9p1H_`Tg@aseM91d@naRveytQ@a*X1c}plIZ^c;nmUdKf;e5*?dBFj>}P#P5WHp zJJ^z9tP~Ouk};kS&=N&_&mH9)N5Q%B$0f~6-EfyLG#gP@i%#nIzK?aP^8K5Juo-Ny z5TPWTm&E$&+rRlAKzvxbw(!=Ef8mdY{{Ra0dz;(2^v@>#Bt@0qg-F1{%WHKP!p1+6Q ze=^|wS>P;wZ5+OiF*(acCZ!lR{JhdhUG(VoPWDF+UWxiRlOZ%4e*xx~pB(jJDZ9Qdoje`1?VyS;^{WFdCLziIm8 ziU9IicKNO4wnlh3#Q#YiU9d@;-|;oi7op@!KQy{+(V$gl(WO71|C$sRq}Dk$nTs{N-}kuzKMRR z7mHNhRVy!gf9q4#H2cVJ>|npP$c|{1Nb)hk0E+BK#>r~aKS_V!o1YoqTKG+44~Z`k z?yTi|V&{f*LxnBscH<|$EA;Li#!9{dE~C|H_aA}r##anBZ8b$&F3#S&+sN{N+QU}( zTjKB9zr}iQhL{_e1+=%(MA(i=OcD8vxbL`t-|Z9Jf11L!Nt9!A3Duq3d#l-Yduw~| zuIKh&fE*#0X50aWubL@Jcb_auX}h^2{~Z1hRmKll&A{%M~-QmtNVrg%1~`z(AM_-p$`c)Q?l zio8dwUg|a)kvas|T87vpww5)T1lt;>Wmx1uf7^)+z>o*sujq~t&LzY=Ifu+DM$(#h zT`v~m?c~~Rc^{$h?pK!Muu!XAHz{APnl`$6b-CoMf)$_U)}sS ze|Yb1o<)OEk~?*F&z74|?H+?Ajy>z}%+4udH0*yLX7P-1dM=;lGvnsF;^{4LTv zF*dKIUCgt+rk?{#a@Q^%Ke(eTyEx;yHT#!`+%ua|@bb44#ifU*h;Wm=oEnWbrthaK za#6kXmg>zPsd!q^#Ghr> zG}&RfNY77^z|S0KfNS;)yTuFzY`y;GHF=eqPBMe_-%l$u_qb??T~FhS7vug7=;iL;D0 zaZ3Ts&q}PU)Sd0sxW1liXWIIog!rw&Ts@89>iMrCr&^3|r4*Mnv{91Tu8Hou+e6}? zi+5JnzZ5({ac2~15!NmQVkH4cFA@=vk6dT*uk9QRTyRv=-<5tx>s$*)wjYBs_*HGo z*wb$MySS%qdtTm0J6&hhlaUD;e+4U#4(JzB`PVu%tGD->6+hB|IS(29Mo$e-CWoYG zuSzevmQbp z-8i@CKC}VILv3+z{#+0{x1y;u0o`~b;Z3HiY4*<$M{^Tr{ZSip`cMZ!eejdO?+#2d zTi|l*K0loRSGDlR!dnDuX)diLY+;&PoS)}F9H)wO{{V)zQ<(JItJ3-8L{*dUCV(H{ zt#`n>4xldXBfs-Ag?7OMfAACm>b5u5x|OotS;`(a83a%SdcKimt=PSV^kI?4Gl7xx z%>Z!vm%zA==`_7*!x!{|mR1Dp7n@Ylqj5bUAW?0gshe*hCrEgh|-hTO(w zR>t(e;F1UDkHfz#`lr^^aW2r3X};Il`X^@mj%;GBEG(5R^mgxVhePmxL-BXSEiX*) z_kg??tLt~>)--EvHo@d5LXW(0g&6Km1${iYLomX}pB+-22y~T6#a(wvUQYcqK0E8M z#8hg8B{$kByL$9JetG%sI6_wD zv%R`$we9D*_!eiCPcO&R!%A1>cE99hcxU3Cr}0DfoYTBz5X?x8{9Ue-36iNIG~qNk&U#-s^YwbvwV> zzs8>pH7y=VCGpLyve?_m(OX#Nc6or|35*cD<2#7OdQq)Ls(g}8-JQ>8H_kGu*jkk7 z){LcQtryL$wsyU~XT?4<`19kd3#8Nh72-SXKSvL~;?mWGMo9_znVE3J5rKkn$4dPZ z!)$|rf3cXk)W+c{)Ws=XbFO6LW$?yVjnlh!jrG5$^T!eJ{te>(wy7t~wRXLqdu*@y zp5^-@c>DWz;s$}K$8^k=nw%5ePI5v8aM)wpILG5(yZE=pTse{WPmjUYaZ;~FbZJvo zP0Dd`x{B!w^Ea}xTeP1K2xOSdR}ASUGxNH%RYi5V>>m~X0BVc>03GNTeiP6O?kw+@+mNjAM!!!XL8g`#-{$;(4F|qEEfM^100Lt-ihGOwXnAR;h zjlY4x=|CP+;?Du!_)-4=((hrBTke%7C-k5Qd@!C5e|Z^vQ7y`Y_e=wUKpmfkyaDjv zSaETtYO`GJIr7=@kEq1}cUHER_E0UgtU(b56+oZ|v!ZhD2h`99H{zd(nm>l5Hs%Q? zmmCGg-_C$Ji9R#i-pEr_@T?O>?%6-6pbdWq>wgZl?L%dUhhw+7BcsGIKpmRL8X!cB z06G9De*=c`&%}=s_;XM;cDh<3e+-hLIr?)z98RO-uN7)Rqite%qI2^>1f>xE0MRDq z?=4u8Nm(Cqf59s}Uty|v0&jy}B(RO`wd?DX1>ckmi8`Qc7V1>0pIi_-6JMY4OeC?M z(LItrvm}&W83@mwRqzlYx%c{@%U`dKg43N?(m$hovqO=nfShWildIrs@J0L89h35N1S*M z#WCuC5+&7j_*Z<-`?QmvEDnk@?O%}Re%5%3m+$y=KON!^ZBrFe{U71e@IAxF-Xrj> zw}I`XzA+=c(nki>uOqUHfUX z`~LtodDf-yx51jr8=tYfZ6`aSkc|EYzer8R-5;uMN#O4WYab6aC%^D-i|%bwPz3Na zNXZ}_G6=>;JmVuL2Dvi~9SqSgtuAJ^ZM(0Y=GbgSTqC_FZ^-TZL-7OR2aIhkHLN^g z<15WZ-pmncZ!rrTIqE{F13Yy(KJ|tJD!^s8`n(cvch&sOF*w{#F5cExOJgRz6O@xd zXEJ{S6UBZ6(fn4MuER$tA1tXr9J%-qx%qrRai96){{YvZ3w9BBKjCzz?K+(DOvC0- zv;g7p!^7g^%WXR2%k3b?@}LZ_7S9ilq+5>)>e9(7kDAr8r||Wl4p!sBJ}QcDCVdj< zxBYV_fH!FJaBP6>B2Wglm!p4tKk!xhT-|t?o^|RMkUuH_kH+5>t^hWE zAGnMu98VMH`HBGH@AaKmRASfn(o3Gs*`NsQZvMw|v-wEi9#z*M&ix+apE>-PbbS`UNrgVCe^QP7VYTvZGGp+ao2x{ z*q;qJfBR0J6YB}dN0*zCCgUf}-z>DWUD97Pd*{Y)iXJ2Q&ts@sYgQU;KWx*kEn^F8 z%p(#+(T2%v^vx^ckAl2gH-|5vxmUHE$2v)ujQS9Jf;k7! z*Y$>3nPD@01w3XJT-4^SpXmJ4(XNdj*x43$mvJ6ZM>4=qnw41dMg9#n(Wi9RMw&e? z6C*;VbpeX}z*lkW7`o@fpA74lOMdq9TU@EgxU_JLez^o6%D8cPb{iP)HLpl?dDzUa z366KDweE`#;T=BV;C({s=H%NC+N5L1gbie&S(RQz4$fa%V|PD zA(=`0>iGQ)0Bv|v;WoLXU#6jRs-$Ik+a65-dIEx~0XZObpbkUgu-BJO-=<41lz-MD z4A2LZ$R!R$!Gm|*)_@4(c^o1sB%UY(zVNrg+bwTR66&xtEJw>M68``&XahTc#NPg0-2D?jHSu39#b$gY)fn?Cb5oN3>Wt$3ZOwP&nf8~2@2AwfEvD*MQty&`2xO7* zjm%IIYxy4)1y2(=t&?laJ_o`^O3&Zl{=Q8A07SeBr&5=Nd30u)f4$M^y?Tv(>r)24@cnF)L1#yQ0VD*W z+5tG@Gy&xw61A)0e)@IJm1`L6=@7~MXafUA@jj!WxNAg(vD!#MpbqcB-xlT7Zxc<_ z>?4e^!n{Wxr2uzo!IUzd4FC*?-+4j$icKjiJ%uR7adDEmW`w>c*X7fp(m%B&TWBFz zqlPxxp;TZ4j=T=_^I3le@XlE@UDlz6k2`JiHO%ha^ya<3Rz4di@Y8{EJY2C@Tm(I= zo0l|~Jdz(<0xox3BzL@)g=nYRz;uLZO}K^kWOag#s}v*Bjl0h5pv2?Ia>*}kf| AegFUf From 270a97520f1be234b0477a1ed43126176f148953 Mon Sep 17 00:00:00 2001 From: Mugen87 Date: Thu, 18 Apr 2024 15:05:20 +0200 Subject: [PATCH 4/4] JoltPhysics: Improve convex radius for box shapes. --- examples/jsm/physics/JoltPhysics.js | 2 +- .../screenshots/physics_jolt_instancing.jpg | Bin 26817 -> 25411 bytes test/e2e/puppeteer.js | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/jsm/physics/JoltPhysics.js b/examples/jsm/physics/JoltPhysics.js index 0a5a455f57f1a1..dafd2a126cfaf1 100644 --- a/examples/jsm/physics/JoltPhysics.js +++ b/examples/jsm/physics/JoltPhysics.js @@ -18,7 +18,7 @@ function getShape( geometry ) { const sy = parameters.height !== undefined ? parameters.height / 2 : 0.5; const sz = parameters.depth !== undefined ? parameters.depth / 2 : 0.5; - return new Jolt.BoxShape( new Jolt.Vec3( sx, sy, sz ), 0.05, null ); + return new Jolt.BoxShape( new Jolt.Vec3( sx, sy, sz ), 0.05 * Math.min( sx, sy, sz ), null ); } else if ( geometry.type === 'SphereGeometry' || geometry.type === 'IcosahedronGeometry' ) { diff --git a/examples/screenshots/physics_jolt_instancing.jpg b/examples/screenshots/physics_jolt_instancing.jpg index edba70c7ce9f6c839ad685b07d8cc255c16396c9..c96d1323478b104fae43cfa19e2f79a5069595aa 100644 GIT binary patch delta 23389 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 delta 24885 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 CiF(xl diff --git a/test/e2e/puppeteer.js b/test/e2e/puppeteer.js index f626b27c76bbaa..c811abe1a9ab0b 100644 --- a/test/e2e/puppeteer.js +++ b/test/e2e/puppeteer.js @@ -108,6 +108,7 @@ const exceptionList = [ // TODO: implement determinism for setTimeout and setInterval // could it fix some examples from above? 'physics_rapier_instancing', + 'physics_jolt_instancing', // Awaiting for WebGL backend support 'webgpu_clearcoat',