human2ai 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/README.en.md +36 -4
  2. package/README.md +44 -4
  3. package/dist/cli/main.js +47 -13
  4. package/dist/cli/main.js.map +1 -1
  5. package/dist/database/style-library-repository.d.ts +14 -1
  6. package/dist/database/style-library-repository.js +59 -0
  7. package/dist/database/style-library-repository.js.map +1 -1
  8. package/dist/domain/composition/analysis.d.ts +3 -0
  9. package/dist/domain/composition/analysis.js +5 -0
  10. package/dist/domain/composition/analysis.js.map +1 -1
  11. package/dist/domain/composition/draft.d.ts +2 -0
  12. package/dist/domain/composition/draft.js +126 -5
  13. package/dist/domain/composition/draft.js.map +1 -1
  14. package/dist/domain/composition/frame.d.ts +1 -0
  15. package/dist/domain/composition/frame.js +6 -0
  16. package/dist/domain/composition/frame.js.map +1 -1
  17. package/dist/domain/composition/geometry.d.ts +5 -1
  18. package/dist/domain/composition/geometry.js +40 -2
  19. package/dist/domain/composition/geometry.js.map +1 -1
  20. package/dist/domain/composition/index.d.ts +6 -3
  21. package/dist/domain/composition/index.js +6 -3
  22. package/dist/domain/composition/index.js.map +1 -1
  23. package/dist/domain/composition/planning-intersections.d.ts +20 -0
  24. package/dist/domain/composition/planning-intersections.js +119 -0
  25. package/dist/domain/composition/planning-intersections.js.map +1 -0
  26. package/dist/domain/composition/planning.d.ts +25 -0
  27. package/dist/domain/composition/planning.js +152 -0
  28. package/dist/domain/composition/planning.js.map +1 -0
  29. package/dist/domain/composition/refinement/engine.js +1 -0
  30. package/dist/domain/composition/refinement/engine.js.map +1 -1
  31. package/dist/domain/composition/render.js +14 -1
  32. package/dist/domain/composition/render.js.map +1 -1
  33. package/dist/domain/composition/states.js +6 -3
  34. package/dist/domain/composition/states.js.map +1 -1
  35. package/dist/domain/composition/types.d.ts +49 -1
  36. package/dist/domain/session/capabilities.js +1 -0
  37. package/dist/domain/session/capabilities.js.map +1 -1
  38. package/dist/domain/spatial/camera-box-sheet.d.ts +15 -0
  39. package/dist/domain/spatial/camera-box-sheet.js +24 -0
  40. package/dist/domain/spatial/camera-box-sheet.js.map +1 -0
  41. package/dist/domain/spatial/camera-box.d.ts +1 -1
  42. package/dist/domain/spatial/camera-box.js +6 -2
  43. package/dist/domain/spatial/camera-box.js.map +1 -1
  44. package/dist/domain/spatial/camera-render-key.d.ts +7 -0
  45. package/dist/domain/spatial/camera-render-key.js +63 -0
  46. package/dist/domain/spatial/camera-render-key.js.map +1 -0
  47. package/dist/domain/spatial/index.d.ts +1 -0
  48. package/dist/domain/spatial/index.js +1 -0
  49. package/dist/domain/spatial/index.js.map +1 -1
  50. package/dist/domain/spatial/lighting.js +3 -2
  51. package/dist/domain/spatial/lighting.js.map +1 -1
  52. package/dist/domain/spatial/model.d.ts +2 -0
  53. package/dist/domain/spatial/model.js +82 -27
  54. package/dist/domain/spatial/model.js.map +1 -1
  55. package/dist/domain/spatial/preview.d.ts +4 -0
  56. package/dist/domain/spatial/preview.js +23 -0
  57. package/dist/domain/spatial/preview.js.map +1 -0
  58. package/dist/domain/spatial/reference-lines.d.ts +12 -3
  59. package/dist/domain/spatial/reference-lines.js +37 -16
  60. package/dist/domain/spatial/reference-lines.js.map +1 -1
  61. package/dist/domain/spatial/render-inputs.d.ts +3 -0
  62. package/dist/domain/spatial/render-inputs.js +14 -0
  63. package/dist/domain/spatial/render-inputs.js.map +1 -0
  64. package/dist/domain/spatial/scene-cache.d.ts +13 -1
  65. package/dist/domain/spatial/scene-cache.js +90 -11
  66. package/dist/domain/spatial/scene-cache.js.map +1 -1
  67. package/dist/domain/spatial/scene-update.d.ts +6 -0
  68. package/dist/domain/spatial/scene-update.js +52 -0
  69. package/dist/domain/spatial/scene-update.js.map +1 -0
  70. package/dist/domain/spatial/scene.d.ts +3 -1
  71. package/dist/domain/spatial/scene.js +78 -20
  72. package/dist/domain/spatial/scene.js.map +1 -1
  73. package/dist/domain/spatial/types.d.ts +8 -0
  74. package/dist/domain/spatial/types.js.map +1 -1
  75. package/dist/domain/style/model-input.d.ts +3 -0
  76. package/dist/domain/style/model-input.js +36 -0
  77. package/dist/domain/style/model-input.js.map +1 -0
  78. package/dist/domain/style/types.d.ts +8 -1
  79. package/dist/domain/style/types.js +1 -1
  80. package/dist/domain/style/types.js.map +1 -1
  81. package/dist/domain/ui-sketch/clipboard.d.ts +12 -0
  82. package/dist/domain/ui-sketch/clipboard.js +55 -0
  83. package/dist/domain/ui-sketch/clipboard.js.map +1 -0
  84. package/dist/domain/ui-sketch/index.d.ts +1 -0
  85. package/dist/domain/ui-sketch/index.js +1 -0
  86. package/dist/domain/ui-sketch/index.js.map +1 -1
  87. package/dist/server/routes/spatial-sessions.js +39 -15
  88. package/dist/server/routes/spatial-sessions.js.map +1 -1
  89. package/dist/server/routes/style-library.js +39 -0
  90. package/dist/server/routes/style-library.js.map +1 -1
  91. package/dist/server/spatial-render-service.d.ts +21 -0
  92. package/dist/server/spatial-render-service.js +67 -0
  93. package/dist/server/spatial-render-service.js.map +1 -0
  94. package/dist/server/spatial-render-worker.d.ts +1 -0
  95. package/dist/server/spatial-render-worker.js +15 -0
  96. package/dist/server/spatial-render-worker.js.map +1 -0
  97. package/dist/server/spatial-render.d.ts +15 -3
  98. package/dist/server/spatial-render.js +47 -14
  99. package/dist/server/spatial-render.js.map +1 -1
  100. package/locales/en/common.json +94 -14
  101. package/migrations/0009_spatial_styles.sql +31 -0
  102. package/migrations/0010_style_preview_models.sql +8 -0
  103. package/package.json +1 -1
  104. package/schemas/composition-draft.schema.json +474 -1
  105. package/schemas/spatial-draft.schema.json +12 -0
  106. package/schemas/spatial-operations.schema.json +12 -0
  107. package/skills/human2ai/SKILL.md +23 -9
  108. package/skills/human2ai/references/composition.md +192 -1
  109. package/skills/human2ai/references/spatial-modeling.md +119 -0
  110. package/skills/human2ai/references/spatial.md +7 -2
  111. package/web/out/404/index.html +1 -1
  112. package/web/out/404.html +1 -1
  113. package/web/out/__next.__PAGE__.txt +7 -5
  114. package/web/out/__next._full.txt +7 -5
  115. package/web/out/__next._tree.txt +4 -2
  116. package/web/out/_next/static/chunks/101.6ef34adad3e9815b.js +1 -0
  117. package/web/out/_next/static/chunks/130-7e9e715a084569bb.js +1 -0
  118. package/web/out/_next/static/chunks/166-96a8c6ae1e9aed59.js +1 -0
  119. package/web/out/_next/static/chunks/218.7b89674409b344b8.js +1 -0
  120. package/web/out/_next/static/chunks/484.92b016222d6749f2.js +1 -0
  121. package/web/out/_next/static/chunks/{381-4a803b79da320e6e.js → 635-611c009924b842be.js} +54 -54
  122. package/web/out/_next/static/chunks/653-6dfb97fec9a2d91b.js +1 -0
  123. package/web/out/_next/static/chunks/678-32d3aa1859450d63.js +1 -0
  124. package/web/out/_next/static/chunks/83607670-fd2f339702a222e4.js +1 -0
  125. package/web/out/_next/static/chunks/app/_not-found/{page-59ce938ad0594022.js → page-b92817fdc4609975.js} +1 -1
  126. package/web/out/_next/static/chunks/app/composition/page-6c12ee8472715448.js +1 -0
  127. package/web/out/_next/static/chunks/app/{layout-6351ae607c4ee18d.js → layout-1dd9196cde94389c.js} +1 -1
  128. package/web/out/_next/static/chunks/app/page-741ecaf9ee8c3c07.js +1 -0
  129. package/web/out/_next/static/chunks/app/spatial/page-5ba0940650df6c7f.js +1 -0
  130. package/web/out/_next/static/chunks/app/styles/page-1ccfc2c5fbc1e646.js +1 -0
  131. package/web/out/_next/static/chunks/app/ui-sketch/page-ef4f2e531583e684.js +1 -0
  132. package/web/out/_next/static/chunks/{c3f2cda1-9e279dab137b7272.js → c3f2cda1-ef85a0897724e46b.js} +1 -1
  133. package/web/out/_next/static/chunks/main-app-cf37a257d91ce62e.js +1 -0
  134. package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-33b4f58f02e82215.js +1 -0
  135. package/web/out/_next/static/chunks/webpack-d16ce1f994e98178.js +1 -0
  136. package/web/out/_next/static/css/06743b5635914999.css +5 -0
  137. package/web/out/_next/static/css/0b43ff4a0439c97e.css +1 -0
  138. package/web/out/_next/static/css/1f8501a43042a5a2.css +1 -0
  139. package/web/out/_next/static/css/39e8cace36461a15.css +1 -0
  140. package/web/out/_not-found/__next._full.txt +3 -3
  141. package/web/out/_not-found/__next._not-found.__PAGE__.txt +3 -3
  142. package/web/out/_not-found/__next._tree.txt +1 -1
  143. package/web/out/_not-found/index.html +1 -1
  144. package/web/out/_not-found/index.txt +3 -3
  145. package/web/out/composition/__next._full.txt +6 -5
  146. package/web/out/composition/__next._tree.txt +3 -2
  147. package/web/out/composition/__next.composition.__PAGE__.txt +6 -5
  148. package/web/out/composition/index.html +1 -1
  149. package/web/out/composition/index.txt +6 -5
  150. package/web/out/index.html +1 -1
  151. package/web/out/index.txt +7 -5
  152. package/web/out/spatial/__next._full.txt +6 -5
  153. package/web/out/spatial/__next._tree.txt +3 -2
  154. package/web/out/spatial/__next.spatial.__PAGE__.txt +6 -5
  155. package/web/out/spatial/index.html +1 -1
  156. package/web/out/spatial/index.txt +6 -5
  157. package/web/out/styles/__next._full.txt +6 -5
  158. package/web/out/styles/__next._tree.txt +3 -2
  159. package/web/out/styles/__next.styles.__PAGE__.txt +6 -5
  160. package/web/out/styles/index.html +1 -1
  161. package/web/out/styles/index.txt +6 -5
  162. package/web/out/ui-sketch/__next._full.txt +6 -5
  163. package/web/out/ui-sketch/__next._tree.txt +3 -2
  164. package/web/out/ui-sketch/__next.ui-sketch.__PAGE__.txt +6 -5
  165. package/web/out/ui-sketch/index.html +1 -1
  166. package/web/out/ui-sketch/index.txt +6 -5
  167. package/web/out/_next/static/chunks/130-f2627352fc1e1f49.js +0 -1
  168. package/web/out/_next/static/chunks/678-b0ea409290a64ff4.js +0 -1
  169. package/web/out/_next/static/chunks/728-ce64a38c9e8339e8.js +0 -1
  170. package/web/out/_next/static/chunks/83607670-bc1279370476e59f.js +0 -1
  171. package/web/out/_next/static/chunks/app/composition/page-b0a2f7370b949cf9.js +0 -1
  172. package/web/out/_next/static/chunks/app/page-a6fde4165eb4be1e.js +0 -1
  173. package/web/out/_next/static/chunks/app/spatial/page-2c3df91fd1d7d444.js +0 -1
  174. package/web/out/_next/static/chunks/app/styles/page-54b11f1945d64255.js +0 -1
  175. package/web/out/_next/static/chunks/app/ui-sketch/page-1abcd70a81ac7b30.js +0 -1
  176. package/web/out/_next/static/chunks/main-app-8946bf6a8c0dc843.js +0 -1
  177. package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-5ac7248e26f2e308.js +0 -1
  178. package/web/out/_next/static/chunks/webpack-97ae63c0e0b2a512.js +0 -1
  179. package/web/out/_next/static/css/7bfa3a5c92836f5c.css +0 -5
  180. /package/web/out/_next/static/{1To86KpfZhDmNzmTIgEuy → n4UcxqMmr_2CBmSxBp52z}/_buildManifest.js +0 -0
  181. /package/web/out/_next/static/{1To86KpfZhDmNzmTIgEuy → n4UcxqMmr_2CBmSxBp52z}/_ssgManifest.js +0 -0
@@ -1,4 +1,6 @@
1
1
  :HL["/_next/static/css/db96ae2e88545d96.css","style"]
2
2
  :HL["/_next/static/css/3b7982b41ed8eccd.css","style"]
3
- :HL["/_next/static/css/7bfa3a5c92836f5c.css","style"]
4
- 0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}},"staleTime":300,"buildId":"1To86KpfZhDmNzmTIgEuy"}
3
+ :HL["/_next/static/css/06743b5635914999.css","style"]
4
+ :HL["/_next/static/css/39e8cace36461a15.css","style"]
5
+ :HL["/_next/static/css/1f8501a43042a5a2.css","style"]
6
+ 0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}},"staleTime":300,"buildId":"n4UcxqMmr_2CBmSxBp52z"}
@@ -0,0 +1 @@
1
+ (()=>{var e,t,n,o,r,i,a={12399:(e,t,n)=>{"use strict";n.d(t,{b5:()=>f,i1:()=>d,ms:()=>h,p:()=>c});var o=n(84910),r=n(54996),i=n(29169),a=n(2872),s=n(79283);let l=Math.PI/180,d=e=>new o.Pq0(...e),f=e=>new o.PTz().setFromEuler(new o.O9p(...e.map(e=>e*l),"XYZ"));function c(e,t){let n=d(t.offset),o=e.bones.find(e=>e.endJointId===t.id)?.modelPart;if(o&&(0,i.dS)(o)){let n=e.bones.find(e=>e.endJointId===t.id),o=(0,i.oT)(e,n);if(o)return(0,i.xT)(e,t,o)}let l=(0,r.G_)(e.headRatio);if(o&&(["spine","chest","neck"].includes(o)||/-(shoulder|hip)$/.test(o))){let t=6*(0,r.UB)(l,o)*e.headRatio/(7*(e.headRatio-1));n.x*=t;let i=6*l.torsoDepth*e.headRatio/(7*(e.headRatio-1));n.z*=1+(i-1)*(1-l.softness)}let f=e.neckLength??1;if("neck"===o&&n.multiplyScalar(l.neck*f),"spine"===o||"chest"===o){let t=e.joints.find(e=>"neck"===e.id);t&&(n.y+=t.offset[1]*(1-l.neck)/2,n.z+=t.offset[2]*(1-l.neck)*l.torsoDepth*6*e.headRatio/(7*(e.headRatio-1))/2*(1-l.softness))}o&&/-(elbow|wrist)$/.test(o)&&n.multiplyScalar(l.armLength),o?.endsWith("-hand")&&n.multiplyScalar(l.handLength*(e.palmSize??1));let c=(0,r.kF)(e.footSize);if(o?.endsWith("-ankle")&&1!==c){let o=e.bones.find(e=>e.startJointId===t.id&&e.modelPart.endsWith("-foot"));if(o){let t="female"===e.bodyType?s:a,r=t.parts.find(e=>e.id===o.modelPart),i=d(e.joints.find(e=>e.id===o.endJointId).offset).length()/d(r.end).sub(d(r.start)).length();n.y+=(r.start[1]-t.bottom)*i*(c-1)}}return o?.endsWith("-foot")&&(n.x*=e.footSize??1,n.y*=c,n.z*=l.footLength*(e.footSize??1)),n}function h(e,t){let n=Object.create(null),r=new Map(e.joints.map(e=>[e.id,e])),a=new Map(e.bones.map(e=>[e.endJointId,e])),s=new Set,l=h=>{if(n[h])return n[h];if(s.has(h))throw Error("SPATIAL_INVALID: cyclic skeleton");s.add(h);let p=r.get(h);if(!p)throw Error("SPATIAL_INVALID: missing parent joint");let m=p.parentId?l(p.parentId):{position:d(e.position),rotation:f(e.rotation)},u=a.get(h),g=t?.[h].basis,w=u?g?g.clone().multiply(f(u.rotation)).multiply(g.clone().invert()):function(e,t,n=t.rotation){let o=(0,i.IA)(e,t);return o.clone().multiply(f(n)).multiply(o.invert())}(e,u):new o.PTz,y=m.rotation.clone().multiply(w).normalize(),b=(t?.[h].offset.clone()??c(e,p)).applyQuaternion(y).add(m.position);return s.delete(h),n[h]={position:b,rotation:y}};return e.joints.forEach(e=>l(e.id)),n}},13101:(e,t,n)=>{"use strict";var o=n(84910),r=n(5105),i=n(52798),a=n(12399),s=n(54996),l=n(18989),d=n(29169),f=n(17340),c=n(77902);let h=new o.Pq0(0,1,0),p=Object.fromEntries(Object.entries({male:r,female:i}).map(([e,t])=>{let n=t.parts.map(e=>{let t=new o.Pq0(...e.start),n=new o.Pq0(...e.end).sub(t);return{length:n.length(),inverse:new o.kn4().compose(t,new o.PTz().setFromUnitVectors(h,n.normalize()),new o.Pq0(1,1,1)).invert()}}),r=t.modules.map(e=>{let n=[...new Set(e.indices)],o=new Map(n.map((e,t)=>[e,t]));return{...e,vertices:n,indices:e.indices.map(e=>o.get(e)),normalKeys:n.map(e=>t.positions.slice(3*e,3*e+3).join(","))}});return[e,{asset:t,modules:r,targets:(0,l.F)(t),sourceFrames:n,sourceBodyHeight:t.height-n[t.parts.findIndex(e=>"head"===e.id)].length}]})),m=new WeakMap,u=e=>"joint"===e?new o.Gu$(1,12,8):new o.Ho_(1,1,1,10);function g(e){e.traverse(e=>{if(e instanceof o.eaF||e instanceof o.DXC)for(let t of(e instanceof o.ZLX&&e.dispose(),e.geometry.dispose(),Array.isArray(e.material)?e.material:[e.material]))t.dispose()})}let w=globalThis;w.onmessage=({data:e})=>{let t=function(e,t={}){let n=new o.YJl,r=(e,t,r,i,a,s=new o.Pq0(1,1,1))=>{let l=new o.eaF(e,new o.G_z({color:new o.Q1f(t),side:o.$EB}));return l.position.copy(r),l.quaternion.copy(i),l.scale.copy(s),l.userData=a,n.add(l),l};for(let r of e.characters)n.add(function(e,t={}){if("geometric"===e.appearance)return(0,c.s)(e);let n=new o.YJl,r={key:JSON.stringify([e.id,e.appearance,e.bodyType??"male",e.bones.map(e=>[e.id,e.modelPart])]),handCreases:t.handCreases??!0,parts:[]};return m.set(n,r),function(e,t,n){let r,i=n.handCreases,l=n.headRatio!==e.headRatio,{asset:c,modules:m,targets:u,sourceFrames:g,sourceBodyHeight:w}=p[e.bodyType??"male"],y=(0,a.ms)(e),b=e.height/c.height,P=(0,s.G_)(e.headRatio),[z,k,q]=(0,s.r8)(e.headRatio),x=new Map,I=[],v=(t,n)=>{let r,i=`${t?.id??"root"}/${n}`;if(x.has(i))return x.get(i);let l=g[n],f=c.parts[n],p=b*(0,s.UB)(P,f.id)*(f.id.endsWith("-hand")?e.palmSize??1:1),m=t?y[t.startJointId].position:(0,a.i1)(e.position),u=e.joints.find(e=>e.id===(t?.endJointId??"spine")),z=u?(0,a.p)(e,u):new o.Pq0(0,l.length*b,0),k=f.id.endsWith("-foot")?e.footSize??1:1,q=(0,s.kF)(k);z.x/=k,z.y/=q,z.z/=k;let I=z.length()/l.length,v="head"===f.id?I:p,S=t?y[t.endJointId].rotation.clone():(0,a.b5)(e.rotation),T=t&&(0,d.dS)(f.id)?(0,d.oT)(e,t):void 0;if(T)r=new o.kn4().compose(m,S,new o.Pq0(1,1,1)).multiply((0,d.PA)(e,T,f.id)).multiply(new o.kn4().makeTranslation(-f.start[0],-f.start[1],-f.start[2]));else if(["pelvis","spine","chest","neck"].includes(f.id)||/-(shoulder|hip)$/.test(f.id)){let t=(0,a.i1)(f.end).sub((0,a.i1)(f.start)),n=Math.abs(t.y)>1e-4?z.y/t.y:(e.height-e.height/e.headRatio)/w,i=new o.Pq0(p,n,b*P.torsoDepth),s=S.clone().multiply(new o.PTz().setFromUnitVectors(t.clone().multiply(i).normalize(),z.clone().normalize())),l=new o.kn4().makeTranslation(-f.start[0],-f.start[1],-f.start[2]);r=new o.kn4().compose(m,s,i).multiply(l);let d=u&&(0,a.i1)(u.offset).normalize().dot(t.clone().normalize())>1-1e-6;if(P.softness>0&&d&&["pelvis","spine","chest","neck"].includes(f.id)){let e=new o.kn4().set(i.x,(z.x-t.x*i.x)/t.y,0,0,0,i.y,0,0,0,(z.z-t.z*i.z)/t.y,i.z,0,0,0,0,1),n=new o.kn4().compose(m,S,new o.Pq0(1,1,1)).multiply(e).multiply(l);r.elements.forEach((e,t)=>{r.elements[t]=e+(n.elements[t]-e)*P.softness})}}else{let e=S.clone().multiply(new o.PTz().setFromUnitVectors(h,z.clone().normalize()));if(r=new o.kn4().compose(m,e,new o.Pq0(v,I,"head"===f.id?v*P.headDepth:v)).multiply(l.inverse),f.id.endsWith("-foot")&&P.softness>0){let e=(0,a.i1)(f.end).sub((0,a.i1)(f.start)),t=new o.Pq0(p,z.y/e.y,z.z/e.z);S.multiply(new o.PTz().setFromUnitVectors(e.multiply(t).normalize(),z.clone().normalize()));let n=new o.kn4().compose(m,S,t).multiply(new o.kn4().makeTranslation(-f.start[0],-f.start[1],-f.start[2]));r.elements.forEach((e,t)=>{r.elements[t]=e+(n.elements[t]-e)*P.softness})}}if(1!==k){let n=new o.kn4().compose(m,t?y[t.endJointId].rotation:(0,a.b5)(e.rotation),new o.Pq0(1,1,1));r.premultiply(n.clone().multiply(new o.kn4().makeScale(k,q,k)).multiply(n.invert()))}return x.set(i,r),r},S=new Map(e.bones.filter(e=>e.id===e.modelPart).map(e=>[e.modelPart,e])),T=0,A=[],D=(t,a)=>{let s=a&&a.id.endsWith(a.modelPart)?a.id.slice(0,-a.modelPart.length):"",d=!!(a&&a.id!==a.modelPart),h=!d&&r?r:c.parts.map((n,o)=>{let r=d?e.bones.find(e=>e.id===`${s}${n.id}`):S.get(n.id);return r?v(r,o):d&&a?v(a,t.part):v(void 0,o)});d||(r=h);let{vertices:p}=t,m=n.parts[T++];if(!m){let r=new o.LoY().setAttribute("position",new o.qtW(3*p.length,3));r.setIndex(t.indices);let i=new o.eaF(r,new o.G_z({side:o.$EB}));i.userData={characterId:e.id,...a?{boneId:a.id}:{},modelPart:c.parts[t.part].id},m={mesh:i,rest:new Float64Array(3*p.length),posed:new Float64Array(3*p.length),segments:[]},n.parts.push(m)}let{mesh:g,rest:w,posed:y}=m,b=g.geometry,x=new o.Pq0,D=new o.Pq0,j=new o.Pq0;for(let e=0;e<p.length;e++){let t=p[e],n=3*t,o=u[z],r=u[k];l&&(w[3*e]=o[n]+(r[n]-o[n])*q,w[3*e+1]=o[n+1]+(r[n+1]-o[n+1])*q,w[3*e+2]=o[n+2]+(r[n+2]-o[n+2])*q),j.fromArray(w,3*e),x.set(0,0,0);let i=0;for(let e=0;e<4;e++){let n=c.weights[4*t+e];n&&(D.copy(j).applyMatrix4(h[c.influences[4*t+e]]),x.addScaledVector(D,n),i+=n)}x.divideScalar(i),y[3*e]=x.x,y[3*e+1]=x.y,y[3*e+2]=x.z}let M=b.getAttribute("position");M.array.set(y),M.needsUpdate=!0,b.boundingBox=null,b.boundingSphere=null,b.computeVertexNormals(),"body"===t.material&&P.softness>0&&I.push({geometry:b,keys:t.normalKeys.map(e=>`${s}/${e}`)});let L=new o.Q1f("brows"===t.material?"#514235":"eyes"===t.material?"#e7ded1":e.color),F=(z<2?1-q:0)+(k<2?q:0);if("brows"===t.material&&L.lerp(new o.Q1f(e.color),.9*F),"eyes"===t.material&&L.lerp(new o.Q1f("#514235"),F),g.material.color.copy(L),A.push(g),i){l&&(m.segments=(0,f.xQ)(e,c.parts[t.part].id,w,t.indices));let n=(0,f.HK)(e,m.segments,y,m.creases);!n&&m.creases&&(m.creases.geometry.dispose(),m.creases.material.dispose(),m.creases=void 0,g.material.polygonOffset=!1),n&&(g.material.polygonOffset=!0,g.material.polygonOffsetFactor=1,g.material.polygonOffsetUnits=1,n.userData={...g.userData,reference:"finger-crease"},A.push(n),m.creases=n)}};for(let t of m){let n=c.parts[t.part].id;if("pelvis"===n)D(t);else for(let o of e.bones.filter(e=>e.modelPart===n))D(t,o)}let j=new Map,M=new o.Pq0,L=new o.Pq0,F=new o.Pq0;for(let{geometry:e,keys:t}of I){let n=e.getAttribute("position"),r=e.index;for(let e=0;e<r.count;e+=3){let i=[r.getX(e),r.getX(e+1),r.getX(e+2)];M.fromBufferAttribute(n,i[0]),L.fromBufferAttribute(n,i[1]),F.fromBufferAttribute(n,i[2]);let a=L.sub(M).cross(F.sub(M));for(let e of i){let n=t[e];j.has(n)||j.set(n,new o.Pq0),j.get(n).add(a)}}}for(let e of j.values())e.normalize();for(let{geometry:e,keys:t}of I){let n=e.getAttribute("normal");t.forEach((e,t)=>{M.fromBufferAttribute(n,t).lerp(j.get(e),P.softness).normalize(),n.setXYZ(t,M.x,M.y,M.z)})}(t.children.length!==A.length||A.some((e,n)=>t.children[n]!==e))&&(t.clear(),A.length&&t.add(...A)),n.headRatio=e.headRatio}(e,n,r),n}(r,t)),t.showRig&&"geometric"!==r.appearance&&function(e,t,n=!1){let r=function(e){let t=(0,a.ms)(e),n=[];for(let r of e.joints.filter(t=>!t.terminal||!!(0,d.dS)(e.bones.find(e=>e.endJointId===t.id)?.modelPart??"")))n.push({data:{characterId:e.id,rig:"joint",jointId:r.id},position:t[r.id].position,rotation:t[r.id].rotation,scale:new o.Pq0().setScalar(r.radius)});for(let r of e.bones){let i=(0,d.dS)(r.modelPart);if(i?.segment===0)continue;let a=t[r.startJointId].position,s=t[r.endJointId].position,l=s.clone().sub(a),f=l.length(),c=e.height*(i?.0018:.009);n.push({data:{characterId:e.id,rig:"bone",boneId:r.id},position:a.clone().add(s).multiplyScalar(.5),rotation:new o.PTz().setFromUnitVectors(new o.Pq0(0,1,0),l.normalize()),scale:new o.Pq0(c,f,c)})}return n}(t);if(n){let n=new o.kn4;for(let i of["joint","bone"]){let a=r.filter(e=>e.data.rig===i),s=e.children.find(e=>e instanceof o.ZLX&&e.userData.characterId===t.id&&e.userData.rig===i);s&&s.count!==a.length&&(e.remove(s),g(new o.YJl().add(s)),s=void 0),s||((s=new o.ZLX(u(i),new o.G_z({side:o.$EB,depthTest:!1}),a.length)).renderOrder=2,e.add(s)),s.userData={characterId:t.id,rig:i,instances:a.map(e=>e.data)};let l=new o.Q1f("joint"===i?"#e6a65c":"#728aa1");a.forEach((e,t)=>{s.setMatrixAt(t,n.compose(e.position,e.rotation,e.scale)),s.setColorAt(t,l)}),s.instanceMatrix.needsUpdate=!0,s.instanceColor&&(s.instanceColor.needsUpdate=!0),s.computeBoundingSphere()}return}let i=new Map(e.children.filter(e=>e.userData.rig&&e.userData.characterId===t.id).map(e=>[`${e.userData.rig}/${e.userData.jointId??e.userData.boneId}`,e])),s=(n,r)=>{let a=`${n}/${r}`,s=i.get(a);return i.delete(a),s||((s=new o.eaF(u(n),new o.G_z({side:o.$EB,depthTest:!1}))).userData={characterId:t.id,rig:n,["joint"===n?"jointId":"boneId"]:r},s.renderOrder=2,e.add(s)),s.material.color.set("joint"===n?"#e6a65c":"#728aa1"),s};for(let e of r){let t=s(e.data.rig,e.data.jointId??e.data.boneId);t.position.copy(e.position),t.quaternion.copy(e.rotation),t.scale.copy(e.scale)}for(let t of i.values())e.remove(t),t.geometry.dispose(),t.material.dispose()}(n,r);for(let t of e.objects){let e=(0,a.i1)(t.size),n="sphere"===t.kind?new o.Gu$(.5,16,12):new o.iNn(1,1,1);"plane"===t.kind&&(e.y=.015),r(n,t.color,(0,a.i1)(t.position),(0,a.b5)(t.rotation),{objectId:t.id},e)}return n.updateMatrixWorld(!0),n}(e);try{let n=function(e,t){let n,r=(n=[],e.traverse(e=>{e instanceof o.eaF&&!e.userData.rig&&n.push(e)}),n),i=[],a=(e,t)=>{e.geometry.getAttribute("color")?.array!==t&&e.geometry.setAttribute("color",new o.THS(t,3));let n=e.material;n.vertexColors=!0,n.shadowSide=o.$EB,e.castShadow=!0,e.receiveShadow=!0};for(let e of r){let t=e.geometry.getAttribute("position"),n=e.geometry.index;for(let r=0;r<(n?.count??t.count);r+=3){let[a,s,l]=[0,1,2].map(i=>new o.Pq0().fromBufferAttribute(t,n?n.getX(r+i):r+i).applyMatrix4(e.matrixWorld));i.push({a,b:s,c:l,bounds:new o.NRn().setFromPoints([a,s,l]),center:a.clone().add(s).add(l).multiplyScalar(1/3)})}}if(!i.length)return[];let s=[],l=function e(t){let n=new o.NRn;for(let e of t)n.union(e.bounds);if(t.length<=12)return{bounds:n,triangles:t};let r=n.getSize(new o.Pq0),i=r.x>r.y&&r.x>r.z?"x":r.y>r.z?"y":"z";t.sort((e,t)=>e.center[i]-t.center[i]);let a=Math.floor(t.length/2);return{bounds:n,left:e(t.slice(0,a)),right:e(t.slice(a))}}(i),d=new o.RlV,f=new o.Pq0,c=(e,t)=>!(e.bounds.distanceToPoint(d.origin)>t)&&!!d.intersectsBox(e.bounds)&&(e.triangles?e.triangles.some(e=>null!==d.intersectTriangle(e.a,e.b,e.c,!1,f)&&f.distanceToSquared(d.origin)<t*t):c(e.left,t)||c(e.right,t)),h=new o.Pq0,p=new o.Pq0,m=new o.Pq0,u=new o.Pq0,g=Array.from({length:8},(e,t)=>{let n=Math.sqrt(1-(t+.5)/8),o=Math.sqrt(1-n*n),r=2.399963229728653*t;return[o*Math.cos(r),o*Math.sin(r),n]});for(let e of r){let n=e.geometry.getAttribute("position"),r=e.geometry.getAttribute("normal"),i=new o.dwI().getNormalMatrix(e.matrixWorld),f=t.characters.find(t=>t.id===e.userData.characterId),w=(f?.height??Math.max(...t.objects.find(t=>t.id===e.userData.objectId)?.size??[1]))*.025,y=new Float32Array(3*n.count);for(let t=0;t<n.count;t++){h.fromBufferAttribute(n,t).applyMatrix4(e.matrixWorld),p.fromBufferAttribute(r,t).applyNormalMatrix(i),m.set(.9>Math.abs(p.y)?0:1,+(.9>Math.abs(p.y)),0).cross(p).normalize(),u.crossVectors(p,m),d.origin.copy(h).addScaledVector(p,.025*w);let o=0;for(let[e,t,n]of g)d.direction.copy(p).multiplyScalar(n).addScaledVector(m,e).addScaledVector(u,t),c(l,w)&&o++;y.fill(1-.5*o/g.length,3*t,3*t+3)}a(e,y),s.push(y)}return s}(t,e);w.postMessage({colors:n},n.map(e=>e.buffer))}finally{g(t)}}},29169:(e,t,n)=>{"use strict";n.d(t,{IA:()=>p,Jf:()=>c,PA:()=>h,Yu:()=>d,dS:()=>s,oT:()=>f,t6:()=>l,xT:()=>m});var o=n(84910),r=n(2872),i=n(79283),a=n(54996);function s(e){let t=/^(left|right)-(thumb|index|middle|ring|little)-([0-3])$/.exec(e);return t?{side:t[1],finger:t[2],segment:Number(t[3])}:null}let l=e=>e.endsWith("-hand")||!!s(e),d=e=>"female"===e.bodyType?i:r;function f(e,t){let n=t;for(;n;){if(n.modelPart.endsWith("-hand"))return n;n=e.bones.find(e=>e.endJointId===n.startJointId)}}function c(e,t,n=!0){let r=d(e),i=r.parts.find(e=>e.id===t.modelPart),s=new o.Pq0(...i.end).sub(new o.Pq0(...i.start)),l=new o.Pq0(...e.joints.find(e=>e.id===t.endJointId).offset),f=l.length()/s.length(),h=(0,a.G_)(e.headRatio),p=n?e.palmSize??1:1,m=n?e.height/r.height*h.hand*p:f,u=new o.Pq0(0,1,0);return new o.kn4().compose(new o.Pq0,new o.PTz().setFromUnitVectors(u,l.normalize()),new o.Pq0(m,f*(n?h.handLength:1)*p,m)).multiply(new o.kn4().makeRotationFromQuaternion(new o.PTz().setFromUnitVectors(u,s.normalize()).invert()))}function h(e,t,n){let r=c(e,t);if(s(n)?.segment===0||(e.fingerLength??1)===(e.palmSize??1))return r;let i=d(e).parts.find(e=>e.id===n),a=new o.Pq0(...i.end).sub(new o.Pq0(...i.start)).normalize(),l=new o.kn4().makeRotationFromQuaternion(new o.PTz().setFromUnitVectors(new o.Pq0(0,1,0),a));return r.multiply(l).multiply(new o.kn4().makeScale(1,(e.fingerLength??1)/(e.palmSize??1),1)).multiply(l.clone().invert())}function p(e,t){let n=s(t.modelPart),r=n&&f(e,t);if(!n||!r||0===n.segment)return new o.PTz;let i=d(e).parts.find(e=>e.id===t.modelPart),a=new o.Pq0(...i.end).sub(new o.Pq0(...i.start)).normalize(),l=a.clone().cross(new o.Pq0(0,-1,0)).normalize(),h=l.clone().cross(a).normalize(),p=c(e,r,!1);return new o.PTz().setFromRotationMatrix(new o.kn4().makeBasis(l.transformDirection(p),a.transformDirection(p),h.transformDirection(p)))}function m(e,t,n){let r=e.bones.find(e=>e.endJointId===t.id).modelPart,i=h(e,n,r).multiply(c(e,n,!1).invert());return new o.Pq0(...t.offset).applyMatrix4(i)}},54996:(e,t,n)=>{"use strict";n.d(t,{G_:()=>a,UB:()=>s,kF:()=>r,r8:()=>i});let o=[{heads:2,softness:1,torso:1.02,torsoDepth:1.5,headDepth:.9,shoulder:.94,hip:1,arm:1.02,forearm:1.08,thigh:1,calf:1.12,hand:1.35,foot:1.5,armLength:.84,handLength:1.2,footLength:1.75,neck:.42},{heads:3,softness:.82,torso:.94,torsoDepth:1.24,headDepth:.94,shoulder:.87,hip:.88,arm:.94,forearm:.96,thigh:.94,calf:1,hand:1.18,foot:1.26,armLength:.92,handLength:1.12,footLength:1.45,neck:.55},{heads:4,softness:.5,torso:.84,torsoDepth:1,headDepth:.94,shoulder:.84,hip:.84,arm:.75,forearm:.78,thigh:.84,calf:.8,hand:.88,foot:.94,armLength:.98,handLength:1.04,footLength:1.08,neck:.72},{heads:7,softness:0,torso:1,torsoDepth:1,headDepth:1,shoulder:1,hip:1,arm:1,forearm:1,thigh:1,calf:1,hand:1,foot:1,armLength:1,handLength:1,footLength:1,neck:1}],r=(e=1)=>1+(e-1)*.5;function i(e){let t=o.findIndex(t=>t.heads>=e);if(0===t)return[0,0,0];if(-1===t)return[3,3,0];let n=(e-o[t-1].heads)/(o[t].heads-o[t-1].heads);return[t-1,t,n*n*(3-2*n)]}function a(e){if(e>7){let t={...o[3]},n=Math.sqrt(7/e);for(let e of["torso","torsoDepth","shoulder","hip","arm","forearm","thigh","calf","hand","foot"])t[e]=n;return t}let[t,n,r]=i(e),a=o[t],s=o[n];return Object.fromEntries(Object.keys(a).map(e=>[e,a[e]+(s[e]-a[e])*r]))}function s(e,t){return t.endsWith("-shoulder")?e.shoulder:t.endsWith("-hip")?e.hip:t.endsWith("-elbow")?e.arm:t.endsWith("-wrist")?e.forearm:t.endsWith("-hand")?e.hand:t.endsWith("-knee")?e.thigh:t.endsWith("-ankle")?e.calf:t.endsWith("-foot")?e.foot:e.torso}}},s={};function l(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}},o=!0;try{a[e](n,n.exports,l),o=!1}finally{o&&delete s[e]}return n.exports}l.m=a,l.x=()=>{var e=l.O(void 0,[460,653],()=>l(13101));return l.O(e)},e=[],l.O=(t,n,o,r)=>{if(n){r=r||0;for(var i=e.length;i>0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[n,o,r];return}for(var a=1/0,i=0;i<e.length;i++){for(var[n,o,r]=e[i],s=!0,d=0;d<n.length;d++)(!1&r||a>=r)&&Object.keys(l.O).every(e=>l.O[e](n[d]))?n.splice(d--,1):(s=!1,r<a&&(a=r));if(s){e.splice(i--,1);var f=o();void 0!==f&&(t=f)}}return t},l.d=(e,t)=>{for(var n in t)l.o(t,n)&&!l.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce((t,n)=>(l.f[n](e,t),t),[])),l.u=e=>"static/chunks/"+(460===e?"83607670":e)+"-"+({460:"fd2f339702a222e4",653:"6dfb97fec9a2d91b"})[e]+".js",l.miniCssF=e=>{},l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),l.tt=()=>(void 0===t&&(t={createScriptURL:e=>e},"u">typeof trustedTypes&&trustedTypes.createPolicy&&(t=trustedTypes.createPolicy("nextjs#bundler",t))),t),l.tu=e=>l.tt().createScriptURL(e),l.p="/_next/",n={101:1},l.f.i=(e,t)=>{n[e]||importScripts(l.tu(l.p+l.u(e)))},r=(o=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push.bind(o),o.push=e=>{var[t,o,i]=e;for(var a in o)l.o(o,a)&&(l.m[a]=o[a]);for(i&&i(l);t.length;)n[t.pop()]=1;r(e)},i=l.x,l.x=()=>Promise.all([l.e(460),l.e(653)]).then(i),_N_E=l.x()})();