@pixiv/three-vrm 3.5.0 → 3.5.1

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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pixiv/three-vrm v3.5.0
2
+ * @pixiv/three-vrm v3.5.1
3
3
  * VRM file loader for three.js.
4
4
  *
5
5
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -522,7 +522,7 @@ var MToonNodeMaterial = class extends THREE5.NodeMaterial {
522
522
  }
523
523
  };
524
524
  /*!
525
- * @pixiv/three-vrm-materials-mtoon v3.5.0
525
+ * @pixiv/three-vrm-materials-mtoon v3.5.1
526
526
  * MToon (toon material) module for @pixiv/three-vrm
527
527
  *
528
528
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -1,7 +1,7 @@
1
1
  /*! (c) 2019-2026 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */
2
2
  "use strict";var Z=Object.create;var x=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var Q=Object.getPrototypeOf,tt=Object.prototype.hasOwnProperty;var it=(t,i)=>{for(var o in i)x(t,o,{get:i[o],enumerable:!0})},O=(t,i,o,r)=>{if(i&&typeof i=="object"||typeof i=="function")for(let n of J(i))!tt.call(t,n)&&n!==o&&x(t,n,{get:()=>i[n],enumerable:!(r=$(i,n))||r.enumerable});return t};var c=(t,i,o)=>(o=t!=null?Z(Q(t)):{},O(i||!t||!t.__esModule?x(o,"default",{value:t,enumerable:!0}):o,t)),et=t=>O(x({},"__esModule",{value:!0}),t);var At={};it(At,{MToonAnimatedUVNode:()=>X,MToonLightingModel:()=>j,MToonNodeMaterial:()=>Pt});module.exports=et(At);var D=c(require("three"),1),Y=c(require("three/webgpu"),1),h=require("three/tsl"),a=require("three/tsl"),z=c(require("three/webgpu"),1),l=require("three/tsl"),m=c(require("three/webgpu"),1),d=require("three/tsl"),K=c(require("three/tsl"),1),R=c(require("three/webgpu"),1),s=c(require("three/webgpu"),1),e=require("three/tsl"),N=require("three/tsl");var I=parseInt(D.REVISION,10);I<167&&console.warn(`MToonNodeMaterial requires Three.js r167 or higher (You are using r${I}). This would not work correctly.`);var ot=(0,a.materialReference)("color","color"),rt=(0,a.materialReference)("map","texture"),at=(0,a.materialReference)("normalMap","texture"),nt=(0,a.materialReference)("normalScale","vec2"),lt=(0,a.materialReference)("emissive","color"),st=(0,a.materialReference)("emissiveIntensity","float"),ht=(0,a.materialReference)("emissiveMap","texture"),ut=(0,a.materialReference)("shadeColorFactor","color"),mt=(0,a.materialReference)("shadingShiftFactor","float"),k=(0,a.materialReference)("shadeMultiplyTexture","texture"),dt=(0,a.materialReference)("shadeMultiplyTextureScale","float"),ct=(0,a.materialReference)("shadingToonyFactor","float"),pt=(0,a.materialReference)("rimLightingMixFactor","float"),ft=(0,a.materialReference)("rimMultiplyTexture","texture"),Nt=(0,a.materialReference)("matcapFactor","color"),gt=(0,a.materialReference)("matcapTexture","texture"),vt=(0,a.materialReference)("parametricRimColorFactor","color"),Tt=(0,a.materialReference)("parametricRimLiftFactor","float"),Mt=(0,a.materialReference)("parametricRimFresnelPowerFactor","float"),xt=(0,a.materialReference)("outlineWidthMultiplyTexture","texture"),Rt=(0,a.materialReference)("outlineWidthFactor","float"),b=(0,a.materialReference)("outlineColorFactor","color"),St=(0,a.materialReference)("outlineLightingMixFactor","float"),Ft=(0,a.materialReference)("uvAnimationMaskTexture","texture"),Et=(0,a.materialReference)("uvAnimationScrollXOffset","float"),yt=(0,a.materialReference)("uvAnimationScrollYOffset","float"),Ct=(0,a.materialReference)("uvAnimationRotationPhase","float"),X=class extends Y.TempNode{constructor(t){super("vec2"),this.hasMaskTexture=t}setup(){let t=1;this.hasMaskTexture&&(t=(0,h.vec4)(Ft).context({getUV:()=>(0,h.uv)()}).r);let i=(0,h.uv)(),o=Ct.mul(t),r=(0,h.cos)(o),n=(0,h.sin)(o);i=i.sub((0,h.vec2)(.5,.5)),i=i.mul((0,h.mat2)(r,n,n.negate(),r)),i=i.add((0,h.vec2)(.5,.5));let u=(0,h.vec2)(Et,yt).mul(t);return i=i.add(u),i.toVar("AnimatedUV")}},B=(0,d.nodeImmutable)(m.PropertyNode,"vec3").toVar("ShadeColor"),q=(0,d.nodeImmutable)(m.PropertyNode,"float").toVar("ShadingShift"),G=(0,d.nodeImmutable)(m.PropertyNode,"float").toVar("ShadingToony"),F=(0,d.nodeImmutable)(m.PropertyNode,"float").toVar("RimLightingMix"),E=(0,d.nodeImmutable)(m.PropertyNode,"vec3").toVar("RimMultiply"),y=(0,d.nodeImmutable)(m.PropertyNode,"vec3").toVar("matcap"),C=(0,d.nodeImmutable)(m.PropertyNode,"vec3").toVar("ParametricRim"),S=t=>parseInt(R.REVISION,10)>=168?K.Fn(t):R.tslFn(t),_t=S(({a:t,b:i,t:o})=>{let r=o.sub(t),n=i.sub(t);return r.div(n).clamp()}),Vt=S(({dotNL:t})=>{let o=(0,l.float)(1).sub(G),r=t.add(q);return r=_t({a:o.negate(),b:o,t:r}),r=r.mul(1),r}),Lt=S(({shading:t,lightColor:i})=>{let o=(0,l.mix)(B,l.diffuseColor,t);return i.mul((0,l.BRDF_Lambert)({diffuseColor:o}))}),j=class extends z.LightingModel{constructor(){super()}direct({lightDirection:t,lightColor:i,reflectedLight:o}){let r=l.transformedNormalView.dot(t).clamp(-1,1),n=Vt({dotNL:r});o.directDiffuse.addAssign(Lt({shading:n,lightColor:i})),o.directSpecular.addAssign(C.add(y).mul(E).mul((0,l.mix)((0,l.vec3)(0),(0,l.BRDF_Lambert)({diffuseColor:i}),F)))}indirect(t){let i="context"in t?t.context:t;this.indirectDiffuse(i),this.indirectSpecular(i)}indirectDiffuse(t){let{irradiance:i,reflectedLight:o}=t;o.indirectDiffuse.addAssign(i.mul((0,l.BRDF_Lambert)({diffuseColor:l.diffuseColor})))}indirectSpecular(t){let{reflectedLight:i}=t;i.indirectSpecular.addAssign(C.add(y).mul(E).mul((0,l.mix)((0,l.vec3)(1),(0,l.vec3)(0),F)))}},v={None:"none",WorldCoordinates:"worldCoordinates",ScreenCoordinates:"screenCoordinates"},wt=S(({parametricRimLift:t,parametricRimFresnelPower:i,parametricRimColor:o})=>{let r=N.modelViewPosition.normalize(),n=N.transformedNormalView.dot(r.negate());return(0,N.float)(1).sub(n).add(t).clamp().pow(i).mul(o)}),Pt=class extends s.NodeMaterial{customProgramCacheKey(){let t=super.customProgramCacheKey();return t+=`isOutline:${this.isOutline},`,t}get isMToonNodeMaterial(){return!0}constructor(t={}){super(),t.transparentWithZWrite&&(t.depthWrite=!0),delete t.transparentWithZWrite,delete t.giEqualizationFactor,delete t.v0CompatShade,delete t.debugMode,this.emissiveNode=null,this.lights=!0,this.color=new s.Color(1,1,1),this.map=null,this.emissive=new s.Color(0,0,0),this.emissiveIntensity=1,this.emissiveMap=null,this.normalMap=null,this.normalScale=new s.Vector2(1,1),this.shadeColorFactor=new s.Color(0,0,0),this.shadeMultiplyTexture=null,this.shadingShiftFactor=0,this.shadingShiftTexture=null,this.shadingShiftTextureScale=1,this.shadingToonyFactor=.9,this.rimLightingMixFactor=1,this.rimMultiplyTexture=null,this.matcapFactor=new s.Color(1,1,1),this.matcapTexture=null,this.parametricRimColorFactor=new s.Color(0,0,0),this.parametricRimLiftFactor=0,this.parametricRimFresnelPowerFactor=5,this.outlineWidthMode=v.None,this.outlineWidthMultiplyTexture=null,this.outlineWidthFactor=0,this.outlineColorFactor=new s.Color(0,0,0),this.outlineLightingMixFactor=1,this.uvAnimationScrollXSpeedFactor=0,this.uvAnimationScrollYSpeedFactor=0,this.uvAnimationRotationSpeedFactor=0,this.uvAnimationMaskTexture=null,this.shadeColorNode=null,this.shadingShiftNode=null,this.shadingToonyNode=null,this.rimLightingMixNode=null,this.rimMultiplyNode=null,this.matcapNode=null,this.parametricRimColorNode=null,this.parametricRimLiftNode=null,this.parametricRimFresnelPowerNode=null,this.uvAnimationScrollXOffset=0,this.uvAnimationScrollYOffset=0,this.uvAnimationRotationPhase=0,this.isOutline=!1,this._animatedUVNode=null,this.setValues(t)}setupLightingModel(){return new j}setup(t){var i;this._animatedUVNode=new X((i=this.uvAnimationMaskTexture&&this.uvAnimationMaskTexture.isTexture===!0)!=null?i:!1),super.setup(t)}setupDiffuseColor(t){let i=null;if(this.colorNode==null){if(i=ot,this.map&&this.map.isTexture===!0){let o=rt.context({getUV:()=>this._animatedUVNode});i=i.mul(o)}this.colorNode=i}this.vertexColors===!0&&t.geometry.hasAttribute("color")&&(console.warn("MToonNodeMaterial: MToon ignores vertex colors. Consider using a model without vertex colors instead."),this.vertexColors=!1),super.setupDiffuseColor(t),parseInt(s.REVISION,10)<166&&this.transparent===!1&&this.blending===s.NormalBlending&&this.alphaToCoverage===!1&&e.diffuseColor.a.assign(1),this.colorNode===i&&(this.colorNode=null)}setupVariants(){B.assign(this._setupShadeColorNode()),q.assign(this._setupShadingShiftNode()),G.assign(this._setupShadingToonyNode()),F.assign(this._setupRimLightingMixNode()),E.assign(this._setupRimMultiplyNode()),y.assign(this._setupMatcapNode()),C.assign(this._setupParametricRimNode())}setupNormal(t){let i=this.normalNode;if(this.normalNode==null){if(this.normalNode=e.materialNormal,this.normalMap&&this.normalMap.isTexture===!0){let r=at.context({getUV:()=>this._animatedUVNode});this.normalNode=(0,e.normalMap)(r,nt)}this.isOutline&&(this.normalNode=this.normalNode.negate())}if(parseInt(s.REVISION,10)>=168){let r=this.normalNode;return this.normalNode=i,r}else{super.setupNormal(t),this.normalNode=i;return}}setupLighting(t){let i=null;if(this.emissiveNode==null){if(i=lt.mul(st),this.emissiveMap&&this.emissiveMap.isTexture===!0){let r=ht.context({getUV:()=>this._animatedUVNode});i=i.mul(r)}this.emissiveNode=i}let o=super.setupLighting(t);return this.emissiveNode===i&&(this.emissiveNode=null),o}setupOutput(t,i){return this.isOutline&&this.outlineWidthMode!==v.None&&(i=(0,e.vec4)((0,e.mix)(b,i.xyz.mul(b),St),i.w)),super.setupOutput(t,i)}setupPosition(t){var i,o;let r=this.positionNode;if(this.isOutline&&this.outlineWidthMode!==v.None){(i=this.positionNode)!=null||(this.positionNode=e.positionLocal);let u=e.normalLocal.normalize(),p=Rt;if(this.outlineWidthMultiplyTexture&&this.outlineWidthMultiplyTexture.isTexture===!0){let f=xt.context({getUV:()=>this._animatedUVNode});p=p.mul(f)}let T=(0,e.length)(e.modelNormalMatrix.mul(u)),g=p.mul(T).mul(u);if(this.outlineWidthMode===v.WorldCoordinates)this.positionNode=this.positionNode.add(g);else if(this.outlineWidthMode===v.ScreenCoordinates){let f=e.cameraProjectionMatrix.element(1).element(1),M=e.modelViewMatrix.mul(e.positionLocal);this.positionNode=this.positionNode.add(g.div(f).mul(M.z.negate()))}(o=this.positionNode)!=null||(this.positionNode=e.positionLocal)}let n=super.setupPosition(t);return n.z.add(n.w.mul(1e-6)),this.positionNode=r,n}copy(t){var i,o,r,n,u,p,T,g,f,M,_,V,L,w,P,A,H,W,U;return this.color.copy(t.color),this.map=(i=t.map)!=null?i:null,this.emissive.copy(t.emissive),this.emissiveIntensity=t.emissiveIntensity,this.emissiveMap=(o=t.emissiveMap)!=null?o:null,this.normalMap=(r=t.normalMap)!=null?r:null,this.normalScale.copy(t.normalScale),this.shadeColorFactor.copy(t.shadeColorFactor),this.shadeMultiplyTexture=(n=t.shadeMultiplyTexture)!=null?n:null,this.shadingShiftFactor=t.shadingShiftFactor,this.shadingShiftTexture=(u=t.shadingShiftTexture)!=null?u:null,this.shadingShiftTextureScale=t.shadingShiftTextureScale,this.shadingToonyFactor=t.shadingToonyFactor,this.rimLightingMixFactor=t.rimLightingMixFactor,this.rimMultiplyTexture=(p=t.rimMultiplyTexture)!=null?p:null,this.matcapFactor.copy(t.matcapFactor),this.matcapTexture=(T=t.matcapTexture)!=null?T:null,this.parametricRimColorFactor.copy(t.parametricRimColorFactor),this.parametricRimLiftFactor=t.parametricRimLiftFactor,this.parametricRimFresnelPowerFactor=t.parametricRimFresnelPowerFactor,this.outlineWidthMode=t.outlineWidthMode,this.outlineWidthMultiplyTexture=(g=t.outlineWidthMultiplyTexture)!=null?g:null,this.outlineWidthFactor=t.outlineWidthFactor,this.outlineColorFactor.copy(t.outlineColorFactor),this.outlineLightingMixFactor=t.outlineLightingMixFactor,this.uvAnimationScrollXSpeedFactor=t.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYSpeedFactor=t.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationSpeedFactor=t.uvAnimationRotationSpeedFactor,this.uvAnimationMaskTexture=(f=t.uvAnimationMaskTexture)!=null?f:null,this.shadeColorNode=(M=t.shadeColorNode)!=null?M:null,this.shadingShiftNode=(_=t.shadingShiftNode)!=null?_:null,this.shadingToonyNode=(V=t.shadingToonyNode)!=null?V:null,this.rimLightingMixNode=(L=t.rimLightingMixNode)!=null?L:null,this.rimMultiplyNode=(w=t.rimMultiplyNode)!=null?w:null,this.matcapNode=(P=t.matcapNode)!=null?P:null,this.parametricRimColorNode=(A=t.parametricRimColorNode)!=null?A:null,this.parametricRimLiftNode=(H=t.parametricRimLiftNode)!=null?H:null,this.parametricRimFresnelPowerNode=(W=t.parametricRimFresnelPowerNode)!=null?W:null,this.isOutline=(U=t.isOutline)!=null?U:null,super.copy(t)}update(t){this.uvAnimationScrollXOffset+=t*this.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYOffset+=t*this.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationPhase+=t*this.uvAnimationRotationSpeedFactor}_setupShadeColorNode(){if(this.shadeColorNode!=null)return(0,e.vec3)(this.shadeColorNode);let t=ut;if(this.shadeMultiplyTexture&&this.shadeMultiplyTexture.isTexture===!0){let i=k.context({getUV:()=>this._animatedUVNode});t=t.mul(i)}return t}_setupShadingShiftNode(){if(this.shadingShiftNode!=null)return(0,e.float)(this.shadingShiftNode);let t=mt;if(this.shadingShiftTexture&&this.shadingShiftTexture.isTexture===!0){let i=k.context({getUV:()=>this._animatedUVNode});t=t.add(i.mul(dt))}return t}_setupShadingToonyNode(){return this.shadingToonyNode!=null?(0,e.float)(this.shadingToonyNode):ct}_setupRimLightingMixNode(){return this.rimLightingMixNode!=null?(0,e.float)(this.rimLightingMixNode):pt}_setupRimMultiplyNode(){return this.rimMultiplyNode!=null?(0,e.vec3)(this.rimMultiplyNode):this.rimMultiplyTexture&&this.rimMultiplyTexture.isTexture===!0?ft.context({getUV:()=>this._animatedUVNode}):(0,e.vec3)(1)}_setupMatcapNode(){return this.matcapNode!=null?(0,e.vec3)(this.matcapNode):this.matcapTexture&&this.matcapTexture.isTexture===!0?gt.context({getUV:()=>e.matcapUV.mul(1,-1).add(0,1)}).mul(Nt):(0,e.vec3)(0)}_setupParametricRimNode(){let t=this.parametricRimColorNode!=null?(0,e.vec3)(this.parametricRimColorNode):vt,i=this.parametricRimLiftNode!=null?(0,e.float)(this.parametricRimLiftNode):Tt,o=this.parametricRimFresnelPowerNode!=null?(0,e.float)(this.parametricRimFresnelPowerNode):Mt;return wt({parametricRimLift:i,parametricRimFresnelPower:o,parametricRimColor:t})}};
3
3
  /*!
4
- * @pixiv/three-vrm-materials-mtoon v3.5.0
4
+ * @pixiv/three-vrm-materials-mtoon v3.5.1
5
5
  * MToon (toon material) module for @pixiv/three-vrm
6
6
  *
7
7
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pixiv/three-vrm v3.5.0
2
+ * @pixiv/three-vrm v3.5.1
3
3
  * VRM file loader for three.js.
4
4
  *
5
5
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -505,7 +505,7 @@ export {
505
505
  MToonNodeMaterial
506
506
  };
507
507
  /*!
508
- * @pixiv/three-vrm-materials-mtoon v3.5.0
508
+ * @pixiv/three-vrm-materials-mtoon v3.5.1
509
509
  * MToon (toon material) module for @pixiv/three-vrm
510
510
  *
511
511
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -1,7 +1,7 @@
1
1
  /*! (c) 2019-2026 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */
2
2
  import*as Y from"three";import*as X from"three/webgpu";import{cos as Z,mat2 as $,sin as J,uv as k,vec2 as M,vec4 as Q}from"three/tsl";import{materialReference as o}from"three/tsl";import*as z from"three/webgpu";import{BRDF_Lambert as S,diffuseColor as B,float as yt,mix as F,transformedNormalView as Ct,vec3 as x}from"three/tsl";import*as s from"three/webgpu";import{nodeImmutable as h}from"three/tsl";import*as j from"three/tsl";import*as v from"three/webgpu";import*as a from"three/webgpu";import{cameraProjectionMatrix as Pt,diffuseColor as At,float as p,length as Ht,matcapUV as Wt,materialNormal as Ut,mix as Ot,modelNormalMatrix as It,modelViewMatrix as kt,normalLocal as bt,normalMap as Dt,positionLocal as R,vec3 as d,vec4 as Yt}from"three/tsl";import{float as Xt,modelViewPosition as zt,transformedNormalView as Bt}from"three/tsl";var I=parseInt(Y.REVISION,10);I<167&&console.warn(`MToonNodeMaterial requires Three.js r167 or higher (You are using r${I}). This would not work correctly.`);var tt=o("color","color"),it=o("map","texture"),et=o("normalMap","texture"),ot=o("normalScale","vec2"),rt=o("emissive","color"),at=o("emissiveIntensity","float"),nt=o("emissiveMap","texture"),lt=o("shadeColorFactor","color"),st=o("shadingShiftFactor","float"),b=o("shadeMultiplyTexture","texture"),ht=o("shadeMultiplyTextureScale","float"),ut=o("shadingToonyFactor","float"),mt=o("rimLightingMixFactor","float"),dt=o("rimMultiplyTexture","texture"),ct=o("matcapFactor","color"),pt=o("matcapTexture","texture"),ft=o("parametricRimColorFactor","color"),Nt=o("parametricRimLiftFactor","float"),gt=o("parametricRimFresnelPowerFactor","float"),vt=o("outlineWidthMultiplyTexture","texture"),Tt=o("outlineWidthFactor","float"),D=o("outlineColorFactor","color"),Mt=o("outlineLightingMixFactor","float"),xt=o("uvAnimationMaskTexture","texture"),Rt=o("uvAnimationScrollXOffset","float"),St=o("uvAnimationScrollYOffset","float"),Ft=o("uvAnimationRotationPhase","float"),Et=class extends X.TempNode{constructor(t){super("vec2"),this.hasMaskTexture=t}setup(){let t=1;this.hasMaskTexture&&(t=Q(xt).context({getUV:()=>k()}).r);let i=k(),e=Ft.mul(t),r=Z(e),n=J(e);i=i.sub(M(.5,.5)),i=i.mul($(r,n,n.negate(),r)),i=i.add(M(.5,.5));let l=M(Rt,St).mul(t);return i=i.add(l),i.toVar("AnimatedUV")}},q=h(s.PropertyNode,"vec3").toVar("ShadeColor"),G=h(s.PropertyNode,"float").toVar("ShadingShift"),K=h(s.PropertyNode,"float").toVar("ShadingToony"),E=h(s.PropertyNode,"float").toVar("RimLightingMix"),y=h(s.PropertyNode,"vec3").toVar("RimMultiply"),C=h(s.PropertyNode,"vec3").toVar("matcap"),_=h(s.PropertyNode,"vec3").toVar("ParametricRim"),T=t=>parseInt(v.REVISION,10)>=168?j.Fn(t):v.tslFn(t),_t=T(({a:t,b:i,t:e})=>{let r=e.sub(t),n=i.sub(t);return r.div(n).clamp()}),Vt=T(({dotNL:t})=>{let e=yt(1).sub(K),r=t.add(G);return r=_t({a:e.negate(),b:e,t:r}),r=r.mul(1),r}),Lt=T(({shading:t,lightColor:i})=>{let e=F(q,B,t);return i.mul(S({diffuseColor:e}))}),wt=class extends z.LightingModel{constructor(){super()}direct({lightDirection:t,lightColor:i,reflectedLight:e}){let r=Ct.dot(t).clamp(-1,1),n=Vt({dotNL:r});e.directDiffuse.addAssign(Lt({shading:n,lightColor:i})),e.directSpecular.addAssign(_.add(C).mul(y).mul(F(x(0),S({diffuseColor:i}),E)))}indirect(t){let i="context"in t?t.context:t;this.indirectDiffuse(i),this.indirectSpecular(i)}indirectDiffuse(t){let{irradiance:i,reflectedLight:e}=t;e.indirectDiffuse.addAssign(i.mul(S({diffuseColor:B})))}indirectSpecular(t){let{reflectedLight:i}=t;i.indirectSpecular.addAssign(_.add(C).mul(y).mul(F(x(1),x(0),E)))}},f={None:"none",WorldCoordinates:"worldCoordinates",ScreenCoordinates:"screenCoordinates"},qt=T(({parametricRimLift:t,parametricRimFresnelPower:i,parametricRimColor:e})=>{let r=zt.normalize(),n=Bt.dot(r.negate());return Xt(1).sub(n).add(t).clamp().pow(i).mul(e)}),Qt=class extends a.NodeMaterial{customProgramCacheKey(){let t=super.customProgramCacheKey();return t+=`isOutline:${this.isOutline},`,t}get isMToonNodeMaterial(){return!0}constructor(t={}){super(),t.transparentWithZWrite&&(t.depthWrite=!0),delete t.transparentWithZWrite,delete t.giEqualizationFactor,delete t.v0CompatShade,delete t.debugMode,this.emissiveNode=null,this.lights=!0,this.color=new a.Color(1,1,1),this.map=null,this.emissive=new a.Color(0,0,0),this.emissiveIntensity=1,this.emissiveMap=null,this.normalMap=null,this.normalScale=new a.Vector2(1,1),this.shadeColorFactor=new a.Color(0,0,0),this.shadeMultiplyTexture=null,this.shadingShiftFactor=0,this.shadingShiftTexture=null,this.shadingShiftTextureScale=1,this.shadingToonyFactor=.9,this.rimLightingMixFactor=1,this.rimMultiplyTexture=null,this.matcapFactor=new a.Color(1,1,1),this.matcapTexture=null,this.parametricRimColorFactor=new a.Color(0,0,0),this.parametricRimLiftFactor=0,this.parametricRimFresnelPowerFactor=5,this.outlineWidthMode=f.None,this.outlineWidthMultiplyTexture=null,this.outlineWidthFactor=0,this.outlineColorFactor=new a.Color(0,0,0),this.outlineLightingMixFactor=1,this.uvAnimationScrollXSpeedFactor=0,this.uvAnimationScrollYSpeedFactor=0,this.uvAnimationRotationSpeedFactor=0,this.uvAnimationMaskTexture=null,this.shadeColorNode=null,this.shadingShiftNode=null,this.shadingToonyNode=null,this.rimLightingMixNode=null,this.rimMultiplyNode=null,this.matcapNode=null,this.parametricRimColorNode=null,this.parametricRimLiftNode=null,this.parametricRimFresnelPowerNode=null,this.uvAnimationScrollXOffset=0,this.uvAnimationScrollYOffset=0,this.uvAnimationRotationPhase=0,this.isOutline=!1,this._animatedUVNode=null,this.setValues(t)}setupLightingModel(){return new wt}setup(t){var i;this._animatedUVNode=new Et((i=this.uvAnimationMaskTexture&&this.uvAnimationMaskTexture.isTexture===!0)!=null?i:!1),super.setup(t)}setupDiffuseColor(t){let i=null;if(this.colorNode==null){if(i=tt,this.map&&this.map.isTexture===!0){let e=it.context({getUV:()=>this._animatedUVNode});i=i.mul(e)}this.colorNode=i}this.vertexColors===!0&&t.geometry.hasAttribute("color")&&(console.warn("MToonNodeMaterial: MToon ignores vertex colors. Consider using a model without vertex colors instead."),this.vertexColors=!1),super.setupDiffuseColor(t),parseInt(a.REVISION,10)<166&&this.transparent===!1&&this.blending===a.NormalBlending&&this.alphaToCoverage===!1&&At.a.assign(1),this.colorNode===i&&(this.colorNode=null)}setupVariants(){q.assign(this._setupShadeColorNode()),G.assign(this._setupShadingShiftNode()),K.assign(this._setupShadingToonyNode()),E.assign(this._setupRimLightingMixNode()),y.assign(this._setupRimMultiplyNode()),C.assign(this._setupMatcapNode()),_.assign(this._setupParametricRimNode())}setupNormal(t){let i=this.normalNode;if(this.normalNode==null){if(this.normalNode=Ut,this.normalMap&&this.normalMap.isTexture===!0){let r=et.context({getUV:()=>this._animatedUVNode});this.normalNode=Dt(r,ot)}this.isOutline&&(this.normalNode=this.normalNode.negate())}if(parseInt(a.REVISION,10)>=168){let r=this.normalNode;return this.normalNode=i,r}else{super.setupNormal(t),this.normalNode=i;return}}setupLighting(t){let i=null;if(this.emissiveNode==null){if(i=rt.mul(at),this.emissiveMap&&this.emissiveMap.isTexture===!0){let r=nt.context({getUV:()=>this._animatedUVNode});i=i.mul(r)}this.emissiveNode=i}let e=super.setupLighting(t);return this.emissiveNode===i&&(this.emissiveNode=null),e}setupOutput(t,i){return this.isOutline&&this.outlineWidthMode!==f.None&&(i=Yt(Ot(D,i.xyz.mul(D),Mt),i.w)),super.setupOutput(t,i)}setupPosition(t){var i,e;let r=this.positionNode;if(this.isOutline&&this.outlineWidthMode!==f.None){(i=this.positionNode)!=null||(this.positionNode=R);let l=bt.normalize(),u=Tt;if(this.outlineWidthMultiplyTexture&&this.outlineWidthMultiplyTexture.isTexture===!0){let m=vt.context({getUV:()=>this._animatedUVNode});u=u.mul(m)}let N=Ht(It.mul(l)),c=u.mul(N).mul(l);if(this.outlineWidthMode===f.WorldCoordinates)this.positionNode=this.positionNode.add(c);else if(this.outlineWidthMode===f.ScreenCoordinates){let m=Pt.element(1).element(1),g=kt.mul(R);this.positionNode=this.positionNode.add(c.div(m).mul(g.z.negate()))}(e=this.positionNode)!=null||(this.positionNode=R)}let n=super.setupPosition(t);return n.z.add(n.w.mul(1e-6)),this.positionNode=r,n}copy(t){var i,e,r,n,l,u,N,c,m,g,V,L,w,P,A,H,W,U,O;return this.color.copy(t.color),this.map=(i=t.map)!=null?i:null,this.emissive.copy(t.emissive),this.emissiveIntensity=t.emissiveIntensity,this.emissiveMap=(e=t.emissiveMap)!=null?e:null,this.normalMap=(r=t.normalMap)!=null?r:null,this.normalScale.copy(t.normalScale),this.shadeColorFactor.copy(t.shadeColorFactor),this.shadeMultiplyTexture=(n=t.shadeMultiplyTexture)!=null?n:null,this.shadingShiftFactor=t.shadingShiftFactor,this.shadingShiftTexture=(l=t.shadingShiftTexture)!=null?l:null,this.shadingShiftTextureScale=t.shadingShiftTextureScale,this.shadingToonyFactor=t.shadingToonyFactor,this.rimLightingMixFactor=t.rimLightingMixFactor,this.rimMultiplyTexture=(u=t.rimMultiplyTexture)!=null?u:null,this.matcapFactor.copy(t.matcapFactor),this.matcapTexture=(N=t.matcapTexture)!=null?N:null,this.parametricRimColorFactor.copy(t.parametricRimColorFactor),this.parametricRimLiftFactor=t.parametricRimLiftFactor,this.parametricRimFresnelPowerFactor=t.parametricRimFresnelPowerFactor,this.outlineWidthMode=t.outlineWidthMode,this.outlineWidthMultiplyTexture=(c=t.outlineWidthMultiplyTexture)!=null?c:null,this.outlineWidthFactor=t.outlineWidthFactor,this.outlineColorFactor.copy(t.outlineColorFactor),this.outlineLightingMixFactor=t.outlineLightingMixFactor,this.uvAnimationScrollXSpeedFactor=t.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYSpeedFactor=t.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationSpeedFactor=t.uvAnimationRotationSpeedFactor,this.uvAnimationMaskTexture=(m=t.uvAnimationMaskTexture)!=null?m:null,this.shadeColorNode=(g=t.shadeColorNode)!=null?g:null,this.shadingShiftNode=(V=t.shadingShiftNode)!=null?V:null,this.shadingToonyNode=(L=t.shadingToonyNode)!=null?L:null,this.rimLightingMixNode=(w=t.rimLightingMixNode)!=null?w:null,this.rimMultiplyNode=(P=t.rimMultiplyNode)!=null?P:null,this.matcapNode=(A=t.matcapNode)!=null?A:null,this.parametricRimColorNode=(H=t.parametricRimColorNode)!=null?H:null,this.parametricRimLiftNode=(W=t.parametricRimLiftNode)!=null?W:null,this.parametricRimFresnelPowerNode=(U=t.parametricRimFresnelPowerNode)!=null?U:null,this.isOutline=(O=t.isOutline)!=null?O:null,super.copy(t)}update(t){this.uvAnimationScrollXOffset+=t*this.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYOffset+=t*this.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationPhase+=t*this.uvAnimationRotationSpeedFactor}_setupShadeColorNode(){if(this.shadeColorNode!=null)return d(this.shadeColorNode);let t=lt;if(this.shadeMultiplyTexture&&this.shadeMultiplyTexture.isTexture===!0){let i=b.context({getUV:()=>this._animatedUVNode});t=t.mul(i)}return t}_setupShadingShiftNode(){if(this.shadingShiftNode!=null)return p(this.shadingShiftNode);let t=st;if(this.shadingShiftTexture&&this.shadingShiftTexture.isTexture===!0){let i=b.context({getUV:()=>this._animatedUVNode});t=t.add(i.mul(ht))}return t}_setupShadingToonyNode(){return this.shadingToonyNode!=null?p(this.shadingToonyNode):ut}_setupRimLightingMixNode(){return this.rimLightingMixNode!=null?p(this.rimLightingMixNode):mt}_setupRimMultiplyNode(){return this.rimMultiplyNode!=null?d(this.rimMultiplyNode):this.rimMultiplyTexture&&this.rimMultiplyTexture.isTexture===!0?dt.context({getUV:()=>this._animatedUVNode}):d(1)}_setupMatcapNode(){return this.matcapNode!=null?d(this.matcapNode):this.matcapTexture&&this.matcapTexture.isTexture===!0?pt.context({getUV:()=>Wt.mul(1,-1).add(0,1)}).mul(ct):d(0)}_setupParametricRimNode(){let t=this.parametricRimColorNode!=null?d(this.parametricRimColorNode):ft,i=this.parametricRimLiftNode!=null?p(this.parametricRimLiftNode):Nt,e=this.parametricRimFresnelPowerNode!=null?p(this.parametricRimFresnelPowerNode):gt;return qt({parametricRimLift:i,parametricRimFresnelPower:e,parametricRimColor:t})}};export{Et as MToonAnimatedUVNode,wt as MToonLightingModel,Qt as MToonNodeMaterial};
3
3
  /*!
4
- * @pixiv/three-vrm-materials-mtoon v3.5.0
4
+ * @pixiv/three-vrm-materials-mtoon v3.5.1
5
5
  * MToon (toon material) module for @pixiv/three-vrm
6
6
  *
7
7
  * Copyright (c) 2019-2026 pixiv Inc.
package/lib/three-vrm.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pixiv/three-vrm v3.5.0
2
+ * @pixiv/three-vrm v3.5.1
3
3
  * VRM file loader for three.js.
4
4
  *
5
5
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6796,7 +6796,7 @@ VRMUtils.removeUnnecessaryJoints = removeUnnecessaryJoints;
6796
6796
  VRMUtils.removeUnnecessaryVertices = removeUnnecessaryVertices;
6797
6797
  VRMUtils.rotateVRM0 = rotateVRM0;
6798
6798
  /*!
6799
- * @pixiv/three-vrm-core v3.5.0
6799
+ * @pixiv/three-vrm-core v3.5.1
6800
6800
  * The implementation of core features of VRM, for @pixiv/three-vrm
6801
6801
  *
6802
6802
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6804,7 +6804,7 @@ VRMUtils.rotateVRM0 = rotateVRM0;
6804
6804
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
6805
6805
  */
6806
6806
  /*!
6807
- * @pixiv/three-vrm-materials-mtoon v3.5.0
6807
+ * @pixiv/three-vrm-materials-mtoon v3.5.1
6808
6808
  * MToon (toon material) module for @pixiv/three-vrm
6809
6809
  *
6810
6810
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6812,7 +6812,7 @@ VRMUtils.rotateVRM0 = rotateVRM0;
6812
6812
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
6813
6813
  */
6814
6814
  /*!
6815
- * @pixiv/three-vrm-materials-hdr-emissive-multiplier v3.5.0
6815
+ * @pixiv/three-vrm-materials-hdr-emissive-multiplier v3.5.1
6816
6816
  * Support VRMC_hdr_emissiveMultiplier for @pixiv/three-vrm
6817
6817
  *
6818
6818
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6820,7 +6820,7 @@ VRMUtils.rotateVRM0 = rotateVRM0;
6820
6820
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
6821
6821
  */
6822
6822
  /*!
6823
- * @pixiv/three-vrm-materials-v0compat v3.5.0
6823
+ * @pixiv/three-vrm-materials-v0compat v3.5.1
6824
6824
  * VRM0.0 materials compatibility layer plugin for @pixiv/three-vrm
6825
6825
  *
6826
6826
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6828,7 +6828,7 @@ VRMUtils.rotateVRM0 = rotateVRM0;
6828
6828
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
6829
6829
  */
6830
6830
  /*!
6831
- * @pixiv/three-vrm-node-constraint v3.5.0
6831
+ * @pixiv/three-vrm-node-constraint v3.5.1
6832
6832
  * Node constraint module for @pixiv/three-vrm
6833
6833
  *
6834
6834
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6836,7 +6836,7 @@ VRMUtils.rotateVRM0 = rotateVRM0;
6836
6836
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
6837
6837
  */
6838
6838
  /*!
6839
- * @pixiv/three-vrm-springbone v3.5.0
6839
+ * @pixiv/three-vrm-springbone v3.5.1
6840
6840
  * Spring bone module for @pixiv/three-vrm
6841
6841
  *
6842
6842
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -934,7 +934,7 @@ void main() {
934
934
  `)+`
935
935
  `;n.vertexShader=r+n.vertexShader,n.fragmentShader=r+n.fragmentShader,i<154&&(n.fragmentShader=n.fragmentShader.replace("#include <colorspace_fragment>","#include <encodings_fragment>"))}}get color(){return this.uniforms.litFactor.value}set color(t){this.uniforms.litFactor.value=t}get map(){return this.uniforms.map.value}set map(t){this.uniforms.map.value=t}get normalMap(){return this.uniforms.normalMap.value}set normalMap(t){this.uniforms.normalMap.value=t}get normalScale(){return this.uniforms.normalScale.value}set normalScale(t){this.uniforms.normalScale.value=t}get emissive(){return this.uniforms.emissive.value}set emissive(t){this.uniforms.emissive.value=t}get emissiveIntensity(){return this.uniforms.emissiveIntensity.value}set emissiveIntensity(t){this.uniforms.emissiveIntensity.value=t}get emissiveMap(){return this.uniforms.emissiveMap.value}set emissiveMap(t){this.uniforms.emissiveMap.value=t}get shadeColorFactor(){return this.uniforms.shadeColorFactor.value}set shadeColorFactor(t){this.uniforms.shadeColorFactor.value=t}get shadeMultiplyTexture(){return this.uniforms.shadeMultiplyTexture.value}set shadeMultiplyTexture(t){this.uniforms.shadeMultiplyTexture.value=t}get shadingShiftFactor(){return this.uniforms.shadingShiftFactor.value}set shadingShiftFactor(t){this.uniforms.shadingShiftFactor.value=t}get shadingShiftTexture(){return this.uniforms.shadingShiftTexture.value}set shadingShiftTexture(t){this.uniforms.shadingShiftTexture.value=t}get shadingShiftTextureScale(){return this.uniforms.shadingShiftTextureScale.value}set shadingShiftTextureScale(t){this.uniforms.shadingShiftTextureScale.value=t}get shadingToonyFactor(){return this.uniforms.shadingToonyFactor.value}set shadingToonyFactor(t){this.uniforms.shadingToonyFactor.value=t}get giEqualizationFactor(){return this.uniforms.giEqualizationFactor.value}set giEqualizationFactor(t){this.uniforms.giEqualizationFactor.value=t}get matcapFactor(){return this.uniforms.matcapFactor.value}set matcapFactor(t){this.uniforms.matcapFactor.value=t}get matcapTexture(){return this.uniforms.matcapTexture.value}set matcapTexture(t){this.uniforms.matcapTexture.value=t}get parametricRimColorFactor(){return this.uniforms.parametricRimColorFactor.value}set parametricRimColorFactor(t){this.uniforms.parametricRimColorFactor.value=t}get rimMultiplyTexture(){return this.uniforms.rimMultiplyTexture.value}set rimMultiplyTexture(t){this.uniforms.rimMultiplyTexture.value=t}get rimLightingMixFactor(){return this.uniforms.rimLightingMixFactor.value}set rimLightingMixFactor(t){this.uniforms.rimLightingMixFactor.value=t}get parametricRimFresnelPowerFactor(){return this.uniforms.parametricRimFresnelPowerFactor.value}set parametricRimFresnelPowerFactor(t){this.uniforms.parametricRimFresnelPowerFactor.value=t}get parametricRimLiftFactor(){return this.uniforms.parametricRimLiftFactor.value}set parametricRimLiftFactor(t){this.uniforms.parametricRimLiftFactor.value=t}get outlineWidthMultiplyTexture(){return this.uniforms.outlineWidthMultiplyTexture.value}set outlineWidthMultiplyTexture(t){this.uniforms.outlineWidthMultiplyTexture.value=t}get outlineWidthFactor(){return this.uniforms.outlineWidthFactor.value}set outlineWidthFactor(t){this.uniforms.outlineWidthFactor.value=t}get outlineColorFactor(){return this.uniforms.outlineColorFactor.value}set outlineColorFactor(t){this.uniforms.outlineColorFactor.value=t}get outlineLightingMixFactor(){return this.uniforms.outlineLightingMixFactor.value}set outlineLightingMixFactor(t){this.uniforms.outlineLightingMixFactor.value=t}get uvAnimationMaskTexture(){return this.uniforms.uvAnimationMaskTexture.value}set uvAnimationMaskTexture(t){this.uniforms.uvAnimationMaskTexture.value=t}get uvAnimationScrollXOffset(){return this.uniforms.uvAnimationScrollXOffset.value}set uvAnimationScrollXOffset(t){this.uniforms.uvAnimationScrollXOffset.value=t}get uvAnimationScrollYOffset(){return this.uniforms.uvAnimationScrollYOffset.value}set uvAnimationScrollYOffset(t){this.uniforms.uvAnimationScrollYOffset.value=t}get uvAnimationRotationPhase(){return this.uniforms.uvAnimationRotationPhase.value}set uvAnimationRotationPhase(t){this.uniforms.uvAnimationRotationPhase.value=t}get ignoreVertexColor(){return this._ignoreVertexColor}set ignoreVertexColor(t){this._ignoreVertexColor=t,this.needsUpdate=!0}get v0CompatShade(){return this._v0CompatShade}set v0CompatShade(t){this._v0CompatShade=t,this.needsUpdate=!0}get debugMode(){return this._debugMode}set debugMode(t){this._debugMode=t,this.needsUpdate=!0}get outlineWidthMode(){return this._outlineWidthMode}set outlineWidthMode(t){this._outlineWidthMode=t,this.needsUpdate=!0}get isOutline(){return this._isOutline}set isOutline(t){this._isOutline=t,this.needsUpdate=!0}get isMToonMaterial(){return!0}update(t){this._uploadUniformsWorkaround(),this._updateUVAnimation(t)}copy(t){return super.copy(t),this.map=t.map,this.normalMap=t.normalMap,this.emissiveMap=t.emissiveMap,this.shadeMultiplyTexture=t.shadeMultiplyTexture,this.shadingShiftTexture=t.shadingShiftTexture,this.matcapTexture=t.matcapTexture,this.rimMultiplyTexture=t.rimMultiplyTexture,this.outlineWidthMultiplyTexture=t.outlineWidthMultiplyTexture,this.uvAnimationMaskTexture=t.uvAnimationMaskTexture,this.normalMapType=t.normalMapType,this.uvAnimationScrollXSpeedFactor=t.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYSpeedFactor=t.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationSpeedFactor=t.uvAnimationRotationSpeedFactor,this.ignoreVertexColor=t.ignoreVertexColor,this.v0CompatShade=t.v0CompatShade,this.debugMode=t.debugMode,this.outlineWidthMode=t.outlineWidthMode,this.isOutline=t.isOutline,this.needsUpdate=!0,this}_updateUVAnimation(t){this.uniforms.uvAnimationScrollXOffset.value+=t*this.uvAnimationScrollXSpeedFactor,this.uniforms.uvAnimationScrollYOffset.value+=t*this.uvAnimationScrollYSpeedFactor,this.uniforms.uvAnimationRotationPhase.value+=t*this.uvAnimationRotationSpeedFactor,this.uniforms.alphaTest.value=this.alphaTest,this.uniformsNeedUpdate=!0}_uploadUniformsWorkaround(){this.uniforms.opacity.value=this.opacity,this._updateTextureMatrix(this.uniforms.map,this.uniforms.mapUvTransform),this._updateTextureMatrix(this.uniforms.normalMap,this.uniforms.normalMapUvTransform),this._updateTextureMatrix(this.uniforms.emissiveMap,this.uniforms.emissiveMapUvTransform),this._updateTextureMatrix(this.uniforms.shadeMultiplyTexture,this.uniforms.shadeMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.shadingShiftTexture,this.uniforms.shadingShiftTextureUvTransform),this._updateTextureMatrix(this.uniforms.matcapTexture,this.uniforms.matcapTextureUvTransform),this._updateTextureMatrix(this.uniforms.rimMultiplyTexture,this.uniforms.rimMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.outlineWidthMultiplyTexture,this.uniforms.outlineWidthMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.uvAnimationMaskTexture,this.uniforms.uvAnimationMaskTextureUvTransform),this.uniformsNeedUpdate=!0}_generateDefines(){let t=parseInt(y.REVISION,10),e=this.outlineWidthMultiplyTexture!==null,n=this.map!==null||this.normalMap!==null||this.emissiveMap!==null||this.shadeMultiplyTexture!==null||this.shadingShiftTexture!==null||this.rimMultiplyTexture!==null||this.uvAnimationMaskTexture!==null;return{THREE_VRM_THREE_REVISION:t,OUTLINE:this._isOutline,MTOON_USE_UV:e||n,MTOON_UVS_VERTEX_ONLY:e&&!n,V0_COMPAT_SHADE:this._v0CompatShade,USE_SHADEMULTIPLYTEXTURE:this.shadeMultiplyTexture!==null,USE_SHADINGSHIFTTEXTURE:this.shadingShiftTexture!==null,USE_MATCAPTEXTURE:this.matcapTexture!==null,USE_RIMMULTIPLYTEXTURE:this.rimMultiplyTexture!==null,USE_OUTLINEWIDTHMULTIPLYTEXTURE:this._isOutline&&this.outlineWidthMultiplyTexture!==null,USE_UVANIMATIONMASKTEXTURE:this.uvAnimationMaskTexture!==null,IGNORE_VERTEX_COLOR:this._ignoreVertexColor===!0,DEBUG_NORMAL:this._debugMode==="normal",DEBUG_LITSHADERATE:this._debugMode==="litShadeRate",DEBUG_UV:this._debugMode==="uv",OUTLINE_WIDTH_SCREEN:this._isOutline&&this._outlineWidthMode===Bt.ScreenCoordinates}}_updateTextureMatrix(t,e){t.value&&(t.value.matrixAutoUpdate&&t.value.updateMatrix(),e.value.copy(t.value.matrix))}},Eo=new Set(["1.0","1.0-beta"]),Mi=class nt{get name(){return nt.EXTENSION_NAME}constructor(e,n={}){var i,r,o,s;this.parser=e,this.materialType=(i=n.materialType)!=null?i:Ei,this.renderOrderOffset=(r=n.renderOrderOffset)!=null?r:0,this.v0CompatShade=(o=n.v0CompatShade)!=null?o:!1,this.debugMode=(s=n.debugMode)!=null?s:"none",this._mToonMaterialSet=new Set}beforeRoot(){return ue(this,null,function*(){this._removeUnlitExtensionIfMToonExists()})}afterRoot(e){return ue(this,null,function*(){e.userData.vrmMToonMaterials=Array.from(this._mToonMaterialSet)})}getMaterialType(e){return this._getMToonExtension(e)?this.materialType:null}extendMaterialParams(e,n){let i=this._getMToonExtension(e);return i?this._extendMaterialParams(i,n):null}loadMesh(e){return ue(this,null,function*(){var n;let i=this.parser,o=(n=i.json.meshes)==null?void 0:n[e];if(o==null)throw new Error(`MToonMaterialLoaderPlugin: Attempt to use meshes[${e}] of glTF but the mesh doesn't exist`);let s=o.primitives,l=yield i.loadMesh(e);if(s.length===1){let a=l,u=s[0].material;u!=null&&this._setupPrimitive(a,u)}else{let a=l;for(let u=0;u<s.length;u++){let d=a.children[u],h=s[u].material;h!=null&&this._setupPrimitive(d,h)}}return l})}_removeUnlitExtensionIfMToonExists(){let i=this.parser.json.materials;i==null||i.map((r,o)=>{var s;this._getMToonExtension(o)&&((s=r.extensions)!=null&&s.KHR_materials_unlit)&&delete r.extensions.KHR_materials_unlit})}_getMToonExtension(e){var n,i;let s=(n=this.parser.json.materials)==null?void 0:n[e];if(s==null){console.warn(`MToonMaterialLoaderPlugin: Attempt to use materials[${e}] of glTF but the material doesn't exist`);return}let l=(i=s.extensions)==null?void 0:i[nt.EXTENSION_NAME];if(l==null)return;let a=l.specVersion;if(!Eo.has(a)){console.warn(`MToonMaterialLoaderPlugin: Unknown ${nt.EXTENSION_NAME} specVersion "${a}"`);return}return l}_extendMaterialParams(e,n){return ue(this,null,function*(){var i;delete n.metalness,delete n.roughness;let r=new mo(this.parser,n);r.assignPrimitive("transparentWithZWrite",e.transparentWithZWrite),r.assignColor("shadeColorFactor",e.shadeColorFactor),r.assignTexture("shadeMultiplyTexture",e.shadeMultiplyTexture,!0),r.assignPrimitive("shadingShiftFactor",e.shadingShiftFactor),r.assignTexture("shadingShiftTexture",e.shadingShiftTexture,!0),r.assignPrimitive("shadingShiftTextureScale",(i=e.shadingShiftTexture)==null?void 0:i.scale),r.assignPrimitive("shadingToonyFactor",e.shadingToonyFactor),r.assignPrimitive("giEqualizationFactor",e.giEqualizationFactor),r.assignColor("matcapFactor",e.matcapFactor),r.assignTexture("matcapTexture",e.matcapTexture,!0),r.assignColor("parametricRimColorFactor",e.parametricRimColorFactor),r.assignTexture("rimMultiplyTexture",e.rimMultiplyTexture,!0),r.assignPrimitive("rimLightingMixFactor",e.rimLightingMixFactor),r.assignPrimitive("parametricRimFresnelPowerFactor",e.parametricRimFresnelPowerFactor),r.assignPrimitive("parametricRimLiftFactor",e.parametricRimLiftFactor),r.assignPrimitive("outlineWidthMode",e.outlineWidthMode),r.assignPrimitive("outlineWidthFactor",e.outlineWidthFactor),r.assignTexture("outlineWidthMultiplyTexture",e.outlineWidthMultiplyTexture,!1),r.assignColor("outlineColorFactor",e.outlineColorFactor),r.assignPrimitive("outlineLightingMixFactor",e.outlineLightingMixFactor),r.assignTexture("uvAnimationMaskTexture",e.uvAnimationMaskTexture,!1),r.assignPrimitive("uvAnimationScrollXSpeedFactor",e.uvAnimationScrollXSpeedFactor),r.assignPrimitive("uvAnimationScrollYSpeedFactor",e.uvAnimationScrollYSpeedFactor),r.assignPrimitive("uvAnimationRotationSpeedFactor",e.uvAnimationRotationSpeedFactor),r.assignPrimitive("v0CompatShade",this.v0CompatShade),r.assignPrimitive("debugMode",this.debugMode),yield r.pending})}_setupPrimitive(e,n){let i=this._getMToonExtension(n);if(i){let r=this._parseRenderOrder(i);e.renderOrder=r+this.renderOrderOffset,this._generateOutline(e),this._addToMaterialSet(e);return}}_shouldGenerateOutline(e){return typeof e.outlineWidthMode=="string"&&e.outlineWidthMode!=="none"&&typeof e.outlineWidthFactor=="number"&&e.outlineWidthFactor>0}_generateOutline(e){let n=e.material;if(!(n instanceof it.Material)||!this._shouldGenerateOutline(n))return;e.material=[n];let i=n.clone();i.name+=" (Outline)",i.isOutline=!0,i.side=it.BackSide,e.material.push(i);let r=e.geometry,o=r.index?r.index.count:r.attributes.position.count/3;r.addGroup(0,o,0),r.addGroup(0,o,1)}_addToMaterialSet(e){let n=e.material,i=new Set;Array.isArray(n)?n.forEach(r=>i.add(r)):i.add(n);for(let r of i)this._mToonMaterialSet.add(r)}_parseRenderOrder(e){var n;return(e.transparentWithZWrite?0:19)+((n=e.renderQueueOffsetNumber)!=null?n:0)}};Mi.EXTENSION_NAME="VRMC_materials_mtoon";var Nt=Mi;var Mo=(t,e,n)=>new Promise((i,r)=>{var o=a=>{try{l(n.next(a))}catch(u){r(u)}},s=a=>{try{l(n.throw(a))}catch(u){r(u)}},l=a=>a.done?i(a.value):Promise.resolve(a.value).then(o,s);l((n=n.apply(t,e)).next())}),Ri=class Dt{get name(){return Dt.EXTENSION_NAME}constructor(e){this.parser=e}extendMaterialParams(e,n){return Mo(this,null,function*(){let i=this._getHDREmissiveMultiplierExtension(e);if(i==null)return;console.warn("VRMMaterialsHDREmissiveMultiplierLoaderPlugin: `VRMC_materials_hdr_emissiveMultiplier` is archived. Use `KHR_materials_emissive_strength` instead.");let r=i.emissiveMultiplier;n.emissiveIntensity=r})}_getHDREmissiveMultiplierExtension(e){var n,i;let s=(n=this.parser.json.materials)==null?void 0:n[e];if(s==null){console.warn(`VRMMaterialsHDREmissiveMultiplierLoaderPlugin: Attempt to use materials[${e}] of glTF but the material doesn't exist`);return}let l=(i=s.extensions)==null?void 0:i[Dt.EXTENSION_NAME];if(l!=null)return l}};Ri.EXTENSION_NAME="VRMC_materials_hdr_emissiveMultiplier";var Ti=Ri;var Si=v(require("three"),1);var Ro=Object.defineProperty,To=Object.defineProperties,xo=Object.getOwnPropertyDescriptors,xi=Object.getOwnPropertySymbols,yo=Object.prototype.hasOwnProperty,wo=Object.prototype.propertyIsEnumerable,yi=(t,e,n)=>e in t?Ro(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,z=(t,e)=>{for(var n in e||(e={}))yo.call(e,n)&&yi(t,n,e[n]);if(xi)for(var n of xi(e))wo.call(e,n)&&yi(t,n,e[n]);return t},wi=(t,e)=>To(t,xo(e)),So=(t,e,n)=>new Promise((i,r)=>{var o=a=>{try{l(n.next(a))}catch(u){r(u)}},s=a=>{try{l(n.throw(a))}catch(u){r(u)}},l=a=>a.done?i(a.value):Promise.resolve(a.value).then(o,s);l((n=n.apply(t,e)).next())});function Ee(t){return Math.pow(t,2.2)}var Ai=class{get name(){return"VRMMaterialsV0CompatPlugin"}constructor(t){var e;this.parser=t,this._renderQueueMapTransparent=new Map,this._renderQueueMapTransparentZWrite=new Map;let n=this.parser.json;n.extensionsUsed=(e=n.extensionsUsed)!=null?e:[],n.extensionsUsed.indexOf("KHR_texture_transform")===-1&&n.extensionsUsed.push("KHR_texture_transform")}beforeRoot(){return So(this,null,function*(){var t;let e=this.parser.json,n=(t=e.extensions)==null?void 0:t.VRM,i=n==null?void 0:n.materialProperties;i&&(this._populateRenderQueueMap(i),i.forEach((r,o)=>{var s,l;let a=(s=e.materials)==null?void 0:s[o];if(a==null){console.warn(`VRMMaterialsV0CompatPlugin: Attempt to use materials[${o}] of glTF but the material doesn't exist`);return}if(r.shader==="VRM/MToon"){let u=this._parseV0MToonProperties(r,a);e.materials[o]=u}else if((l=r.shader)!=null&&l.startsWith("VRM/Unlit")){let u=this._parseV0UnlitProperties(r,a);e.materials[o]=u}else r.shader==="VRM_USE_GLTFSHADER"||console.warn(`VRMMaterialsV0CompatPlugin: Unknown shader: ${r.shader}`)}))})}_parseV0MToonProperties(t,e){var n,i,r,o,s,l,a,u,d,h,c,p,f,m,g,_,w,T,R,E,M,S,A,I,b,H,C,J,we,Se,Q,W,pe,Ae,U,Jt,Kt,en,tn,nn,rn,on,sn,an,ln,un,dn,hn,cn,pn,fn,mn,gn,_n,vn;let En=(i=(n=t.keywordMap)==null?void 0:n._ALPHABLEND_ON)!=null?i:!1,Ki=((r=t.floatProperties)==null?void 0:r._ZWrite)===1&&En,er=this._v0ParseRenderQueue(t),Mn=(s=(o=t.keywordMap)==null?void 0:o._ALPHATEST_ON)!=null?s:!1,tr=En?"BLEND":Mn?"MASK":"OPAQUE",nr=Mn?(a=(l=t.floatProperties)==null?void 0:l._Cutoff)!=null?a:.5:void 0,ir=((d=(u=t.floatProperties)==null?void 0:u._CullMode)!=null?d:2)===0,se=this._portTextureTransform(t),rr=((c=(h=t.vectorProperties)==null?void 0:h._Color)!=null?c:[1,1,1,1]).map((bn,Pr)=>Pr===3?bn:Ee(bn)),Rn=(p=t.textureProperties)==null?void 0:p._MainTex,or=Rn!=null?{index:Rn,extensions:z({},se)}:void 0,sr=(m=(f=t.floatProperties)==null?void 0:f._BumpScale)!=null?m:1,Tn=(g=t.textureProperties)==null?void 0:g._BumpMap,ar=Tn!=null?{index:Tn,scale:sr,extensions:z({},se)}:void 0,lr=((w=(_=t.vectorProperties)==null?void 0:_._EmissionColor)!=null?w:[0,0,0,1]).map(Ee),xn=(T=t.textureProperties)==null?void 0:T._EmissionMap,ur=xn!=null?{index:xn,extensions:z({},se)}:void 0,dr=((E=(R=t.vectorProperties)==null?void 0:R._ShadeColor)!=null?E:[.97,.81,.86,1]).map(Ee),yn=(M=t.textureProperties)==null?void 0:M._ShadeTexture,hr=yn!=null?{index:yn,extensions:z({},se)}:void 0,De=(A=(S=t.floatProperties)==null?void 0:S._ShadeShift)!=null?A:0,Fe=(b=(I=t.floatProperties)==null?void 0:I._ShadeToony)!=null?b:.9;Fe=Si.MathUtils.lerp(Fe,1,.5+.5*De),De=-De-(1-Fe);let wn=(C=(H=t.floatProperties)==null?void 0:H._IndirectLightIntensity)!=null?C:.1,cr=wn?1-wn:void 0,_t=(J=t.textureProperties)==null?void 0:J._SphereAdd,pr=_t!=null?[1,1,1]:void 0,fr=_t!=null?{index:_t}:void 0,mr=(Se=(we=t.floatProperties)==null?void 0:we._RimLightingMix)!=null?Se:0,Sn=(Q=t.textureProperties)==null?void 0:Q._RimTexture,gr=Sn!=null?{index:Sn,extensions:z({},se)}:void 0,_r=((pe=(W=t.vectorProperties)==null?void 0:W._RimColor)!=null?pe:[0,0,0,1]).map(Ee),vr=(U=(Ae=t.floatProperties)==null?void 0:Ae._RimFresnelPower)!=null?U:1,Er=(Kt=(Jt=t.floatProperties)==null?void 0:Jt._RimLift)!=null?Kt:0,Mr=["none","worldCoordinates","screenCoordinates"][(tn=(en=t.floatProperties)==null?void 0:en._OutlineWidthMode)!=null?tn:0],vt=(rn=(nn=t.floatProperties)==null?void 0:nn._OutlineWidth)!=null?rn:0;vt=.01*vt;let An=(on=t.textureProperties)==null?void 0:on._OutlineWidthTexture,Rr=An!=null?{index:An,extensions:z({},se)}:void 0,Tr=((an=(sn=t.vectorProperties)==null?void 0:sn._OutlineColor)!=null?an:[0,0,0]).map(Ee),xr=((un=(ln=t.floatProperties)==null?void 0:ln._OutlineColorMode)!=null?un:0)===1?(hn=(dn=t.floatProperties)==null?void 0:dn._OutlineLightingMix)!=null?hn:1:0,Pn=(cn=t.textureProperties)==null?void 0:cn._UvAnimMaskTexture,yr=Pn!=null?{index:Pn,extensions:z({},se)}:void 0,wr=(fn=(pn=t.floatProperties)==null?void 0:pn._UvAnimScrollX)!=null?fn:0,ke=(gn=(mn=t.floatProperties)==null?void 0:mn._UvAnimScrollY)!=null?gn:0;ke!=null&&(ke=-ke);let Sr=(vn=(_n=t.floatProperties)==null?void 0:_n._UvAnimRotation)!=null?vn:0,Ar={specVersion:"1.0",transparentWithZWrite:Ki,renderQueueOffsetNumber:er,shadeColorFactor:dr,shadeMultiplyTexture:hr,shadingShiftFactor:De,shadingToonyFactor:Fe,giEqualizationFactor:cr,matcapFactor:pr,matcapTexture:fr,rimLightingMixFactor:mr,rimMultiplyTexture:gr,parametricRimColorFactor:_r,parametricRimFresnelPowerFactor:vr,parametricRimLiftFactor:Er,outlineWidthMode:Mr,outlineWidthFactor:vt,outlineWidthMultiplyTexture:Rr,outlineColorFactor:Tr,outlineLightingMixFactor:xr,uvAnimationMaskTexture:yr,uvAnimationScrollXSpeedFactor:wr,uvAnimationScrollYSpeedFactor:ke,uvAnimationRotationSpeedFactor:Sr};return wi(z({},e),{pbrMetallicRoughness:{baseColorFactor:rr,baseColorTexture:or},normalTexture:ar,emissiveTexture:ur,emissiveFactor:lr,alphaMode:tr,alphaCutoff:nr,doubleSided:ir,extensions:{VRMC_materials_mtoon:Ar}})}_parseV0UnlitProperties(t,e){var n,i,r,o,s;let l=t.shader==="VRM/UnlitTransparentZWrite",a=t.shader==="VRM/UnlitTransparent"||l,u=this._v0ParseRenderQueue(t),d=t.shader==="VRM/UnlitCutout",h=a?"BLEND":d?"MASK":"OPAQUE",c=d?(i=(n=t.floatProperties)==null?void 0:n._Cutoff)!=null?i:.5:void 0,p=this._portTextureTransform(t),f=((o=(r=t.vectorProperties)==null?void 0:r._Color)!=null?o:[1,1,1,1]).map(Ee),m=(s=t.textureProperties)==null?void 0:s._MainTex,g=m!=null?{index:m,extensions:z({},p)}:void 0,_={specVersion:"1.0",transparentWithZWrite:l,renderQueueOffsetNumber:u,shadeColorFactor:f,shadeMultiplyTexture:g};return wi(z({},e),{pbrMetallicRoughness:{baseColorFactor:f,baseColorTexture:g},alphaMode:h,alphaCutoff:c,extensions:{VRMC_materials_mtoon:_}})}_portTextureTransform(t){var e,n,i,r,o;let s=(e=t.vectorProperties)==null?void 0:e._MainTex;if(s==null)return{};let l=[(n=s==null?void 0:s[0])!=null?n:0,(i=s==null?void 0:s[1])!=null?i:0],a=[(r=s==null?void 0:s[2])!=null?r:1,(o=s==null?void 0:s[3])!=null?o:1];return l[1]=1-a[1]-l[1],{KHR_texture_transform:{offset:l,scale:a}}}_v0ParseRenderQueue(t){var e,n;let i=t.shader==="VRM/UnlitTransparentZWrite",r=((e=t.keywordMap)==null?void 0:e._ALPHABLEND_ON)!=null||t.shader==="VRM/UnlitTransparent"||i,o=((n=t.floatProperties)==null?void 0:n._ZWrite)===1||i,s=0;if(r){let l=t.renderQueue;l!=null&&(o?s=this._renderQueueMapTransparentZWrite.get(l):s=this._renderQueueMapTransparent.get(l))}return s}_populateRenderQueueMap(t){let e=new Set,n=new Set;t.forEach(i=>{var r,o;let s=i.shader==="VRM/UnlitTransparentZWrite",l=((r=i.keywordMap)==null?void 0:r._ALPHABLEND_ON)!=null||i.shader==="VRM/UnlitTransparent"||s,a=((o=i.floatProperties)==null?void 0:o._ZWrite)===1||s;if(l){let u=i.renderQueue;u!=null&&(a?n.add(u):e.add(u))}}),e.size>10&&console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${e.size} render queues for Transparent materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`),n.size>10&&console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${n.size} render queues for TransparentZWrite materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`),Array.from(e).sort().forEach((i,r)=>{let o=Math.min(Math.max(r-e.size+1,-9),0);this._renderQueueMapTransparent.set(i,o)}),Array.from(n).sort().forEach((i,r)=>{let o=Math.min(Math.max(r,0),9);this._renderQueueMapTransparentZWrite.set(i,o)})}};var B=v(require("three"),1),j=v(require("three"),1),Ft=v(require("three"),1),Ve=v(require("three"),1),q=v(require("three"),1);var Pi=(t,e,n)=>new Promise((i,r)=>{var o=a=>{try{l(n.next(a))}catch(u){r(u)}},s=a=>{try{l(n.throw(a))}catch(u){r(u)}},l=a=>a.done?i(a.value):Promise.resolve(a.value).then(o,s);l((n=n.apply(t,e)).next())}),te=new B.Vector3,rt=class extends B.Group{constructor(t){super(),this._attrPosition=new B.BufferAttribute(new Float32Array([0,0,0,0,0,0]),3),this._attrPosition.setUsage(B.DynamicDrawUsage);let e=new B.BufferGeometry;e.setAttribute("position",this._attrPosition);let n=new B.LineBasicMaterial({color:16711935,depthTest:!1,depthWrite:!1});this._line=new B.Line(e,n),this.add(this._line),this.constraint=t}updateMatrixWorld(t){te.setFromMatrixPosition(this.constraint.destination.matrixWorld),this._attrPosition.setXYZ(0,te.x,te.y,te.z),this.constraint.source&&te.setFromMatrixPosition(this.constraint.source.matrixWorld),this._attrPosition.setXYZ(1,te.x,te.y,te.z),this._attrPosition.needsUpdate=!0,super.updateMatrixWorld(t)}};function bi(t,e){return e.set(t.elements[12],t.elements[13],t.elements[14])}var Ao=new Ft.Vector3,Po=new Ft.Vector3;function bo(t,e){return t.decompose(Ao,e,Po),e}function ot(t){return t.invert?t.invert():t.inverse(),t}var st=class{constructor(t,e){this.destination=t,this.source=e,this.weight=1}},Ho=new j.Vector3,Lo=new j.Vector3,Io=new j.Vector3,Vo=new j.Quaternion,Co=new j.Quaternion,Oo=new j.Quaternion,Hi=class extends st{get aimAxis(){return this._aimAxis}set aimAxis(t){this._aimAxis=t,this._v3AimAxis.set(t==="PositiveX"?1:t==="NegativeX"?-1:0,t==="PositiveY"?1:t==="NegativeY"?-1:0,t==="PositiveZ"?1:t==="NegativeZ"?-1:0)}get dependencies(){let t=new Set([this.source]);return this.destination.parent&&t.add(this.destination.parent),t}constructor(t,e){super(t,e),this._aimAxis="PositiveX",this._v3AimAxis=new j.Vector3(1,0,0),this._dstRestQuat=new j.Quaternion}setInitState(){this._dstRestQuat.copy(this.destination.quaternion)}update(){this.destination.updateWorldMatrix(!0,!1),this.source.updateWorldMatrix(!0,!1);let t=Vo.identity(),e=Co.identity();this.destination.parent&&(bo(this.destination.parent.matrixWorld,t),ot(e.copy(t)));let n=Ho.copy(this._v3AimAxis).applyQuaternion(this._dstRestQuat).applyQuaternion(t),i=bi(this.source.matrixWorld,Lo).sub(bi(this.destination.matrixWorld,Io)).normalize(),r=Oo.setFromUnitVectors(n,i).premultiply(e).multiply(t).multiply(this._dstRestQuat);this.destination.quaternion.copy(this._dstRestQuat).slerp(r,this.weight)}};function Uo(t,e){let n=[t],i=t.parent;for(;i!==null;)n.unshift(i),i=i.parent;n.forEach(r=>{e(r)})}var Li=class{constructor(){this._constraints=new Set,this._objectConstraintsMap=new Map}get constraints(){return this._constraints}addConstraint(t){this._constraints.add(t);let e=this._objectConstraintsMap.get(t.destination);e==null&&(e=new Set,this._objectConstraintsMap.set(t.destination,e)),e.add(t)}deleteConstraint(t){this._constraints.delete(t),this._objectConstraintsMap.get(t.destination).delete(t)}setInitState(){let t=new Set,e=new Set;for(let n of this._constraints)this._processConstraint(n,t,e,i=>i.setInitState())}update(){let t=new Set,e=new Set;for(let n of this._constraints)this._processConstraint(n,t,e,i=>i.update())}_processConstraint(t,e,n,i){if(n.has(t))return;if(e.has(t))throw new Error("VRMNodeConstraintManager: Circular dependency detected while updating constraints");e.add(t);let r=t.dependencies;for(let o of r)Uo(o,s=>{let l=this._objectConstraintsMap.get(s);if(l)for(let a of l)this._processConstraint(a,e,n,i)});i(t),n.add(t)}},Bo=new Ve.Quaternion,No=new Ve.Quaternion,Ii=class extends st{get dependencies(){return new Set([this.source])}constructor(t,e){super(t,e),this._dstRestQuat=new Ve.Quaternion,this._invSrcRestQuat=new Ve.Quaternion}setInitState(){this._dstRestQuat.copy(this.destination.quaternion),ot(this._invSrcRestQuat.copy(this.source.quaternion))}update(){let t=Bo.copy(this._invSrcRestQuat).multiply(this.source.quaternion),e=No.copy(this._dstRestQuat).multiply(t);this.destination.quaternion.copy(this._dstRestQuat).slerp(e,this.weight)}},Do=new q.Vector3,Fo=new q.Quaternion,ko=new q.Quaternion,Vi=class extends st{get rollAxis(){return this._rollAxis}set rollAxis(t){this._rollAxis=t,this._v3RollAxis.set(t==="X"?1:0,t==="Y"?1:0,t==="Z"?1:0)}get dependencies(){return new Set([this.source])}constructor(t,e){super(t,e),this._rollAxis="X",this._v3RollAxis=new q.Vector3(1,0,0),this._dstRestQuat=new q.Quaternion,this._invDstRestQuat=new q.Quaternion,this._invSrcRestQuatMulDstRestQuat=new q.Quaternion}setInitState(){this._dstRestQuat.copy(this.destination.quaternion),ot(this._invDstRestQuat.copy(this._dstRestQuat)),ot(this._invSrcRestQuatMulDstRestQuat.copy(this.source.quaternion)).multiply(this._dstRestQuat)}update(){let t=Fo.copy(this._invDstRestQuat).multiply(this.source.quaternion).multiply(this._invSrcRestQuatMulDstRestQuat),e=Do.copy(this._v3RollAxis).applyQuaternion(t),i=ko.setFromUnitVectors(e,this._v3RollAxis).premultiply(this._dstRestQuat).multiply(t);this.destination.quaternion.copy(this._dstRestQuat).slerp(i,this.weight)}},Wo=new Set(["1.0","1.0-beta"]),Ci=class Ie{get name(){return Ie.EXTENSION_NAME}constructor(e,n){this.parser=e,this.helperRoot=n==null?void 0:n.helperRoot}afterRoot(e){return Pi(this,null,function*(){e.userData.vrmNodeConstraintManager=yield this._import(e)})}_import(e){return Pi(this,null,function*(){var n;let i=this.parser.json;if(!(((n=i.extensionsUsed)==null?void 0:n.indexOf(Ie.EXTENSION_NAME))!==-1))return null;let o=new Li,s=yield this.parser.getDependencies("node");return s.forEach((l,a)=>{var u;let d=i.nodes[a],h=(u=d==null?void 0:d.extensions)==null?void 0:u[Ie.EXTENSION_NAME];if(h==null)return;let c=h.specVersion;if(!Wo.has(c)){console.warn(`VRMNodeConstraintLoaderPlugin: Unknown ${Ie.EXTENSION_NAME} specVersion "${c}"`);return}let p=h.constraint;if(p.roll!=null){let f=this._importRollConstraint(l,s,p.roll);o.addConstraint(f)}else if(p.aim!=null){let f=this._importAimConstraint(l,s,p.aim);o.addConstraint(f)}else if(p.rotation!=null){let f=this._importRotationConstraint(l,s,p.rotation);o.addConstraint(f)}}),e.scene.updateMatrixWorld(),o.setInitState(),o})}_importRollConstraint(e,n,i){let{source:r,rollAxis:o,weight:s}=i,l=n[r],a=new Vi(e,l);if(o!=null&&(a.rollAxis=o),s!=null&&(a.weight=s),this.helperRoot){let u=new rt(a);this.helperRoot.add(u)}return a}_importAimConstraint(e,n,i){let{source:r,aimAxis:o,weight:s}=i,l=n[r],a=new Hi(e,l);if(o!=null&&(a.aimAxis=o),s!=null&&(a.weight=s),this.helperRoot){let u=new rt(a);this.helperRoot.add(u)}return a}_importRotationConstraint(e,n,i){let{source:r,weight:o}=i,s=n[r],l=new Ii(e,s);if(o!=null&&(l.weight=o),this.helperRoot){let a=new rt(l);this.helperRoot.add(a)}return l}};Ci.EXTENSION_NAME="VRMC_node_constraint";var kt=Ci;var ie=v(require("three"),1),Be=v(require("three"),1),Te=v(require("three"),1),qt=v(require("three"),1),Z=v(require("three"),1),ne=v(require("three"),1),he=v(require("three"),1),re=v(require("three"),1),ce=v(require("three"),1),ht=v(require("three"),1),O=v(require("three"),1),Ni=v(require("three"),1),Di=v(require("three"),1),D=v(require("three"),1);var at=(t,e,n)=>new Promise((i,r)=>{var o=a=>{try{l(n.next(a))}catch(u){r(u)}},s=a=>{try{l(n.throw(a))}catch(u){r(u)}},l=a=>a.done?i(a.value):Promise.resolve(a.value).then(o,s);l((n=n.apply(t,e)).next())}),dt=class{},Wt=new Be.Vector3,de=new Be.Vector3,Qt=class extends dt{get type(){return"capsule"}constructor(t){var e,n,i,r;super(),this.offset=(e=t==null?void 0:t.offset)!=null?e:new Be.Vector3(0,0,0),this.tail=(n=t==null?void 0:t.tail)!=null?n:new Be.Vector3(0,0,0),this.radius=(i=t==null?void 0:t.radius)!=null?i:0,this.inside=(r=t==null?void 0:t.inside)!=null?r:!1}calculateCollision(t,e,n,i){Wt.setFromMatrixPosition(t),de.subVectors(this.tail,this.offset).applyMatrix4(t),de.sub(Wt);let r=de.lengthSq();i.copy(e).sub(Wt);let o=de.dot(i);o<=0||(r<=o||de.multiplyScalar(o/r),i.sub(de));let s=i.length(),l=this.inside?this.radius-n-s:s-n-this.radius;return l<0&&(i.multiplyScalar(1/s),this.inside&&i.negate()),l}},Gt=new Te.Vector3,Oi=new Te.Matrix3,Yt=class extends dt{get type(){return"plane"}constructor(t){var e,n;super(),this.offset=(e=t==null?void 0:t.offset)!=null?e:new Te.Vector3(0,0,0),this.normal=(n=t==null?void 0:t.normal)!=null?n:new Te.Vector3(0,0,1)}calculateCollision(t,e,n,i){i.setFromMatrixPosition(t),i.negate().add(e),Oi.getNormalMatrix(t),Gt.copy(this.normal).applyNormalMatrix(Oi).normalize();let r=i.dot(Gt)-n;return i.copy(Gt),r}},Go=new qt.Vector3,Zt=class extends dt{get type(){return"sphere"}constructor(t){var e,n,i;super(),this.offset=(e=t==null?void 0:t.offset)!=null?e:new qt.Vector3(0,0,0),this.radius=(n=t==null?void 0:t.radius)!=null?n:0,this.inside=(i=t==null?void 0:t.inside)!=null?i:!1}calculateCollision(t,e,n,i){i.subVectors(e,Go.setFromMatrixPosition(t));let r=i.length(),o=this.inside?this.radius-n-r:r-n-this.radius;return o<0&&(i.multiplyScalar(1/r),this.inside&&i.negate()),o}},X=new Z.Vector3,zo=class extends Z.BufferGeometry{constructor(t){super(),this.worldScale=1,this._currentRadius=0,this._currentOffset=new Z.Vector3,this._currentTail=new Z.Vector3,this._shape=t,this._attrPos=new Z.BufferAttribute(new Float32Array(396),3),this.setAttribute("position",this._attrPos),this._attrIndex=new Z.BufferAttribute(new Uint16Array(264),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let t=!1,e=this._shape.radius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,t=!0),this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),t=!0);let n=X.copy(this._shape.tail).divideScalar(this.worldScale);this._currentTail.distanceToSquared(n)>1e-10&&(this._currentTail.copy(n),t=!0),t&&this._buildPosition()}_buildPosition(){X.copy(this._currentTail).sub(this._currentOffset);let t=X.length()/this._currentRadius;for(let i=0;i<=16;i++){let r=i/16*Math.PI;this._attrPos.setXYZ(i,-Math.sin(r),-Math.cos(r),0),this._attrPos.setXYZ(17+i,t+Math.sin(r),Math.cos(r),0),this._attrPos.setXYZ(34+i,-Math.sin(r),0,-Math.cos(r)),this._attrPos.setXYZ(51+i,t+Math.sin(r),0,Math.cos(r))}for(let i=0;i<32;i++){let r=i/16*Math.PI;this._attrPos.setXYZ(68+i,0,Math.sin(r),Math.cos(r)),this._attrPos.setXYZ(100+i,t,Math.sin(r),Math.cos(r))}let e=Math.atan2(X.y,Math.sqrt(X.x*X.x+X.z*X.z)),n=-Math.atan2(X.z,X.x);this.rotateZ(e),this.rotateY(n),this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let t=0;t<34;t++){let e=(t+1)%34;this._attrIndex.setXY(t*2,t,e),this._attrIndex.setXY(68+t*2,34+t,34+e)}for(let t=0;t<32;t++){let e=(t+1)%32;this._attrIndex.setXY(136+t*2,68+t,68+e),this._attrIndex.setXY(200+t*2,100+t,100+e)}this._attrIndex.needsUpdate=!0}},jo=class extends ne.BufferGeometry{constructor(t){super(),this.worldScale=1,this._currentOffset=new ne.Vector3,this._currentNormal=new ne.Vector3,this._shape=t,this._attrPos=new ne.BufferAttribute(new Float32Array(18),3),this.setAttribute("position",this._attrPos),this._attrIndex=new ne.BufferAttribute(new Uint16Array(10),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let t=!1;this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),t=!0),this._currentNormal.equals(this._shape.normal)||(this._currentNormal.copy(this._shape.normal),t=!0),t&&this._buildPosition()}_buildPosition(){this._attrPos.setXYZ(0,-.5,-.5,0),this._attrPos.setXYZ(1,.5,-.5,0),this._attrPos.setXYZ(2,.5,.5,0),this._attrPos.setXYZ(3,-.5,.5,0),this._attrPos.setXYZ(4,0,0,0),this._attrPos.setXYZ(5,0,0,.25),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this.lookAt(this._currentNormal),this._attrPos.needsUpdate=!0}_buildIndex(){this._attrIndex.setXY(0,0,1),this._attrIndex.setXY(2,1,2),this._attrIndex.setXY(4,2,3),this._attrIndex.setXY(6,3,0),this._attrIndex.setXY(8,4,5),this._attrIndex.needsUpdate=!0}},Xo=class extends he.BufferGeometry{constructor(t){super(),this.worldScale=1,this._currentRadius=0,this._currentOffset=new he.Vector3,this._shape=t,this._attrPos=new he.BufferAttribute(new Float32Array(288),3),this.setAttribute("position",this._attrPos),this._attrIndex=new he.BufferAttribute(new Uint16Array(192),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let t=!1,e=this._shape.radius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,t=!0),this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),t=!0),t&&this._buildPosition()}_buildPosition(){for(let t=0;t<32;t++){let e=t/16*Math.PI;this._attrPos.setXYZ(t,Math.cos(e),Math.sin(e),0),this._attrPos.setXYZ(32+t,0,Math.cos(e),Math.sin(e)),this._attrPos.setXYZ(64+t,Math.sin(e),0,Math.cos(e))}this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let t=0;t<32;t++){let e=(t+1)%32;this._attrIndex.setXY(t*2,t,e),this._attrIndex.setXY(64+t*2,32+t,32+e),this._attrIndex.setXY(128+t*2,64+t,64+e)}this._attrIndex.needsUpdate=!0}},Qo=new ie.Vector3,lt=class extends ie.Group{constructor(t){if(super(),this.matrixAutoUpdate=!1,this.collider=t,this.collider.shape instanceof Zt)this._geometry=new Xo(this.collider.shape);else if(this.collider.shape instanceof Qt)this._geometry=new zo(this.collider.shape);else if(this.collider.shape instanceof Yt)this._geometry=new jo(this.collider.shape);else throw new Error("VRMSpringBoneColliderHelper: Unknown collider shape type detected");let e=new ie.LineBasicMaterial({color:16711935,depthTest:!1,depthWrite:!1});this._line=new ie.LineSegments(this._geometry,e),this.add(this._line)}dispose(){this._geometry.dispose()}updateMatrixWorld(t){this.collider.updateWorldMatrix(!0,!1),this.matrix.copy(this.collider.matrixWorld);let e=this.matrix.elements;this._geometry.worldScale=Qo.set(e[0],e[1],e[2]).length(),this._geometry.update(),super.updateMatrixWorld(t)}},Yo=class extends ce.BufferGeometry{constructor(t){super(),this.worldScale=1,this._currentRadius=0,this._currentTail=new ce.Vector3,this._springBone=t,this._attrPos=new ce.BufferAttribute(new Float32Array(294),3),this.setAttribute("position",this._attrPos),this._attrIndex=new ce.BufferAttribute(new Uint16Array(194),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let t=!1,e=this._springBone.settings.hitRadius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,t=!0),this._currentTail.equals(this._springBone.initialLocalChildPosition)||(this._currentTail.copy(this._springBone.initialLocalChildPosition),t=!0),t&&this._buildPosition()}_buildPosition(){for(let t=0;t<32;t++){let e=t/16*Math.PI;this._attrPos.setXYZ(t,Math.cos(e),Math.sin(e),0),this._attrPos.setXYZ(32+t,0,Math.cos(e),Math.sin(e)),this._attrPos.setXYZ(64+t,Math.sin(e),0,Math.cos(e))}this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.setXYZ(96,0,0,0),this._attrPos.setXYZ(97,this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let t=0;t<32;t++){let e=(t+1)%32;this._attrIndex.setXY(t*2,t,e),this._attrIndex.setXY(64+t*2,32+t,32+e),this._attrIndex.setXY(128+t*2,64+t,64+e)}this._attrIndex.setXY(192,96,97),this._attrIndex.needsUpdate=!0}},qo=new re.Vector3,Bi=class extends re.Group{constructor(t){super(),this.matrixAutoUpdate=!1,this.springBone=t,this._geometry=new Yo(this.springBone);let e=new re.LineBasicMaterial({color:16776960,depthTest:!1,depthWrite:!1});this._line=new re.LineSegments(this._geometry,e),this.add(this._line)}dispose(){this._geometry.dispose()}updateMatrixWorld(t){this.springBone.bone.updateWorldMatrix(!0,!1),this.matrix.copy(this.springBone.bone.matrixWorld);let e=this.matrix.elements;this._geometry.worldScale=qo.set(e[0],e[1],e[2]).length(),this._geometry.update(),super.updateMatrixWorld(t)}},ut=class extends ht.Object3D{constructor(t){super(),this.colliderMatrix=new ht.Matrix4,this.shape=t}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),Zo(this.colliderMatrix,this.matrixWorld,this.shape.offset)}};function Zo(t,e,n){let i=e.elements;t.copy(e),n&&(t.elements[12]=i[0]*n.x+i[4]*n.y+i[8]*n.z+i[12],t.elements[13]=i[1]*n.x+i[5]*n.y+i[9]*n.z+i[13],t.elements[14]=i[2]*n.x+i[6]*n.y+i[10]*n.z+i[14])}var $o=new Di.Matrix4;function Jo(t){return t.invert?t.invert():t.getInverse($o.copy(t)),t}var Ko=class{constructor(t){this._inverseCache=new Ni.Matrix4,this._shouldUpdateInverse=!0,this.matrix=t;let e={set:(n,i,r)=>(this._shouldUpdateInverse=!0,n[i]=r,!0)};this._originalElements=t.elements,t.elements=new Proxy(t.elements,e)}get inverse(){return this._shouldUpdateInverse&&(Jo(this._inverseCache.copy(this.matrix)),this._shouldUpdateInverse=!1),this._inverseCache}revert(){this.matrix.elements=this._originalElements}},zt=new O.Matrix4,Me=new O.Vector3,Ce=new O.Vector3,Oe=new O.Vector3,Ue=new O.Vector3,es=new O.Matrix4,Fi=class{constructor(t,e,n={},i=[]){this._currentTail=new O.Vector3,this._prevTail=new O.Vector3,this._boneAxis=new O.Vector3,this._worldSpaceBoneLength=0,this._center=null,this._initialLocalMatrix=new O.Matrix4,this._initialLocalRotation=new O.Quaternion,this._initialLocalChildPosition=new O.Vector3;var r,o,s,l,a,u;this.bone=t,this.bone.matrixAutoUpdate=!1,this.child=e,this.settings={hitRadius:(r=n.hitRadius)!=null?r:0,stiffness:(o=n.stiffness)!=null?o:1,gravityPower:(s=n.gravityPower)!=null?s:0,gravityDir:(a=(l=n.gravityDir)==null?void 0:l.clone())!=null?a:new O.Vector3(0,-1,0),dragForce:(u=n.dragForce)!=null?u:.4},this.colliderGroups=i}get dependencies(){let t=new Set,e=this.bone.parent;e&&t.add(e);for(let n=0;n<this.colliderGroups.length;n++)for(let i=0;i<this.colliderGroups[n].colliders.length;i++)t.add(this.colliderGroups[n].colliders[i]);return t}get center(){return this._center}set center(t){var e;(e=this._center)!=null&&e.userData.inverseCacheProxy&&(this._center.userData.inverseCacheProxy.revert(),delete this._center.userData.inverseCacheProxy),this._center=t,this._center&&(this._center.userData.inverseCacheProxy||(this._center.userData.inverseCacheProxy=new Ko(this._center.matrixWorld)))}get initialLocalChildPosition(){return this._initialLocalChildPosition}get _parentMatrixWorld(){return this.bone.parent?this.bone.parent.matrixWorld:zt}setInitState(){this._initialLocalMatrix.copy(this.bone.matrix),this._initialLocalRotation.copy(this.bone.quaternion),this.child?this._initialLocalChildPosition.copy(this.child.position):this._initialLocalChildPosition.copy(this.bone.position).normalize().multiplyScalar(.07);let t=this._getMatrixWorldToCenter();this.bone.localToWorld(this._currentTail.copy(this._initialLocalChildPosition)).applyMatrix4(t),this._prevTail.copy(this._currentTail),this._boneAxis.copy(this._initialLocalChildPosition).normalize()}reset(){this.bone.quaternion.copy(this._initialLocalRotation),this.bone.updateMatrix(),this.bone.matrixWorld.multiplyMatrices(this._parentMatrixWorld,this.bone.matrix);let t=this._getMatrixWorldToCenter();this.bone.localToWorld(this._currentTail.copy(this._initialLocalChildPosition)).applyMatrix4(t),this._prevTail.copy(this._currentTail)}update(t){if(t<=0)return;this._calcWorldSpaceBoneLength();let e=Ce.copy(this._boneAxis).transformDirection(this._initialLocalMatrix).transformDirection(this._parentMatrixWorld);Ue.copy(this._currentTail).add(Me.subVectors(this._currentTail,this._prevTail).multiplyScalar(1-this.settings.dragForce)).applyMatrix4(this._getMatrixCenterToWorld()).addScaledVector(e,this.settings.stiffness*t).addScaledVector(this.settings.gravityDir,this.settings.gravityPower*t),Oe.setFromMatrixPosition(this.bone.matrixWorld),Ue.sub(Oe).normalize().multiplyScalar(this._worldSpaceBoneLength).add(Oe),this._collision(Ue),this._prevTail.copy(this._currentTail),this._currentTail.copy(Ue).applyMatrix4(this._getMatrixWorldToCenter());let n=es.multiplyMatrices(this._parentMatrixWorld,this._initialLocalMatrix).invert();this.bone.quaternion.setFromUnitVectors(this._boneAxis,Me.copy(Ue).applyMatrix4(n).normalize()).premultiply(this._initialLocalRotation),this.bone.updateMatrix(),this.bone.matrixWorld.multiplyMatrices(this._parentMatrixWorld,this.bone.matrix)}_collision(t){for(let e=0;e<this.colliderGroups.length;e++)for(let n=0;n<this.colliderGroups[e].colliders.length;n++){let i=this.colliderGroups[e].colliders[n],r=i.shape.calculateCollision(i.colliderMatrix,t,this.settings.hitRadius,Me);if(r<0){t.addScaledVector(Me,-r),t.sub(Oe);let o=t.length();t.multiplyScalar(this._worldSpaceBoneLength/o).add(Oe)}}}_calcWorldSpaceBoneLength(){Me.setFromMatrixPosition(this.bone.matrixWorld),this.child?Ce.setFromMatrixPosition(this.child.matrixWorld):(Ce.copy(this._initialLocalChildPosition),Ce.applyMatrix4(this.bone.matrixWorld)),this._worldSpaceBoneLength=Me.sub(Ce).length()}_getMatrixCenterToWorld(){return this._center?this._center.matrixWorld:zt}_getMatrixWorldToCenter(){return this._center?this._center.userData.inverseCacheProxy.inverse:zt}};function ts(t,e){let n=[],i=t;for(;i!==null;)n.unshift(i),i=i.parent;n.forEach(r=>{e(r)})}function jt(t,e){t.children.forEach(n=>{e(n)||jt(n,e)})}function ns(t){var e;let n=new Map;for(let i of t){let r=i;do{let o=((e=n.get(r))!=null?e:0)+1;if(o===t.size)return r;n.set(r,o),r=r.parent}while(r!==null)}return null}var Xt=class{constructor(){this._joints=new Set,this._sortedJoints=[],this._hasWarnedCircularDependency=!1,this._ancestors=[],this._objectSpringBonesMap=new Map,this._isSortedJointsDirty=!1,this._relevantChildrenUpdated=this._relevantChildrenUpdated.bind(this)}get joints(){return this._joints}get springBones(){return console.warn("VRMSpringBoneManager: springBones is deprecated. use joints instead."),this._joints}get colliderGroups(){let t=new Set;return this._joints.forEach(e=>{e.colliderGroups.forEach(n=>{t.add(n)})}),Array.from(t)}get colliders(){let t=new Set;return this.colliderGroups.forEach(e=>{e.colliders.forEach(n=>{t.add(n)})}),Array.from(t)}addJoint(t){this._joints.add(t);let e=this._objectSpringBonesMap.get(t.bone);e==null&&(e=new Set,this._objectSpringBonesMap.set(t.bone,e)),e.add(t),this._isSortedJointsDirty=!0}addSpringBone(t){console.warn("VRMSpringBoneManager: addSpringBone() is deprecated. use addJoint() instead."),this.addJoint(t)}deleteJoint(t){this._joints.delete(t),this._objectSpringBonesMap.get(t.bone).delete(t),this._isSortedJointsDirty=!0}deleteSpringBone(t){console.warn("VRMSpringBoneManager: deleteSpringBone() is deprecated. use deleteJoint() instead."),this.deleteJoint(t)}setInitState(){this._sortJoints();for(let t=0;t<this._sortedJoints.length;t++){let e=this._sortedJoints[t];e.bone.updateMatrix(),e.bone.updateWorldMatrix(!1,!1),e.setInitState()}}reset(){this._sortJoints();for(let t=0;t<this._sortedJoints.length;t++){let e=this._sortedJoints[t];e.bone.updateMatrix(),e.bone.updateWorldMatrix(!1,!1),e.reset()}}update(t){this._sortJoints();for(let e=0;e<this._ancestors.length;e++)this._ancestors[e].updateWorldMatrix(e===0,!1);for(let e=0;e<this._sortedJoints.length;e++){let n=this._sortedJoints[e];n.bone.updateMatrix(),n.bone.updateWorldMatrix(!1,!1),n.update(t),jt(n.bone,this._relevantChildrenUpdated)}}_sortJoints(){if(!this._isSortedJointsDirty)return;let t=[],e=new Set,n=new Set,i=new Set;for(let o of this._joints)this._insertJointSort(o,e,n,t,i);this._sortedJoints=t;let r=ns(i);this._ancestors=[],r&&(this._ancestors.push(r),jt(r,o=>{var s,l;return((l=(s=this._objectSpringBonesMap.get(o))==null?void 0:s.size)!=null?l:0)>0?!0:(this._ancestors.push(o),!1)})),this._isSortedJointsDirty=!1}_insertJointSort(t,e,n,i,r){if(n.has(t))return;if(e.has(t)){this._hasWarnedCircularDependency||(console.warn("VRMSpringBoneManager: Circular dependency detected"),this._hasWarnedCircularDependency=!0);return}e.add(t);let o=t.dependencies;for(let s of o){let l=!1,a=null;ts(s,u=>{let d=this._objectSpringBonesMap.get(u);if(d)for(let h of d)l=!0,this._insertJointSort(h,e,n,i,r);else l||(a=u)}),a&&r.add(a)}i.push(t),n.add(t)}_relevantChildrenUpdated(t){var e,n;return((n=(e=this._objectSpringBonesMap.get(t))==null?void 0:e.size)!=null?n:0)>0?!0:(t.updateWorldMatrix(!1,!1),!1)}},Ui="VRMC_springBone_extended_collider",is=new Set(["1.0","1.0-beta"]),rs=new Set(["1.0"]),ki=class Re{get name(){return Re.EXTENSION_NAME}constructor(e,n){var i;this.parser=e,this.jointHelperRoot=n==null?void 0:n.jointHelperRoot,this.colliderHelperRoot=n==null?void 0:n.colliderHelperRoot,this.useExtendedColliders=(i=n==null?void 0:n.useExtendedColliders)!=null?i:!0}afterRoot(e){return at(this,null,function*(){e.userData.vrmSpringBoneManager=yield this._import(e)})}_import(e){return at(this,null,function*(){let n=yield this._v1Import(e);if(n!=null)return n;let i=yield this._v0Import(e);return i!=null?i:null})}_v1Import(e){return at(this,null,function*(){var n,i,r,o,s;let l=e.parser.json;if(!(((n=l.extensionsUsed)==null?void 0:n.indexOf(Re.EXTENSION_NAME))!==-1))return null;let u=new Xt,d=yield e.parser.getDependencies("node"),h=(i=l.extensions)==null?void 0:i[Re.EXTENSION_NAME];if(!h)return null;let c=h.specVersion;if(!is.has(c))return console.warn(`VRMSpringBoneLoaderPlugin: Unknown ${Re.EXTENSION_NAME} specVersion "${c}"`),null;let p=(r=h.colliders)==null?void 0:r.map((m,g)=>{var _,w,T,R,E,M,S,A,I,b,H,C,J,we,Se;let Q=d[m.node];if(Q==null)return console.warn(`VRMSpringBoneLoaderPlugin: The collider #${g} attempted to use the node #${m.node} but not found`),null;let W=m.shape,pe=(_=m.extensions)==null?void 0:_[Ui];if(this.useExtendedColliders&&pe!=null){let Ae=pe.specVersion;if(!rs.has(Ae))console.warn(`VRMSpringBoneLoaderPlugin: Unknown ${Ui} specVersion "${Ae}". Fallbacking to the ${Re.EXTENSION_NAME} definition`);else{let U=pe.shape;if(U.sphere)return this._importSphereCollider(Q,{offset:new D.Vector3().fromArray((w=U.sphere.offset)!=null?w:[0,0,0]),radius:(T=U.sphere.radius)!=null?T:0,inside:(R=U.sphere.inside)!=null?R:!1});if(U.capsule)return this._importCapsuleCollider(Q,{offset:new D.Vector3().fromArray((E=U.capsule.offset)!=null?E:[0,0,0]),radius:(M=U.capsule.radius)!=null?M:0,tail:new D.Vector3().fromArray((S=U.capsule.tail)!=null?S:[0,0,0]),inside:(A=U.capsule.inside)!=null?A:!1});if(U.plane)return this._importPlaneCollider(Q,{offset:new D.Vector3().fromArray((I=U.plane.offset)!=null?I:[0,0,0]),normal:new D.Vector3().fromArray((b=U.plane.normal)!=null?b:[0,0,1])})}}if(W.sphere)return this._importSphereCollider(Q,{offset:new D.Vector3().fromArray((H=W.sphere.offset)!=null?H:[0,0,0]),radius:(C=W.sphere.radius)!=null?C:0,inside:!1});if(W.capsule)return this._importCapsuleCollider(Q,{offset:new D.Vector3().fromArray((J=W.capsule.offset)!=null?J:[0,0,0]),radius:(we=W.capsule.radius)!=null?we:0,tail:new D.Vector3().fromArray((Se=W.capsule.tail)!=null?Se:[0,0,0]),inside:!1});throw new Error(`VRMSpringBoneLoaderPlugin: The collider #${g} has no valid shape`)}),f=(o=h.colliderGroups)==null?void 0:o.map((m,g)=>{var _;return{colliders:((_=m.colliders)!=null?_:[]).flatMap(T=>{let R=p==null?void 0:p[T];return R==null?(console.warn(`VRMSpringBoneLoaderPlugin: The colliderGroup #${g} attempted to use a collider #${T} but not found`),[]):R}),name:m.name}});return(s=h.springs)==null||s.forEach((m,g)=>{var _;let w=m.joints,T=(_=m.colliderGroups)==null?void 0:_.map(M=>{let S=f==null?void 0:f[M];if(S==null)throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${g} attempted to use a colliderGroup ${M} but not found`);return S}),R=m.center!=null?d[m.center]:void 0,E;w.forEach(M=>{if(E){let S=E.node,A=d[S],I=M.node,b=d[I],H={hitRadius:E.hitRadius,dragForce:E.dragForce,gravityPower:E.gravityPower,stiffness:E.stiffness,gravityDir:E.gravityDir!=null?new D.Vector3().fromArray(E.gravityDir):void 0},C=this._importJoint(A,b,H,T);R&&(C.center=R),u.addJoint(C)}E=M})}),u.setInitState(),u})}_v0Import(e){return at(this,null,function*(){var n,i,r;let o=e.parser.json;if(!(((n=o.extensionsUsed)==null?void 0:n.indexOf("VRM"))!==-1))return null;let l=(i=o.extensions)==null?void 0:i.VRM,a=l==null?void 0:l.secondaryAnimation;if(!a)return null;let u=a==null?void 0:a.boneGroups;if(!u)return null;let d=new Xt,h=yield e.parser.getDependencies("node"),c=(r=a.colliderGroups)==null?void 0:r.map(p=>{var f;let m=h[p.node];return{colliders:((f=p.colliders)!=null?f:[]).map((_,w)=>{var T,R,E;let M=new D.Vector3(0,0,0);return _.offset&&M.set((T=_.offset.x)!=null?T:0,(R=_.offset.y)!=null?R:0,_.offset.z?-_.offset.z:0),this._importSphereCollider(m,{offset:M,radius:(E=_.radius)!=null?E:0,inside:!1})})}});return u==null||u.forEach((p,f)=>{let m=p.bones;m&&m.forEach(g=>{var _,w,T,R;let E=h[g],M=new D.Vector3;p.gravityDir?M.set((_=p.gravityDir.x)!=null?_:0,(w=p.gravityDir.y)!=null?w:0,(T=p.gravityDir.z)!=null?T:0):M.set(0,-1,0);let S=p.center!=null?h[p.center]:void 0,A={hitRadius:p.hitRadius,dragForce:p.dragForce,gravityPower:p.gravityPower,stiffness:p.stiffiness,gravityDir:M},I=(R=p.colliderGroups)==null?void 0:R.map(b=>{let H=c==null?void 0:c[b];if(H==null)throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${f} attempted to use a colliderGroup ${b} but not found`);return H});E.traverse(b=>{var H;let C=(H=b.children[0])!=null?H:null,J=this._importJoint(b,C,A,I);S&&(J.center=S),d.addJoint(J)})})}),e.scene.updateMatrixWorld(),d.setInitState(),d})}_importJoint(e,n,i,r){let o=new Fi(e,n,i,r);if(this.jointHelperRoot){let s=new Bi(o);this.jointHelperRoot.add(s),s.renderOrder=this.jointHelperRoot.renderOrder}return o}_importSphereCollider(e,n){let i=new Zt(n),r=new ut(i);if(e.add(r),this.colliderHelperRoot){let o=new lt(r);this.colliderHelperRoot.add(o),o.renderOrder=this.colliderHelperRoot.renderOrder}return r}_importCapsuleCollider(e,n){let i=new Qt(n),r=new ut(i);if(e.add(r),this.colliderHelperRoot){let o=new lt(r);this.colliderHelperRoot.add(o),o.renderOrder=this.colliderHelperRoot.renderOrder}return r}_importPlaneCollider(e,n){let i=new Yt(n),r=new ut(i);if(e.add(r),this.colliderHelperRoot){let o=new lt(r);this.colliderHelperRoot.add(o),o.renderOrder=this.colliderHelperRoot.renderOrder}return r}};ki.EXTENSION_NAME="VRMC_springBone";var $t=ki;var ct=class{get name(){return"VRMLoaderPlugin"}constructor(e,n){var o,s,l,a,u,d,h,c,p,f;this.parser=e;let i=n==null?void 0:n.helperRoot,r=n==null?void 0:n.autoUpdateHumanBones;this.expressionPlugin=(o=n==null?void 0:n.expressionPlugin)!=null?o:new qe(e),this.firstPersonPlugin=(s=n==null?void 0:n.firstPersonPlugin)!=null?s:new Ze(e),this.humanoidPlugin=(l=n==null?void 0:n.humanoidPlugin)!=null?l:new Je(e,{helperRoot:i,autoUpdateHumanBones:r}),this.lookAtPlugin=(a=n==null?void 0:n.lookAtPlugin)!=null?a:new Ke(e,{helperRoot:i}),this.metaPlugin=(u=n==null?void 0:n.metaPlugin)!=null?u:new et(e),this.mtoonMaterialPlugin=(d=n==null?void 0:n.mtoonMaterialPlugin)!=null?d:new Nt(e),this.materialsHDREmissiveMultiplierPlugin=(h=n==null?void 0:n.materialsHDREmissiveMultiplierPlugin)!=null?h:new Ti(e),this.materialsV0CompatPlugin=(c=n==null?void 0:n.materialsV0CompatPlugin)!=null?c:new Ai(e),this.springBonePlugin=(p=n==null?void 0:n.springBonePlugin)!=null?p:new $t(e,{colliderHelperRoot:i,jointHelperRoot:i}),this.nodeConstraintPlugin=(f=n==null?void 0:n.nodeConstraintPlugin)!=null?f:new kt(e,{helperRoot:i})}beforeRoot(){return Pe(this,null,function*(){yield this.materialsV0CompatPlugin.beforeRoot(),yield this.mtoonMaterialPlugin.beforeRoot()})}loadMesh(e){return Pe(this,null,function*(){return yield this.mtoonMaterialPlugin.loadMesh(e)})}getMaterialType(e){let n=this.mtoonMaterialPlugin.getMaterialType(e);return n!=null?n:null}extendMaterialParams(e,n){return Pe(this,null,function*(){yield this.materialsHDREmissiveMultiplierPlugin.extendMaterialParams(e,n),yield this.mtoonMaterialPlugin.extendMaterialParams(e,n)})}afterRoot(e){return Pe(this,null,function*(){yield this.metaPlugin.afterRoot(e),yield this.humanoidPlugin.afterRoot(e),yield this.expressionPlugin.afterRoot(e),yield this.lookAtPlugin.afterRoot(e),yield this.firstPersonPlugin.afterRoot(e),yield this.springBonePlugin.afterRoot(e),yield this.nodeConstraintPlugin.afterRoot(e),yield this.mtoonMaterialPlugin.afterRoot(e);let n=e.userData.vrmMeta,i=e.userData.vrmHumanoid;if(n&&i){let r=new ve({scene:e.scene,expressionManager:e.userData.vrmExpressionManager,firstPerson:e.userData.vrmFirstPerson,humanoid:i,lookAt:e.userData.vrmLookAt,meta:n,materials:e.userData.vrmMToonMaterials,springBoneManager:e.userData.vrmSpringBoneManager,nodeConstraintManager:e.userData.vrmNodeConstraintManager});e.userData.vrm=r}})}};var Gi=v(require("three"),1);function os(t){let e=new Set;return t.traverse(n=>{if(!n.isMesh)return;let i=n;e.add(i)}),e}function Wi(t,e,n){if(e.size===1){let s=e.values().next().value;if(s.weight===1)return t[s.index]}let i=new Float32Array(t[0].count*3),r=0;if(n)r=1;else for(let s of e)r+=s.weight;for(let s of e){let l=t[s.index],a=s.weight/r;for(let u=0;u<l.count;u++)i[u*3+0]+=l.getX(u)*a,i[u*3+1]+=l.getY(u)*a,i[u*3+2]+=l.getZ(u)*a}return new Gi.BufferAttribute(i,3)}function zi(t){var r;let e=os(t.scene),n=new Map,i=(r=t.expressionManager)==null?void 0:r.expressionMap;if(i!=null)for(let[o,s]of Object.entries(i)){let l=new Set;for(let a of s.binds)if(a instanceof _e){if(a.weight!==0)for(let u of a.primitives){let d=n.get(u);d==null&&(d=new Map,n.set(u,d));let h=d.get(o);h==null&&(h=new Set,d.set(o,h)),h.add(a)}l.add(a)}for(let a of l)s.deleteBind(a)}for(let o of e){let s=n.get(o);if(s==null)continue;let l=o.geometry.morphAttributes;o.geometry.morphAttributes={};let a=o.geometry.clone();o.geometry=a;let u=a.morphTargetsRelative,d=l.position!=null,h=l.normal!=null,c={},p={},f=[];if(d||h){d&&(c.position=[]),h&&(c.normal=[]);let m=0;for(let[g,_]of s)d&&(c.position[m]=Wi(l.position,_,u)),h&&(c.normal[m]=Wi(l.normal,_,u)),i==null||i[g].addBind(new _e({index:m,weight:1,primitives:[o]})),p[g]=m,f.push(0),m++}a.morphAttributes=c,o.morphTargetDictionary=p,o.morphTargetInfluences=f}}var ye=v(require("three"),1);var ji=v(require("three"),1);function xe(t,e,n){if(t.getComponent)return t.getComponent(e,n);{let i=t.array[e*t.itemSize+n];return t.normalized&&(i=ji.MathUtils.denormalize(i,t.array)),i}}var Xi=v(require("three"),1);function pt(t,e,n,i){t.setComponent?t.setComponent(e,n,i):(t.normalized&&(i=Xi.MathUtils.normalize(i,t.array)),t.array[e*t.itemSize+n]=i)}function Qi(t){var d;let e=ss(t),n=new Set;for(let h of e)n.has(h.geometry)&&(h.geometry=cs(h.geometry)),n.add(h.geometry);let i=new Map;for(let h of n){let c=h.getAttribute("skinIndex"),p=(d=i.get(c))!=null?d:new Map;i.set(c,p);let f=h.getAttribute("skinWeight"),m=as(c,f);p.set(f,m)}let r=new Map;for(let h of e){let c=ls(h,i);r.set(h,c)}let o=[];for(let[h,c]of r){let p=!1;for(let f of o)if(us(c,f.boneInverseMap)){p=!0,f.meshes.add(h);for(let[g,_]of c)f.boneInverseMap.set(g,_);break}p||o.push({boneInverseMap:c,meshes:new Set([h])})}let s=new Map,l=new Ne,a=new Ne,u=new Ne;for(let h of o){let{boneInverseMap:c,meshes:p}=h,f=Array.from(c.keys()),m=Array.from(c.values()),g=new ye.Skeleton(f,m),_=a.getOrCreate(g);for(let w of p){let T=w.geometry.getAttribute("skinIndex"),R=l.getOrCreate(T),E=w.skeleton.bones,M=E.map(I=>u.getOrCreate(I)).join(","),S=`${R};${_};${M}`,A=s.get(S);A==null&&(A=T.clone(),ds(A,E,f),s.set(S,A)),w.geometry.setAttribute("skinIndex",A)}for(let w of p)w.bind(g,new ye.Matrix4)}}function ss(t){let e=new Set;return t.traverse(n=>{if(!n.isSkinnedMesh)return;let i=n;e.add(i)}),e}function as(t,e){let n=new Set;for(let i=0;i<t.count;i++)for(let r=0;r<t.itemSize;r++){let o=xe(t,i,r);xe(e,i,r)!==0&&n.add(o)}return n}function ls(t,e){let n=new Map,i=t.skeleton,r=t.geometry,o=r.getAttribute("skinIndex"),s=r.getAttribute("skinWeight"),l=e.get(o),a=l==null?void 0:l.get(s);if(!a)throw new Error("Unreachable. attributeUsedIndexSetMap does not know the skin index attribute or the skin weight attribute.");for(let u of a)n.set(i.bones[u],i.boneInverses[u]);return n}function us(t,e){for(let[n,i]of t.entries()){let r=e.get(n);if(r!=null&&!hs(i,r))return!1}return!0}function ds(t,e,n){let i=new Map;for(let o of e)i.set(o,i.size);let r=new Map;for(let[o,s]of n.entries()){let l=i.get(s);r.set(l,o)}for(let o=0;o<t.count;o++)for(let s=0;s<t.itemSize;s++){let l=xe(t,o,s),a=r.get(l);pt(t,o,s,a)}t.needsUpdate=!0}function hs(t,e,n){if(n=n||1e-4,t.elements.length!=e.elements.length)return!1;for(let i=0,r=t.elements.length;i<r;i++)if(Math.abs(t.elements[i]-e.elements[i])>n)return!1;return!0}var Ne=class{constructor(){this._objectIndexMap=new Map;this._index=0}get(e){return this._objectIndexMap.get(e)}getOrCreate(e){let n=this._objectIndexMap.get(e);return n==null&&(n=this._index,this._objectIndexMap.set(e,n),this._index++),n}};function cs(t){var n,i,r,o;let e=new ye.BufferGeometry;e.name=t.name,e.setIndex(t.index);for(let[s,l]of Object.entries(t.attributes))e.setAttribute(s,l);for(let[s,l]of Object.entries(t.morphAttributes)){let a=s;e.morphAttributes[a]=l.concat()}e.morphTargetsRelative=t.morphTargetsRelative,e.groups=[];for(let s of t.groups)e.addGroup(s.start,s.count,s.materialIndex);return e.boundingSphere=(i=(n=t.boundingSphere)==null?void 0:n.clone())!=null?i:null,e.boundingBox=(o=(r=t.boundingBox)==null?void 0:r.clone())!=null?o:null,e.drawRange.start=t.drawRange.start,e.drawRange.count=t.drawRange.count,e.userData=t.userData,e}function Yi(t){if(Object.values(t).forEach(e=>{e!=null&&e.isTexture&&e.dispose()}),t.isShaderMaterial){let e=t.uniforms;e&&Object.values(e).forEach(n=>{let i=n.value;i!=null&&i.isTexture&&i.dispose()})}t.dispose()}function ps(t){let e=t.geometry;e&&e.dispose();let n=t.skeleton;n&&n.dispose();let i=t.material;i&&(Array.isArray(i)?i.forEach(r=>Yi(r)):i&&Yi(i))}function qi(t){t.traverse(ps)}var ft=v(require("three"),1);function Zi(t,e){var s,l;console.warn("VRMUtils.removeUnnecessaryJoints: removeUnnecessaryJoints is deprecated. Use combineSkeletons instead. combineSkeletons contributes more to the performance improvement. This function will be removed in the next major version.");let n=(s=e==null?void 0:e.experimentalSameBoneCounts)!=null?s:!1,i=[];t.traverse(a=>{a.type==="SkinnedMesh"&&i.push(a)});let r=new Map,o=0;for(let a of i){let d=a.geometry.getAttribute("skinIndex");if(r.has(d))continue;let h=new Map,c=new Map;for(let p=0;p<d.count;p++)for(let f=0;f<d.itemSize;f++){let m=xe(d,p,f),g=h.get(m);g==null&&(g=h.size,h.set(m,g),c.set(g,m)),pt(d,p,f,g)}d.needsUpdate=!0,r.set(d,c),o=Math.max(o,h.size)}for(let a of i){let d=a.geometry.getAttribute("skinIndex"),h=r.get(d),c=[],p=[],f=n?o:h.size;for(let g=0;g<f;g++){let _=(l=h.get(g))!=null?l:0;c.push(a.skeleton.bones[_]),p.push(a.skeleton.boneInverses[_])}let m=new ft.Skeleton(c,p);a.bind(m,new ft.Matrix4)}}var oe=v(require("three"),1),gt=require("three");function fs(t,e){let n=t.position.count,i=new Array(n),r=0,o=e.array;for(let s=0;s<o.length;s++){let l=o[s];i[l]||(i[l]=!0,r++)}return{isVertexUsed:i,vertexCount:n,verticesUsed:r}}function ms(t){let e=[],n=[],i=0;for(let r=0;r<t.length;r++)if(t[r]){let o=i++;e[r]=o,n[o]=r}return{originalIndexNewIndexMap:e,newIndexOriginalIndexMap:n}}function gs(t,e){var n,i,r,o;e.name=t.name,e.morphTargetsRelative=t.morphTargetsRelative,t.groups.forEach(s=>{e.addGroup(s.start,s.count,s.materialIndex)}),e.boundingBox=(i=(n=t.boundingBox)==null?void 0:n.clone())!=null?i:null,e.boundingSphere=(o=(r=t.boundingSphere)==null?void 0:r.clone())!=null?o:null,e.setDrawRange(t.drawRange.start,t.drawRange.count),e.userData=t.userData}function _s(t,e,n){let i=e.array,r=new i.constructor(i.length);for(let o=0;o<i.length;o++){let s=i[o];r[o]=n[s]}t.setIndex(new gt.BufferAttribute(r,e.itemSize,e.normalized))}function mt(t,e,n){let i=t.constructor,r=new i(e.length*n),o=!0;for(let s=0;s<e.length;s++){let a=e[s]*n,u=s*n;for(let d=0;d<n;d++){let h=t[a+d];r[u+d]=h,o=o&&h===0}}return[r,o]}function vs(t){var i;let e=new Map,n=[];for(let[r,o]of Object.entries(t))if(o.isInterleavedBufferAttribute){let s=o,l=s.data,a=(i=e.get(l))!=null?i:[];e.set(l,a),a.push([r,s])}else{let s=o;n.push([r,s])}return[e,n]}function Es(t,e,n){let[i,r]=vs(e);for(let[o,s]of i){let l=o.array,{stride:a}=o,[u,d]=mt(l,n,a),h=new oe.InterleavedBuffer(u,a);h.setUsage(o.usage);for(let[c,p]of s){let{itemSize:f,offset:m,normalized:g}=p,_=new oe.InterleavedBufferAttribute(h,f,m,g);t.setAttribute(c,_)}}for(let[o,s]of r){let l=s.array,{itemSize:a,normalized:u}=s,[d,h]=mt(l,n,a);t.setAttribute(o,new gt.BufferAttribute(d,a,u))}}function Ms(t){var i;let e=new Map,n=[];for(let[r,o]of Object.entries(t)){let s=r;for(let l=0;l<o.length;l++){let a=o[l];if(a.isInterleavedBufferAttribute){let u=a,d=u.data,h=(i=e.get(d))!=null?i:[];e.set(d,h),h.push([s,l,u])}else{let u=a;n.push([s,l,u])}}}return[e,n]}function Rs(t,e,n){var l,a;let i=!0,[r,o]=Ms(e),s={};for(let[u,d]of r){let h=u.array,{stride:c}=u,[p,f]=mt(h,n,c);i=i&&f;let m=new oe.InterleavedBuffer(p,c);m.setUsage(u.usage);for(let[g,_,w]of d){let{itemSize:T,offset:R,normalized:E}=w,M=new oe.InterleavedBufferAttribute(m,T,R,E);(l=s[g])!=null||(s[g]=[]),s[g][_]=M}}for(let[u,d,h]of o){let c=h,p=c.array,{itemSize:f,normalized:m}=c,[g,_]=mt(p,n,f);i=i&&_,(a=s[u])!=null||(s[u]=[]),s[u][d]=new gt.BufferAttribute(g,f,m)}t.morphAttributes=i?{}:s}function $i(t){let e=new Map;t.traverse(n=>{if(!n.isMesh)return;let i=n,r=i.geometry,o=r.index;if(o==null)return;let s=e.get(r);if(s!=null){i.geometry=s;return}let{isVertexUsed:l,vertexCount:a,verticesUsed:u}=fs(r.attributes,o);if(u===a)return;let{originalIndexNewIndexMap:d,newIndexOriginalIndexMap:h}=ms(l),c=new oe.BufferGeometry;gs(r,c),e.set(r,c),_s(c,o,d),Es(c,r.attributes,h),Rs(c,r.morphAttributes,h),i.geometry=c}),Array.from(e.keys()).forEach(n=>{n.dispose()})}function Ji(t){var e;((e=t.meta)==null?void 0:e.metaVersion)==="0"&&(t.scene.rotation.y=Math.PI)}var $=class{constructor(){}};$.combineMorphs=zi,$.combineSkeletons=Qi,$.deepDispose=qi,$.removeUnnecessaryJoints=Zi,$.removeUnnecessaryVertices=$i,$.rotateVRM0=Ji;
936
936
  /*!
937
- * @pixiv/three-vrm-core v3.5.0
937
+ * @pixiv/three-vrm-core v3.5.1
938
938
  * The implementation of core features of VRM, for @pixiv/three-vrm
939
939
  *
940
940
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -942,7 +942,7 @@ void main() {
942
942
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
943
943
  */
944
944
  /*!
945
- * @pixiv/three-vrm-materials-mtoon v3.5.0
945
+ * @pixiv/three-vrm-materials-mtoon v3.5.1
946
946
  * MToon (toon material) module for @pixiv/three-vrm
947
947
  *
948
948
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -950,7 +950,7 @@ void main() {
950
950
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
951
951
  */
952
952
  /*!
953
- * @pixiv/three-vrm-materials-hdr-emissive-multiplier v3.5.0
953
+ * @pixiv/three-vrm-materials-hdr-emissive-multiplier v3.5.1
954
954
  * Support VRMC_hdr_emissiveMultiplier for @pixiv/three-vrm
955
955
  *
956
956
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -958,7 +958,7 @@ void main() {
958
958
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
959
959
  */
960
960
  /*!
961
- * @pixiv/three-vrm-materials-v0compat v3.5.0
961
+ * @pixiv/three-vrm-materials-v0compat v3.5.1
962
962
  * VRM0.0 materials compatibility layer plugin for @pixiv/three-vrm
963
963
  *
964
964
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -966,7 +966,7 @@ void main() {
966
966
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
967
967
  */
968
968
  /*!
969
- * @pixiv/three-vrm-node-constraint v3.5.0
969
+ * @pixiv/three-vrm-node-constraint v3.5.1
970
970
  * Node constraint module for @pixiv/three-vrm
971
971
  *
972
972
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -974,7 +974,7 @@ void main() {
974
974
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
975
975
  */
976
976
  /*!
977
- * @pixiv/three-vrm-springbone v3.5.0
977
+ * @pixiv/three-vrm-springbone v3.5.1
978
978
  * Spring bone module for @pixiv/three-vrm
979
979
  *
980
980
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pixiv/three-vrm v3.5.0
2
+ * @pixiv/three-vrm v3.5.1
3
3
  * VRM file loader for three.js.
4
4
  *
5
5
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6764,7 +6764,7 @@ export {
6764
6764
  VRMUtils
6765
6765
  };
6766
6766
  /*!
6767
- * @pixiv/three-vrm-core v3.5.0
6767
+ * @pixiv/three-vrm-core v3.5.1
6768
6768
  * The implementation of core features of VRM, for @pixiv/three-vrm
6769
6769
  *
6770
6770
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6772,7 +6772,7 @@ export {
6772
6772
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
6773
6773
  */
6774
6774
  /*!
6775
- * @pixiv/three-vrm-materials-mtoon v3.5.0
6775
+ * @pixiv/three-vrm-materials-mtoon v3.5.1
6776
6776
  * MToon (toon material) module for @pixiv/three-vrm
6777
6777
  *
6778
6778
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6780,7 +6780,7 @@ export {
6780
6780
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
6781
6781
  */
6782
6782
  /*!
6783
- * @pixiv/three-vrm-materials-hdr-emissive-multiplier v3.5.0
6783
+ * @pixiv/three-vrm-materials-hdr-emissive-multiplier v3.5.1
6784
6784
  * Support VRMC_hdr_emissiveMultiplier for @pixiv/three-vrm
6785
6785
  *
6786
6786
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6788,7 +6788,7 @@ export {
6788
6788
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
6789
6789
  */
6790
6790
  /*!
6791
- * @pixiv/three-vrm-materials-v0compat v3.5.0
6791
+ * @pixiv/three-vrm-materials-v0compat v3.5.1
6792
6792
  * VRM0.0 materials compatibility layer plugin for @pixiv/three-vrm
6793
6793
  *
6794
6794
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6796,7 +6796,7 @@ export {
6796
6796
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
6797
6797
  */
6798
6798
  /*!
6799
- * @pixiv/three-vrm-node-constraint v3.5.0
6799
+ * @pixiv/three-vrm-node-constraint v3.5.1
6800
6800
  * Node constraint module for @pixiv/three-vrm
6801
6801
  *
6802
6802
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -6804,7 +6804,7 @@ export {
6804
6804
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
6805
6805
  */
6806
6806
  /*!
6807
- * @pixiv/three-vrm-springbone v3.5.0
6807
+ * @pixiv/three-vrm-springbone v3.5.1
6808
6808
  * Spring bone module for @pixiv/three-vrm
6809
6809
  *
6810
6810
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -934,7 +934,7 @@ void main() {
934
934
  `)+`
935
935
  `;n.vertexShader=r+n.vertexShader,n.fragmentShader=r+n.fragmentShader,i<154&&(n.fragmentShader=n.fragmentShader.replace("#include <colorspace_fragment>","#include <encodings_fragment>"))}}get color(){return this.uniforms.litFactor.value}set color(t){this.uniforms.litFactor.value=t}get map(){return this.uniforms.map.value}set map(t){this.uniforms.map.value=t}get normalMap(){return this.uniforms.normalMap.value}set normalMap(t){this.uniforms.normalMap.value=t}get normalScale(){return this.uniforms.normalScale.value}set normalScale(t){this.uniforms.normalScale.value=t}get emissive(){return this.uniforms.emissive.value}set emissive(t){this.uniforms.emissive.value=t}get emissiveIntensity(){return this.uniforms.emissiveIntensity.value}set emissiveIntensity(t){this.uniforms.emissiveIntensity.value=t}get emissiveMap(){return this.uniforms.emissiveMap.value}set emissiveMap(t){this.uniforms.emissiveMap.value=t}get shadeColorFactor(){return this.uniforms.shadeColorFactor.value}set shadeColorFactor(t){this.uniforms.shadeColorFactor.value=t}get shadeMultiplyTexture(){return this.uniforms.shadeMultiplyTexture.value}set shadeMultiplyTexture(t){this.uniforms.shadeMultiplyTexture.value=t}get shadingShiftFactor(){return this.uniforms.shadingShiftFactor.value}set shadingShiftFactor(t){this.uniforms.shadingShiftFactor.value=t}get shadingShiftTexture(){return this.uniforms.shadingShiftTexture.value}set shadingShiftTexture(t){this.uniforms.shadingShiftTexture.value=t}get shadingShiftTextureScale(){return this.uniforms.shadingShiftTextureScale.value}set shadingShiftTextureScale(t){this.uniforms.shadingShiftTextureScale.value=t}get shadingToonyFactor(){return this.uniforms.shadingToonyFactor.value}set shadingToonyFactor(t){this.uniforms.shadingToonyFactor.value=t}get giEqualizationFactor(){return this.uniforms.giEqualizationFactor.value}set giEqualizationFactor(t){this.uniforms.giEqualizationFactor.value=t}get matcapFactor(){return this.uniforms.matcapFactor.value}set matcapFactor(t){this.uniforms.matcapFactor.value=t}get matcapTexture(){return this.uniforms.matcapTexture.value}set matcapTexture(t){this.uniforms.matcapTexture.value=t}get parametricRimColorFactor(){return this.uniforms.parametricRimColorFactor.value}set parametricRimColorFactor(t){this.uniforms.parametricRimColorFactor.value=t}get rimMultiplyTexture(){return this.uniforms.rimMultiplyTexture.value}set rimMultiplyTexture(t){this.uniforms.rimMultiplyTexture.value=t}get rimLightingMixFactor(){return this.uniforms.rimLightingMixFactor.value}set rimLightingMixFactor(t){this.uniforms.rimLightingMixFactor.value=t}get parametricRimFresnelPowerFactor(){return this.uniforms.parametricRimFresnelPowerFactor.value}set parametricRimFresnelPowerFactor(t){this.uniforms.parametricRimFresnelPowerFactor.value=t}get parametricRimLiftFactor(){return this.uniforms.parametricRimLiftFactor.value}set parametricRimLiftFactor(t){this.uniforms.parametricRimLiftFactor.value=t}get outlineWidthMultiplyTexture(){return this.uniforms.outlineWidthMultiplyTexture.value}set outlineWidthMultiplyTexture(t){this.uniforms.outlineWidthMultiplyTexture.value=t}get outlineWidthFactor(){return this.uniforms.outlineWidthFactor.value}set outlineWidthFactor(t){this.uniforms.outlineWidthFactor.value=t}get outlineColorFactor(){return this.uniforms.outlineColorFactor.value}set outlineColorFactor(t){this.uniforms.outlineColorFactor.value=t}get outlineLightingMixFactor(){return this.uniforms.outlineLightingMixFactor.value}set outlineLightingMixFactor(t){this.uniforms.outlineLightingMixFactor.value=t}get uvAnimationMaskTexture(){return this.uniforms.uvAnimationMaskTexture.value}set uvAnimationMaskTexture(t){this.uniforms.uvAnimationMaskTexture.value=t}get uvAnimationScrollXOffset(){return this.uniforms.uvAnimationScrollXOffset.value}set uvAnimationScrollXOffset(t){this.uniforms.uvAnimationScrollXOffset.value=t}get uvAnimationScrollYOffset(){return this.uniforms.uvAnimationScrollYOffset.value}set uvAnimationScrollYOffset(t){this.uniforms.uvAnimationScrollYOffset.value=t}get uvAnimationRotationPhase(){return this.uniforms.uvAnimationRotationPhase.value}set uvAnimationRotationPhase(t){this.uniforms.uvAnimationRotationPhase.value=t}get ignoreVertexColor(){return this._ignoreVertexColor}set ignoreVertexColor(t){this._ignoreVertexColor=t,this.needsUpdate=!0}get v0CompatShade(){return this._v0CompatShade}set v0CompatShade(t){this._v0CompatShade=t,this.needsUpdate=!0}get debugMode(){return this._debugMode}set debugMode(t){this._debugMode=t,this.needsUpdate=!0}get outlineWidthMode(){return this._outlineWidthMode}set outlineWidthMode(t){this._outlineWidthMode=t,this.needsUpdate=!0}get isOutline(){return this._isOutline}set isOutline(t){this._isOutline=t,this.needsUpdate=!0}get isMToonMaterial(){return!0}update(t){this._uploadUniformsWorkaround(),this._updateUVAnimation(t)}copy(t){return super.copy(t),this.map=t.map,this.normalMap=t.normalMap,this.emissiveMap=t.emissiveMap,this.shadeMultiplyTexture=t.shadeMultiplyTexture,this.shadingShiftTexture=t.shadingShiftTexture,this.matcapTexture=t.matcapTexture,this.rimMultiplyTexture=t.rimMultiplyTexture,this.outlineWidthMultiplyTexture=t.outlineWidthMultiplyTexture,this.uvAnimationMaskTexture=t.uvAnimationMaskTexture,this.normalMapType=t.normalMapType,this.uvAnimationScrollXSpeedFactor=t.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYSpeedFactor=t.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationSpeedFactor=t.uvAnimationRotationSpeedFactor,this.ignoreVertexColor=t.ignoreVertexColor,this.v0CompatShade=t.v0CompatShade,this.debugMode=t.debugMode,this.outlineWidthMode=t.outlineWidthMode,this.isOutline=t.isOutline,this.needsUpdate=!0,this}_updateUVAnimation(t){this.uniforms.uvAnimationScrollXOffset.value+=t*this.uvAnimationScrollXSpeedFactor,this.uniforms.uvAnimationScrollYOffset.value+=t*this.uvAnimationScrollYSpeedFactor,this.uniforms.uvAnimationRotationPhase.value+=t*this.uvAnimationRotationSpeedFactor,this.uniforms.alphaTest.value=this.alphaTest,this.uniformsNeedUpdate=!0}_uploadUniformsWorkaround(){this.uniforms.opacity.value=this.opacity,this._updateTextureMatrix(this.uniforms.map,this.uniforms.mapUvTransform),this._updateTextureMatrix(this.uniforms.normalMap,this.uniforms.normalMapUvTransform),this._updateTextureMatrix(this.uniforms.emissiveMap,this.uniforms.emissiveMapUvTransform),this._updateTextureMatrix(this.uniforms.shadeMultiplyTexture,this.uniforms.shadeMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.shadingShiftTexture,this.uniforms.shadingShiftTextureUvTransform),this._updateTextureMatrix(this.uniforms.matcapTexture,this.uniforms.matcapTextureUvTransform),this._updateTextureMatrix(this.uniforms.rimMultiplyTexture,this.uniforms.rimMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.outlineWidthMultiplyTexture,this.uniforms.outlineWidthMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.uvAnimationMaskTexture,this.uniforms.uvAnimationMaskTextureUvTransform),this.uniformsNeedUpdate=!0}_generateDefines(){let t=parseInt(x.REVISION,10),e=this.outlineWidthMultiplyTexture!==null,n=this.map!==null||this.normalMap!==null||this.emissiveMap!==null||this.shadeMultiplyTexture!==null||this.shadingShiftTexture!==null||this.rimMultiplyTexture!==null||this.uvAnimationMaskTexture!==null;return{THREE_VRM_THREE_REVISION:t,OUTLINE:this._isOutline,MTOON_USE_UV:e||n,MTOON_UVS_VERTEX_ONLY:e&&!n,V0_COMPAT_SHADE:this._v0CompatShade,USE_SHADEMULTIPLYTEXTURE:this.shadeMultiplyTexture!==null,USE_SHADINGSHIFTTEXTURE:this.shadingShiftTexture!==null,USE_MATCAPTEXTURE:this.matcapTexture!==null,USE_RIMMULTIPLYTEXTURE:this.rimMultiplyTexture!==null,USE_OUTLINEWIDTHMULTIPLYTEXTURE:this._isOutline&&this.outlineWidthMultiplyTexture!==null,USE_UVANIMATIONMASKTEXTURE:this.uvAnimationMaskTexture!==null,IGNORE_VERTEX_COLOR:this._ignoreVertexColor===!0,DEBUG_NORMAL:this._debugMode==="normal",DEBUG_LITSHADERATE:this._debugMode==="litShadeRate",DEBUG_UV:this._debugMode==="uv",OUTLINE_WIDTH_SCREEN:this._isOutline&&this._outlineWidthMode===ei.ScreenCoordinates}}_updateTextureMatrix(t,e){t.value&&(t.value.matrixAutoUpdate&&t.value.updateMatrix(),e.value.copy(t.value.matrix))}},$r=new Set(["1.0","1.0-beta"]),ri=class je{get name(){return je.EXTENSION_NAME}constructor(e,n={}){var i,r,o,s;this.parser=e,this.materialType=(i=n.materialType)!=null?i:Zr,this.renderOrderOffset=(r=n.renderOrderOffset)!=null?r:0,this.v0CompatShade=(o=n.v0CompatShade)!=null?o:!1,this.debugMode=(s=n.debugMode)!=null?s:"none",this._mToonMaterialSet=new Set}beforeRoot(){return le(this,null,function*(){this._removeUnlitExtensionIfMToonExists()})}afterRoot(e){return le(this,null,function*(){e.userData.vrmMToonMaterials=Array.from(this._mToonMaterialSet)})}getMaterialType(e){return this._getMToonExtension(e)?this.materialType:null}extendMaterialParams(e,n){let i=this._getMToonExtension(e);return i?this._extendMaterialParams(i,n):null}loadMesh(e){return le(this,null,function*(){var n;let i=this.parser,o=(n=i.json.meshes)==null?void 0:n[e];if(o==null)throw new Error(`MToonMaterialLoaderPlugin: Attempt to use meshes[${e}] of glTF but the mesh doesn't exist`);let s=o.primitives,l=yield i.loadMesh(e);if(s.length===1){let a=l,u=s[0].material;u!=null&&this._setupPrimitive(a,u)}else{let a=l;for(let u=0;u<s.length;u++){let d=a.children[u],h=s[u].material;h!=null&&this._setupPrimitive(d,h)}}return l})}_removeUnlitExtensionIfMToonExists(){let i=this.parser.json.materials;i==null||i.map((r,o)=>{var s;this._getMToonExtension(o)&&((s=r.extensions)!=null&&s.KHR_materials_unlit)&&delete r.extensions.KHR_materials_unlit})}_getMToonExtension(e){var n,i;let s=(n=this.parser.json.materials)==null?void 0:n[e];if(s==null){console.warn(`MToonMaterialLoaderPlugin: Attempt to use materials[${e}] of glTF but the material doesn't exist`);return}let l=(i=s.extensions)==null?void 0:i[je.EXTENSION_NAME];if(l==null)return;let a=l.specVersion;if(!$r.has(a)){console.warn(`MToonMaterialLoaderPlugin: Unknown ${je.EXTENSION_NAME} specVersion "${a}"`);return}return l}_extendMaterialParams(e,n){return le(this,null,function*(){var i;delete n.metalness,delete n.roughness;let r=new jr(this.parser,n);r.assignPrimitive("transparentWithZWrite",e.transparentWithZWrite),r.assignColor("shadeColorFactor",e.shadeColorFactor),r.assignTexture("shadeMultiplyTexture",e.shadeMultiplyTexture,!0),r.assignPrimitive("shadingShiftFactor",e.shadingShiftFactor),r.assignTexture("shadingShiftTexture",e.shadingShiftTexture,!0),r.assignPrimitive("shadingShiftTextureScale",(i=e.shadingShiftTexture)==null?void 0:i.scale),r.assignPrimitive("shadingToonyFactor",e.shadingToonyFactor),r.assignPrimitive("giEqualizationFactor",e.giEqualizationFactor),r.assignColor("matcapFactor",e.matcapFactor),r.assignTexture("matcapTexture",e.matcapTexture,!0),r.assignColor("parametricRimColorFactor",e.parametricRimColorFactor),r.assignTexture("rimMultiplyTexture",e.rimMultiplyTexture,!0),r.assignPrimitive("rimLightingMixFactor",e.rimLightingMixFactor),r.assignPrimitive("parametricRimFresnelPowerFactor",e.parametricRimFresnelPowerFactor),r.assignPrimitive("parametricRimLiftFactor",e.parametricRimLiftFactor),r.assignPrimitive("outlineWidthMode",e.outlineWidthMode),r.assignPrimitive("outlineWidthFactor",e.outlineWidthFactor),r.assignTexture("outlineWidthMultiplyTexture",e.outlineWidthMultiplyTexture,!1),r.assignColor("outlineColorFactor",e.outlineColorFactor),r.assignPrimitive("outlineLightingMixFactor",e.outlineLightingMixFactor),r.assignTexture("uvAnimationMaskTexture",e.uvAnimationMaskTexture,!1),r.assignPrimitive("uvAnimationScrollXSpeedFactor",e.uvAnimationScrollXSpeedFactor),r.assignPrimitive("uvAnimationScrollYSpeedFactor",e.uvAnimationScrollYSpeedFactor),r.assignPrimitive("uvAnimationRotationSpeedFactor",e.uvAnimationRotationSpeedFactor),r.assignPrimitive("v0CompatShade",this.v0CompatShade),r.assignPrimitive("debugMode",this.debugMode),yield r.pending})}_setupPrimitive(e,n){let i=this._getMToonExtension(n);if(i){let r=this._parseRenderOrder(i);e.renderOrder=r+this.renderOrderOffset,this._generateOutline(e),this._addToMaterialSet(e);return}}_shouldGenerateOutline(e){return typeof e.outlineWidthMode=="string"&&e.outlineWidthMode!=="none"&&typeof e.outlineWidthFactor=="number"&&e.outlineWidthFactor>0}_generateOutline(e){let n=e.material;if(!(n instanceof Xe.Material)||!this._shouldGenerateOutline(n))return;e.material=[n];let i=n.clone();i.name+=" (Outline)",i.isOutline=!0,i.side=Xe.BackSide,e.material.push(i);let r=e.geometry,o=r.index?r.index.count:r.attributes.position.count/3;r.addGroup(0,o,0),r.addGroup(0,o,1)}_addToMaterialSet(e){let n=e.material,i=new Set;Array.isArray(n)?n.forEach(r=>i.add(r)):i.add(n);for(let r of i)this._mToonMaterialSet.add(r)}_parseRenderOrder(e){var n;return(e.transparentWithZWrite?0:19)+((n=e.renderQueueOffsetNumber)!=null?n:0)}};ri.EXTENSION_NAME="VRMC_materials_mtoon";var oi=ri;var Jr=(t,e,n)=>new Promise((i,r)=>{var o=a=>{try{l(n.next(a))}catch(u){r(u)}},s=a=>{try{l(n.throw(a))}catch(u){r(u)}},l=a=>a.done?i(a.value):Promise.resolve(a.value).then(o,s);l((n=n.apply(t,e)).next())}),si=class Mt{get name(){return Mt.EXTENSION_NAME}constructor(e){this.parser=e}extendMaterialParams(e,n){return Jr(this,null,function*(){let i=this._getHDREmissiveMultiplierExtension(e);if(i==null)return;console.warn("VRMMaterialsHDREmissiveMultiplierLoaderPlugin: `VRMC_materials_hdr_emissiveMultiplier` is archived. Use `KHR_materials_emissive_strength` instead.");let r=i.emissiveMultiplier;n.emissiveIntensity=r})}_getHDREmissiveMultiplierExtension(e){var n,i;let s=(n=this.parser.json.materials)==null?void 0:n[e];if(s==null){console.warn(`VRMMaterialsHDREmissiveMultiplierLoaderPlugin: Attempt to use materials[${e}] of glTF but the material doesn't exist`);return}let l=(i=s.extensions)==null?void 0:i[Mt.EXTENSION_NAME];if(l!=null)return l}};si.EXTENSION_NAME="VRMC_materials_hdr_emissiveMultiplier";var ai=si;import*as hi from"three";var Kr=Object.defineProperty,eo=Object.defineProperties,to=Object.getOwnPropertyDescriptors,li=Object.getOwnPropertySymbols,no=Object.prototype.hasOwnProperty,io=Object.prototype.propertyIsEnumerable,ui=(t,e,n)=>e in t?Kr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,G=(t,e)=>{for(var n in e||(e={}))no.call(e,n)&&ui(t,n,e[n]);if(li)for(var n of li(e))io.call(e,n)&&ui(t,n,e[n]);return t},di=(t,e)=>eo(t,to(e)),ro=(t,e,n)=>new Promise((i,r)=>{var o=a=>{try{l(n.next(a))}catch(u){r(u)}},s=a=>{try{l(n.throw(a))}catch(u){r(u)}},l=a=>a.done?i(a.value):Promise.resolve(a.value).then(o,s);l((n=n.apply(t,e)).next())});function me(t){return Math.pow(t,2.2)}var ci=class{get name(){return"VRMMaterialsV0CompatPlugin"}constructor(t){var e;this.parser=t,this._renderQueueMapTransparent=new Map,this._renderQueueMapTransparentZWrite=new Map;let n=this.parser.json;n.extensionsUsed=(e=n.extensionsUsed)!=null?e:[],n.extensionsUsed.indexOf("KHR_texture_transform")===-1&&n.extensionsUsed.push("KHR_texture_transform")}beforeRoot(){return ro(this,null,function*(){var t;let e=this.parser.json,n=(t=e.extensions)==null?void 0:t.VRM,i=n==null?void 0:n.materialProperties;i&&(this._populateRenderQueueMap(i),i.forEach((r,o)=>{var s,l;let a=(s=e.materials)==null?void 0:s[o];if(a==null){console.warn(`VRMMaterialsV0CompatPlugin: Attempt to use materials[${o}] of glTF but the material doesn't exist`);return}if(r.shader==="VRM/MToon"){let u=this._parseV0MToonProperties(r,a);e.materials[o]=u}else if((l=r.shader)!=null&&l.startsWith("VRM/Unlit")){let u=this._parseV0UnlitProperties(r,a);e.materials[o]=u}else r.shader==="VRM_USE_GLTFSHADER"||console.warn(`VRMMaterialsV0CompatPlugin: Unknown shader: ${r.shader}`)}))})}_parseV0MToonProperties(t,e){var n,i,r,o,s,l,a,u,d,h,c,p,f,m,g,_,y,R,M,v,E,w,S,L,P,b,V,Z,Re,Te,X,k,ce,xe,O,Ct,Ot,Ut,Bt,Nt,Dt,Ft,kt,Wt,Gt,zt,jt,Xt,Qt,Yt,qt,Zt,$t,Jt,Kt;let en=(i=(n=t.keywordMap)==null?void 0:n._ALPHABLEND_ON)!=null?i:!1,Ni=((r=t.floatProperties)==null?void 0:r._ZWrite)===1&&en,Di=this._v0ParseRenderQueue(t),tn=(s=(o=t.keywordMap)==null?void 0:o._ALPHATEST_ON)!=null?s:!1,Fi=en?"BLEND":tn?"MASK":"OPAQUE",ki=tn?(a=(l=t.floatProperties)==null?void 0:l._Cutoff)!=null?a:.5:void 0,Wi=((d=(u=t.floatProperties)==null?void 0:u._CullMode)!=null?d:2)===0,oe=this._portTextureTransform(t),Gi=((c=(h=t.vectorProperties)==null?void 0:h._Color)!=null?c:[1,1,1,1]).map((hn,pr)=>pr===3?hn:me(hn)),nn=(p=t.textureProperties)==null?void 0:p._MainTex,zi=nn!=null?{index:nn,extensions:G({},oe)}:void 0,ji=(m=(f=t.floatProperties)==null?void 0:f._BumpScale)!=null?m:1,rn=(g=t.textureProperties)==null?void 0:g._BumpMap,Xi=rn!=null?{index:rn,scale:ji,extensions:G({},oe)}:void 0,Qi=((y=(_=t.vectorProperties)==null?void 0:_._EmissionColor)!=null?y:[0,0,0,1]).map(me),on=(R=t.textureProperties)==null?void 0:R._EmissionMap,Yi=on!=null?{index:on,extensions:G({},oe)}:void 0,qi=((v=(M=t.vectorProperties)==null?void 0:M._ShadeColor)!=null?v:[.97,.81,.86,1]).map(me),sn=(E=t.textureProperties)==null?void 0:E._ShadeTexture,Zi=sn!=null?{index:sn,extensions:G({},oe)}:void 0,Be=(S=(w=t.floatProperties)==null?void 0:w._ShadeShift)!=null?S:0,Ne=(P=(L=t.floatProperties)==null?void 0:L._ShadeToony)!=null?P:.9;Ne=hi.MathUtils.lerp(Ne,1,.5+.5*Be),Be=-Be-(1-Ne);let an=(V=(b=t.floatProperties)==null?void 0:b._IndirectLightIntensity)!=null?V:.1,$i=an?1-an:void 0,Ke=(Z=t.textureProperties)==null?void 0:Z._SphereAdd,Ji=Ke!=null?[1,1,1]:void 0,Ki=Ke!=null?{index:Ke}:void 0,er=(Te=(Re=t.floatProperties)==null?void 0:Re._RimLightingMix)!=null?Te:0,ln=(X=t.textureProperties)==null?void 0:X._RimTexture,tr=ln!=null?{index:ln,extensions:G({},oe)}:void 0,nr=((ce=(k=t.vectorProperties)==null?void 0:k._RimColor)!=null?ce:[0,0,0,1]).map(me),ir=(O=(xe=t.floatProperties)==null?void 0:xe._RimFresnelPower)!=null?O:1,rr=(Ot=(Ct=t.floatProperties)==null?void 0:Ct._RimLift)!=null?Ot:0,or=["none","worldCoordinates","screenCoordinates"][(Bt=(Ut=t.floatProperties)==null?void 0:Ut._OutlineWidthMode)!=null?Bt:0],et=(Dt=(Nt=t.floatProperties)==null?void 0:Nt._OutlineWidth)!=null?Dt:0;et=.01*et;let un=(Ft=t.textureProperties)==null?void 0:Ft._OutlineWidthTexture,sr=un!=null?{index:un,extensions:G({},oe)}:void 0,ar=((Wt=(kt=t.vectorProperties)==null?void 0:kt._OutlineColor)!=null?Wt:[0,0,0]).map(me),lr=((zt=(Gt=t.floatProperties)==null?void 0:Gt._OutlineColorMode)!=null?zt:0)===1?(Xt=(jt=t.floatProperties)==null?void 0:jt._OutlineLightingMix)!=null?Xt:1:0,dn=(Qt=t.textureProperties)==null?void 0:Qt._UvAnimMaskTexture,ur=dn!=null?{index:dn,extensions:G({},oe)}:void 0,dr=(qt=(Yt=t.floatProperties)==null?void 0:Yt._UvAnimScrollX)!=null?qt:0,De=($t=(Zt=t.floatProperties)==null?void 0:Zt._UvAnimScrollY)!=null?$t:0;De!=null&&(De=-De);let hr=(Kt=(Jt=t.floatProperties)==null?void 0:Jt._UvAnimRotation)!=null?Kt:0,cr={specVersion:"1.0",transparentWithZWrite:Ni,renderQueueOffsetNumber:Di,shadeColorFactor:qi,shadeMultiplyTexture:Zi,shadingShiftFactor:Be,shadingToonyFactor:Ne,giEqualizationFactor:$i,matcapFactor:Ji,matcapTexture:Ki,rimLightingMixFactor:er,rimMultiplyTexture:tr,parametricRimColorFactor:nr,parametricRimFresnelPowerFactor:ir,parametricRimLiftFactor:rr,outlineWidthMode:or,outlineWidthFactor:et,outlineWidthMultiplyTexture:sr,outlineColorFactor:ar,outlineLightingMixFactor:lr,uvAnimationMaskTexture:ur,uvAnimationScrollXSpeedFactor:dr,uvAnimationScrollYSpeedFactor:De,uvAnimationRotationSpeedFactor:hr};return di(G({},e),{pbrMetallicRoughness:{baseColorFactor:Gi,baseColorTexture:zi},normalTexture:Xi,emissiveTexture:Yi,emissiveFactor:Qi,alphaMode:Fi,alphaCutoff:ki,doubleSided:Wi,extensions:{VRMC_materials_mtoon:cr}})}_parseV0UnlitProperties(t,e){var n,i,r,o,s;let l=t.shader==="VRM/UnlitTransparentZWrite",a=t.shader==="VRM/UnlitTransparent"||l,u=this._v0ParseRenderQueue(t),d=t.shader==="VRM/UnlitCutout",h=a?"BLEND":d?"MASK":"OPAQUE",c=d?(i=(n=t.floatProperties)==null?void 0:n._Cutoff)!=null?i:.5:void 0,p=this._portTextureTransform(t),f=((o=(r=t.vectorProperties)==null?void 0:r._Color)!=null?o:[1,1,1,1]).map(me),m=(s=t.textureProperties)==null?void 0:s._MainTex,g=m!=null?{index:m,extensions:G({},p)}:void 0,_={specVersion:"1.0",transparentWithZWrite:l,renderQueueOffsetNumber:u,shadeColorFactor:f,shadeMultiplyTexture:g};return di(G({},e),{pbrMetallicRoughness:{baseColorFactor:f,baseColorTexture:g},alphaMode:h,alphaCutoff:c,extensions:{VRMC_materials_mtoon:_}})}_portTextureTransform(t){var e,n,i,r,o;let s=(e=t.vectorProperties)==null?void 0:e._MainTex;if(s==null)return{};let l=[(n=s==null?void 0:s[0])!=null?n:0,(i=s==null?void 0:s[1])!=null?i:0],a=[(r=s==null?void 0:s[2])!=null?r:1,(o=s==null?void 0:s[3])!=null?o:1];return l[1]=1-a[1]-l[1],{KHR_texture_transform:{offset:l,scale:a}}}_v0ParseRenderQueue(t){var e,n;let i=t.shader==="VRM/UnlitTransparentZWrite",r=((e=t.keywordMap)==null?void 0:e._ALPHABLEND_ON)!=null||t.shader==="VRM/UnlitTransparent"||i,o=((n=t.floatProperties)==null?void 0:n._ZWrite)===1||i,s=0;if(r){let l=t.renderQueue;l!=null&&(o?s=this._renderQueueMapTransparentZWrite.get(l):s=this._renderQueueMapTransparent.get(l))}return s}_populateRenderQueueMap(t){let e=new Set,n=new Set;t.forEach(i=>{var r,o;let s=i.shader==="VRM/UnlitTransparentZWrite",l=((r=i.keywordMap)==null?void 0:r._ALPHABLEND_ON)!=null||i.shader==="VRM/UnlitTransparent"||s,a=((o=i.floatProperties)==null?void 0:o._ZWrite)===1||s;if(l){let u=i.renderQueue;u!=null&&(a?n.add(u):e.add(u))}}),e.size>10&&console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${e.size} render queues for Transparent materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`),n.size>10&&console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${n.size} render queues for TransparentZWrite materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`),Array.from(e).sort().forEach((i,r)=>{let o=Math.min(Math.max(r-e.size+1,-9),0);this._renderQueueMapTransparent.set(i,o)}),Array.from(n).sort().forEach((i,r)=>{let o=Math.min(Math.max(r,0),9);this._renderQueueMapTransparentZWrite.set(i,o)})}};import*as U from"three";import*as z from"three";import*as Tt from"three";import*as Le from"three";import*as Y from"three";var pi=(t,e,n)=>new Promise((i,r)=>{var o=a=>{try{l(n.next(a))}catch(u){r(u)}},s=a=>{try{l(n.throw(a))}catch(u){r(u)}},l=a=>a.done?i(a.value):Promise.resolve(a.value).then(o,s);l((n=n.apply(t,e)).next())}),K=new U.Vector3,Rt=class extends U.Group{constructor(t){super(),this._attrPosition=new U.BufferAttribute(new Float32Array([0,0,0,0,0,0]),3),this._attrPosition.setUsage(U.DynamicDrawUsage);let e=new U.BufferGeometry;e.setAttribute("position",this._attrPosition);let n=new U.LineBasicMaterial({color:16711935,depthTest:!1,depthWrite:!1});this._line=new U.Line(e,n),this.add(this._line),this.constraint=t}updateMatrixWorld(t){K.setFromMatrixPosition(this.constraint.destination.matrixWorld),this._attrPosition.setXYZ(0,K.x,K.y,K.z),this.constraint.source&&K.setFromMatrixPosition(this.constraint.source.matrixWorld),this._attrPosition.setXYZ(1,K.x,K.y,K.z),this._attrPosition.needsUpdate=!0,super.updateMatrixWorld(t)}};function fi(t,e){return e.set(t.elements[12],t.elements[13],t.elements[14])}var oo=new Tt.Vector3,so=new Tt.Vector3;function ao(t,e){return t.decompose(oo,e,so),e}function Qe(t){return t.invert?t.invert():t.inverse(),t}var xt=class{constructor(t,e){this.destination=t,this.source=e,this.weight=1}},lo=new z.Vector3,uo=new z.Vector3,ho=new z.Vector3,co=new z.Quaternion,po=new z.Quaternion,fo=new z.Quaternion,mo=class extends xt{get aimAxis(){return this._aimAxis}set aimAxis(t){this._aimAxis=t,this._v3AimAxis.set(t==="PositiveX"?1:t==="NegativeX"?-1:0,t==="PositiveY"?1:t==="NegativeY"?-1:0,t==="PositiveZ"?1:t==="NegativeZ"?-1:0)}get dependencies(){let t=new Set([this.source]);return this.destination.parent&&t.add(this.destination.parent),t}constructor(t,e){super(t,e),this._aimAxis="PositiveX",this._v3AimAxis=new z.Vector3(1,0,0),this._dstRestQuat=new z.Quaternion}setInitState(){this._dstRestQuat.copy(this.destination.quaternion)}update(){this.destination.updateWorldMatrix(!0,!1),this.source.updateWorldMatrix(!0,!1);let t=co.identity(),e=po.identity();this.destination.parent&&(ao(this.destination.parent.matrixWorld,t),Qe(e.copy(t)));let n=lo.copy(this._v3AimAxis).applyQuaternion(this._dstRestQuat).applyQuaternion(t),i=fi(this.source.matrixWorld,uo).sub(fi(this.destination.matrixWorld,ho)).normalize(),r=fo.setFromUnitVectors(n,i).premultiply(e).multiply(t).multiply(this._dstRestQuat);this.destination.quaternion.copy(this._dstRestQuat).slerp(r,this.weight)}};function go(t,e){let n=[t],i=t.parent;for(;i!==null;)n.unshift(i),i=i.parent;n.forEach(r=>{e(r)})}var _o=class{constructor(){this._constraints=new Set,this._objectConstraintsMap=new Map}get constraints(){return this._constraints}addConstraint(t){this._constraints.add(t);let e=this._objectConstraintsMap.get(t.destination);e==null&&(e=new Set,this._objectConstraintsMap.set(t.destination,e)),e.add(t)}deleteConstraint(t){this._constraints.delete(t),this._objectConstraintsMap.get(t.destination).delete(t)}setInitState(){let t=new Set,e=new Set;for(let n of this._constraints)this._processConstraint(n,t,e,i=>i.setInitState())}update(){let t=new Set,e=new Set;for(let n of this._constraints)this._processConstraint(n,t,e,i=>i.update())}_processConstraint(t,e,n,i){if(n.has(t))return;if(e.has(t))throw new Error("VRMNodeConstraintManager: Circular dependency detected while updating constraints");e.add(t);let r=t.dependencies;for(let o of r)go(o,s=>{let l=this._objectConstraintsMap.get(s);if(l)for(let a of l)this._processConstraint(a,e,n,i)});i(t),n.add(t)}},vo=new Le.Quaternion,Eo=new Le.Quaternion,Mo=class extends xt{get dependencies(){return new Set([this.source])}constructor(t,e){super(t,e),this._dstRestQuat=new Le.Quaternion,this._invSrcRestQuat=new Le.Quaternion}setInitState(){this._dstRestQuat.copy(this.destination.quaternion),Qe(this._invSrcRestQuat.copy(this.source.quaternion))}update(){let t=vo.copy(this._invSrcRestQuat).multiply(this.source.quaternion),e=Eo.copy(this._dstRestQuat).multiply(t);this.destination.quaternion.copy(this._dstRestQuat).slerp(e,this.weight)}},Ro=new Y.Vector3,To=new Y.Quaternion,xo=new Y.Quaternion,yo=class extends xt{get rollAxis(){return this._rollAxis}set rollAxis(t){this._rollAxis=t,this._v3RollAxis.set(t==="X"?1:0,t==="Y"?1:0,t==="Z"?1:0)}get dependencies(){return new Set([this.source])}constructor(t,e){super(t,e),this._rollAxis="X",this._v3RollAxis=new Y.Vector3(1,0,0),this._dstRestQuat=new Y.Quaternion,this._invDstRestQuat=new Y.Quaternion,this._invSrcRestQuatMulDstRestQuat=new Y.Quaternion}setInitState(){this._dstRestQuat.copy(this.destination.quaternion),Qe(this._invDstRestQuat.copy(this._dstRestQuat)),Qe(this._invSrcRestQuatMulDstRestQuat.copy(this.source.quaternion)).multiply(this._dstRestQuat)}update(){let t=To.copy(this._invDstRestQuat).multiply(this.source.quaternion).multiply(this._invSrcRestQuatMulDstRestQuat),e=Ro.copy(this._v3RollAxis).applyQuaternion(t),i=xo.setFromUnitVectors(e,this._v3RollAxis).premultiply(this._dstRestQuat).multiply(t);this.destination.quaternion.copy(this._dstRestQuat).slerp(i,this.weight)}},wo=new Set(["1.0","1.0-beta"]),mi=class He{get name(){return He.EXTENSION_NAME}constructor(e,n){this.parser=e,this.helperRoot=n==null?void 0:n.helperRoot}afterRoot(e){return pi(this,null,function*(){e.userData.vrmNodeConstraintManager=yield this._import(e)})}_import(e){return pi(this,null,function*(){var n;let i=this.parser.json;if(!(((n=i.extensionsUsed)==null?void 0:n.indexOf(He.EXTENSION_NAME))!==-1))return null;let o=new _o,s=yield this.parser.getDependencies("node");return s.forEach((l,a)=>{var u;let d=i.nodes[a],h=(u=d==null?void 0:d.extensions)==null?void 0:u[He.EXTENSION_NAME];if(h==null)return;let c=h.specVersion;if(!wo.has(c)){console.warn(`VRMNodeConstraintLoaderPlugin: Unknown ${He.EXTENSION_NAME} specVersion "${c}"`);return}let p=h.constraint;if(p.roll!=null){let f=this._importRollConstraint(l,s,p.roll);o.addConstraint(f)}else if(p.aim!=null){let f=this._importAimConstraint(l,s,p.aim);o.addConstraint(f)}else if(p.rotation!=null){let f=this._importRotationConstraint(l,s,p.rotation);o.addConstraint(f)}}),e.scene.updateMatrixWorld(),o.setInitState(),o})}_importRollConstraint(e,n,i){let{source:r,rollAxis:o,weight:s}=i,l=n[r],a=new yo(e,l);if(o!=null&&(a.rollAxis=o),s!=null&&(a.weight=s),this.helperRoot){let u=new Rt(a);this.helperRoot.add(u)}return a}_importAimConstraint(e,n,i){let{source:r,aimAxis:o,weight:s}=i,l=n[r],a=new mo(e,l);if(o!=null&&(a.aimAxis=o),s!=null&&(a.weight=s),this.helperRoot){let u=new Rt(a);this.helperRoot.add(u)}return a}_importRotationConstraint(e,n,i){let{source:r,weight:o}=i,s=n[r],l=new Mo(e,s);if(o!=null&&(l.weight=o),this.helperRoot){let a=new Rt(l);this.helperRoot.add(a)}return l}};mi.EXTENSION_NAME="VRMC_node_constraint";var gi=mi;import*as te from"three";import*as Oe from"three";import*as ve from"three";import*as Lt from"three";import*as q from"three";import*as ee from"three";import*as de from"three";import*as ne from"three";import*as he from"three";import*as qe from"three";import*as C from"three";import*as xi from"three";import*as yi from"three";import*as N from"three";var Ye=(t,e,n)=>new Promise((i,r)=>{var o=a=>{try{l(n.next(a))}catch(u){r(u)}},s=a=>{try{l(n.throw(a))}catch(u){r(u)}},l=a=>a.done?i(a.value):Promise.resolve(a.value).then(o,s);l((n=n.apply(t,e)).next())}),Ht=class{},yt=new Oe.Vector3,ue=new Oe.Vector3,Mi=class extends Ht{get type(){return"capsule"}constructor(t){var e,n,i,r;super(),this.offset=(e=t==null?void 0:t.offset)!=null?e:new Oe.Vector3(0,0,0),this.tail=(n=t==null?void 0:t.tail)!=null?n:new Oe.Vector3(0,0,0),this.radius=(i=t==null?void 0:t.radius)!=null?i:0,this.inside=(r=t==null?void 0:t.inside)!=null?r:!1}calculateCollision(t,e,n,i){yt.setFromMatrixPosition(t),ue.subVectors(this.tail,this.offset).applyMatrix4(t),ue.sub(yt);let r=ue.lengthSq();i.copy(e).sub(yt);let o=ue.dot(i);o<=0||(r<=o||ue.multiplyScalar(o/r),i.sub(ue));let s=i.length(),l=this.inside?this.radius-n-s:s-n-this.radius;return l<0&&(i.multiplyScalar(1/s),this.inside&&i.negate()),l}},wt=new ve.Vector3,_i=new ve.Matrix3,Ri=class extends Ht{get type(){return"plane"}constructor(t){var e,n;super(),this.offset=(e=t==null?void 0:t.offset)!=null?e:new ve.Vector3(0,0,0),this.normal=(n=t==null?void 0:t.normal)!=null?n:new ve.Vector3(0,0,1)}calculateCollision(t,e,n,i){i.setFromMatrixPosition(t),i.negate().add(e),_i.getNormalMatrix(t),wt.copy(this.normal).applyNormalMatrix(_i).normalize();let r=i.dot(wt)-n;return i.copy(wt),r}},So=new Lt.Vector3,Ti=class extends Ht{get type(){return"sphere"}constructor(t){var e,n,i;super(),this.offset=(e=t==null?void 0:t.offset)!=null?e:new Lt.Vector3(0,0,0),this.radius=(n=t==null?void 0:t.radius)!=null?n:0,this.inside=(i=t==null?void 0:t.inside)!=null?i:!1}calculateCollision(t,e,n,i){i.subVectors(e,So.setFromMatrixPosition(t));let r=i.length(),o=this.inside?this.radius-n-r:r-n-this.radius;return o<0&&(i.multiplyScalar(1/r),this.inside&&i.negate()),o}},j=new q.Vector3,Ao=class extends q.BufferGeometry{constructor(t){super(),this.worldScale=1,this._currentRadius=0,this._currentOffset=new q.Vector3,this._currentTail=new q.Vector3,this._shape=t,this._attrPos=new q.BufferAttribute(new Float32Array(396),3),this.setAttribute("position",this._attrPos),this._attrIndex=new q.BufferAttribute(new Uint16Array(264),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let t=!1,e=this._shape.radius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,t=!0),this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),t=!0);let n=j.copy(this._shape.tail).divideScalar(this.worldScale);this._currentTail.distanceToSquared(n)>1e-10&&(this._currentTail.copy(n),t=!0),t&&this._buildPosition()}_buildPosition(){j.copy(this._currentTail).sub(this._currentOffset);let t=j.length()/this._currentRadius;for(let i=0;i<=16;i++){let r=i/16*Math.PI;this._attrPos.setXYZ(i,-Math.sin(r),-Math.cos(r),0),this._attrPos.setXYZ(17+i,t+Math.sin(r),Math.cos(r),0),this._attrPos.setXYZ(34+i,-Math.sin(r),0,-Math.cos(r)),this._attrPos.setXYZ(51+i,t+Math.sin(r),0,Math.cos(r))}for(let i=0;i<32;i++){let r=i/16*Math.PI;this._attrPos.setXYZ(68+i,0,Math.sin(r),Math.cos(r)),this._attrPos.setXYZ(100+i,t,Math.sin(r),Math.cos(r))}let e=Math.atan2(j.y,Math.sqrt(j.x*j.x+j.z*j.z)),n=-Math.atan2(j.z,j.x);this.rotateZ(e),this.rotateY(n),this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let t=0;t<34;t++){let e=(t+1)%34;this._attrIndex.setXY(t*2,t,e),this._attrIndex.setXY(68+t*2,34+t,34+e)}for(let t=0;t<32;t++){let e=(t+1)%32;this._attrIndex.setXY(136+t*2,68+t,68+e),this._attrIndex.setXY(200+t*2,100+t,100+e)}this._attrIndex.needsUpdate=!0}},Po=class extends ee.BufferGeometry{constructor(t){super(),this.worldScale=1,this._currentOffset=new ee.Vector3,this._currentNormal=new ee.Vector3,this._shape=t,this._attrPos=new ee.BufferAttribute(new Float32Array(18),3),this.setAttribute("position",this._attrPos),this._attrIndex=new ee.BufferAttribute(new Uint16Array(10),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let t=!1;this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),t=!0),this._currentNormal.equals(this._shape.normal)||(this._currentNormal.copy(this._shape.normal),t=!0),t&&this._buildPosition()}_buildPosition(){this._attrPos.setXYZ(0,-.5,-.5,0),this._attrPos.setXYZ(1,.5,-.5,0),this._attrPos.setXYZ(2,.5,.5,0),this._attrPos.setXYZ(3,-.5,.5,0),this._attrPos.setXYZ(4,0,0,0),this._attrPos.setXYZ(5,0,0,.25),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this.lookAt(this._currentNormal),this._attrPos.needsUpdate=!0}_buildIndex(){this._attrIndex.setXY(0,0,1),this._attrIndex.setXY(2,1,2),this._attrIndex.setXY(4,2,3),this._attrIndex.setXY(6,3,0),this._attrIndex.setXY(8,4,5),this._attrIndex.needsUpdate=!0}},bo=class extends de.BufferGeometry{constructor(t){super(),this.worldScale=1,this._currentRadius=0,this._currentOffset=new de.Vector3,this._shape=t,this._attrPos=new de.BufferAttribute(new Float32Array(288),3),this.setAttribute("position",this._attrPos),this._attrIndex=new de.BufferAttribute(new Uint16Array(192),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let t=!1,e=this._shape.radius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,t=!0),this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),t=!0),t&&this._buildPosition()}_buildPosition(){for(let t=0;t<32;t++){let e=t/16*Math.PI;this._attrPos.setXYZ(t,Math.cos(e),Math.sin(e),0),this._attrPos.setXYZ(32+t,0,Math.cos(e),Math.sin(e)),this._attrPos.setXYZ(64+t,Math.sin(e),0,Math.cos(e))}this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let t=0;t<32;t++){let e=(t+1)%32;this._attrIndex.setXY(t*2,t,e),this._attrIndex.setXY(64+t*2,32+t,32+e),this._attrIndex.setXY(128+t*2,64+t,64+e)}this._attrIndex.needsUpdate=!0}},Ho=new te.Vector3,St=class extends te.Group{constructor(t){if(super(),this.matrixAutoUpdate=!1,this.collider=t,this.collider.shape instanceof Ti)this._geometry=new bo(this.collider.shape);else if(this.collider.shape instanceof Mi)this._geometry=new Ao(this.collider.shape);else if(this.collider.shape instanceof Ri)this._geometry=new Po(this.collider.shape);else throw new Error("VRMSpringBoneColliderHelper: Unknown collider shape type detected");let e=new te.LineBasicMaterial({color:16711935,depthTest:!1,depthWrite:!1});this._line=new te.LineSegments(this._geometry,e),this.add(this._line)}dispose(){this._geometry.dispose()}updateMatrixWorld(t){this.collider.updateWorldMatrix(!0,!1),this.matrix.copy(this.collider.matrixWorld);let e=this.matrix.elements;this._geometry.worldScale=Ho.set(e[0],e[1],e[2]).length(),this._geometry.update(),super.updateMatrixWorld(t)}},Lo=class extends he.BufferGeometry{constructor(t){super(),this.worldScale=1,this._currentRadius=0,this._currentTail=new he.Vector3,this._springBone=t,this._attrPos=new he.BufferAttribute(new Float32Array(294),3),this.setAttribute("position",this._attrPos),this._attrIndex=new he.BufferAttribute(new Uint16Array(194),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let t=!1,e=this._springBone.settings.hitRadius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,t=!0),this._currentTail.equals(this._springBone.initialLocalChildPosition)||(this._currentTail.copy(this._springBone.initialLocalChildPosition),t=!0),t&&this._buildPosition()}_buildPosition(){for(let t=0;t<32;t++){let e=t/16*Math.PI;this._attrPos.setXYZ(t,Math.cos(e),Math.sin(e),0),this._attrPos.setXYZ(32+t,0,Math.cos(e),Math.sin(e)),this._attrPos.setXYZ(64+t,Math.sin(e),0,Math.cos(e))}this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.setXYZ(96,0,0,0),this._attrPos.setXYZ(97,this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let t=0;t<32;t++){let e=(t+1)%32;this._attrIndex.setXY(t*2,t,e),this._attrIndex.setXY(64+t*2,32+t,32+e),this._attrIndex.setXY(128+t*2,64+t,64+e)}this._attrIndex.setXY(192,96,97),this._attrIndex.needsUpdate=!0}},Io=new ne.Vector3,Vo=class extends ne.Group{constructor(t){super(),this.matrixAutoUpdate=!1,this.springBone=t,this._geometry=new Lo(this.springBone);let e=new ne.LineBasicMaterial({color:16776960,depthTest:!1,depthWrite:!1});this._line=new ne.LineSegments(this._geometry,e),this.add(this._line)}dispose(){this._geometry.dispose()}updateMatrixWorld(t){this.springBone.bone.updateWorldMatrix(!0,!1),this.matrix.copy(this.springBone.bone.matrixWorld);let e=this.matrix.elements;this._geometry.worldScale=Io.set(e[0],e[1],e[2]).length(),this._geometry.update(),super.updateMatrixWorld(t)}},At=class extends qe.Object3D{constructor(t){super(),this.colliderMatrix=new qe.Matrix4,this.shape=t}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),Co(this.colliderMatrix,this.matrixWorld,this.shape.offset)}};function Co(t,e,n){let i=e.elements;t.copy(e),n&&(t.elements[12]=i[0]*n.x+i[4]*n.y+i[8]*n.z+i[12],t.elements[13]=i[1]*n.x+i[5]*n.y+i[9]*n.z+i[13],t.elements[14]=i[2]*n.x+i[6]*n.y+i[10]*n.z+i[14])}var Oo=new yi.Matrix4;function Uo(t){return t.invert?t.invert():t.getInverse(Oo.copy(t)),t}var Bo=class{constructor(t){this._inverseCache=new xi.Matrix4,this._shouldUpdateInverse=!0,this.matrix=t;let e={set:(n,i,r)=>(this._shouldUpdateInverse=!0,n[i]=r,!0)};this._originalElements=t.elements,t.elements=new Proxy(t.elements,e)}get inverse(){return this._shouldUpdateInverse&&(Uo(this._inverseCache.copy(this.matrix)),this._shouldUpdateInverse=!1),this._inverseCache}revert(){this.matrix.elements=this._originalElements}},Pt=new C.Matrix4,ge=new C.Vector3,Ie=new C.Vector3,Ve=new C.Vector3,Ce=new C.Vector3,No=new C.Matrix4,Do=class{constructor(t,e,n={},i=[]){this._currentTail=new C.Vector3,this._prevTail=new C.Vector3,this._boneAxis=new C.Vector3,this._worldSpaceBoneLength=0,this._center=null,this._initialLocalMatrix=new C.Matrix4,this._initialLocalRotation=new C.Quaternion,this._initialLocalChildPosition=new C.Vector3;var r,o,s,l,a,u;this.bone=t,this.bone.matrixAutoUpdate=!1,this.child=e,this.settings={hitRadius:(r=n.hitRadius)!=null?r:0,stiffness:(o=n.stiffness)!=null?o:1,gravityPower:(s=n.gravityPower)!=null?s:0,gravityDir:(a=(l=n.gravityDir)==null?void 0:l.clone())!=null?a:new C.Vector3(0,-1,0),dragForce:(u=n.dragForce)!=null?u:.4},this.colliderGroups=i}get dependencies(){let t=new Set,e=this.bone.parent;e&&t.add(e);for(let n=0;n<this.colliderGroups.length;n++)for(let i=0;i<this.colliderGroups[n].colliders.length;i++)t.add(this.colliderGroups[n].colliders[i]);return t}get center(){return this._center}set center(t){var e;(e=this._center)!=null&&e.userData.inverseCacheProxy&&(this._center.userData.inverseCacheProxy.revert(),delete this._center.userData.inverseCacheProxy),this._center=t,this._center&&(this._center.userData.inverseCacheProxy||(this._center.userData.inverseCacheProxy=new Bo(this._center.matrixWorld)))}get initialLocalChildPosition(){return this._initialLocalChildPosition}get _parentMatrixWorld(){return this.bone.parent?this.bone.parent.matrixWorld:Pt}setInitState(){this._initialLocalMatrix.copy(this.bone.matrix),this._initialLocalRotation.copy(this.bone.quaternion),this.child?this._initialLocalChildPosition.copy(this.child.position):this._initialLocalChildPosition.copy(this.bone.position).normalize().multiplyScalar(.07);let t=this._getMatrixWorldToCenter();this.bone.localToWorld(this._currentTail.copy(this._initialLocalChildPosition)).applyMatrix4(t),this._prevTail.copy(this._currentTail),this._boneAxis.copy(this._initialLocalChildPosition).normalize()}reset(){this.bone.quaternion.copy(this._initialLocalRotation),this.bone.updateMatrix(),this.bone.matrixWorld.multiplyMatrices(this._parentMatrixWorld,this.bone.matrix);let t=this._getMatrixWorldToCenter();this.bone.localToWorld(this._currentTail.copy(this._initialLocalChildPosition)).applyMatrix4(t),this._prevTail.copy(this._currentTail)}update(t){if(t<=0)return;this._calcWorldSpaceBoneLength();let e=Ie.copy(this._boneAxis).transformDirection(this._initialLocalMatrix).transformDirection(this._parentMatrixWorld);Ce.copy(this._currentTail).add(ge.subVectors(this._currentTail,this._prevTail).multiplyScalar(1-this.settings.dragForce)).applyMatrix4(this._getMatrixCenterToWorld()).addScaledVector(e,this.settings.stiffness*t).addScaledVector(this.settings.gravityDir,this.settings.gravityPower*t),Ve.setFromMatrixPosition(this.bone.matrixWorld),Ce.sub(Ve).normalize().multiplyScalar(this._worldSpaceBoneLength).add(Ve),this._collision(Ce),this._prevTail.copy(this._currentTail),this._currentTail.copy(Ce).applyMatrix4(this._getMatrixWorldToCenter());let n=No.multiplyMatrices(this._parentMatrixWorld,this._initialLocalMatrix).invert();this.bone.quaternion.setFromUnitVectors(this._boneAxis,ge.copy(Ce).applyMatrix4(n).normalize()).premultiply(this._initialLocalRotation),this.bone.updateMatrix(),this.bone.matrixWorld.multiplyMatrices(this._parentMatrixWorld,this.bone.matrix)}_collision(t){for(let e=0;e<this.colliderGroups.length;e++)for(let n=0;n<this.colliderGroups[e].colliders.length;n++){let i=this.colliderGroups[e].colliders[n],r=i.shape.calculateCollision(i.colliderMatrix,t,this.settings.hitRadius,ge);if(r<0){t.addScaledVector(ge,-r),t.sub(Ve);let o=t.length();t.multiplyScalar(this._worldSpaceBoneLength/o).add(Ve)}}}_calcWorldSpaceBoneLength(){ge.setFromMatrixPosition(this.bone.matrixWorld),this.child?Ie.setFromMatrixPosition(this.child.matrixWorld):(Ie.copy(this._initialLocalChildPosition),Ie.applyMatrix4(this.bone.matrixWorld)),this._worldSpaceBoneLength=ge.sub(Ie).length()}_getMatrixCenterToWorld(){return this._center?this._center.matrixWorld:Pt}_getMatrixWorldToCenter(){return this._center?this._center.userData.inverseCacheProxy.inverse:Pt}};function Fo(t,e){let n=[],i=t;for(;i!==null;)n.unshift(i),i=i.parent;n.forEach(r=>{e(r)})}function bt(t,e){t.children.forEach(n=>{e(n)||bt(n,e)})}function ko(t){var e;let n=new Map;for(let i of t){let r=i;do{let o=((e=n.get(r))!=null?e:0)+1;if(o===t.size)return r;n.set(r,o),r=r.parent}while(r!==null)}return null}var vi=class{constructor(){this._joints=new Set,this._sortedJoints=[],this._hasWarnedCircularDependency=!1,this._ancestors=[],this._objectSpringBonesMap=new Map,this._isSortedJointsDirty=!1,this._relevantChildrenUpdated=this._relevantChildrenUpdated.bind(this)}get joints(){return this._joints}get springBones(){return console.warn("VRMSpringBoneManager: springBones is deprecated. use joints instead."),this._joints}get colliderGroups(){let t=new Set;return this._joints.forEach(e=>{e.colliderGroups.forEach(n=>{t.add(n)})}),Array.from(t)}get colliders(){let t=new Set;return this.colliderGroups.forEach(e=>{e.colliders.forEach(n=>{t.add(n)})}),Array.from(t)}addJoint(t){this._joints.add(t);let e=this._objectSpringBonesMap.get(t.bone);e==null&&(e=new Set,this._objectSpringBonesMap.set(t.bone,e)),e.add(t),this._isSortedJointsDirty=!0}addSpringBone(t){console.warn("VRMSpringBoneManager: addSpringBone() is deprecated. use addJoint() instead."),this.addJoint(t)}deleteJoint(t){this._joints.delete(t),this._objectSpringBonesMap.get(t.bone).delete(t),this._isSortedJointsDirty=!0}deleteSpringBone(t){console.warn("VRMSpringBoneManager: deleteSpringBone() is deprecated. use deleteJoint() instead."),this.deleteJoint(t)}setInitState(){this._sortJoints();for(let t=0;t<this._sortedJoints.length;t++){let e=this._sortedJoints[t];e.bone.updateMatrix(),e.bone.updateWorldMatrix(!1,!1),e.setInitState()}}reset(){this._sortJoints();for(let t=0;t<this._sortedJoints.length;t++){let e=this._sortedJoints[t];e.bone.updateMatrix(),e.bone.updateWorldMatrix(!1,!1),e.reset()}}update(t){this._sortJoints();for(let e=0;e<this._ancestors.length;e++)this._ancestors[e].updateWorldMatrix(e===0,!1);for(let e=0;e<this._sortedJoints.length;e++){let n=this._sortedJoints[e];n.bone.updateMatrix(),n.bone.updateWorldMatrix(!1,!1),n.update(t),bt(n.bone,this._relevantChildrenUpdated)}}_sortJoints(){if(!this._isSortedJointsDirty)return;let t=[],e=new Set,n=new Set,i=new Set;for(let o of this._joints)this._insertJointSort(o,e,n,t,i);this._sortedJoints=t;let r=ko(i);this._ancestors=[],r&&(this._ancestors.push(r),bt(r,o=>{var s,l;return((l=(s=this._objectSpringBonesMap.get(o))==null?void 0:s.size)!=null?l:0)>0?!0:(this._ancestors.push(o),!1)})),this._isSortedJointsDirty=!1}_insertJointSort(t,e,n,i,r){if(n.has(t))return;if(e.has(t)){this._hasWarnedCircularDependency||(console.warn("VRMSpringBoneManager: Circular dependency detected"),this._hasWarnedCircularDependency=!0);return}e.add(t);let o=t.dependencies;for(let s of o){let l=!1,a=null;Fo(s,u=>{let d=this._objectSpringBonesMap.get(u);if(d)for(let h of d)l=!0,this._insertJointSort(h,e,n,i,r);else l||(a=u)}),a&&r.add(a)}i.push(t),n.add(t)}_relevantChildrenUpdated(t){var e,n;return((n=(e=this._objectSpringBonesMap.get(t))==null?void 0:e.size)!=null?n:0)>0?!0:(t.updateWorldMatrix(!1,!1),!1)}},Ei="VRMC_springBone_extended_collider",Wo=new Set(["1.0","1.0-beta"]),Go=new Set(["1.0"]),wi=class _e{get name(){return _e.EXTENSION_NAME}constructor(e,n){var i;this.parser=e,this.jointHelperRoot=n==null?void 0:n.jointHelperRoot,this.colliderHelperRoot=n==null?void 0:n.colliderHelperRoot,this.useExtendedColliders=(i=n==null?void 0:n.useExtendedColliders)!=null?i:!0}afterRoot(e){return Ye(this,null,function*(){e.userData.vrmSpringBoneManager=yield this._import(e)})}_import(e){return Ye(this,null,function*(){let n=yield this._v1Import(e);if(n!=null)return n;let i=yield this._v0Import(e);return i!=null?i:null})}_v1Import(e){return Ye(this,null,function*(){var n,i,r,o,s;let l=e.parser.json;if(!(((n=l.extensionsUsed)==null?void 0:n.indexOf(_e.EXTENSION_NAME))!==-1))return null;let u=new vi,d=yield e.parser.getDependencies("node"),h=(i=l.extensions)==null?void 0:i[_e.EXTENSION_NAME];if(!h)return null;let c=h.specVersion;if(!Wo.has(c))return console.warn(`VRMSpringBoneLoaderPlugin: Unknown ${_e.EXTENSION_NAME} specVersion "${c}"`),null;let p=(r=h.colliders)==null?void 0:r.map((m,g)=>{var _,y,R,M,v,E,w,S,L,P,b,V,Z,Re,Te;let X=d[m.node];if(X==null)return console.warn(`VRMSpringBoneLoaderPlugin: The collider #${g} attempted to use the node #${m.node} but not found`),null;let k=m.shape,ce=(_=m.extensions)==null?void 0:_[Ei];if(this.useExtendedColliders&&ce!=null){let xe=ce.specVersion;if(!Go.has(xe))console.warn(`VRMSpringBoneLoaderPlugin: Unknown ${Ei} specVersion "${xe}". Fallbacking to the ${_e.EXTENSION_NAME} definition`);else{let O=ce.shape;if(O.sphere)return this._importSphereCollider(X,{offset:new N.Vector3().fromArray((y=O.sphere.offset)!=null?y:[0,0,0]),radius:(R=O.sphere.radius)!=null?R:0,inside:(M=O.sphere.inside)!=null?M:!1});if(O.capsule)return this._importCapsuleCollider(X,{offset:new N.Vector3().fromArray((v=O.capsule.offset)!=null?v:[0,0,0]),radius:(E=O.capsule.radius)!=null?E:0,tail:new N.Vector3().fromArray((w=O.capsule.tail)!=null?w:[0,0,0]),inside:(S=O.capsule.inside)!=null?S:!1});if(O.plane)return this._importPlaneCollider(X,{offset:new N.Vector3().fromArray((L=O.plane.offset)!=null?L:[0,0,0]),normal:new N.Vector3().fromArray((P=O.plane.normal)!=null?P:[0,0,1])})}}if(k.sphere)return this._importSphereCollider(X,{offset:new N.Vector3().fromArray((b=k.sphere.offset)!=null?b:[0,0,0]),radius:(V=k.sphere.radius)!=null?V:0,inside:!1});if(k.capsule)return this._importCapsuleCollider(X,{offset:new N.Vector3().fromArray((Z=k.capsule.offset)!=null?Z:[0,0,0]),radius:(Re=k.capsule.radius)!=null?Re:0,tail:new N.Vector3().fromArray((Te=k.capsule.tail)!=null?Te:[0,0,0]),inside:!1});throw new Error(`VRMSpringBoneLoaderPlugin: The collider #${g} has no valid shape`)}),f=(o=h.colliderGroups)==null?void 0:o.map((m,g)=>{var _;return{colliders:((_=m.colliders)!=null?_:[]).flatMap(R=>{let M=p==null?void 0:p[R];return M==null?(console.warn(`VRMSpringBoneLoaderPlugin: The colliderGroup #${g} attempted to use a collider #${R} but not found`),[]):M}),name:m.name}});return(s=h.springs)==null||s.forEach((m,g)=>{var _;let y=m.joints,R=(_=m.colliderGroups)==null?void 0:_.map(E=>{let w=f==null?void 0:f[E];if(w==null)throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${g} attempted to use a colliderGroup ${E} but not found`);return w}),M=m.center!=null?d[m.center]:void 0,v;y.forEach(E=>{if(v){let w=v.node,S=d[w],L=E.node,P=d[L],b={hitRadius:v.hitRadius,dragForce:v.dragForce,gravityPower:v.gravityPower,stiffness:v.stiffness,gravityDir:v.gravityDir!=null?new N.Vector3().fromArray(v.gravityDir):void 0},V=this._importJoint(S,P,b,R);M&&(V.center=M),u.addJoint(V)}v=E})}),u.setInitState(),u})}_v0Import(e){return Ye(this,null,function*(){var n,i,r;let o=e.parser.json;if(!(((n=o.extensionsUsed)==null?void 0:n.indexOf("VRM"))!==-1))return null;let l=(i=o.extensions)==null?void 0:i.VRM,a=l==null?void 0:l.secondaryAnimation;if(!a)return null;let u=a==null?void 0:a.boneGroups;if(!u)return null;let d=new vi,h=yield e.parser.getDependencies("node"),c=(r=a.colliderGroups)==null?void 0:r.map(p=>{var f;let m=h[p.node];return{colliders:((f=p.colliders)!=null?f:[]).map((_,y)=>{var R,M,v;let E=new N.Vector3(0,0,0);return _.offset&&E.set((R=_.offset.x)!=null?R:0,(M=_.offset.y)!=null?M:0,_.offset.z?-_.offset.z:0),this._importSphereCollider(m,{offset:E,radius:(v=_.radius)!=null?v:0,inside:!1})})}});return u==null||u.forEach((p,f)=>{let m=p.bones;m&&m.forEach(g=>{var _,y,R,M;let v=h[g],E=new N.Vector3;p.gravityDir?E.set((_=p.gravityDir.x)!=null?_:0,(y=p.gravityDir.y)!=null?y:0,(R=p.gravityDir.z)!=null?R:0):E.set(0,-1,0);let w=p.center!=null?h[p.center]:void 0,S={hitRadius:p.hitRadius,dragForce:p.dragForce,gravityPower:p.gravityPower,stiffness:p.stiffiness,gravityDir:E},L=(M=p.colliderGroups)==null?void 0:M.map(P=>{let b=c==null?void 0:c[P];if(b==null)throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${f} attempted to use a colliderGroup ${P} but not found`);return b});v.traverse(P=>{var b;let V=(b=P.children[0])!=null?b:null,Z=this._importJoint(P,V,S,L);w&&(Z.center=w),d.addJoint(Z)})})}),e.scene.updateMatrixWorld(),d.setInitState(),d})}_importJoint(e,n,i,r){let o=new Do(e,n,i,r);if(this.jointHelperRoot){let s=new Vo(o);this.jointHelperRoot.add(s),s.renderOrder=this.jointHelperRoot.renderOrder}return o}_importSphereCollider(e,n){let i=new Ti(n),r=new At(i);if(e.add(r),this.colliderHelperRoot){let o=new St(r);this.colliderHelperRoot.add(o),o.renderOrder=this.colliderHelperRoot.renderOrder}return r}_importCapsuleCollider(e,n){let i=new Mi(n),r=new At(i);if(e.add(r),this.colliderHelperRoot){let o=new St(r);this.colliderHelperRoot.add(o),o.renderOrder=this.colliderHelperRoot.renderOrder}return r}_importPlaneCollider(e,n){let i=new Ri(n),r=new At(i);if(e.add(r),this.colliderHelperRoot){let o=new St(r);this.colliderHelperRoot.add(o),o.renderOrder=this.colliderHelperRoot.renderOrder}return r}};wi.EXTENSION_NAME="VRMC_springBone";var Si=wi;var It=class{get name(){return"VRMLoaderPlugin"}constructor(e,n){var o,s,l,a,u,d,h,c,p,f;this.parser=e;let i=n==null?void 0:n.helperRoot,r=n==null?void 0:n.autoUpdateHumanBones;this.expressionPlugin=(o=n==null?void 0:n.expressionPlugin)!=null?o:new ht(e),this.firstPersonPlugin=(s=n==null?void 0:n.firstPersonPlugin)!=null?s:new pt(e),this.humanoidPlugin=(l=n==null?void 0:n.humanoidPlugin)!=null?l:new ft(e,{helperRoot:i,autoUpdateHumanBones:r}),this.lookAtPlugin=(a=n==null?void 0:n.lookAtPlugin)!=null?a:new gt(e,{helperRoot:i}),this.metaPlugin=(u=n==null?void 0:n.metaPlugin)!=null?u:new _t(e),this.mtoonMaterialPlugin=(d=n==null?void 0:n.mtoonMaterialPlugin)!=null?d:new oi(e),this.materialsHDREmissiveMultiplierPlugin=(h=n==null?void 0:n.materialsHDREmissiveMultiplierPlugin)!=null?h:new ai(e),this.materialsV0CompatPlugin=(c=n==null?void 0:n.materialsV0CompatPlugin)!=null?c:new ci(e),this.springBonePlugin=(p=n==null?void 0:n.springBonePlugin)!=null?p:new Si(e,{colliderHelperRoot:i,jointHelperRoot:i}),this.nodeConstraintPlugin=(f=n==null?void 0:n.nodeConstraintPlugin)!=null?f:new gi(e,{helperRoot:i})}beforeRoot(){return ye(this,null,function*(){yield this.materialsV0CompatPlugin.beforeRoot(),yield this.mtoonMaterialPlugin.beforeRoot()})}loadMesh(e){return ye(this,null,function*(){return yield this.mtoonMaterialPlugin.loadMesh(e)})}getMaterialType(e){let n=this.mtoonMaterialPlugin.getMaterialType(e);return n!=null?n:null}extendMaterialParams(e,n){return ye(this,null,function*(){yield this.materialsHDREmissiveMultiplierPlugin.extendMaterialParams(e,n),yield this.mtoonMaterialPlugin.extendMaterialParams(e,n)})}afterRoot(e){return ye(this,null,function*(){yield this.metaPlugin.afterRoot(e),yield this.humanoidPlugin.afterRoot(e),yield this.expressionPlugin.afterRoot(e),yield this.lookAtPlugin.afterRoot(e),yield this.firstPersonPlugin.afterRoot(e),yield this.springBonePlugin.afterRoot(e),yield this.nodeConstraintPlugin.afterRoot(e),yield this.mtoonMaterialPlugin.afterRoot(e);let n=e.userData.vrmMeta,i=e.userData.vrmHumanoid;if(n&&i){let r=new be({scene:e.scene,expressionManager:e.userData.vrmExpressionManager,firstPerson:e.userData.vrmFirstPerson,humanoid:i,lookAt:e.userData.vrmLookAt,meta:n,materials:e.userData.vrmMToonMaterials,springBoneManager:e.userData.vrmSpringBoneManager,nodeConstraintManager:e.userData.vrmNodeConstraintManager});e.userData.vrm=r}})}};import*as Pi from"three";function zo(t){let e=new Set;return t.traverse(n=>{if(!n.isMesh)return;let i=n;e.add(i)}),e}function Ai(t,e,n){if(e.size===1){let s=e.values().next().value;if(s.weight===1)return t[s.index]}let i=new Float32Array(t[0].count*3),r=0;if(n)r=1;else for(let s of e)r+=s.weight;for(let s of e){let l=t[s.index],a=s.weight/r;for(let u=0;u<l.count;u++)i[u*3+0]+=l.getX(u)*a,i[u*3+1]+=l.getY(u)*a,i[u*3+2]+=l.getZ(u)*a}return new Pi.BufferAttribute(i,3)}function bi(t){var r;let e=zo(t.scene),n=new Map,i=(r=t.expressionManager)==null?void 0:r.expressionMap;if(i!=null)for(let[o,s]of Object.entries(i)){let l=new Set;for(let a of s.binds)if(a instanceof Ae){if(a.weight!==0)for(let u of a.primitives){let d=n.get(u);d==null&&(d=new Map,n.set(u,d));let h=d.get(o);h==null&&(h=new Set,d.set(o,h)),h.add(a)}l.add(a)}for(let a of l)s.deleteBind(a)}for(let o of e){let s=n.get(o);if(s==null)continue;let l=o.geometry.morphAttributes;o.geometry.morphAttributes={};let a=o.geometry.clone();o.geometry=a;let u=a.morphTargetsRelative,d=l.position!=null,h=l.normal!=null,c={},p={},f=[];if(d||h){d&&(c.position=[]),h&&(c.normal=[]);let m=0;for(let[g,_]of s)d&&(c.position[m]=Ai(l.position,_,u)),h&&(c.normal[m]=Ai(l.normal,_,u)),i==null||i[g].addBind(new Ae({index:m,weight:1,primitives:[o]})),p[g]=m,f.push(0),m++}a.morphAttributes=c,o.morphTargetDictionary=p,o.morphTargetInfluences=f}}import*as Me from"three";import*as Hi from"three";function Ee(t,e,n){if(t.getComponent)return t.getComponent(e,n);{let i=t.array[e*t.itemSize+n];return t.normalized&&(i=Hi.MathUtils.denormalize(i,t.array)),i}}import*as Li from"three";function Ze(t,e,n,i){t.setComponent?t.setComponent(e,n,i):(t.normalized&&(i=Li.MathUtils.normalize(i,t.array)),t.array[e*t.itemSize+n]=i)}function Ii(t){var d;let e=jo(t),n=new Set;for(let h of e)n.has(h.geometry)&&(h.geometry=$o(h.geometry)),n.add(h.geometry);let i=new Map;for(let h of n){let c=h.getAttribute("skinIndex"),p=(d=i.get(c))!=null?d:new Map;i.set(c,p);let f=h.getAttribute("skinWeight"),m=Xo(c,f);p.set(f,m)}let r=new Map;for(let h of e){let c=Qo(h,i);r.set(h,c)}let o=[];for(let[h,c]of r){let p=!1;for(let f of o)if(Yo(c,f.boneInverseMap)){p=!0,f.meshes.add(h);for(let[g,_]of c)f.boneInverseMap.set(g,_);break}p||o.push({boneInverseMap:c,meshes:new Set([h])})}let s=new Map,l=new Ue,a=new Ue,u=new Ue;for(let h of o){let{boneInverseMap:c,meshes:p}=h,f=Array.from(c.keys()),m=Array.from(c.values()),g=new Me.Skeleton(f,m),_=a.getOrCreate(g);for(let y of p){let R=y.geometry.getAttribute("skinIndex"),M=l.getOrCreate(R),v=y.skeleton.bones,E=v.map(L=>u.getOrCreate(L)).join(","),w=`${M};${_};${E}`,S=s.get(w);S==null&&(S=R.clone(),qo(S,v,f),s.set(w,S)),y.geometry.setAttribute("skinIndex",S)}for(let y of p)y.bind(g,new Me.Matrix4)}}function jo(t){let e=new Set;return t.traverse(n=>{if(!n.isSkinnedMesh)return;let i=n;e.add(i)}),e}function Xo(t,e){let n=new Set;for(let i=0;i<t.count;i++)for(let r=0;r<t.itemSize;r++){let o=Ee(t,i,r);Ee(e,i,r)!==0&&n.add(o)}return n}function Qo(t,e){let n=new Map,i=t.skeleton,r=t.geometry,o=r.getAttribute("skinIndex"),s=r.getAttribute("skinWeight"),l=e.get(o),a=l==null?void 0:l.get(s);if(!a)throw new Error("Unreachable. attributeUsedIndexSetMap does not know the skin index attribute or the skin weight attribute.");for(let u of a)n.set(i.bones[u],i.boneInverses[u]);return n}function Yo(t,e){for(let[n,i]of t.entries()){let r=e.get(n);if(r!=null&&!Zo(i,r))return!1}return!0}function qo(t,e,n){let i=new Map;for(let o of e)i.set(o,i.size);let r=new Map;for(let[o,s]of n.entries()){let l=i.get(s);r.set(l,o)}for(let o=0;o<t.count;o++)for(let s=0;s<t.itemSize;s++){let l=Ee(t,o,s),a=r.get(l);Ze(t,o,s,a)}t.needsUpdate=!0}function Zo(t,e,n){if(n=n||1e-4,t.elements.length!=e.elements.length)return!1;for(let i=0,r=t.elements.length;i<r;i++)if(Math.abs(t.elements[i]-e.elements[i])>n)return!1;return!0}var Ue=class{constructor(){this._objectIndexMap=new Map;this._index=0}get(e){return this._objectIndexMap.get(e)}getOrCreate(e){let n=this._objectIndexMap.get(e);return n==null&&(n=this._index,this._objectIndexMap.set(e,n),this._index++),n}};function $o(t){var n,i,r,o;let e=new Me.BufferGeometry;e.name=t.name,e.setIndex(t.index);for(let[s,l]of Object.entries(t.attributes))e.setAttribute(s,l);for(let[s,l]of Object.entries(t.morphAttributes)){let a=s;e.morphAttributes[a]=l.concat()}e.morphTargetsRelative=t.morphTargetsRelative,e.groups=[];for(let s of t.groups)e.addGroup(s.start,s.count,s.materialIndex);return e.boundingSphere=(i=(n=t.boundingSphere)==null?void 0:n.clone())!=null?i:null,e.boundingBox=(o=(r=t.boundingBox)==null?void 0:r.clone())!=null?o:null,e.drawRange.start=t.drawRange.start,e.drawRange.count=t.drawRange.count,e.userData=t.userData,e}function Vi(t){if(Object.values(t).forEach(e=>{e!=null&&e.isTexture&&e.dispose()}),t.isShaderMaterial){let e=t.uniforms;e&&Object.values(e).forEach(n=>{let i=n.value;i!=null&&i.isTexture&&i.dispose()})}t.dispose()}function Jo(t){let e=t.geometry;e&&e.dispose();let n=t.skeleton;n&&n.dispose();let i=t.material;i&&(Array.isArray(i)?i.forEach(r=>Vi(r)):i&&Vi(i))}function Ci(t){t.traverse(Jo)}import*as $e from"three";function Oi(t,e){var s,l;console.warn("VRMUtils.removeUnnecessaryJoints: removeUnnecessaryJoints is deprecated. Use combineSkeletons instead. combineSkeletons contributes more to the performance improvement. This function will be removed in the next major version.");let n=(s=e==null?void 0:e.experimentalSameBoneCounts)!=null?s:!1,i=[];t.traverse(a=>{a.type==="SkinnedMesh"&&i.push(a)});let r=new Map,o=0;for(let a of i){let d=a.geometry.getAttribute("skinIndex");if(r.has(d))continue;let h=new Map,c=new Map;for(let p=0;p<d.count;p++)for(let f=0;f<d.itemSize;f++){let m=Ee(d,p,f),g=h.get(m);g==null&&(g=h.size,h.set(m,g),c.set(g,m)),Ze(d,p,f,g)}d.needsUpdate=!0,r.set(d,c),o=Math.max(o,h.size)}for(let a of i){let d=a.geometry.getAttribute("skinIndex"),h=r.get(d),c=[],p=[],f=n?o:h.size;for(let g=0;g<f;g++){let _=(l=h.get(g))!=null?l:0;c.push(a.skeleton.bones[_]),p.push(a.skeleton.boneInverses[_])}let m=new $e.Skeleton(c,p);a.bind(m,new $e.Matrix4)}}import*as ie from"three";import{BufferAttribute as Vt}from"three";function Ko(t,e){let n=t.position.count,i=new Array(n),r=0,o=e.array;for(let s=0;s<o.length;s++){let l=o[s];i[l]||(i[l]=!0,r++)}return{isVertexUsed:i,vertexCount:n,verticesUsed:r}}function es(t){let e=[],n=[],i=0;for(let r=0;r<t.length;r++)if(t[r]){let o=i++;e[r]=o,n[o]=r}return{originalIndexNewIndexMap:e,newIndexOriginalIndexMap:n}}function ts(t,e){var n,i,r,o;e.name=t.name,e.morphTargetsRelative=t.morphTargetsRelative,t.groups.forEach(s=>{e.addGroup(s.start,s.count,s.materialIndex)}),e.boundingBox=(i=(n=t.boundingBox)==null?void 0:n.clone())!=null?i:null,e.boundingSphere=(o=(r=t.boundingSphere)==null?void 0:r.clone())!=null?o:null,e.setDrawRange(t.drawRange.start,t.drawRange.count),e.userData=t.userData}function ns(t,e,n){let i=e.array,r=new i.constructor(i.length);for(let o=0;o<i.length;o++){let s=i[o];r[o]=n[s]}t.setIndex(new Vt(r,e.itemSize,e.normalized))}function Je(t,e,n){let i=t.constructor,r=new i(e.length*n),o=!0;for(let s=0;s<e.length;s++){let a=e[s]*n,u=s*n;for(let d=0;d<n;d++){let h=t[a+d];r[u+d]=h,o=o&&h===0}}return[r,o]}function is(t){var i;let e=new Map,n=[];for(let[r,o]of Object.entries(t))if(o.isInterleavedBufferAttribute){let s=o,l=s.data,a=(i=e.get(l))!=null?i:[];e.set(l,a),a.push([r,s])}else{let s=o;n.push([r,s])}return[e,n]}function rs(t,e,n){let[i,r]=is(e);for(let[o,s]of i){let l=o.array,{stride:a}=o,[u,d]=Je(l,n,a),h=new ie.InterleavedBuffer(u,a);h.setUsage(o.usage);for(let[c,p]of s){let{itemSize:f,offset:m,normalized:g}=p,_=new ie.InterleavedBufferAttribute(h,f,m,g);t.setAttribute(c,_)}}for(let[o,s]of r){let l=s.array,{itemSize:a,normalized:u}=s,[d,h]=Je(l,n,a);t.setAttribute(o,new Vt(d,a,u))}}function os(t){var i;let e=new Map,n=[];for(let[r,o]of Object.entries(t)){let s=r;for(let l=0;l<o.length;l++){let a=o[l];if(a.isInterleavedBufferAttribute){let u=a,d=u.data,h=(i=e.get(d))!=null?i:[];e.set(d,h),h.push([s,l,u])}else{let u=a;n.push([s,l,u])}}}return[e,n]}function ss(t,e,n){var l,a;let i=!0,[r,o]=os(e),s={};for(let[u,d]of r){let h=u.array,{stride:c}=u,[p,f]=Je(h,n,c);i=i&&f;let m=new ie.InterleavedBuffer(p,c);m.setUsage(u.usage);for(let[g,_,y]of d){let{itemSize:R,offset:M,normalized:v}=y,E=new ie.InterleavedBufferAttribute(m,R,M,v);(l=s[g])!=null||(s[g]=[]),s[g][_]=E}}for(let[u,d,h]of o){let c=h,p=c.array,{itemSize:f,normalized:m}=c,[g,_]=Je(p,n,f);i=i&&_,(a=s[u])!=null||(s[u]=[]),s[u][d]=new Vt(g,f,m)}t.morphAttributes=i?{}:s}function Ui(t){let e=new Map;t.traverse(n=>{if(!n.isMesh)return;let i=n,r=i.geometry,o=r.index;if(o==null)return;let s=e.get(r);if(s!=null){i.geometry=s;return}let{isVertexUsed:l,vertexCount:a,verticesUsed:u}=Ko(r.attributes,o);if(u===a)return;let{originalIndexNewIndexMap:d,newIndexOriginalIndexMap:h}=es(l),c=new ie.BufferGeometry;ts(r,c),e.set(r,c),ns(c,o,d),rs(c,r.attributes,h),ss(c,r.morphAttributes,h),i.geometry=c}),Array.from(e.keys()).forEach(n=>{n.dispose()})}function Bi(t){var e;((e=t.meta)==null?void 0:e.metaVersion)==="0"&&(t.scene.rotation.y=Math.PI)}var re=class{constructor(){}};re.combineMorphs=bi,re.combineSkeletons=Ii,re.deepDispose=Ci,re.removeUnnecessaryJoints=Oi,re.removeUnnecessaryVertices=Ui,re.rotateVRM0=Bi;export{Zr as MToonMaterial,Yr as MToonMaterialDebugMode,oi as MToonMaterialLoaderPlugin,ei as MToonMaterialOutlineWidthMode,be as VRM,mo as VRMAimConstraint,vt as VRMCore,ms as VRMCoreLoaderPlugin,cn as VRMExpression,ht as VRMExpressionLoaderPlugin,mn as VRMExpressionManager,gn as VRMExpressionMaterialColorBind,we as VRMExpressionMaterialColorType,Ae as VRMExpressionMorphTargetBind,hs as VRMExpressionOverrideType,ot as VRMExpressionPresetName,vn as VRMExpressionTextureTransformBind,En as VRMFirstPerson,pt as VRMFirstPersonLoaderPlugin,cs as VRMFirstPersonMeshAnnotationType,tt as VRMHumanBoneList,ps as VRMHumanBoneName,Er as VRMHumanBoneParentMap,yn as VRMHumanoid,Tn as VRMHumanoidHelper,ft as VRMHumanoidLoaderPlugin,It as VRMLoaderPlugin,Or as VRMLookAt,Ge as VRMLookAtBoneApplier,ut as VRMLookAtExpressionApplier,Ar as VRMLookAtHelper,gt as VRMLookAtLoaderPlugin,Vn as VRMLookAtRangeMap,fs as VRMLookAtTypeName,_t as VRMMetaLoaderPlugin,xt as VRMNodeConstraint,Rt as VRMNodeConstraintHelper,gi as VRMNodeConstraintLoaderPlugin,_o as VRMNodeConstraintManager,Tr as VRMRequiredHumanBoneName,yo as VRMRollConstraint,Mo as VRMRotationConstraint,At as VRMSpringBoneCollider,St as VRMSpringBoneColliderHelper,Ht as VRMSpringBoneColliderShape,Mi as VRMSpringBoneColliderShapeCapsule,Ri as VRMSpringBoneColliderShapePlane,Ti as VRMSpringBoneColliderShapeSphere,Do as VRMSpringBoneJoint,Vo as VRMSpringBoneJointHelper,Si as VRMSpringBoneLoaderPlugin,vi as VRMSpringBoneManager,re as VRMUtils};
936
936
  /*!
937
- * @pixiv/three-vrm-core v3.5.0
937
+ * @pixiv/three-vrm-core v3.5.1
938
938
  * The implementation of core features of VRM, for @pixiv/three-vrm
939
939
  *
940
940
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -942,7 +942,7 @@ void main() {
942
942
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
943
943
  */
944
944
  /*!
945
- * @pixiv/three-vrm-materials-mtoon v3.5.0
945
+ * @pixiv/three-vrm-materials-mtoon v3.5.1
946
946
  * MToon (toon material) module for @pixiv/three-vrm
947
947
  *
948
948
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -950,7 +950,7 @@ void main() {
950
950
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
951
951
  */
952
952
  /*!
953
- * @pixiv/three-vrm-materials-hdr-emissive-multiplier v3.5.0
953
+ * @pixiv/three-vrm-materials-hdr-emissive-multiplier v3.5.1
954
954
  * Support VRMC_hdr_emissiveMultiplier for @pixiv/three-vrm
955
955
  *
956
956
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -958,7 +958,7 @@ void main() {
958
958
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
959
959
  */
960
960
  /*!
961
- * @pixiv/three-vrm-materials-v0compat v3.5.0
961
+ * @pixiv/three-vrm-materials-v0compat v3.5.1
962
962
  * VRM0.0 materials compatibility layer plugin for @pixiv/three-vrm
963
963
  *
964
964
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -966,7 +966,7 @@ void main() {
966
966
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
967
967
  */
968
968
  /*!
969
- * @pixiv/three-vrm-node-constraint v3.5.0
969
+ * @pixiv/three-vrm-node-constraint v3.5.1
970
970
  * Node constraint module for @pixiv/three-vrm
971
971
  *
972
972
  * Copyright (c) 2019-2026 pixiv Inc.
@@ -974,7 +974,7 @@ void main() {
974
974
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
975
975
  */
976
976
  /*!
977
- * @pixiv/three-vrm-springbone v3.5.0
977
+ * @pixiv/three-vrm-springbone v3.5.1
978
978
  * Spring bone module for @pixiv/three-vrm
979
979
  *
980
980
  * Copyright (c) 2019-2026 pixiv Inc.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixiv/three-vrm",
3
- "version": "3.5.0",
3
+ "version": "3.5.1",
4
4
  "description": "VRM file loader for three.js.",
5
5
  "license": "MIT",
6
6
  "author": "pixiv",
@@ -54,12 +54,12 @@
54
54
  ]
55
55
  },
56
56
  "dependencies": {
57
- "@pixiv/three-vrm-core": "3.5.0",
58
- "@pixiv/three-vrm-materials-hdr-emissive-multiplier": "3.5.0",
59
- "@pixiv/three-vrm-materials-mtoon": "3.5.0",
60
- "@pixiv/three-vrm-materials-v0compat": "3.5.0",
61
- "@pixiv/three-vrm-node-constraint": "3.5.0",
62
- "@pixiv/three-vrm-springbone": "3.5.0"
57
+ "@pixiv/three-vrm-core": "3.5.1",
58
+ "@pixiv/three-vrm-materials-hdr-emissive-multiplier": "3.5.1",
59
+ "@pixiv/three-vrm-materials-mtoon": "3.5.1",
60
+ "@pixiv/three-vrm-materials-v0compat": "3.5.1",
61
+ "@pixiv/three-vrm-node-constraint": "3.5.1",
62
+ "@pixiv/three-vrm-springbone": "3.5.1"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@types/three": "^0.180.0",
@@ -68,5 +68,5 @@
68
68
  "peerDependencies": {
69
69
  "three": ">=0.137"
70
70
  },
71
- "gitHead": "8bfdd302e11269ab530ea5b33c064e6e2d92258e"
71
+ "gitHead": "2c4aac612467216e0c8e7dc4500c2fa309208cc7"
72
72
  }