three-stdlib 2.15.0 → 2.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1222) hide show
  1. package/animation/AnimationClipCreator.js +32 -52
  2. package/animation/AnimationClipCreator.mjs +57 -0
  3. package/animation/CCDIKSolver.js +66 -161
  4. package/animation/CCDIKSolver.mjs +234 -0
  5. package/animation/MMDAnimationHelper.js +150 -341
  6. package/animation/MMDAnimationHelper.mjs +514 -0
  7. package/animation/MMDPhysics.js +154 -361
  8. package/animation/MMDPhysics.mjs +769 -0
  9. package/cameras/CinematicCamera.js +67 -77
  10. package/cameras/CinematicCamera.mjs +129 -0
  11. package/controls/ArcballControls.js +544 -1449
  12. package/controls/ArcballControls.mjs +1737 -0
  13. package/controls/DeviceOrientationControls.js +52 -97
  14. package/controls/DeviceOrientationControls.mjs +74 -0
  15. package/controls/DragControls.js +85 -187
  16. package/controls/DragControls.mjs +172 -0
  17. package/controls/FirstPersonControls.js +123 -193
  18. package/controls/FirstPersonControls.mjs +220 -0
  19. package/controls/FlyControls.js +82 -152
  20. package/controls/FlyControls.mjs +239 -0
  21. package/controls/OrbitControls.js +232 -481
  22. package/controls/OrbitControls.mjs +731 -0
  23. package/controls/PointerLockControls.js +63 -99
  24. package/controls/PointerLockControls.mjs +88 -0
  25. package/controls/TrackballControls.js +211 -383
  26. package/controls/TrackballControls.mjs +481 -0
  27. package/controls/TransformControls.js +575 -782
  28. package/controls/TransformControls.mjs +1068 -0
  29. package/controls/experimental/CameraControls.js +329 -609
  30. package/controls/experimental/CameraControls.mjs +673 -0
  31. package/csm/CSM.js +47 -108
  32. package/csm/CSM.mjs +244 -0
  33. package/csm/CSMFrustum.js +14 -29
  34. package/csm/CSMFrustum.mjs +75 -0
  35. package/csm/CSMHelper.js +20 -34
  36. package/csm/CSMHelper.mjs +114 -0
  37. package/csm/CSMShader.js +7 -11
  38. package/csm/CSMShader.mjs +251 -0
  39. package/curves/CurveExtras.js +73 -115
  40. package/curves/CurveExtras.mjs +224 -0
  41. package/curves/NURBSCurve.js +15 -43
  42. package/curves/NURBSCurve.mjs +35 -0
  43. package/curves/NURBSSurface.js +11 -27
  44. package/curves/NURBSSurface.mjs +28 -0
  45. package/curves/NURBSUtils.js +54 -203
  46. package/curves/NURBSUtils.mjs +226 -0
  47. package/deprecated/Geometry.js +191 -486
  48. package/deprecated/Geometry.mjs +966 -0
  49. package/effects/AnaglyphEffect.js +95 -60
  50. package/effects/AnaglyphEffect.mjs +120 -0
  51. package/effects/AsciiEffect.js +80 -110
  52. package/effects/AsciiEffect.mjs +173 -0
  53. package/effects/OutlineEffect.js +121 -204
  54. package/effects/OutlineEffect.mjs +295 -0
  55. package/effects/ParallaxBarrierEffect.js +39 -38
  56. package/effects/ParallaxBarrierEffect.mjs +64 -0
  57. package/effects/PeppersGhostEffect.js +19 -68
  58. package/effects/PeppersGhostEffect.mjs +85 -0
  59. package/effects/StereoEffect.js +12 -16
  60. package/effects/StereoEffect.mjs +32 -0
  61. package/environments/RoomEnvironment.js +52 -47
  62. package/environments/RoomEnvironment.mjs +78 -0
  63. package/exporters/ColladaExporter.js +115 -241
  64. package/exporters/ColladaExporter.mjs +299 -0
  65. package/exporters/DRACOExporter.js +67 -121
  66. package/exporters/DRACOExporter.mjs +132 -0
  67. package/exporters/GLTFExporter.js +463 -1014
  68. package/exporters/GLTFExporter.mjs +1381 -0
  69. package/exporters/MMDExporter.js +44 -102
  70. package/exporters/MMDExporter.mjs +102 -0
  71. package/exporters/OBJExporter.js +78 -140
  72. package/exporters/OBJExporter.mjs +166 -0
  73. package/exporters/PLYExporter.js +93 -154
  74. package/exporters/PLYExporter.mjs +278 -0
  75. package/exporters/STLExporter.js +30 -81
  76. package/exporters/STLExporter.mjs +129 -0
  77. package/exporters/USDZExporter.js +84 -144
  78. package/exporters/USDZExporter.mjs +328 -0
  79. package/geometries/BoxLineGeometry.js +7 -14
  80. package/geometries/BoxLineGeometry.mjs +45 -0
  81. package/geometries/ConvexGeometry.js +15 -24
  82. package/geometries/ConvexGeometry.mjs +29 -0
  83. package/geometries/DecalGeometry.js +108 -162
  84. package/geometries/DecalGeometry.mjs +184 -0
  85. package/geometries/LightningStrike.js +101 -294
  86. package/geometries/LightningStrike.mjs +547 -0
  87. package/geometries/ParametricGeometries.js +26 -76
  88. package/geometries/ParametricGeometries.mjs +129 -0
  89. package/geometries/ParametricGeometry.js +24 -48
  90. package/geometries/ParametricGeometry.mjs +63 -0
  91. package/geometries/RoundedBoxGeometry.js +33 -64
  92. package/geometries/RoundedBoxGeometry.mjs +91 -0
  93. package/geometries/TeapotGeometry.js +1434 -174
  94. package/geometries/TeapotGeometry.mjs +1557 -0
  95. package/geometries/TextGeometry.js +9 -17
  96. package/geometries/TextGeometry.mjs +23 -0
  97. package/helpers/LightProbeHelper.js +53 -21
  98. package/helpers/LightProbeHelper.mjs +72 -0
  99. package/helpers/PositionalAudioHelper.js +23 -30
  100. package/helpers/PositionalAudioHelper.mjs +68 -0
  101. package/helpers/RectAreaLightHelper.js +17 -33
  102. package/helpers/RectAreaLightHelper.mjs +44 -0
  103. package/helpers/VertexNormalsHelper.js +20 -41
  104. package/helpers/VertexNormalsHelper.mjs +54 -0
  105. package/helpers/VertexTangentsHelper.js +18 -36
  106. package/helpers/VertexTangentsHelper.mjs +45 -0
  107. package/index.d.ts +54 -0
  108. package/index.js +968 -333
  109. package/index.mjs +968 -0
  110. package/interactive/SelectionBox.js +31 -46
  111. package/interactive/SelectionBox.mjs +137 -0
  112. package/interactive/SelectionHelper.js +16 -21
  113. package/interactive/SelectionHelper.mjs +54 -0
  114. package/libs/MeshoptDecoder.js +147 -58
  115. package/libs/MeshoptDecoder.mjs +210 -0
  116. package/libs/MotionControllers.js +66 -208
  117. package/libs/MotionControllers.mjs +261 -0
  118. package/lights/LightProbeGenerator.js +40 -96
  119. package/lights/LightProbeGenerator.mjs +145 -0
  120. package/lights/RectAreaLightUniformsLib.js +32842 -9
  121. package/lights/RectAreaLightUniformsLib.mjs +32842 -0
  122. package/lines/Line2.js +9 -12
  123. package/lines/Line2.mjs +13 -0
  124. package/lines/LineGeometry.js +7 -19
  125. package/lines/LineGeometry.mjs +44 -0
  126. package/lines/LineMaterial.js +51 -89
  127. package/lines/LineMaterial.mjs +539 -0
  128. package/lines/LineSegments2.js +56 -165
  129. package/lines/LineSegments2.mjs +202 -0
  130. package/lines/LineSegmentsGeometry.js +29 -71
  131. package/lines/LineSegmentsGeometry.mjs +124 -0
  132. package/lines/Wireframe.js +15 -29
  133. package/lines/Wireframe.mjs +31 -0
  134. package/lines/WireframeGeometry2.js +8 -9
  135. package/lines/WireframeGeometry2.mjs +13 -0
  136. package/loaders/3DMLoader.js +234 -469
  137. package/loaders/3DMLoader.mjs +802 -0
  138. package/loaders/3MFLoader.js +340 -555
  139. package/loaders/3MFLoader.mjs +837 -0
  140. package/loaders/AMFLoader.js +114 -219
  141. package/loaders/AMFLoader.mjs +284 -0
  142. package/loaders/AssimpLoader.js +328 -725
  143. package/loaders/AssimpLoader.mjs +1396 -0
  144. package/loaders/BVHLoader.js +94 -200
  145. package/loaders/BVHLoader.mjs +207 -0
  146. package/loaders/BasisTextureLoader.js +229 -357
  147. package/loaders/BasisTextureLoader.mjs +474 -0
  148. package/loaders/ColladaLoader.js +932 -1522
  149. package/loaders/ColladaLoader.mjs +2403 -0
  150. package/loaders/DDSLoader.js +42 -108
  151. package/loaders/DDSLoader.mjs +148 -0
  152. package/loaders/DRACOLoader.js +103 -210
  153. package/loaders/DRACOLoader.mjs +340 -0
  154. package/loaders/EXRLoader.js +461 -809
  155. package/loaders/EXRLoader.mjs +1351 -0
  156. package/loaders/FBXLoader.js +842 -1397
  157. package/loaders/FBXLoader.mjs +2362 -0
  158. package/loaders/FontLoader.js +33 -66
  159. package/loaders/FontLoader.mjs +111 -0
  160. package/loaders/GCodeLoader.js +63 -111
  161. package/loaders/GCodeLoader.mjs +141 -0
  162. package/loaders/GLTFLoader.js +771 -1484
  163. package/loaders/GLTFLoader.mjs +2316 -0
  164. package/loaders/HDRCubeTextureLoader.js +45 -50
  165. package/loaders/HDRCubeTextureLoader.mjs +77 -0
  166. package/loaders/KMZLoader.js +42 -55
  167. package/loaders/KMZLoader.mjs +75 -0
  168. package/loaders/KTX2Loader.js +229 -362
  169. package/loaders/KTX2Loader.mjs +427 -0
  170. package/loaders/KTXLoader.js +37 -99
  171. package/loaders/KTXLoader.mjs +87 -0
  172. package/loaders/LDrawLoader.js +313 -746
  173. package/loaders/LDrawLoader.mjs +1409 -0
  174. package/loaders/LUT3dlLoader.js +50 -62
  175. package/loaders/LUT3dlLoader.mjs +100 -0
  176. package/loaders/LUTCubeLoader.js +45 -56
  177. package/loaders/LUTCubeLoader.mjs +104 -0
  178. package/loaders/LWOLoader.js +227 -339
  179. package/loaders/LWOLoader.mjs +625 -0
  180. package/loaders/LottieLoader.js +36 -38
  181. package/loaders/LottieLoader.mjs +47 -0
  182. package/loaders/MD2Loader.js +248 -91
  183. package/loaders/MD2Loader.mjs +359 -0
  184. package/loaders/MDDLoader.js +25 -45
  185. package/loaders/MDDLoader.mjs +58 -0
  186. package/loaders/MMDLoader.js +359 -795
  187. package/loaders/MMDLoader.mjs +998 -0
  188. package/loaders/MTLLoader.js +91 -201
  189. package/loaders/MTLLoader.mjs +280 -0
  190. package/loaders/NRRDLoader.js +182 -263
  191. package/loaders/NRRDLoader.mjs +401 -0
  192. package/loaders/NodeMaterialLoader.js +121 -14
  193. package/loaders/NodeMaterialLoader.mjs +146 -0
  194. package/loaders/OBJLoader.js +161 -283
  195. package/loaders/OBJLoader.mjs +487 -0
  196. package/loaders/PCDLoader.js +145 -164
  197. package/loaders/PCDLoader.mjs +248 -0
  198. package/loaders/PDBLoader.js +45 -63
  199. package/loaders/PDBLoader.mjs +246 -0
  200. package/loaders/PLYLoader.js +106 -203
  201. package/loaders/PLYLoader.mjs +317 -0
  202. package/loaders/PRWMLoader.js +73 -110
  203. package/loaders/PRWMLoader.mjs +160 -0
  204. package/loaders/PVRLoader.js +32 -93
  205. package/loaders/PVRLoader.mjs +131 -0
  206. package/loaders/RGBELoader.js +96 -233
  207. package/loaders/RGBELoader.mjs +244 -0
  208. package/loaders/RGBMLoader.js +344 -514
  209. package/loaders/RGBMLoader.mjs +998 -0
  210. package/loaders/STLLoader.js +59 -165
  211. package/loaders/STLLoader.mjs +190 -0
  212. package/loaders/SVGLoader.js +481 -851
  213. package/loaders/SVGLoader.mjs +1709 -0
  214. package/loaders/TDSLoader.js +137 -527
  215. package/loaders/TDSLoader.mjs +480 -0
  216. package/loaders/TGALoader.js +94 -205
  217. package/loaders/TGALoader.mjs +285 -0
  218. package/loaders/TTFLoader.js +58 -79
  219. package/loaders/TTFLoader.mjs +131 -0
  220. package/loaders/TiltLoader.js +129 -167
  221. package/loaders/TiltLoader.mjs +373 -0
  222. package/loaders/VOXLoader.js +320 -84
  223. package/loaders/VOXLoader.mjs +431 -0
  224. package/loaders/VRMLLoader.js +786 -1268
  225. package/loaders/VRMLLoader.mjs +2093 -0
  226. package/loaders/VRMLoader.js +23 -31
  227. package/loaders/VRMLoader.mjs +38 -0
  228. package/loaders/VTKLoader.js +219 -407
  229. package/loaders/VTKLoader.mjs +646 -0
  230. package/loaders/XLoader.js +1083 -1259
  231. package/loaders/XLoader.mjs +1258 -0
  232. package/loaders/XYZLoader.js +28 -34
  233. package/loaders/XYZLoader.mjs +60 -0
  234. package/loaders/lwo/IFFParser.js +238 -492
  235. package/loaders/lwo/IFFParser.mjs +697 -0
  236. package/loaders/lwo/LWO2Parser.js +176 -279
  237. package/loaders/lwo/LWO2Parser.mjs +327 -0
  238. package/loaders/lwo/LWO3Parser.js +160 -247
  239. package/loaders/lwo/LWO3Parser.mjs +298 -0
  240. package/math/Capsule.js +56 -43
  241. package/math/Capsule.mjs +100 -0
  242. package/math/ColorConverter.js +18 -32
  243. package/math/ColorConverter.mjs +51 -0
  244. package/math/ConvexHull.js +515 -739
  245. package/math/ConvexHull.mjs +574 -0
  246. package/math/ImprovedNoise.js +282 -32
  247. package/math/ImprovedNoise.mjs +302 -0
  248. package/math/Lut.js +51 -35
  249. package/math/Lut.mjs +135 -0
  250. package/math/MeshSurfaceSampler.js +25 -68
  251. package/math/MeshSurfaceSampler.mjs +107 -0
  252. package/math/OBB.js +91 -152
  253. package/math/OBB.mjs +235 -0
  254. package/math/Octree.js +76 -139
  255. package/math/Octree.mjs +278 -0
  256. package/math/SimplexNoise.js +217 -238
  257. package/math/SimplexNoise.mjs +425 -0
  258. package/misc/ConvexObjectBreaker.js +79 -185
  259. package/misc/ConvexObjectBreaker.mjs +292 -0
  260. package/misc/GPUComputationRenderer.js +69 -194
  261. package/misc/GPUComputationRenderer.mjs +171 -0
  262. package/misc/Gyroscope.js +16 -22
  263. package/misc/Gyroscope.mjs +35 -0
  264. package/misc/MD2Character.js +52 -74
  265. package/misc/MD2Character.mjs +162 -0
  266. package/misc/MD2CharacterComplex.js +112 -163
  267. package/misc/MD2CharacterComplex.mjs +328 -0
  268. package/misc/MorphAnimMesh.js +20 -28
  269. package/misc/MorphAnimMesh.mjs +40 -0
  270. package/misc/MorphBlendMesh.js +45 -69
  271. package/misc/MorphBlendMesh.mjs +179 -0
  272. package/misc/ProgressiveLightmap.js +70 -187
  273. package/misc/ProgressiveLightmap.mjs +166 -0
  274. package/misc/RollerCoaster.js +106 -135
  275. package/misc/RollerCoaster.mjs +346 -0
  276. package/misc/TubePainter.js +74 -92
  277. package/misc/TubePainter.mjs +123 -0
  278. package/misc/Volume.js +108 -270
  279. package/misc/Volume.mjs +244 -0
  280. package/misc/VolumeSlice.js +34 -122
  281. package/misc/VolumeSlice.mjs +106 -0
  282. package/misc/WebGL.js +37 -34
  283. package/misc/WebGL.mjs +74 -0
  284. package/modifiers/CurveModifier.js +46 -151
  285. package/modifiers/CurveModifier.mjs +182 -0
  286. package/modifiers/EdgeSplitModifier.js +46 -90
  287. package/modifiers/EdgeSplitModifier.mjs +162 -0
  288. package/modifiers/SimplifyModifier.js +77 -202
  289. package/modifiers/SimplifyModifier.mjs +282 -0
  290. package/modifiers/TessellateModifier.js +65 -90
  291. package/modifiers/TessellateModifier.mjs +206 -0
  292. package/nodes/Nodes.js +274 -140
  293. package/nodes/Nodes.mjs +400 -0
  294. package/nodes/ShaderNode.js +296 -196
  295. package/nodes/ShaderNode.mjs +408 -0
  296. package/nodes/accessors/BufferNode.js +4 -8
  297. package/nodes/accessors/BufferNode.mjs +15 -0
  298. package/nodes/accessors/CameraNode.js +20 -25
  299. package/nodes/accessors/CameraNode.mjs +44 -0
  300. package/nodes/accessors/CubeTextureNode.js +14 -26
  301. package/nodes/accessors/CubeTextureNode.mjs +42 -0
  302. package/nodes/accessors/MaterialNode.js +43 -53
  303. package/nodes/accessors/MaterialNode.mjs +71 -0
  304. package/nodes/accessors/MaterialReferenceNode.js +3 -6
  305. package/nodes/accessors/MaterialReferenceNode.mjs +14 -0
  306. package/nodes/accessors/ModelNode.js +3 -5
  307. package/nodes/accessors/ModelNode.mjs +9 -0
  308. package/nodes/accessors/ModelViewProjectionNode.js +14 -13
  309. package/nodes/accessors/ModelViewProjectionNode.mjs +24 -0
  310. package/nodes/accessors/NormalNode.js +40 -39
  311. package/nodes/accessors/NormalNode.mjs +62 -0
  312. package/nodes/accessors/Object3DNode.js +40 -50
  313. package/nodes/accessors/Object3DNode.mjs +76 -0
  314. package/nodes/accessors/PointUVNode.js +5 -9
  315. package/nodes/accessors/PointUVNode.mjs +13 -0
  316. package/nodes/accessors/PositionNode.js +42 -41
  317. package/nodes/accessors/PositionNode.mjs +65 -0
  318. package/nodes/accessors/ReferenceNode.js +10 -17
  319. package/nodes/accessors/ReferenceNode.mjs +37 -0
  320. package/nodes/accessors/ReflectNode.js +23 -26
  321. package/nodes/accessors/ReflectNode.mjs +43 -0
  322. package/nodes/accessors/SkinningNode.js +46 -48
  323. package/nodes/accessors/SkinningNode.mjs +58 -0
  324. package/nodes/accessors/TextureNode.js +14 -29
  325. package/nodes/accessors/TextureNode.mjs +54 -0
  326. package/nodes/accessors/UVNode.js +5 -11
  327. package/nodes/accessors/UVNode.mjs +23 -0
  328. package/nodes/core/ArrayUniformNode.js +3 -7
  329. package/nodes/core/ArrayUniformNode.mjs +14 -0
  330. package/nodes/core/AttributeNode.js +5 -12
  331. package/nodes/core/AttributeNode.mjs +30 -0
  332. package/nodes/core/BypassNode.js +5 -12
  333. package/nodes/core/BypassNode.mjs +22 -0
  334. package/nodes/core/CodeNode.js +4 -12
  335. package/nodes/core/CodeNode.mjs +28 -0
  336. package/nodes/core/ConstNode.js +3 -7
  337. package/nodes/core/ConstNode.mjs +14 -0
  338. package/nodes/core/ContextNode.js +3 -8
  339. package/nodes/core/ContextNode.mjs +22 -0
  340. package/nodes/core/ExpressionNode.js +5 -9
  341. package/nodes/core/ExpressionNode.mjs +19 -0
  342. package/nodes/core/FunctionCallNode.js +6 -15
  343. package/nodes/core/FunctionCallNode.mjs +37 -0
  344. package/nodes/core/FunctionNode.js +10 -25
  345. package/nodes/core/FunctionNode.mjs +56 -0
  346. package/nodes/core/InputNode.js +12 -23
  347. package/nodes/core/InputNode.mjs +38 -0
  348. package/nodes/core/Node.js +35 -75
  349. package/nodes/core/Node.mjs +139 -0
  350. package/nodes/core/NodeAttribute.js +2 -4
  351. package/nodes/core/NodeAttribute.mjs +10 -0
  352. package/nodes/core/NodeBuilder.js +110 -224
  353. package/nodes/core/NodeBuilder.mjs +395 -0
  354. package/nodes/core/NodeCode.js +4 -7
  355. package/nodes/core/NodeCode.mjs +11 -0
  356. package/nodes/core/NodeFrame.js +9 -12
  357. package/nodes/core/NodeFrame.mjs +35 -0
  358. package/nodes/core/NodeFunctionInput.js +3 -5
  359. package/nodes/core/NodeFunctionInput.mjs +13 -0
  360. package/nodes/core/NodeKeywords.js +5 -16
  361. package/nodes/core/NodeKeywords.mjs +44 -0
  362. package/nodes/core/NodeUniform.js +3 -7
  363. package/nodes/core/NodeUniform.mjs +18 -0
  364. package/nodes/core/NodeUtils.js +39 -43
  365. package/nodes/core/NodeUtils.mjs +57 -0
  366. package/nodes/core/NodeVar.js +2 -4
  367. package/nodes/core/NodeVar.mjs +10 -0
  368. package/nodes/core/NodeVary.js +2 -4
  369. package/nodes/core/NodeVary.mjs +10 -0
  370. package/nodes/core/PropertyNode.js +4 -10
  371. package/nodes/core/PropertyNode.mjs +21 -0
  372. package/nodes/core/TempNode.js +5 -11
  373. package/nodes/core/TempNode.mjs +25 -0
  374. package/nodes/core/UniformNode.js +4 -10
  375. package/nodes/core/UniformNode.mjs +23 -0
  376. package/nodes/core/VarNode.js +3 -11
  377. package/nodes/core/VarNode.mjs +31 -0
  378. package/nodes/core/VaryNode.js +6 -15
  379. package/nodes/core/VaryNode.mjs +30 -0
  380. package/nodes/core/constants.js +20 -7
  381. package/nodes/core/constants.mjs +24 -0
  382. package/nodes/display/ColorSpaceNode.js +34 -38
  383. package/nodes/display/ColorSpaceNode.mjs +63 -0
  384. package/nodes/display/NormalMapNode.js +35 -53
  385. package/nodes/display/NormalMapNode.mjs +54 -0
  386. package/nodes/fog/FogNode.js +5 -9
  387. package/nodes/fog/FogNode.mjs +15 -0
  388. package/nodes/fog/FogRangeNode.js +5 -9
  389. package/nodes/fog/FogRangeNode.mjs +17 -0
  390. package/nodes/functions/BSDFs.js +61 -118
  391. package/nodes/functions/BSDFs.mjs +64 -0
  392. package/nodes/lights/LightContextNode.js +14 -23
  393. package/nodes/lights/LightContextNode.mjs +35 -0
  394. package/nodes/lights/LightNode.js +27 -31
  395. package/nodes/lights/LightNode.mjs +58 -0
  396. package/nodes/lights/LightsNode.js +9 -28
  397. package/nodes/lights/LightsNode.mjs +59 -0
  398. package/nodes/loaders/NodeLoader.js +27 -42
  399. package/nodes/loaders/NodeLoader.mjs +66 -0
  400. package/nodes/loaders/NodeMaterialLoader.js +4 -10
  401. package/nodes/loaders/NodeMaterialLoader.mjs +24 -0
  402. package/nodes/loaders/NodeObjectLoader.js +9 -19
  403. package/nodes/loaders/NodeObjectLoader.mjs +40 -0
  404. package/nodes/materials/LineBasicNodeMaterial.js +5 -10
  405. package/nodes/materials/LineBasicNodeMaterial.mjs +27 -0
  406. package/nodes/materials/Materials.js +14 -17
  407. package/nodes/materials/Materials.mjs +28 -0
  408. package/nodes/materials/MeshBasicNodeMaterial.js +5 -10
  409. package/nodes/materials/MeshBasicNodeMaterial.mjs +28 -0
  410. package/nodes/materials/MeshStandardNodeMaterial.js +5 -8
  411. package/nodes/materials/MeshStandardNodeMaterial.mjs +41 -0
  412. package/nodes/materials/NodeMaterial.js +20 -36
  413. package/nodes/materials/NodeMaterial.mjs +64 -0
  414. package/nodes/materials/PointsNodeMaterial.js +5 -10
  415. package/nodes/materials/PointsNodeMaterial.mjs +30 -0
  416. package/nodes/math/CondNode.js +11 -23
  417. package/nodes/math/CondNode.mjs +38 -0
  418. package/nodes/math/MathNode.js +98 -142
  419. package/nodes/math/MathNode.mjs +163 -0
  420. package/nodes/math/OperatorNode.js +24 -46
  421. package/nodes/math/OperatorNode.mjs +103 -0
  422. package/nodes/procedural/CheckerNode.js +13 -19
  423. package/nodes/procedural/CheckerNode.mjs +21 -0
  424. package/nodes/utils/ArrayElementNode.js +4 -8
  425. package/nodes/utils/ArrayElementNode.mjs +19 -0
  426. package/nodes/utils/ConvertNode.js +3 -8
  427. package/nodes/utils/ConvertNode.mjs +25 -0
  428. package/nodes/utils/JoinNode.js +7 -11
  429. package/nodes/utils/JoinNode.mjs +26 -0
  430. package/nodes/utils/MatcapUVNode.js +8 -11
  431. package/nodes/utils/MatcapUVNode.mjs +16 -0
  432. package/nodes/utils/OscNode.js +27 -33
  433. package/nodes/utils/OscNode.mjs +50 -0
  434. package/nodes/utils/SplitNode.js +6 -20
  435. package/nodes/utils/SplitNode.mjs +45 -0
  436. package/nodes/utils/SpriteSheetUVNode.js +23 -23
  437. package/nodes/utils/SpriteSheetUVNode.mjs +40 -0
  438. package/nodes/utils/TimerNode.js +20 -24
  439. package/nodes/utils/TimerNode.mjs +44 -0
  440. package/objects/GroundProjectedEnv.js +22 -37
  441. package/objects/GroundProjectedEnv.mjs +130 -0
  442. package/objects/Lensflare.js +86 -156
  443. package/objects/Lensflare.mjs +262 -0
  444. package/objects/LightningStorm.js +38 -102
  445. package/objects/LightningStorm.mjs +110 -0
  446. package/objects/MarchingCubes.js +150 -303
  447. package/objects/MarchingCubes.mjs +457 -0
  448. package/objects/Reflector.js +50 -72
  449. package/objects/Reflector.mjs +166 -0
  450. package/objects/ReflectorForSSRPass.js +80 -131
  451. package/objects/ReflectorForSSRPass.mjs +247 -0
  452. package/objects/ReflectorRTT.js +6 -7
  453. package/objects/ReflectorRTT.mjs +10 -0
  454. package/objects/Refractor.js +64 -106
  455. package/objects/Refractor.mjs +178 -0
  456. package/objects/ShadowMesh.js +8 -17
  457. package/objects/ShadowMesh.mjs +41 -0
  458. package/objects/Sky.js +119 -80
  459. package/objects/Sky.mjs +124 -0
  460. package/objects/Water.js +83 -127
  461. package/objects/Water.mjs +235 -0
  462. package/objects/Water2.js +72 -108
  463. package/objects/Water2.mjs +252 -0
  464. package/offscreen/jank.js +10 -14
  465. package/offscreen/jank.mjs +27 -0
  466. package/offscreen/offscreen.js +4 -5
  467. package/offscreen/offscreen.mjs +5 -0
  468. package/offscreen/scene.js +45 -48
  469. package/offscreen/scene.mjs +52 -0
  470. package/package.json +3 -3
  471. package/physics/AmmoPhysics.js +30 -71
  472. package/physics/AmmoPhysics.mjs +165 -0
  473. package/postprocessing/AdaptiveToneMappingPass.js +97 -123
  474. package/postprocessing/AdaptiveToneMappingPass.mjs +221 -0
  475. package/postprocessing/AfterimagePass.js +28 -49
  476. package/postprocessing/AfterimagePass.mjs +55 -0
  477. package/postprocessing/BloomPass.js +43 -69
  478. package/postprocessing/BloomPass.mjs +90 -0
  479. package/postprocessing/BokehPass.js +39 -69
  480. package/postprocessing/BokehPass.mjs +76 -0
  481. package/postprocessing/ClearPass.js +10 -25
  482. package/postprocessing/ClearPass.mjs +27 -0
  483. package/postprocessing/CubeTexturePass.js +28 -27
  484. package/postprocessing/CubeTexturePass.mjs +49 -0
  485. package/postprocessing/DotScreenPass.js +24 -32
  486. package/postprocessing/DotScreenPass.mjs +40 -0
  487. package/postprocessing/EffectComposer.js +39 -86
  488. package/postprocessing/EffectComposer.mjs +139 -0
  489. package/postprocessing/FilmPass.js +25 -30
  490. package/postprocessing/FilmPass.mjs +42 -0
  491. package/postprocessing/GlitchPass.js +38 -61
  492. package/postprocessing/GlitchPass.mjs +75 -0
  493. package/postprocessing/HalftonePass.js +19 -39
  494. package/postprocessing/HalftonePass.mjs +44 -0
  495. package/postprocessing/LUTPass.js +13 -38
  496. package/postprocessing/LUTPass.mjs +136 -0
  497. package/postprocessing/MaskPass.js +19 -38
  498. package/postprocessing/MaskPass.mjs +60 -0
  499. package/postprocessing/OutlinePass.js +135 -277
  500. package/postprocessing/OutlinePass.mjs +438 -0
  501. package/postprocessing/Pass.js +20 -44
  502. package/postprocessing/Pass.mjs +37 -0
  503. package/postprocessing/RenderPass.js +13 -36
  504. package/postprocessing/RenderPass.mjs +48 -0
  505. package/postprocessing/RenderPixelatedPass.js +44 -58
  506. package/postprocessing/RenderPixelatedPass.mjs +199 -0
  507. package/postprocessing/SAOPass.js +154 -189
  508. package/postprocessing/SAOPass.mjs +282 -0
  509. package/postprocessing/SMAAPass.js +64 -84
  510. package/postprocessing/SMAAPass.mjs +112 -0
  511. package/postprocessing/SSAARenderPass.js +121 -69
  512. package/postprocessing/SSAARenderPass.mjs +170 -0
  513. package/postprocessing/SSAOPass.js +123 -172
  514. package/postprocessing/SSAOPass.mjs +265 -0
  515. package/postprocessing/SSRPass.js +211 -280
  516. package/postprocessing/SSRPass.mjs +432 -0
  517. package/postprocessing/SavePass.js +20 -25
  518. package/postprocessing/SavePass.mjs +37 -0
  519. package/postprocessing/ShaderPass.js +14 -30
  520. package/postprocessing/ShaderPass.mjs +39 -0
  521. package/postprocessing/TAARenderPass.js +42 -61
  522. package/postprocessing/TAARenderPass.mjs +88 -0
  523. package/postprocessing/TexturePass.js +21 -22
  524. package/postprocessing/TexturePass.mjs +39 -0
  525. package/postprocessing/UnrealBloomPass.js +105 -213
  526. package/postprocessing/UnrealBloomPass.mjs +220 -0
  527. package/renderers/CSS2DRenderer.js +44 -56
  528. package/renderers/CSS2DRenderer.mjs +112 -0
  529. package/renderers/CSS3DRenderer.js +53 -86
  530. package/renderers/CSS3DRenderer.mjs +133 -0
  531. package/renderers/Projector.js +107 -274
  532. package/renderers/Projector.mjs +511 -0
  533. package/renderers/SVGRenderer.js +72 -182
  534. package/renderers/SVGRenderer.mjs +306 -0
  535. package/renderers/nodes/accessors/CameraNode.js +29 -40
  536. package/renderers/nodes/accessors/CameraNode.mjs +63 -0
  537. package/renderers/nodes/accessors/ModelNode.js +28 -37
  538. package/renderers/nodes/accessors/ModelNode.mjs +61 -0
  539. package/renderers/nodes/accessors/ModelViewProjectionNode.js +10 -23
  540. package/renderers/nodes/accessors/ModelViewProjectionNode.mjs +21 -0
  541. package/renderers/nodes/accessors/NormalNode.js +35 -45
  542. package/renderers/nodes/accessors/NormalNode.mjs +61 -0
  543. package/renderers/nodes/accessors/PositionNode.js +18 -19
  544. package/renderers/nodes/accessors/PositionNode.mjs +30 -0
  545. package/renderers/nodes/accessors/UVNode.js +5 -10
  546. package/renderers/nodes/accessors/UVNode.mjs +13 -0
  547. package/renderers/nodes/core/AttributeNode.js +5 -14
  548. package/renderers/nodes/core/AttributeNode.mjs +35 -0
  549. package/renderers/nodes/core/InputNode.js +4 -14
  550. package/renderers/nodes/core/InputNode.mjs +31 -0
  551. package/renderers/nodes/core/Node.js +7 -17
  552. package/renderers/nodes/core/Node.mjs +34 -0
  553. package/renderers/nodes/core/NodeAttribute.js +3 -6
  554. package/renderers/nodes/core/NodeAttribute.mjs +10 -0
  555. package/renderers/nodes/core/NodeBuilder.js +87 -154
  556. package/renderers/nodes/core/NodeBuilder.mjs +243 -0
  557. package/renderers/nodes/core/NodeFrame.js +9 -12
  558. package/renderers/nodes/core/NodeFrame.mjs +35 -0
  559. package/renderers/nodes/core/NodeSlot.js +2 -3
  560. package/renderers/nodes/core/NodeSlot.mjs +10 -0
  561. package/renderers/nodes/core/NodeUniform.js +4 -9
  562. package/renderers/nodes/core/NodeUniform.mjs +18 -0
  563. package/renderers/nodes/core/NodeVary.js +4 -7
  564. package/renderers/nodes/core/NodeVary.mjs +11 -0
  565. package/renderers/nodes/core/VaryNode.js +6 -12
  566. package/renderers/nodes/core/VaryNode.mjs +22 -0
  567. package/renderers/nodes/core/constants.js +16 -13
  568. package/renderers/nodes/core/constants.mjs +22 -0
  569. package/renderers/nodes/inputs/ColorNode.js +5 -11
  570. package/renderers/nodes/inputs/ColorNode.mjs +11 -0
  571. package/renderers/nodes/inputs/FloatNode.js +5 -11
  572. package/renderers/nodes/inputs/FloatNode.mjs +11 -0
  573. package/renderers/nodes/inputs/Matrix3Node.js +7 -13
  574. package/renderers/nodes/inputs/Matrix3Node.mjs +12 -0
  575. package/renderers/nodes/inputs/Matrix4Node.js +7 -13
  576. package/renderers/nodes/inputs/Matrix4Node.mjs +12 -0
  577. package/renderers/nodes/inputs/TextureNode.js +7 -15
  578. package/renderers/nodes/inputs/TextureNode.mjs +20 -0
  579. package/renderers/nodes/inputs/Vector2Node.js +5 -11
  580. package/renderers/nodes/inputs/Vector2Node.mjs +11 -0
  581. package/renderers/nodes/inputs/Vector3Node.js +7 -13
  582. package/renderers/nodes/inputs/Vector3Node.mjs +12 -0
  583. package/renderers/nodes/inputs/Vector4Node.js +7 -13
  584. package/renderers/nodes/inputs/Vector4Node.mjs +12 -0
  585. package/renderers/nodes/math/MathNode.js +20 -30
  586. package/renderers/nodes/math/MathNode.mjs +55 -0
  587. package/renderers/nodes/math/OperatorNode.js +4 -20
  588. package/renderers/nodes/math/OperatorNode.mjs +42 -0
  589. package/renderers/nodes/utils/SwitchNode.js +4 -9
  590. package/renderers/nodes/utils/SwitchNode.mjs +20 -0
  591. package/renderers/nodes/utils/TimerNode.js +5 -10
  592. package/renderers/nodes/utils/TimerNode.mjs +14 -0
  593. package/renderers/webgpu/WebGPU.js +14 -16
  594. package/renderers/webgpu/WebGPU.mjs +24 -0
  595. package/renderers/webgpu/WebGPUAttributes.js +16 -23
  596. package/renderers/webgpu/WebGPUAttributes.mjs +69 -0
  597. package/renderers/webgpu/WebGPUBackground.js +13 -30
  598. package/renderers/webgpu/WebGPUBackground.mjs +61 -0
  599. package/renderers/webgpu/WebGPUBinding.js +4 -7
  600. package/renderers/webgpu/WebGPUBinding.mjs +14 -0
  601. package/renderers/webgpu/WebGPUBindings.js +21 -57
  602. package/renderers/webgpu/WebGPUBindings.mjs +155 -0
  603. package/renderers/webgpu/WebGPUComputePipelines.js +14 -25
  604. package/renderers/webgpu/WebGPUComputePipelines.mjs +44 -0
  605. package/renderers/webgpu/WebGPUGeometries.js +5 -15
  606. package/renderers/webgpu/WebGPUGeometries.mjs +41 -0
  607. package/renderers/webgpu/WebGPUInfo.js +3 -8
  608. package/renderers/webgpu/WebGPUInfo.mjs +46 -0
  609. package/renderers/webgpu/WebGPUObjects.js +5 -10
  610. package/renderers/webgpu/WebGPUObjects.mjs +25 -0
  611. package/renderers/webgpu/WebGPUProperties.js +5 -11
  612. package/renderers/webgpu/WebGPUProperties.mjs +22 -0
  613. package/renderers/webgpu/WebGPURenderLists.js +20 -36
  614. package/renderers/webgpu/WebGPURenderLists.mjs +119 -0
  615. package/renderers/webgpu/WebGPURenderPipelines.js +260 -387
  616. package/renderers/webgpu/WebGPURenderPipelines.mjs +545 -0
  617. package/renderers/webgpu/WebGPURenderer.js +124 -262
  618. package/renderers/webgpu/WebGPURenderer.mjs +574 -0
  619. package/renderers/webgpu/WebGPUSampledTexture.js +18 -31
  620. package/renderers/webgpu/WebGPUSampledTexture.mjs +40 -0
  621. package/renderers/webgpu/WebGPUSampler.js +7 -12
  622. package/renderers/webgpu/WebGPUSampler.mjs +15 -0
  623. package/renderers/webgpu/WebGPUStorageBuffer.js +7 -12
  624. package/renderers/webgpu/WebGPUStorageBuffer.mjs +15 -0
  625. package/renderers/webgpu/WebGPUTextureRenderer.js +5 -11
  626. package/renderers/webgpu/WebGPUTextureRenderer.mjs +23 -0
  627. package/renderers/webgpu/WebGPUTextureUtils.js +29 -40
  628. package/renderers/webgpu/WebGPUTextureUtils.mjs +98 -0
  629. package/renderers/webgpu/WebGPUTextures.js +186 -333
  630. package/renderers/webgpu/WebGPUTextures.mjs +484 -0
  631. package/renderers/webgpu/WebGPUUniform.js +25 -51
  632. package/renderers/webgpu/WebGPUUniform.mjs +81 -0
  633. package/renderers/webgpu/WebGPUUniformsGroup.js +32 -72
  634. package/renderers/webgpu/WebGPUUniformsGroup.mjs +176 -0
  635. package/renderers/webgpu/constants.js +190 -181
  636. package/renderers/webgpu/constants.mjs +230 -0
  637. package/renderers/webgpu/nodes/ShaderLib.js +2 -2
  638. package/renderers/webgpu/nodes/ShaderLib.mjs +42 -0
  639. package/renderers/webgpu/nodes/WebGPUNodeBuilder.js +53 -124
  640. package/renderers/webgpu/nodes/WebGPUNodeBuilder.mjs +165 -0
  641. package/renderers/webgpu/nodes/WebGPUNodeUniform.js +17 -31
  642. package/renderers/webgpu/nodes/WebGPUNodeUniform.mjs +73 -0
  643. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +8 -9
  644. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.mjs +15 -0
  645. package/renderers/webgpu/nodes/WebGPUNodes.js +7 -45
  646. package/renderers/webgpu/nodes/WebGPUNodes.mjs +40 -0
  647. package/shaders/ACESFilmicToneMappingShader.js +44 -24
  648. package/shaders/ACESFilmicToneMappingShader.mjs +48 -0
  649. package/shaders/AfterimageShader.js +28 -18
  650. package/shaders/AfterimageShader.mjs +32 -0
  651. package/shaders/BasicShader.js +9 -7
  652. package/shaders/BasicShader.mjs +12 -0
  653. package/shaders/BleachBypassShader.js +31 -15
  654. package/shaders/BleachBypassShader.mjs +35 -0
  655. package/shaders/BlendShader.js +26 -19
  656. package/shaders/BlendShader.mjs +30 -0
  657. package/shaders/BokehShader.js +98 -36
  658. package/shaders/BokehShader.mjs +106 -0
  659. package/shaders/BokehShader2.js +261 -90
  660. package/shaders/BokehShader2.mjs +269 -0
  661. package/shaders/BrightnessContrastShader.js +28 -19
  662. package/shaders/BrightnessContrastShader.mjs +32 -0
  663. package/shaders/ColorCorrectionShader.js +26 -22
  664. package/shaders/ColorCorrectionShader.mjs +30 -0
  665. package/shaders/ColorifyShader.js +24 -16
  666. package/shaders/ColorifyShader.mjs +28 -0
  667. package/shaders/ConvolutionShader.js +40 -36
  668. package/shaders/ConvolutionShader.mjs +55 -0
  669. package/shaders/CopyShader.js +21 -13
  670. package/shaders/CopyShader.mjs +25 -0
  671. package/shaders/DOFMipMapShader.js +28 -21
  672. package/shaders/DOFMipMapShader.mjs +32 -0
  673. package/shaders/DepthLimitedBlurShader.js +85 -40
  674. package/shaders/DepthLimitedBlurShader.mjs +114 -0
  675. package/shaders/DigitalGlitch.js +74 -46
  676. package/shaders/DigitalGlitch.mjs +78 -0
  677. package/shaders/DotScreenShader.js +35 -27
  678. package/shaders/DotScreenShader.mjs +39 -0
  679. package/shaders/FXAAShader.js +1094 -19
  680. package/shaders/FXAAShader.mjs +1098 -0
  681. package/shaders/FilmShader.js +38 -52
  682. package/shaders/FilmShader.mjs +42 -0
  683. package/shaders/FocusShader.js +51 -24
  684. package/shaders/FocusShader.mjs +55 -0
  685. package/shaders/FreiChenShader.js +57 -24
  686. package/shaders/FreiChenShader.mjs +61 -0
  687. package/shaders/FresnelShader.js +43 -22
  688. package/shaders/FresnelShader.mjs +47 -0
  689. package/shaders/GammaCorrectionShader.js +19 -11
  690. package/shaders/GammaCorrectionShader.mjs +23 -0
  691. package/shaders/GodRaysShader.js +103 -94
  692. package/shaders/GodRaysShader.mjs +146 -0
  693. package/shaders/HalftoneShader.js +208 -65
  694. package/shaders/HalftoneShader.mjs +212 -0
  695. package/shaders/HorizontalBlurShader.js +7 -23
  696. package/shaders/HorizontalBlurShader.mjs +43 -0
  697. package/shaders/HorizontalTiltShiftShader.js +33 -21
  698. package/shaders/HorizontalTiltShiftShader.mjs +37 -0
  699. package/shaders/HueSaturationShader.js +37 -21
  700. package/shaders/HueSaturationShader.mjs +41 -0
  701. package/shaders/KaleidoShader.js +30 -22
  702. package/shaders/KaleidoShader.mjs +34 -0
  703. package/shaders/LuminosityHighPassShader.js +33 -27
  704. package/shaders/LuminosityHighPassShader.mjs +37 -0
  705. package/shaders/LuminosityShader.js +21 -11
  706. package/shaders/LuminosityShader.mjs +25 -0
  707. package/shaders/MirrorShader.js +31 -16
  708. package/shaders/MirrorShader.mjs +35 -0
  709. package/shaders/NormalMapShader.js +27 -23
  710. package/shaders/NormalMapShader.mjs +31 -0
  711. package/shaders/ParallaxShader.js +107 -48
  712. package/shaders/ParallaxShader.mjs +113 -0
  713. package/shaders/PixelShader.js +24 -16
  714. package/shaders/PixelShader.mjs +28 -0
  715. package/shaders/RGBShiftShader.js +26 -22
  716. package/shaders/RGBShiftShader.mjs +30 -0
  717. package/shaders/SAOShader.js +132 -48
  718. package/shaders/SAOShader.mjs +144 -0
  719. package/shaders/SMAAShader.js +256 -135
  720. package/shaders/SMAAShader.mjs +272 -0
  721. package/shaders/SSAOShader.js +153 -81
  722. package/shaders/SSAOShader.mjs +172 -0
  723. package/shaders/SSRShader.js +32 -87
  724. package/shaders/SSRShader.mjs +324 -0
  725. package/shaders/SepiaShader.js +25 -15
  726. package/shaders/SepiaShader.mjs +29 -0
  727. package/shaders/SobelOperatorShader.js +40 -29
  728. package/shaders/SobelOperatorShader.mjs +44 -0
  729. package/shaders/SubsurfaceScatteringShader.js +53 -39
  730. package/shaders/SubsurfaceScatteringShader.mjs +59 -0
  731. package/shaders/TechnicolorShader.js +20 -13
  732. package/shaders/TechnicolorShader.mjs +24 -0
  733. package/shaders/ToneMapShader.js +44 -28
  734. package/shaders/ToneMapShader.mjs +48 -0
  735. package/shaders/ToonShader.js +172 -96
  736. package/shaders/ToonShader.mjs +188 -0
  737. package/shaders/TriangleBlurShader.js +32 -23
  738. package/shaders/TriangleBlurShader.mjs +36 -0
  739. package/shaders/UnpackDepthRGBAShader.js +22 -14
  740. package/shaders/UnpackDepthRGBAShader.mjs +26 -0
  741. package/shaders/VerticalBlurShader.js +7 -23
  742. package/shaders/VerticalBlurShader.mjs +44 -0
  743. package/shaders/VerticalTiltShiftShader.js +33 -21
  744. package/shaders/VerticalTiltShiftShader.mjs +37 -0
  745. package/shaders/VignetteShader.js +24 -28
  746. package/shaders/VignetteShader.mjs +28 -0
  747. package/shaders/VolumeShader.js +174 -77
  748. package/shaders/VolumeShader.mjs +178 -0
  749. package/shaders/WaterRefractionShader.js +38 -6
  750. package/shaders/WaterRefractionShader.mjs +57 -0
  751. package/shaders/types.js +1 -1
  752. package/{custom.d.js → shaders/types.mjs} +0 -0
  753. package/textures/FlakesTexture.js +8 -10
  754. package/textures/FlakesTexture.mjs +30 -0
  755. package/types/helpers.js +3 -2
  756. package/types/helpers.mjs +4 -0
  757. package/utils/BufferGeometryUtils.js +251 -325
  758. package/utils/BufferGeometryUtils.mjs +570 -0
  759. package/utils/GeometryCompressionUtils.js +241 -239
  760. package/utils/GeometryCompressionUtils.mjs +547 -0
  761. package/utils/GeometryUtils.js +41 -94
  762. package/utils/GeometryUtils.mjs +108 -0
  763. package/utils/RoughnessMipmapper.js +38 -82
  764. package/utils/RoughnessMipmapper.mjs +213 -0
  765. package/utils/SceneUtils.js +15 -20
  766. package/utils/SceneUtils.mjs +36 -0
  767. package/utils/ShadowMapViewer.js +49 -95
  768. package/utils/ShadowMapViewer.mjs +114 -0
  769. package/utils/SkeletonUtils.js +74 -165
  770. package/utils/SkeletonUtils.mjs +292 -0
  771. package/utils/UVsDebug.js +32 -62
  772. package/utils/UVsDebug.mjs +85 -0
  773. package/utils/WorkerPool.js +13 -33
  774. package/utils/WorkerPool.mjs +62 -0
  775. package/webxr/ARButton.js +72 -98
  776. package/webxr/ARButton.mjs +119 -0
  777. package/webxr/OculusHandModel.js +18 -37
  778. package/webxr/OculusHandModel.mjs +71 -0
  779. package/webxr/OculusHandPointerModel.js +58 -80
  780. package/webxr/OculusHandPointerModel.mjs +207 -0
  781. package/webxr/Text2D.js +37 -19
  782. package/webxr/Text2D.mjs +31 -0
  783. package/webxr/VRButton.js +59 -90
  784. package/webxr/VRButton.mjs +105 -0
  785. package/webxr/XRControllerModelFactory.js +58 -116
  786. package/webxr/XRControllerModelFactory.mjs +146 -0
  787. package/webxr/XREstimatedLight.js +39 -66
  788. package/webxr/XREstimatedLight.mjs +126 -0
  789. package/webxr/XRHandMeshModel.js +40 -29
  790. package/webxr/XRHandMeshModel.mjs +73 -0
  791. package/webxr/XRHandModelFactory.js +28 -31
  792. package/webxr/XRHandModelFactory.mjs +61 -0
  793. package/webxr/XRHandPrimitiveModel.js +41 -27
  794. package/webxr/XRHandPrimitiveModel.mjs +68 -0
  795. package/BufferGeometryUtils-1a7a235c.js +0 -655
  796. package/BufferGeometryUtils-971dfde3.js +0 -1
  797. package/Nodes-4f766d71.js +0 -471
  798. package/Nodes-9aa16d74.js +0 -1
  799. package/animation/AnimationClipCreator.cjs.js +0 -1
  800. package/animation/CCDIKSolver.cjs.js +0 -1
  801. package/animation/MMDAnimationHelper.cjs.js +0 -1
  802. package/animation/MMDPhysics.cjs.js +0 -1
  803. package/cameras/CinematicCamera.cjs.js +0 -1
  804. package/controls/ArcballControls.cjs.js +0 -1
  805. package/controls/DeviceOrientationControls.cjs.js +0 -1
  806. package/controls/DragControls.cjs.js +0 -1
  807. package/controls/FirstPersonControls.cjs.js +0 -1
  808. package/controls/FlyControls.cjs.js +0 -1
  809. package/controls/OrbitControls.cjs.js +0 -1
  810. package/controls/PointerLockControls.cjs.js +0 -1
  811. package/controls/TrackballControls.cjs.js +0 -1
  812. package/controls/TransformControls.cjs.js +0 -1
  813. package/controls/experimental/CameraControls.cjs.js +0 -1
  814. package/csm/CSM.cjs.js +0 -1
  815. package/csm/CSMFrustum.cjs.js +0 -1
  816. package/csm/CSMHelper.cjs.js +0 -1
  817. package/csm/CSMShader.cjs.js +0 -1
  818. package/curves/CurveExtras.cjs.js +0 -1
  819. package/curves/NURBSCurve.cjs.js +0 -1
  820. package/curves/NURBSSurface.cjs.js +0 -1
  821. package/curves/NURBSUtils.cjs.js +0 -1
  822. package/custom.d.cjs.js +0 -1
  823. package/deprecated/Geometry.cjs.js +0 -1
  824. package/effects/AnaglyphEffect.cjs.js +0 -1
  825. package/effects/AsciiEffect.cjs.js +0 -1
  826. package/effects/OutlineEffect.cjs.js +0 -1
  827. package/effects/ParallaxBarrierEffect.cjs.js +0 -1
  828. package/effects/PeppersGhostEffect.cjs.js +0 -1
  829. package/effects/StereoEffect.cjs.js +0 -1
  830. package/environments/RoomEnvironment.cjs.js +0 -1
  831. package/exporters/ColladaExporter.cjs.js +0 -1
  832. package/exporters/DRACOExporter.cjs.js +0 -1
  833. package/exporters/GLTFExporter.cjs.js +0 -1
  834. package/exporters/MMDExporter.cjs.js +0 -1
  835. package/exporters/OBJExporter.cjs.js +0 -1
  836. package/exporters/PLYExporter.cjs.js +0 -1
  837. package/exporters/STLExporter.cjs.js +0 -1
  838. package/exporters/USDZExporter.cjs.js +0 -1
  839. package/geometries/BoxLineGeometry.cjs.js +0 -1
  840. package/geometries/ConvexGeometry.cjs.js +0 -1
  841. package/geometries/DecalGeometry.cjs.js +0 -1
  842. package/geometries/LightningStrike.cjs.js +0 -1
  843. package/geometries/ParametricGeometries.cjs.js +0 -1
  844. package/geometries/ParametricGeometry.cjs.js +0 -1
  845. package/geometries/RoundedBoxGeometry.cjs.js +0 -1
  846. package/geometries/TeapotGeometry.cjs.js +0 -1
  847. package/geometries/TextGeometry.cjs.js +0 -1
  848. package/helpers/LightProbeHelper.cjs.js +0 -1
  849. package/helpers/PositionalAudioHelper.cjs.js +0 -1
  850. package/helpers/RectAreaLightHelper.cjs.js +0 -1
  851. package/helpers/VertexNormalsHelper.cjs.js +0 -1
  852. package/helpers/VertexTangentsHelper.cjs.js +0 -1
  853. package/index.cjs.js +0 -1
  854. package/interactive/InteractiveGroup.cjs.js +0 -1
  855. package/interactive/InteractiveGroup.d.ts +0 -5
  856. package/interactive/InteractiveGroup.js +0 -87
  857. package/interactive/SelectionBox.cjs.js +0 -1
  858. package/interactive/SelectionHelper.cjs.js +0 -1
  859. package/libs/MeshoptDecoder.cjs.js +0 -1
  860. package/libs/MotionControllers.cjs.js +0 -1
  861. package/lights/LightProbeGenerator.cjs.js +0 -1
  862. package/lights/RectAreaLightUniformsLib.cjs.js +0 -1
  863. package/lines/Line2.cjs.js +0 -1
  864. package/lines/LineGeometry.cjs.js +0 -1
  865. package/lines/LineMaterial.cjs.js +0 -1
  866. package/lines/LineSegments2.cjs.js +0 -1
  867. package/lines/LineSegmentsGeometry.cjs.js +0 -1
  868. package/lines/Wireframe.cjs.js +0 -1
  869. package/lines/WireframeGeometry2.cjs.js +0 -1
  870. package/loaders/3DMLoader.cjs.js +0 -1
  871. package/loaders/3MFLoader.cjs.js +0 -1
  872. package/loaders/AMFLoader.cjs.js +0 -1
  873. package/loaders/AssimpLoader.cjs.js +0 -1
  874. package/loaders/BVHLoader.cjs.js +0 -1
  875. package/loaders/BasisTextureLoader.cjs.js +0 -1
  876. package/loaders/ColladaLoader.cjs.js +0 -1
  877. package/loaders/DDSLoader.cjs.js +0 -1
  878. package/loaders/DRACOLoader.cjs.js +0 -1
  879. package/loaders/EXRLoader.cjs.js +0 -1
  880. package/loaders/FBXLoader.cjs.js +0 -1
  881. package/loaders/FontLoader.cjs.js +0 -1
  882. package/loaders/GCodeLoader.cjs.js +0 -1
  883. package/loaders/GLTFLoader.cjs.js +0 -1
  884. package/loaders/HDRCubeTextureLoader.cjs.js +0 -1
  885. package/loaders/KMZLoader.cjs.js +0 -1
  886. package/loaders/KTX2Loader.cjs.js +0 -1
  887. package/loaders/KTXLoader.cjs.js +0 -1
  888. package/loaders/LDrawLoader.cjs.js +0 -1
  889. package/loaders/LUT3dlLoader.cjs.js +0 -1
  890. package/loaders/LUTCubeLoader.cjs.js +0 -1
  891. package/loaders/LWOLoader.cjs.js +0 -1
  892. package/loaders/LottieLoader.cjs.js +0 -1
  893. package/loaders/MD2Loader.cjs.js +0 -1
  894. package/loaders/MDDLoader.cjs.js +0 -1
  895. package/loaders/MMDLoader.cjs.js +0 -1
  896. package/loaders/MTLLoader.cjs.js +0 -1
  897. package/loaders/NRRDLoader.cjs.js +0 -1
  898. package/loaders/NodeMaterialLoader.cjs.js +0 -1
  899. package/loaders/OBJLoader.cjs.js +0 -1
  900. package/loaders/PCDLoader.cjs.js +0 -1
  901. package/loaders/PDBLoader.cjs.js +0 -1
  902. package/loaders/PLYLoader.cjs.js +0 -1
  903. package/loaders/PRWMLoader.cjs.js +0 -1
  904. package/loaders/PVRLoader.cjs.js +0 -1
  905. package/loaders/RGBELoader.cjs.js +0 -1
  906. package/loaders/RGBMLoader.cjs.js +0 -1
  907. package/loaders/STLLoader.cjs.js +0 -1
  908. package/loaders/SVGLoader.cjs.js +0 -1
  909. package/loaders/TDSLoader.cjs.js +0 -1
  910. package/loaders/TGALoader.cjs.js +0 -1
  911. package/loaders/TTFLoader.cjs.js +0 -1
  912. package/loaders/TiltLoader.cjs.js +0 -1
  913. package/loaders/VOXLoader.cjs.js +0 -1
  914. package/loaders/VRMLLoader.cjs.js +0 -1
  915. package/loaders/VRMLoader.cjs.js +0 -1
  916. package/loaders/VTKLoader.cjs.js +0 -1
  917. package/loaders/XLoader.cjs.js +0 -1
  918. package/loaders/XYZLoader.cjs.js +0 -1
  919. package/loaders/lwo/IFFParser.cjs.js +0 -1
  920. package/loaders/lwo/LWO2Parser.cjs.js +0 -1
  921. package/loaders/lwo/LWO3Parser.cjs.js +0 -1
  922. package/math/Capsule.cjs.js +0 -1
  923. package/math/ColorConverter.cjs.js +0 -1
  924. package/math/ConvexHull.cjs.js +0 -1
  925. package/math/ImprovedNoise.cjs.js +0 -1
  926. package/math/Lut.cjs.js +0 -1
  927. package/math/MeshSurfaceSampler.cjs.js +0 -1
  928. package/math/OBB.cjs.js +0 -1
  929. package/math/Octree.cjs.js +0 -1
  930. package/math/SimplexNoise.cjs.js +0 -1
  931. package/misc/ConvexObjectBreaker.cjs.js +0 -1
  932. package/misc/GPUComputationRenderer.cjs.js +0 -1
  933. package/misc/Gyroscope.cjs.js +0 -1
  934. package/misc/MD2Character.cjs.js +0 -1
  935. package/misc/MD2CharacterComplex.cjs.js +0 -1
  936. package/misc/MorphAnimMesh.cjs.js +0 -1
  937. package/misc/MorphBlendMesh.cjs.js +0 -1
  938. package/misc/ProgressiveLightmap.cjs.js +0 -1
  939. package/misc/RollerCoaster.cjs.js +0 -1
  940. package/misc/TubePainter.cjs.js +0 -1
  941. package/misc/Volume.cjs.js +0 -1
  942. package/misc/VolumeSlice.cjs.js +0 -1
  943. package/misc/WebGL.cjs.js +0 -1
  944. package/modifiers/CurveModifier.cjs.js +0 -1
  945. package/modifiers/EdgeSplitModifier.cjs.js +0 -1
  946. package/modifiers/SimplifyModifier.cjs.js +0 -1
  947. package/modifiers/TessellateModifier.cjs.js +0 -1
  948. package/nodes/Nodes.cjs.js +0 -1
  949. package/nodes/ShaderNode.cjs.js +0 -1
  950. package/nodes/accessors/BufferNode.cjs.js +0 -1
  951. package/nodes/accessors/CameraNode.cjs.js +0 -1
  952. package/nodes/accessors/CubeTextureNode.cjs.js +0 -1
  953. package/nodes/accessors/MaterialNode.cjs.js +0 -1
  954. package/nodes/accessors/MaterialReferenceNode.cjs.js +0 -1
  955. package/nodes/accessors/ModelNode.cjs.js +0 -1
  956. package/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  957. package/nodes/accessors/NormalNode.cjs.js +0 -1
  958. package/nodes/accessors/Object3DNode.cjs.js +0 -1
  959. package/nodes/accessors/PointUVNode.cjs.js +0 -1
  960. package/nodes/accessors/PositionNode.cjs.js +0 -1
  961. package/nodes/accessors/ReferenceNode.cjs.js +0 -1
  962. package/nodes/accessors/ReflectNode.cjs.js +0 -1
  963. package/nodes/accessors/SkinningNode.cjs.js +0 -1
  964. package/nodes/accessors/TextureNode.cjs.js +0 -1
  965. package/nodes/accessors/UVNode.cjs.js +0 -1
  966. package/nodes/core/ArrayUniformNode.cjs.js +0 -1
  967. package/nodes/core/AttributeNode.cjs.js +0 -1
  968. package/nodes/core/BypassNode.cjs.js +0 -1
  969. package/nodes/core/CodeNode.cjs.js +0 -1
  970. package/nodes/core/ConstNode.cjs.js +0 -1
  971. package/nodes/core/ContextNode.cjs.js +0 -1
  972. package/nodes/core/ExpressionNode.cjs.js +0 -1
  973. package/nodes/core/FunctionCallNode.cjs.js +0 -1
  974. package/nodes/core/FunctionNode.cjs.js +0 -1
  975. package/nodes/core/InputNode.cjs.js +0 -1
  976. package/nodes/core/Node.cjs.js +0 -1
  977. package/nodes/core/NodeAttribute.cjs.js +0 -1
  978. package/nodes/core/NodeBuilder.cjs.js +0 -1
  979. package/nodes/core/NodeCode.cjs.js +0 -1
  980. package/nodes/core/NodeFrame.cjs.js +0 -1
  981. package/nodes/core/NodeFunction.cjs.js +0 -1
  982. package/nodes/core/NodeFunction.js +0 -17
  983. package/nodes/core/NodeFunctionInput.cjs.js +0 -1
  984. package/nodes/core/NodeKeywords.cjs.js +0 -1
  985. package/nodes/core/NodeParser.cjs.js +0 -1
  986. package/nodes/core/NodeParser.js +0 -8
  987. package/nodes/core/NodeUniform.cjs.js +0 -1
  988. package/nodes/core/NodeUtils.cjs.js +0 -1
  989. package/nodes/core/NodeVar.cjs.js +0 -1
  990. package/nodes/core/NodeVary.cjs.js +0 -1
  991. package/nodes/core/PropertyNode.cjs.js +0 -1
  992. package/nodes/core/TempNode.cjs.js +0 -1
  993. package/nodes/core/UniformNode.cjs.js +0 -1
  994. package/nodes/core/VarNode.cjs.js +0 -1
  995. package/nodes/core/VaryNode.cjs.js +0 -1
  996. package/nodes/core/constants.cjs.js +0 -1
  997. package/nodes/display/ColorSpaceNode.cjs.js +0 -1
  998. package/nodes/display/NormalMapNode.cjs.js +0 -1
  999. package/nodes/fog/FogNode.cjs.js +0 -1
  1000. package/nodes/fog/FogRangeNode.cjs.js +0 -1
  1001. package/nodes/functions/BSDFs.cjs.js +0 -1
  1002. package/nodes/functions/PhysicalMaterialFunctions.cjs.js +0 -1
  1003. package/nodes/functions/PhysicalMaterialFunctions.js +0 -57
  1004. package/nodes/lights/LightContextNode.cjs.js +0 -1
  1005. package/nodes/lights/LightNode.cjs.js +0 -1
  1006. package/nodes/lights/LightsNode.cjs.js +0 -1
  1007. package/nodes/loaders/NodeLoader.cjs.js +0 -1
  1008. package/nodes/loaders/NodeMaterialLoader.cjs.js +0 -1
  1009. package/nodes/loaders/NodeObjectLoader.cjs.js +0 -1
  1010. package/nodes/materials/LineBasicNodeMaterial.cjs.js +0 -1
  1011. package/nodes/materials/Materials.cjs.js +0 -1
  1012. package/nodes/materials/MeshBasicNodeMaterial.cjs.js +0 -1
  1013. package/nodes/materials/MeshStandardNodeMaterial.cjs.js +0 -1
  1014. package/nodes/materials/NodeMaterial.cjs.js +0 -1
  1015. package/nodes/materials/PointsNodeMaterial.cjs.js +0 -1
  1016. package/nodes/math/CondNode.cjs.js +0 -1
  1017. package/nodes/math/MathNode.cjs.js +0 -1
  1018. package/nodes/math/OperatorNode.cjs.js +0 -1
  1019. package/nodes/parsers/GLSLNodeFunction.cjs.js +0 -1
  1020. package/nodes/parsers/GLSLNodeFunction.js +0 -101
  1021. package/nodes/parsers/GLSLNodeParser.cjs.js +0 -1
  1022. package/nodes/parsers/GLSLNodeParser.js +0 -13
  1023. package/nodes/parsers/WGSLNodeFunction.cjs.js +0 -1
  1024. package/nodes/parsers/WGSLNodeFunction.js +0 -71
  1025. package/nodes/parsers/WGSLNodeParser.cjs.js +0 -1
  1026. package/nodes/parsers/WGSLNodeParser.js +0 -13
  1027. package/nodes/procedural/CheckerNode.cjs.js +0 -1
  1028. package/nodes/utils/ArrayElementNode.cjs.js +0 -1
  1029. package/nodes/utils/ConvertNode.cjs.js +0 -1
  1030. package/nodes/utils/JoinNode.cjs.js +0 -1
  1031. package/nodes/utils/MatcapUVNode.cjs.js +0 -1
  1032. package/nodes/utils/OscNode.cjs.js +0 -1
  1033. package/nodes/utils/SplitNode.cjs.js +0 -1
  1034. package/nodes/utils/SpriteSheetUVNode.cjs.js +0 -1
  1035. package/nodes/utils/TimerNode.cjs.js +0 -1
  1036. package/objects/GroundProjectedEnv.cjs.js +0 -1
  1037. package/objects/Lensflare.cjs.js +0 -1
  1038. package/objects/LightningStorm.cjs.js +0 -1
  1039. package/objects/MarchingCubes.cjs.js +0 -1
  1040. package/objects/Reflector.cjs.js +0 -1
  1041. package/objects/ReflectorForSSRPass.cjs.js +0 -1
  1042. package/objects/ReflectorRTT.cjs.js +0 -1
  1043. package/objects/Refractor.cjs.js +0 -1
  1044. package/objects/ShadowMesh.cjs.js +0 -1
  1045. package/objects/Sky.cjs.js +0 -1
  1046. package/objects/Water.cjs.js +0 -1
  1047. package/objects/Water2.cjs.js +0 -1
  1048. package/offscreen/jank.cjs.js +0 -1
  1049. package/offscreen/offscreen.cjs.js +0 -1
  1050. package/offscreen/scene.cjs.js +0 -1
  1051. package/physics/AmmoPhysics.cjs.js +0 -1
  1052. package/postprocessing/AdaptiveToneMappingPass.cjs.js +0 -1
  1053. package/postprocessing/AfterimagePass.cjs.js +0 -1
  1054. package/postprocessing/BloomPass.cjs.js +0 -1
  1055. package/postprocessing/BokehPass.cjs.js +0 -1
  1056. package/postprocessing/ClearPass.cjs.js +0 -1
  1057. package/postprocessing/CubeTexturePass.cjs.js +0 -1
  1058. package/postprocessing/DotScreenPass.cjs.js +0 -1
  1059. package/postprocessing/EffectComposer.cjs.js +0 -1
  1060. package/postprocessing/FilmPass.cjs.js +0 -1
  1061. package/postprocessing/GlitchPass.cjs.js +0 -1
  1062. package/postprocessing/HalftonePass.cjs.js +0 -1
  1063. package/postprocessing/LUTPass.cjs.js +0 -1
  1064. package/postprocessing/MaskPass.cjs.js +0 -1
  1065. package/postprocessing/OutlinePass.cjs.js +0 -1
  1066. package/postprocessing/Pass.cjs.js +0 -1
  1067. package/postprocessing/RenderPass.cjs.js +0 -1
  1068. package/postprocessing/RenderPixelatedPass.cjs.js +0 -1
  1069. package/postprocessing/SAOPass.cjs.js +0 -1
  1070. package/postprocessing/SMAAPass.cjs.js +0 -1
  1071. package/postprocessing/SSAARenderPass.cjs.js +0 -1
  1072. package/postprocessing/SSAOPass.cjs.js +0 -1
  1073. package/postprocessing/SSRPass.cjs.js +0 -1
  1074. package/postprocessing/SavePass.cjs.js +0 -1
  1075. package/postprocessing/ShaderPass.cjs.js +0 -1
  1076. package/postprocessing/TAARenderPass.cjs.js +0 -1
  1077. package/postprocessing/TexturePass.cjs.js +0 -1
  1078. package/postprocessing/UnrealBloomPass.cjs.js +0 -1
  1079. package/renderers/CSS2DRenderer.cjs.js +0 -1
  1080. package/renderers/CSS3DRenderer.cjs.js +0 -1
  1081. package/renderers/Projector.cjs.js +0 -1
  1082. package/renderers/SVGRenderer.cjs.js +0 -1
  1083. package/renderers/nodes/accessors/CameraNode.cjs.js +0 -1
  1084. package/renderers/nodes/accessors/ModelNode.cjs.js +0 -1
  1085. package/renderers/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  1086. package/renderers/nodes/accessors/NormalNode.cjs.js +0 -1
  1087. package/renderers/nodes/accessors/PositionNode.cjs.js +0 -1
  1088. package/renderers/nodes/accessors/UVNode.cjs.js +0 -1
  1089. package/renderers/nodes/core/AttributeNode.cjs.js +0 -1
  1090. package/renderers/nodes/core/InputNode.cjs.js +0 -1
  1091. package/renderers/nodes/core/Node.cjs.js +0 -1
  1092. package/renderers/nodes/core/NodeAttribute.cjs.js +0 -1
  1093. package/renderers/nodes/core/NodeBuilder.cjs.js +0 -1
  1094. package/renderers/nodes/core/NodeFrame.cjs.js +0 -1
  1095. package/renderers/nodes/core/NodeSlot.cjs.js +0 -1
  1096. package/renderers/nodes/core/NodeUniform.cjs.js +0 -1
  1097. package/renderers/nodes/core/NodeVary.cjs.js +0 -1
  1098. package/renderers/nodes/core/VaryNode.cjs.js +0 -1
  1099. package/renderers/nodes/core/constants.cjs.js +0 -1
  1100. package/renderers/nodes/inputs/ColorNode.cjs.js +0 -1
  1101. package/renderers/nodes/inputs/FloatNode.cjs.js +0 -1
  1102. package/renderers/nodes/inputs/Matrix3Node.cjs.js +0 -1
  1103. package/renderers/nodes/inputs/Matrix4Node.cjs.js +0 -1
  1104. package/renderers/nodes/inputs/TextureNode.cjs.js +0 -1
  1105. package/renderers/nodes/inputs/Vector2Node.cjs.js +0 -1
  1106. package/renderers/nodes/inputs/Vector3Node.cjs.js +0 -1
  1107. package/renderers/nodes/inputs/Vector4Node.cjs.js +0 -1
  1108. package/renderers/nodes/math/MathNode.cjs.js +0 -1
  1109. package/renderers/nodes/math/OperatorNode.cjs.js +0 -1
  1110. package/renderers/nodes/utils/SwitchNode.cjs.js +0 -1
  1111. package/renderers/nodes/utils/TimerNode.cjs.js +0 -1
  1112. package/renderers/webgpu/WebGPU.cjs.js +0 -1
  1113. package/renderers/webgpu/WebGPUAttributes.cjs.js +0 -1
  1114. package/renderers/webgpu/WebGPUBackground.cjs.js +0 -1
  1115. package/renderers/webgpu/WebGPUBinding.cjs.js +0 -1
  1116. package/renderers/webgpu/WebGPUBindings.cjs.js +0 -1
  1117. package/renderers/webgpu/WebGPUComputePipelines.cjs.js +0 -1
  1118. package/renderers/webgpu/WebGPUGeometries.cjs.js +0 -1
  1119. package/renderers/webgpu/WebGPUInfo.cjs.js +0 -1
  1120. package/renderers/webgpu/WebGPUObjects.cjs.js +0 -1
  1121. package/renderers/webgpu/WebGPUProperties.cjs.js +0 -1
  1122. package/renderers/webgpu/WebGPURenderLists.cjs.js +0 -1
  1123. package/renderers/webgpu/WebGPURenderPipelines.cjs.js +0 -1
  1124. package/renderers/webgpu/WebGPURenderer.cjs.js +0 -1
  1125. package/renderers/webgpu/WebGPUSampledTexture.cjs.js +0 -1
  1126. package/renderers/webgpu/WebGPUSampler.cjs.js +0 -1
  1127. package/renderers/webgpu/WebGPUStorageBuffer.cjs.js +0 -1
  1128. package/renderers/webgpu/WebGPUTextureRenderer.cjs.js +0 -1
  1129. package/renderers/webgpu/WebGPUTextureUtils.cjs.js +0 -1
  1130. package/renderers/webgpu/WebGPUTextures.cjs.js +0 -1
  1131. package/renderers/webgpu/WebGPUUniform.cjs.js +0 -1
  1132. package/renderers/webgpu/WebGPUUniformsGroup.cjs.js +0 -1
  1133. package/renderers/webgpu/constants.cjs.js +0 -1
  1134. package/renderers/webgpu/nodes/ShaderLib.cjs.js +0 -1
  1135. package/renderers/webgpu/nodes/WebGPUNodeBuilder.cjs.js +0 -1
  1136. package/renderers/webgpu/nodes/WebGPUNodeUniform.cjs.js +0 -1
  1137. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.cjs.js +0 -1
  1138. package/renderers/webgpu/nodes/WebGPUNodes.cjs.js +0 -1
  1139. package/shaders/ACESFilmicToneMappingShader.cjs.js +0 -1
  1140. package/shaders/AfterimageShader.cjs.js +0 -1
  1141. package/shaders/BasicShader.cjs.js +0 -1
  1142. package/shaders/BleachBypassShader.cjs.js +0 -1
  1143. package/shaders/BlendShader.cjs.js +0 -1
  1144. package/shaders/BokehShader.cjs.js +0 -1
  1145. package/shaders/BokehShader2.cjs.js +0 -1
  1146. package/shaders/BrightnessContrastShader.cjs.js +0 -1
  1147. package/shaders/ColorCorrectionShader.cjs.js +0 -1
  1148. package/shaders/ColorifyShader.cjs.js +0 -1
  1149. package/shaders/ConvolutionShader.cjs.js +0 -1
  1150. package/shaders/CopyShader.cjs.js +0 -1
  1151. package/shaders/DOFMipMapShader.cjs.js +0 -1
  1152. package/shaders/DepthLimitedBlurShader.cjs.js +0 -1
  1153. package/shaders/DigitalGlitch.cjs.js +0 -1
  1154. package/shaders/DotScreenShader.cjs.js +0 -1
  1155. package/shaders/FXAAShader.cjs.js +0 -1
  1156. package/shaders/FilmShader.cjs.js +0 -1
  1157. package/shaders/FocusShader.cjs.js +0 -1
  1158. package/shaders/FreiChenShader.cjs.js +0 -1
  1159. package/shaders/FresnelShader.cjs.js +0 -1
  1160. package/shaders/GammaCorrectionShader.cjs.js +0 -1
  1161. package/shaders/GodRaysShader.cjs.js +0 -1
  1162. package/shaders/HalftoneShader.cjs.js +0 -1
  1163. package/shaders/HorizontalBlurShader.cjs.js +0 -1
  1164. package/shaders/HorizontalTiltShiftShader.cjs.js +0 -1
  1165. package/shaders/HueSaturationShader.cjs.js +0 -1
  1166. package/shaders/KaleidoShader.cjs.js +0 -1
  1167. package/shaders/LuminosityHighPassShader.cjs.js +0 -1
  1168. package/shaders/LuminosityShader.cjs.js +0 -1
  1169. package/shaders/MirrorShader.cjs.js +0 -1
  1170. package/shaders/NormalMapShader.cjs.js +0 -1
  1171. package/shaders/ParallaxShader.cjs.js +0 -1
  1172. package/shaders/PixelShader.cjs.js +0 -1
  1173. package/shaders/RGBShiftShader.cjs.js +0 -1
  1174. package/shaders/SAOShader.cjs.js +0 -1
  1175. package/shaders/SMAAShader.cjs.js +0 -1
  1176. package/shaders/SSAOShader.cjs.js +0 -1
  1177. package/shaders/SSRShader.cjs.js +0 -1
  1178. package/shaders/SepiaShader.cjs.js +0 -1
  1179. package/shaders/SobelOperatorShader.cjs.js +0 -1
  1180. package/shaders/SubsurfaceScatteringShader.cjs.js +0 -1
  1181. package/shaders/TechnicolorShader.cjs.js +0 -1
  1182. package/shaders/ToneMapShader.cjs.js +0 -1
  1183. package/shaders/ToonShader.cjs.js +0 -1
  1184. package/shaders/TriangleBlurShader.cjs.js +0 -1
  1185. package/shaders/UnpackDepthRGBAShader.cjs.js +0 -1
  1186. package/shaders/VerticalBlurShader.cjs.js +0 -1
  1187. package/shaders/VerticalTiltShiftShader.cjs.js +0 -1
  1188. package/shaders/VignetteShader.cjs.js +0 -1
  1189. package/shaders/VolumeShader.cjs.js +0 -1
  1190. package/shaders/WaterRefractionShader.cjs.js +0 -1
  1191. package/shaders/index.cjs.js +0 -1
  1192. package/shaders/index.d.ts +0 -54
  1193. package/shaders/index.js +0 -53
  1194. package/shaders/types.cjs.js +0 -1
  1195. package/textures/FlakesTexture.cjs.js +0 -1
  1196. package/types/helpers.cjs.js +0 -1
  1197. package/types/shared.cjs.js +0 -1
  1198. package/types/shared.js +0 -1
  1199. package/types/utils.cjs.js +0 -1
  1200. package/types/utils.js +0 -1
  1201. package/utils/BufferGeometryUtils.cjs.js +0 -1
  1202. package/utils/GeometryCompressionUtils.cjs.js +0 -1
  1203. package/utils/GeometryUtils.cjs.js +0 -1
  1204. package/utils/LDrawUtils.cjs.js +0 -1
  1205. package/utils/LDrawUtils.d.ts +0 -5
  1206. package/utils/LDrawUtils.js +0 -144
  1207. package/utils/RoughnessMipmapper.cjs.js +0 -1
  1208. package/utils/SceneUtils.cjs.js +0 -1
  1209. package/utils/ShadowMapViewer.cjs.js +0 -1
  1210. package/utils/SkeletonUtils.cjs.js +0 -1
  1211. package/utils/UVsDebug.cjs.js +0 -1
  1212. package/utils/WorkerPool.cjs.js +0 -1
  1213. package/webxr/ARButton.cjs.js +0 -1
  1214. package/webxr/OculusHandModel.cjs.js +0 -1
  1215. package/webxr/OculusHandPointerModel.cjs.js +0 -1
  1216. package/webxr/Text2D.cjs.js +0 -1
  1217. package/webxr/VRButton.cjs.js +0 -1
  1218. package/webxr/XRControllerModelFactory.cjs.js +0 -1
  1219. package/webxr/XREstimatedLight.cjs.js +0 -1
  1220. package/webxr/XRHandMeshModel.cjs.js +0 -1
  1221. package/webxr/XRHandModelFactory.cjs.js +0 -1
  1222. package/webxr/XRHandPrimitiveModel.cjs.js +0 -1
@@ -1,331 +1,201 @@
1
- import { Loader, FileLoader, LoaderUtils, SkinnedMesh, Skeleton, Bone, Vector3, Float32BufferAttribute, BufferGeometry, Uint16BufferAttribute, TextureLoader, Color, MultiplyOperation, AddOperation, MeshToonMaterial, NearestFilter, RepeatWrapping, AnimationClip, VectorKeyframeTrack, QuaternionKeyframeTrack, NumberKeyframeTrack, Quaternion, Euler, Interpolant, CustomBlending, SrcAlphaFactor, OneMinusSrcAlphaFactor, DstAlphaFactor, DoubleSide, FrontSide } from 'three';
2
- import { TGALoader } from './TGALoader.js';
3
- import { Parser } from 'mmd-parser';
4
-
5
- /**
6
- * Dependencies
7
- * - mmd-parser https://github.com/takahirox/mmd-parser
8
- * - TGALoader
9
- * - OutlineEffect
10
- *
11
- * MMDLoader creates Three.js Objects from MMD resources as
12
- * PMD, PMX, VMD, and VPD files.
13
- *
14
- * PMD/PMX is a model data format, VMD is a motion data format
15
- * VPD is a posing data format used in MMD(Miku Miku Dance).
16
- *
17
- * MMD official site
18
- * - https://sites.google.com/view/evpvp/
19
- *
20
- * PMD, VMD format (in Japanese)
21
- * - http://blog.goo.ne.jp/torisu_tetosuki/e/209ad341d3ece2b1b4df24abf619d6e4
22
- *
23
- * PMX format
24
- * - https://gist.github.com/felixjones/f8a06bd48f9da9a4539f
25
- *
26
- * TODO
27
- * - light motion in vmd support.
28
- * - SDEF support.
29
- * - uv/material/bone morphing support.
30
- * - more precise grant skinning support.
31
- * - shadow support.
32
- */
33
-
34
- /**
35
- * @param {THREE.LoadingManager} manager
36
- */
37
-
38
- class MMDLoader extends Loader {
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const THREE = require("three");
4
+ const TGALoader = require("./TGALoader.js");
5
+ const mmdParser = require("mmd-parser");
6
+ class MMDLoader extends THREE.Loader {
39
7
  constructor(manager) {
40
8
  super(manager);
41
- this.loader = new FileLoader(this.manager);
42
- this.parser = null; // lazy generation
43
-
9
+ this.loader = new THREE.FileLoader(this.manager);
10
+ this.parser = null;
44
11
  this.meshBuilder = new MeshBuilder(this.manager);
45
12
  this.animationBuilder = new AnimationBuilder();
46
13
  }
47
- /**
48
- * @param {string} animationPath
49
- * @return {MMDLoader}
50
- */
51
-
52
-
53
14
  setAnimationPath(animationPath) {
54
15
  this.animationPath = animationPath;
55
16
  return this;
56
- } // Load MMD assets as Three.js Object
57
-
58
- /**
59
- * Loads Model file (.pmd or .pmx) as a SkinnedMesh.
60
- *
61
- * @param {string} url - url to Model(.pmd or .pmx) file
62
- * @param {function} onLoad
63
- * @param {function} onProgress
64
- * @param {function} onError
65
- */
66
-
67
-
17
+ }
68
18
  load(url, onLoad, onProgress, onError) {
69
- const builder = this.meshBuilder.setCrossOrigin(this.crossOrigin); // resource path
70
-
19
+ const builder = this.meshBuilder.setCrossOrigin(this.crossOrigin);
71
20
  let resourcePath;
72
-
73
- if (this.resourcePath !== '') {
21
+ if (this.resourcePath !== "") {
74
22
  resourcePath = this.resourcePath;
75
- } else if (this.path !== '') {
23
+ } else if (this.path !== "") {
76
24
  resourcePath = this.path;
77
25
  } else {
78
- resourcePath = LoaderUtils.extractUrlBase(url);
26
+ resourcePath = THREE.LoaderUtils.extractUrlBase(url);
79
27
  }
80
-
81
- const modelExtension = this._extractExtension(url).toLowerCase(); // Should I detect by seeing header?
82
-
83
-
84
- if (modelExtension !== 'pmd' && modelExtension !== 'pmx') {
85
- if (onError) onError(new Error('THREE.MMDLoader: Unknown model file extension .' + modelExtension + '.'));
28
+ const modelExtension = this._extractExtension(url).toLowerCase();
29
+ if (modelExtension !== "pmd" && modelExtension !== "pmx") {
30
+ if (onError)
31
+ onError(new Error("THREE.MMDLoader: Unknown model file extension ." + modelExtension + "."));
86
32
  return;
87
33
  }
88
-
89
- this[modelExtension === 'pmd' ? 'loadPMD' : 'loadPMX'](url, function (data) {
90
- onLoad(builder.build(data, resourcePath, onProgress, onError));
91
- }, onProgress, onError);
34
+ this[modelExtension === "pmd" ? "loadPMD" : "loadPMX"](
35
+ url,
36
+ function(data) {
37
+ onLoad(builder.build(data, resourcePath, onProgress, onError));
38
+ },
39
+ onProgress,
40
+ onError
41
+ );
92
42
  }
93
- /**
94
- * Loads Motion file(s) (.vmd) as a AnimationClip.
95
- * If two or more files are specified, they'll be merged.
96
- *
97
- * @param {string|Array<string>} url - url(s) to animation(.vmd) file(s)
98
- * @param {SkinnedMesh|THREE.Camera} object - tracks will be fitting to this object
99
- * @param {function} onLoad
100
- * @param {function} onProgress
101
- * @param {function} onError
102
- */
103
-
104
-
105
43
  loadAnimation(url, object, onLoad, onProgress, onError) {
106
44
  const builder = this.animationBuilder;
107
- this.loadVMD(url, function (vmd) {
108
- onLoad(object.isCamera ? builder.buildCameraAnimation(vmd) : builder.build(vmd, object));
109
- }, onProgress, onError);
45
+ this.loadVMD(
46
+ url,
47
+ function(vmd) {
48
+ onLoad(object.isCamera ? builder.buildCameraAnimation(vmd) : builder.build(vmd, object));
49
+ },
50
+ onProgress,
51
+ onError
52
+ );
110
53
  }
111
- /**
112
- * Loads mode file and motion file(s) as an object containing
113
- * a SkinnedMesh and a AnimationClip.
114
- * Tracks of AnimationClip are fitting to the model.
115
- *
116
- * @param {string} modelUrl - url to Model(.pmd or .pmx) file
117
- * @param {string|Array{string}} vmdUrl - url(s) to animation(.vmd) file
118
- * @param {function} onLoad
119
- * @param {function} onProgress
120
- * @param {function} onError
121
- */
122
-
123
-
124
54
  loadWithAnimation(modelUrl, vmdUrl, onLoad, onProgress, onError) {
125
55
  const scope = this;
126
- this.load(modelUrl, function (mesh) {
127
- scope.loadAnimation(vmdUrl, mesh, function (animation) {
128
- onLoad({
129
- mesh: mesh,
130
- animation: animation
131
- });
132
- }, onProgress, onError);
133
- }, onProgress, onError);
134
- } // Load MMD assets as Object data parsed by MMDParser
135
-
136
- /**
137
- * Loads .pmd file as an Object.
138
- *
139
- * @param {string} url - url to .pmd file
140
- * @param {function} onLoad
141
- * @param {function} onProgress
142
- * @param {function} onError
143
- */
144
-
145
-
56
+ this.load(
57
+ modelUrl,
58
+ function(mesh) {
59
+ scope.loadAnimation(
60
+ vmdUrl,
61
+ mesh,
62
+ function(animation) {
63
+ onLoad({
64
+ mesh,
65
+ animation
66
+ });
67
+ },
68
+ onProgress,
69
+ onError
70
+ );
71
+ },
72
+ onProgress,
73
+ onError
74
+ );
75
+ }
146
76
  loadPMD(url, onLoad, onProgress, onError) {
147
77
  const parser = this._getParser();
148
-
149
- this.loader.setMimeType(undefined).setPath(this.path).setResponseType('arraybuffer').setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(url, function (buffer) {
150
- onLoad(parser.parsePmd(buffer, true));
151
- }, onProgress, onError);
78
+ this.loader.setMimeType(void 0).setPath(this.path).setResponseType("arraybuffer").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(
79
+ url,
80
+ function(buffer) {
81
+ onLoad(parser.parsePmd(buffer, true));
82
+ },
83
+ onProgress,
84
+ onError
85
+ );
152
86
  }
153
- /**
154
- * Loads .pmx file as an Object.
155
- *
156
- * @param {string} url - url to .pmx file
157
- * @param {function} onLoad
158
- * @param {function} onProgress
159
- * @param {function} onError
160
- */
161
-
162
-
163
87
  loadPMX(url, onLoad, onProgress, onError) {
164
88
  const parser = this._getParser();
165
-
166
- this.loader.setMimeType(undefined).setPath(this.path).setResponseType('arraybuffer').setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(url, function (buffer) {
167
- onLoad(parser.parsePmx(buffer, true));
168
- }, onProgress, onError);
89
+ this.loader.setMimeType(void 0).setPath(this.path).setResponseType("arraybuffer").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(
90
+ url,
91
+ function(buffer) {
92
+ onLoad(parser.parsePmx(buffer, true));
93
+ },
94
+ onProgress,
95
+ onError
96
+ );
169
97
  }
170
- /**
171
- * Loads .vmd file as an Object. If two or more files are specified
172
- * they'll be merged.
173
- *
174
- * @param {string|Array<string>} url - url(s) to .vmd file(s)
175
- * @param {function} onLoad
176
- * @param {function} onProgress
177
- * @param {function} onError
178
- */
179
-
180
-
181
98
  loadVMD(url, onLoad, onProgress, onError) {
182
99
  const urls = Array.isArray(url) ? url : [url];
183
100
  const vmds = [];
184
101
  const vmdNum = urls.length;
185
-
186
102
  const parser = this._getParser();
187
-
188
- this.loader.setMimeType(undefined).setPath(this.animationPath).setResponseType('arraybuffer').setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials);
189
-
103
+ this.loader.setMimeType(void 0).setPath(this.animationPath).setResponseType("arraybuffer").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials);
190
104
  for (let i = 0, il = urls.length; i < il; i++) {
191
- this.loader.load(urls[i], function (buffer) {
192
- vmds.push(parser.parseVmd(buffer, true));
193
- if (vmds.length === vmdNum) onLoad(parser.mergeVmds(vmds));
194
- }, onProgress, onError);
105
+ this.loader.load(
106
+ urls[i],
107
+ function(buffer) {
108
+ vmds.push(parser.parseVmd(buffer, true));
109
+ if (vmds.length === vmdNum)
110
+ onLoad(parser.mergeVmds(vmds));
111
+ },
112
+ onProgress,
113
+ onError
114
+ );
195
115
  }
196
116
  }
197
- /**
198
- * Loads .vpd file as an Object.
199
- *
200
- * @param {string} url - url to .vpd file
201
- * @param {boolean} isUnicode
202
- * @param {function} onLoad
203
- * @param {function} onProgress
204
- * @param {function} onError
205
- */
206
-
207
-
208
117
  loadVPD(url, isUnicode, onLoad, onProgress, onError) {
209
118
  const parser = this._getParser();
210
-
211
- this.loader.setMimeType(isUnicode ? undefined : 'text/plain; charset=shift_jis').setPath(this.animationPath).setResponseType('text').setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(url, function (text) {
212
- onLoad(parser.parseVpd(text, true));
213
- }, onProgress, onError);
214
- } // private methods
215
-
216
-
119
+ this.loader.setMimeType(isUnicode ? void 0 : "text/plain; charset=shift_jis").setPath(this.animationPath).setResponseType("text").setRequestHeader(this.requestHeader).setWithCredentials(this.withCredentials).load(
120
+ url,
121
+ function(text) {
122
+ onLoad(parser.parseVpd(text, true));
123
+ },
124
+ onProgress,
125
+ onError
126
+ );
127
+ }
217
128
  _extractExtension(url) {
218
- const index = url.lastIndexOf('.');
219
- return index < 0 ? '' : url.slice(index + 1);
129
+ const index = url.lastIndexOf(".");
130
+ return index < 0 ? "" : url.slice(index + 1);
220
131
  }
221
-
222
132
  _getParser() {
223
133
  if (this.parser === null) {
224
- this.parser = new Parser(); // eslint-disable-line no-undef
134
+ this.parser = new mmdParser.Parser();
225
135
  }
226
-
227
136
  return this.parser;
228
137
  }
229
-
230
- } // Utilities
231
-
232
- /*
233
- * base64 encoded defalut toon textures toon00.bmp - toon10.bmp.
234
- * We don't need to request external toon image files.
235
- * This idea is from http://www20.atpages.jp/katwat/three.js_r58/examples/mytest37/mmd.three.js
236
- */
237
-
238
-
239
- const DEFAULT_TOON_TEXTURES = ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAN0lEQVRYR+3WQREAMBACsZ5/bWiiMvgEBTt5cW37hjsBBAgQIECAwFwgyfYPCCBAgAABAgTWAh8aBHZBl14e8wAAAABJRU5ErkJggg==', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAOUlEQVRYR+3WMREAMAwDsYY/yoDI7MLwIiP40+RJklfcCCBAgAABAgTqArfb/QMCCBAgQIAAgbbAB3z/e0F3js2cAAAAAElFTkSuQmCC', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAN0lEQVRYR+3WQREAMBACsZ5/B5ilMvgEBTt5cW37hjsBBAgQIECAwFwgyfYPCCBAgAABAgTWAh81dWyx0gFwKAAAAABJRU5ErkJggg==', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAOklEQVRYR+3WoREAMAwDsWb/UQtCy9wxTOQJ/oQ8SXKKGwEECBAgQIBAXeDt7f4BAQQIECBAgEBb4AOz8Hzx7WLY4wAAAABJRU5ErkJggg==', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABPUlEQVRYR+1XwW7CMAy1+f9fZOMysSEOEweEOPRNdm3HbdOyIhAcklPrOs/PLy9RygBALxzcCDQFmgJNgaZAU6Ap0BR4PwX8gsRMVLssMRH5HcpzJEaWL7EVg9F1IHRlyqQohgVr4FGUlUcMJSjcUlDw0zvjeun70cLWmneoyf7NgBTQSniBTQQSuJAZsOnnaczjIMb5hCiuHKxokCrJfVnrctyZL0PkJAJe1HMil4nxeyi3Ypfn1kX51jpPvo/JeCNC4PhVdHdJw2XjBR8brF8PEIhNVn12AgP7uHsTBguBn53MUZCqv7Lp07Pn5k1Ro+uWmUNn7D+M57rtk7aG0Vo73xyF/fbFf0bPJjDXngnGocDTdFhygZjwUQrMNrDcmZlQT50VJ/g/UwNyHpu778+yW+/ksOz/BFo54P4AsUXMfRq7XWsAAAAASUVORK5CYII=', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACMElEQVRYR+2Xv4pTQRTGf2dubhLdICiii2KnYKHVolhauKWPoGAnNr6BD6CvIVaihYuI2i1ia0BY0MZGRHQXjZj/mSPnnskfNWiWZUlzJ5k7M2cm833nO5Mziej2DWWJRUoCpQKlAntSQCqgw39/iUWAGmh37jrRnVsKlgpiqmkoGVABA7E57fvY+pJDdgKqF6HzFCSADkDq+F6AHABtQ+UMVE5D7zXod7fFNhTEckTbj5XQgHzNN+5tQvc5NG7C6BNkp6D3EmpXHDR+dQAjFLchW3VS9rlw3JBh+B7ys5Cf9z0GW1C/7P32AyBAOAz1q4jGliIH3YPuBnSfQX4OGreTIgEYQb/pBDtPnEQ4CivXYPAWBk13oHrB54yA9QuSn2H4AcKRpEILDt0BUzj+RLR1V5EqjD66NPRBVpLcQwjHoHYJOhsQv6U4mnzmrIXJCFr4LDwm/xBUoboG9XX4cc9VKdYoSA2yk5NQLJaKDUjTBoveG3Z2TElTxwjNK4M3LEZgUdDdruvcXzKBpStgp2NPiWi3ks9ZXxIoFVi+AvHLdc9TqtjL3/aYjpPlrzOcEnK62Szhimdd7xX232zFDTgtxezOu3WNMRLjiKgjtOhHVMd1loynVHvOgjuIIJMaELEqhJAV/RCSLbWTcfPFakFgFlALTRRvx+ok6Hlp/Q+v3fmx90bMyUzaEAhmM3KvHlXTL5DxnbGf/1M8RNNACLL5MNtPxP/mypJAqcDSFfgFhpYqWUzhTEAAAAAASUVORK5CYII=', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=']; // Builders. They build Three.js object from Object data parsed by MMDParser.
240
-
241
- /**
242
- * @param {THREE.LoadingManager} manager
243
- */
244
-
138
+ }
139
+ const DEFAULT_TOON_TEXTURES = [
140
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=",
141
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAN0lEQVRYR+3WQREAMBACsZ5/bWiiMvgEBTt5cW37hjsBBAgQIECAwFwgyfYPCCBAgAABAgTWAh8aBHZBl14e8wAAAABJRU5ErkJggg==",
142
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAOUlEQVRYR+3WMREAMAwDsYY/yoDI7MLwIiP40+RJklfcCCBAgAABAgTqArfb/QMCCBAgQIAAgbbAB3z/e0F3js2cAAAAAElFTkSuQmCC",
143
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAN0lEQVRYR+3WQREAMBACsZ5/B5ilMvgEBTt5cW37hjsBBAgQIECAwFwgyfYPCCBAgAABAgTWAh81dWyx0gFwKAAAAABJRU5ErkJggg==",
144
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAOklEQVRYR+3WoREAMAwDsWb/UQtCy9wxTOQJ/oQ8SXKKGwEECBAgQIBAXeDt7f4BAQQIECBAgEBb4AOz8Hzx7WLY4wAAAABJRU5ErkJggg==",
145
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABPUlEQVRYR+1XwW7CMAy1+f9fZOMysSEOEweEOPRNdm3HbdOyIhAcklPrOs/PLy9RygBALxzcCDQFmgJNgaZAU6Ap0BR4PwX8gsRMVLssMRH5HcpzJEaWL7EVg9F1IHRlyqQohgVr4FGUlUcMJSjcUlDw0zvjeun70cLWmneoyf7NgBTQSniBTQQSuJAZsOnnaczjIMb5hCiuHKxokCrJfVnrctyZL0PkJAJe1HMil4nxeyi3Ypfn1kX51jpPvo/JeCNC4PhVdHdJw2XjBR8brF8PEIhNVn12AgP7uHsTBguBn53MUZCqv7Lp07Pn5k1Ro+uWmUNn7D+M57rtk7aG0Vo73xyF/fbFf0bPJjDXngnGocDTdFhygZjwUQrMNrDcmZlQT50VJ/g/UwNyHpu778+yW+/ksOz/BFo54P4AsUXMfRq7XWsAAAAASUVORK5CYII=",
146
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACMElEQVRYR+2Xv4pTQRTGf2dubhLdICiii2KnYKHVolhauKWPoGAnNr6BD6CvIVaihYuI2i1ia0BY0MZGRHQXjZj/mSPnnskfNWiWZUlzJ5k7M2cm833nO5Mziej2DWWJRUoCpQKlAntSQCqgw39/iUWAGmh37jrRnVsKlgpiqmkoGVABA7E57fvY+pJDdgKqF6HzFCSADkDq+F6AHABtQ+UMVE5D7zXod7fFNhTEckTbj5XQgHzNN+5tQvc5NG7C6BNkp6D3EmpXHDR+dQAjFLchW3VS9rlw3JBh+B7ys5Cf9z0GW1C/7P32AyBAOAz1q4jGliIH3YPuBnSfQX4OGreTIgEYQb/pBDtPnEQ4CivXYPAWBk13oHrB54yA9QuSn2H4AcKRpEILDt0BUzj+RLR1V5EqjD66NPRBVpLcQwjHoHYJOhsQv6U4mnzmrIXJCFr4LDwm/xBUoboG9XX4cc9VKdYoSA2yk5NQLJaKDUjTBoveG3Z2TElTxwjNK4M3LEZgUdDdruvcXzKBpStgp2NPiWi3ks9ZXxIoFVi+AvHLdc9TqtjL3/aYjpPlrzOcEnK62Szhimdd7xX232zFDTgtxezOu3WNMRLjiKgjtOhHVMd1loynVHvOgjuIIJMaELEqhJAV/RCSLbWTcfPFakFgFlALTRRvx+ok6Hlp/Q+v3fmx90bMyUzaEAhmM3KvHlXTL5DxnbGf/1M8RNNACLL5MNtPxP/mypJAqcDSFfgFhpYqWUzhTEAAAAAASUVORK5CYII=",
147
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=",
148
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=",
149
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=",
150
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII="
151
+ ];
245
152
  class MeshBuilder {
246
153
  constructor(manager) {
247
- this.crossOrigin = 'anonymous';
154
+ this.crossOrigin = "anonymous";
248
155
  this.geometryBuilder = new GeometryBuilder();
249
156
  this.materialBuilder = new MaterialBuilder(manager);
250
157
  }
251
- /**
252
- * @param {string} crossOrigin
253
- * @return {MeshBuilder}
254
- */
255
-
256
-
257
158
  setCrossOrigin(crossOrigin) {
258
159
  this.crossOrigin = crossOrigin;
259
160
  return this;
260
161
  }
261
- /**
262
- * @param {Object} data - parsed PMD/PMX data
263
- * @param {string} resourcePath
264
- * @param {function} onProgress
265
- * @param {function} onError
266
- * @return {SkinnedMesh}
267
- */
268
-
269
-
270
162
  build(data, resourcePath, onProgress, onError) {
271
163
  const geometry = this.geometryBuilder.build(data);
272
164
  const material = this.materialBuilder.setCrossOrigin(this.crossOrigin).setResourcePath(resourcePath).build(data, geometry, onProgress, onError);
273
- const mesh = new SkinnedMesh(geometry, material);
274
- const skeleton = new Skeleton(initBones(mesh));
275
- mesh.bind(skeleton); // console.log( mesh ); // for console debug
276
-
165
+ const mesh = new THREE.SkinnedMesh(geometry, material);
166
+ const skeleton = new THREE.Skeleton(initBones(mesh));
167
+ mesh.bind(skeleton);
277
168
  return mesh;
278
169
  }
279
-
280
- } // TODO: Try to remove this function
281
-
282
-
170
+ }
283
171
  function initBones(mesh) {
284
172
  const geometry = mesh.geometry;
285
173
  const bones = [];
286
-
287
- if (geometry && geometry.bones !== undefined) {
288
- // first, create array of 'Bone' objects from geometry data
174
+ if (geometry && geometry.bones !== void 0) {
289
175
  for (let i = 0, il = geometry.bones.length; i < il; i++) {
290
- const gbone = geometry.bones[i]; // create new 'Bone' object
291
-
292
- const bone = new Bone();
293
- bones.push(bone); // apply values
294
-
176
+ const gbone = geometry.bones[i];
177
+ const bone = new THREE.Bone();
178
+ bones.push(bone);
295
179
  bone.name = gbone.name;
296
180
  bone.position.fromArray(gbone.pos);
297
181
  bone.quaternion.fromArray(gbone.rotq);
298
- if (gbone.scl !== undefined) bone.scale.fromArray(gbone.scl);
299
- } // second, create bone hierarchy
300
-
301
-
182
+ if (gbone.scl !== void 0)
183
+ bone.scale.fromArray(gbone.scl);
184
+ }
302
185
  for (let i = 0, il = geometry.bones.length; i < il; i++) {
303
186
  const gbone = geometry.bones[i];
304
-
305
- if (gbone.parent !== -1 && gbone.parent !== null && bones[gbone.parent] !== undefined) {
306
- // subsequent bones in the hierarchy
187
+ if (gbone.parent !== -1 && gbone.parent !== null && bones[gbone.parent] !== void 0) {
307
188
  bones[gbone.parent].add(bones[i]);
308
189
  } else {
309
- // topmost bone, immediate child of the skinned mesh
310
190
  mesh.add(bones[i]);
311
191
  }
312
192
  }
313
- } // now the bones are part of the scene graph and children of the skinned mesh.
314
- // let's update the corresponding matrices
315
-
316
-
193
+ }
317
194
  mesh.updateMatrixWorld(true);
318
195
  return bones;
319
- } //
320
-
321
-
196
+ }
322
197
  class GeometryBuilder {
323
- /**
324
- * @param {Object} data - parsed PMD/PMX data
325
- * @return {BufferGeometry}
326
- */
327
198
  build(data) {
328
- // for geometry
329
199
  const positions = [];
330
200
  const uvs = [];
331
201
  const normals = [];
@@ -339,45 +209,33 @@ class GeometryBuilder {
339
209
  const iks = [];
340
210
  const grants = [];
341
211
  const rigidBodies = [];
342
- const constraints = []; // for work
343
-
212
+ const constraints = [];
344
213
  let offset = 0;
345
- const boneTypeTable = {}; // positions, normals, uvs, skinIndices, skinWeights
346
-
214
+ const boneTypeTable = {};
347
215
  for (let i = 0; i < data.metadata.vertexCount; i++) {
348
216
  const v = data.vertices[i];
349
-
350
217
  for (let j = 0, jl = v.position.length; j < jl; j++) {
351
218
  positions.push(v.position[j]);
352
219
  }
353
-
354
220
  for (let j = 0, jl = v.normal.length; j < jl; j++) {
355
221
  normals.push(v.normal[j]);
356
222
  }
357
-
358
223
  for (let j = 0, jl = v.uv.length; j < jl; j++) {
359
224
  uvs.push(v.uv[j]);
360
225
  }
361
-
362
226
  for (let j = 0; j < 4; j++) {
363
- skinIndices.push(v.skinIndices.length - 1 >= j ? v.skinIndices[j] : 0.0);
227
+ skinIndices.push(v.skinIndices.length - 1 >= j ? v.skinIndices[j] : 0);
364
228
  }
365
-
366
229
  for (let j = 0; j < 4; j++) {
367
- skinWeights.push(v.skinWeights.length - 1 >= j ? v.skinWeights[j] : 0.0);
230
+ skinWeights.push(v.skinWeights.length - 1 >= j ? v.skinWeights[j] : 0);
368
231
  }
369
- } // indices
370
-
371
-
232
+ }
372
233
  for (let i = 0; i < data.metadata.faceCount; i++) {
373
234
  const face = data.faces[i];
374
-
375
235
  for (let j = 0, jl = face.indices.length; j < jl; j++) {
376
236
  indices.push(face.indices[j]);
377
237
  }
378
- } // groups
379
-
380
-
238
+ }
381
239
  for (let i = 0; i < data.metadata.materialCount; i++) {
382
240
  const material = data.materials[i];
383
241
  groups.push({
@@ -385,17 +243,13 @@ class GeometryBuilder {
385
243
  count: material.faceCount * 3
386
244
  });
387
245
  offset += material.faceCount;
388
- } // bones
389
-
390
-
246
+ }
391
247
  for (let i = 0; i < data.metadata.rigidBodyCount; i++) {
392
248
  const body = data.rigidBodies[i];
393
- let value = boneTypeTable[body.boneIndex]; // keeps greater number if already value is set without any special reasons
394
-
395
- value = value === undefined ? body.type : Math.max(body.type, value);
249
+ let value = boneTypeTable[body.boneIndex];
250
+ value = value === void 0 ? body.type : Math.max(body.type, value);
396
251
  boneTypeTable[body.boneIndex] = value;
397
252
  }
398
-
399
253
  for (let i = 0; i < data.metadata.boneCount; i++) {
400
254
  const boneData = data.bones[i];
401
255
  const bone = {
@@ -406,21 +260,16 @@ class GeometryBuilder {
406
260
  pos: boneData.position.slice(0, 3),
407
261
  rotq: [0, 0, 0, 1],
408
262
  scl: [1, 1, 1],
409
- rigidBodyType: boneTypeTable[i] !== undefined ? boneTypeTable[i] : -1
263
+ rigidBodyType: boneTypeTable[i] !== void 0 ? boneTypeTable[i] : -1
410
264
  };
411
-
412
265
  if (bone.parent !== -1) {
413
266
  bone.pos[0] -= data.bones[bone.parent].position[0];
414
267
  bone.pos[1] -= data.bones[bone.parent].position[1];
415
268
  bone.pos[2] -= data.bones[bone.parent].position[2];
416
269
  }
417
-
418
270
  bones.push(bone);
419
- } // iks
420
- // TODO: remove duplicated codes between PMD and PMX
421
-
422
-
423
- if (data.metadata.format === 'pmd') {
271
+ }
272
+ if (data.metadata.format === "pmd") {
424
273
  for (let i = 0; i < data.metadata.ikCount; i++) {
425
274
  const ik = data.iks[i];
426
275
  const param = {
@@ -430,25 +279,22 @@ class GeometryBuilder {
430
279
  maxAngle: ik.maxAngle * 4,
431
280
  links: []
432
281
  };
433
-
434
282
  for (let j = 0, jl = ik.links.length; j < jl; j++) {
435
283
  const link = {};
436
284
  link.index = ik.links[j].index;
437
285
  link.enabled = true;
438
-
439
- if (data.bones[link.index].name.indexOf('ひざ') >= 0) {
440
- link.limitation = new Vector3(1.0, 0.0, 0.0);
286
+ if (data.bones[link.index].name.indexOf("\u3072\u3056") >= 0) {
287
+ link.limitation = new THREE.Vector3(1, 0, 0);
441
288
  }
442
-
443
289
  param.links.push(link);
444
290
  }
445
-
446
291
  iks.push(param);
447
292
  }
448
293
  } else {
449
294
  for (let i = 0; i < data.metadata.boneCount; i++) {
450
295
  const ik = data.bones[i].ik;
451
- if (ik === undefined) continue;
296
+ if (ik === void 0)
297
+ continue;
452
298
  const param = {
453
299
  target: i,
454
300
  effector: ik.effector,
@@ -456,48 +302,47 @@ class GeometryBuilder {
456
302
  maxAngle: ik.maxAngle,
457
303
  links: []
458
304
  };
459
-
460
305
  for (let j = 0, jl = ik.links.length; j < jl; j++) {
461
306
  const link = {};
462
307
  link.index = ik.links[j].index;
463
308
  link.enabled = true;
464
-
465
309
  if (ik.links[j].angleLimitation === 1) {
466
- // Revert if rotationMin/Max doesn't work well
467
- // link.limitation = new Vector3( 1.0, 0.0, 0.0 );
468
310
  const rotationMin = ik.links[j].lowerLimitationAngle;
469
- const rotationMax = ik.links[j].upperLimitationAngle; // Convert Left to Right coordinate by myself because
470
- // MMDParser doesn't convert. It's a MMDParser's bug
471
-
311
+ const rotationMax = ik.links[j].upperLimitationAngle;
472
312
  const tmp1 = -rotationMax[0];
473
313
  const tmp2 = -rotationMax[1];
474
314
  rotationMax[0] = -rotationMin[0];
475
315
  rotationMax[1] = -rotationMin[1];
476
316
  rotationMin[0] = tmp1;
477
317
  rotationMin[1] = tmp2;
478
- link.rotationMin = new Vector3().fromArray(rotationMin);
479
- link.rotationMax = new Vector3().fromArray(rotationMax);
318
+ link.rotationMin = new THREE.Vector3().fromArray(rotationMin);
319
+ link.rotationMax = new THREE.Vector3().fromArray(rotationMax);
480
320
  }
481
-
482
321
  param.links.push(link);
483
322
  }
484
-
485
- iks.push(param); // Save the reference even from bone data for efficiently
486
- // simulating PMX animation system
487
-
323
+ iks.push(param);
488
324
  bones[i].ik = param;
489
325
  }
490
- } // grants
491
-
492
-
493
- if (data.metadata.format === 'pmx') {
494
- // bone index -> grant entry map
326
+ }
327
+ if (data.metadata.format === "pmx") {
328
+ let traverse = function(entry) {
329
+ if (entry.param) {
330
+ grants.push(entry.param);
331
+ bones[entry.param.index].grant = entry.param;
332
+ }
333
+ entry.visited = true;
334
+ for (let i = 0, il = entry.children.length; i < il; i++) {
335
+ const child = entry.children[i];
336
+ if (!child.visited)
337
+ traverse(child);
338
+ }
339
+ };
495
340
  const grantEntryMap = {};
496
-
497
341
  for (let i = 0; i < data.metadata.boneCount; i++) {
498
342
  const boneData = data.bones[i];
499
343
  const grant = boneData.grant;
500
- if (grant === undefined) continue;
344
+ if (grant === void 0)
345
+ continue;
501
346
  const param = {
502
347
  index: i,
503
348
  parentIndex: grant.parentIndex,
@@ -507,122 +352,74 @@ class GeometryBuilder {
507
352
  affectPosition: grant.affectPosition,
508
353
  transformationClass: boneData.transformationClass
509
354
  };
510
- grantEntryMap[i] = {
511
- parent: null,
512
- children: [],
513
- param: param,
514
- visited: false
515
- };
355
+ grantEntryMap[i] = { parent: null, children: [], param, visited: false };
516
356
  }
517
-
518
- const rootEntry = {
519
- parent: null,
520
- children: [],
521
- param: null,
522
- visited: false
523
- }; // Build a tree representing grant hierarchy
524
-
357
+ const rootEntry = { parent: null, children: [], param: null, visited: false };
525
358
  for (const boneIndex in grantEntryMap) {
526
359
  const grantEntry = grantEntryMap[boneIndex];
527
360
  const parentGrantEntry = grantEntryMap[grantEntry.parentIndex] || rootEntry;
528
361
  grantEntry.parent = parentGrantEntry;
529
362
  parentGrantEntry.children.push(grantEntry);
530
- } // Sort grant parameters from parents to children because
531
- // grant uses parent's transform that parent's grant is already applied
532
- // so grant should be applied in order from parents to children
533
-
534
-
535
- function traverse(entry) {
536
- if (entry.param) {
537
- grants.push(entry.param); // Save the reference even from bone data for efficiently
538
- // simulating PMX animation system
539
-
540
- bones[entry.param.index].grant = entry.param;
541
- }
542
-
543
- entry.visited = true;
544
-
545
- for (let i = 0, il = entry.children.length; i < il; i++) {
546
- const child = entry.children[i]; // Cut off a loop if exists. (Is a grant loop invalid?)
547
-
548
- if (!child.visited) traverse(child);
549
- }
550
363
  }
551
-
552
364
  traverse(rootEntry);
553
- } // morph
554
-
555
-
365
+ }
556
366
  function updateAttributes(attribute, morph, ratio) {
557
367
  for (let i = 0; i < morph.elementCount; i++) {
558
368
  const element = morph.elements[i];
559
369
  let index;
560
-
561
- if (data.metadata.format === 'pmd') {
370
+ if (data.metadata.format === "pmd") {
562
371
  index = data.morphs[0].elements[element.index].index;
563
372
  } else {
564
373
  index = element.index;
565
374
  }
566
-
567
375
  attribute.array[index * 3 + 0] += element.position[0] * ratio;
568
376
  attribute.array[index * 3 + 1] += element.position[1] * ratio;
569
377
  attribute.array[index * 3 + 2] += element.position[2] * ratio;
570
378
  }
571
379
  }
572
-
573
380
  for (let i = 0; i < data.metadata.morphCount; i++) {
574
381
  const morph = data.morphs[i];
575
- const params = {
576
- name: morph.name
577
- };
578
- const attribute = new Float32BufferAttribute(data.metadata.vertexCount * 3, 3);
382
+ const params = { name: morph.name };
383
+ const attribute = new THREE.Float32BufferAttribute(data.metadata.vertexCount * 3, 3);
579
384
  attribute.name = morph.name;
580
-
581
385
  for (let j = 0; j < data.metadata.vertexCount * 3; j++) {
582
386
  attribute.array[j] = positions[j];
583
387
  }
584
-
585
- if (data.metadata.format === 'pmd') {
388
+ if (data.metadata.format === "pmd") {
586
389
  if (i !== 0) {
587
- updateAttributes(attribute, morph, 1.0);
390
+ updateAttributes(attribute, morph, 1);
588
391
  }
589
392
  } else {
590
393
  if (morph.type === 0) {
591
- // group
592
394
  for (let j = 0; j < morph.elementCount; j++) {
593
395
  const morph2 = data.morphs[morph.elements[j].index];
594
396
  const ratio = morph.elements[j].ratio;
595
-
596
397
  if (morph2.type === 1) {
597
398
  updateAttributes(attribute, morph2, ratio);
399
+ } else {
598
400
  }
599
401
  }
600
402
  } else if (morph.type === 1) {
601
- // vertex
602
- updateAttributes(attribute, morph, 1.0);
603
- } else if (morph.type === 2) ; else if (morph.type === 3) ; else if (morph.type === 4) ; else if (morph.type === 5) ; else if (morph.type === 6) ; else if (morph.type === 7) ; else if (morph.type === 8) ;
403
+ updateAttributes(attribute, morph, 1);
404
+ } else if (morph.type === 2) {
405
+ } else if (morph.type === 3) {
406
+ } else if (morph.type === 4) {
407
+ } else if (morph.type === 5) {
408
+ } else if (morph.type === 6) {
409
+ } else if (morph.type === 7) {
410
+ } else if (morph.type === 8) {
411
+ }
604
412
  }
605
-
606
413
  morphTargets.push(params);
607
414
  morphPositions.push(attribute);
608
- } // rigid bodies from rigidBodies field.
609
-
610
-
415
+ }
611
416
  for (let i = 0; i < data.metadata.rigidBodyCount; i++) {
612
417
  const rigidBody = data.rigidBodies[i];
613
418
  const params = {};
614
-
615
419
  for (const key in rigidBody) {
616
420
  params[key] = rigidBody[key];
617
421
  }
618
- /*
619
- * RigidBody position parameter in PMX seems global position
620
- * while the one in PMD seems offset from corresponding bone.
621
- * So unify being offset.
622
- */
623
-
624
-
625
- if (data.metadata.format === 'pmx') {
422
+ if (data.metadata.format === "pmx") {
626
423
  if (params.boneIndex !== -1) {
627
424
  const bone = data.bones[params.boneIndex];
628
425
  params.position[0] -= bone.position[0];
@@ -630,250 +427,168 @@ class GeometryBuilder {
630
427
  params.position[2] -= bone.position[2];
631
428
  }
632
429
  }
633
-
634
430
  rigidBodies.push(params);
635
- } // constraints from constraints field.
636
-
637
-
431
+ }
638
432
  for (let i = 0; i < data.metadata.constraintCount; i++) {
639
433
  const constraint = data.constraints[i];
640
434
  const params = {};
641
-
642
435
  for (const key in constraint) {
643
436
  params[key] = constraint[key];
644
437
  }
645
-
646
438
  const bodyA = rigidBodies[params.rigidBodyIndex1];
647
- const bodyB = rigidBodies[params.rigidBodyIndex2]; // Refer to http://www20.atpages.jp/katwat/wp/?p=4135
648
-
439
+ const bodyB = rigidBodies[params.rigidBodyIndex2];
649
440
  if (bodyA.type !== 0 && bodyB.type === 2) {
650
441
  if (bodyA.boneIndex !== -1 && bodyB.boneIndex !== -1 && data.bones[bodyB.boneIndex].parentIndex === bodyA.boneIndex) {
651
442
  bodyB.type = 1;
652
443
  }
653
444
  }
654
-
655
445
  constraints.push(params);
656
- } // build BufferGeometry.
657
-
658
-
659
- const geometry = new BufferGeometry();
660
- geometry.setAttribute('position', new Float32BufferAttribute(positions, 3));
661
- geometry.setAttribute('normal', new Float32BufferAttribute(normals, 3));
662
- geometry.setAttribute('uv', new Float32BufferAttribute(uvs, 2));
663
- geometry.setAttribute('skinIndex', new Uint16BufferAttribute(skinIndices, 4));
664
- geometry.setAttribute('skinWeight', new Float32BufferAttribute(skinWeights, 4));
446
+ }
447
+ const geometry = new THREE.BufferGeometry();
448
+ geometry.setAttribute("position", new THREE.Float32BufferAttribute(positions, 3));
449
+ geometry.setAttribute("normal", new THREE.Float32BufferAttribute(normals, 3));
450
+ geometry.setAttribute("uv", new THREE.Float32BufferAttribute(uvs, 2));
451
+ geometry.setAttribute("skinIndex", new THREE.Uint16BufferAttribute(skinIndices, 4));
452
+ geometry.setAttribute("skinWeight", new THREE.Float32BufferAttribute(skinWeights, 4));
665
453
  geometry.setIndex(indices);
666
-
667
454
  for (let i = 0, il = groups.length; i < il; i++) {
668
455
  geometry.addGroup(groups[i].offset, groups[i].count, i);
669
456
  }
670
-
671
457
  geometry.bones = bones;
672
458
  geometry.morphTargets = morphTargets;
673
459
  geometry.morphAttributes.position = morphPositions;
674
460
  geometry.morphTargetsRelative = false;
675
461
  geometry.userData.MMD = {
676
- bones: bones,
677
- iks: iks,
678
- grants: grants,
679
- rigidBodies: rigidBodies,
680
- constraints: constraints,
462
+ bones,
463
+ iks,
464
+ grants,
465
+ rigidBodies,
466
+ constraints,
681
467
  format: data.metadata.format
682
468
  };
683
469
  geometry.computeBoundingSphere();
684
470
  return geometry;
685
471
  }
686
-
687
- } //
688
-
689
- /**
690
- * @param {THREE.LoadingManager} manager
691
- */
692
-
693
-
472
+ }
694
473
  class MaterialBuilder {
695
474
  constructor(manager) {
696
475
  this.manager = manager;
697
- this.textureLoader = new TextureLoader(this.manager);
698
- this.tgaLoader = null; // lazy generation
699
-
700
- this.crossOrigin = 'anonymous';
701
- this.resourcePath = undefined;
476
+ this.textureLoader = new THREE.TextureLoader(this.manager);
477
+ this.tgaLoader = null;
478
+ this.crossOrigin = "anonymous";
479
+ this.resourcePath = void 0;
702
480
  }
703
- /**
704
- * @param {string} crossOrigin
705
- * @return {MaterialBuilder}
706
- */
707
-
708
-
709
481
  setCrossOrigin(crossOrigin) {
710
482
  this.crossOrigin = crossOrigin;
711
483
  return this;
712
484
  }
713
- /**
714
- * @param {string} resourcePath
715
- * @return {MaterialBuilder}
716
- */
717
-
718
-
719
485
  setResourcePath(resourcePath) {
720
486
  this.resourcePath = resourcePath;
721
487
  return this;
722
488
  }
723
- /**
724
- * @param {Object} data - parsed PMD/PMX data
725
- * @param {BufferGeometry} geometry - some properties are dependend on geometry
726
- * @param {function} onProgress
727
- * @param {function} onError
728
- * @return {Array<MeshToonMaterial>}
729
- */
730
-
731
-
732
- build(data, geometry
733
- /*, onProgress, onError */
734
- ) {
489
+ build(data, geometry) {
735
490
  const materials = [];
736
491
  const textures = {};
737
- this.textureLoader.setCrossOrigin(this.crossOrigin); // materials
738
-
492
+ this.textureLoader.setCrossOrigin(this.crossOrigin);
739
493
  for (let i = 0; i < data.metadata.materialCount; i++) {
740
494
  const material = data.materials[i];
741
- const params = {
742
- userData: {}
743
- };
744
- if (material.name !== undefined) params.name = material.name;
745
- /*
746
- * Color
747
- *
748
- * MMD MeshToonMaterial
749
- * diffuse - color
750
- * ambient - emissive * a
751
- * (a = 1.0 without map texture or 0.2 with map texture)
752
- *
753
- * MeshToonMaterial doesn't have ambient. Set it to emissive instead.
754
- * It'll be too bright if material has map texture so using coef 0.2.
755
- */
756
-
757
- params.color = new Color().fromArray(material.diffuse);
495
+ const params = { userData: {} };
496
+ if (material.name !== void 0)
497
+ params.name = material.name;
498
+ params.color = new THREE.Color().fromArray(material.diffuse);
758
499
  params.opacity = material.diffuse[3];
759
- params.emissive = new Color().fromArray(material.ambient);
760
- params.transparent = params.opacity !== 1.0; //
761
-
500
+ params.emissive = new THREE.Color().fromArray(material.ambient);
501
+ params.transparent = params.opacity !== 1;
762
502
  params.skinning = geometry.bones.length > 0 ? true : false;
763
503
  params.morphTargets = geometry.morphTargets.length > 0 ? true : false;
764
- params.fog = true; // blend
765
-
766
- params.blending = CustomBlending;
767
- params.blendSrc = SrcAlphaFactor;
768
- params.blendDst = OneMinusSrcAlphaFactor;
769
- params.blendSrcAlpha = SrcAlphaFactor;
770
- params.blendDstAlpha = DstAlphaFactor; // side
771
-
772
- if (data.metadata.format === 'pmx' && (material.flag & 0x1) === 1) {
773
- params.side = DoubleSide;
504
+ params.fog = true;
505
+ params.blending = THREE.CustomBlending;
506
+ params.blendSrc = THREE.SrcAlphaFactor;
507
+ params.blendDst = THREE.OneMinusSrcAlphaFactor;
508
+ params.blendSrcAlpha = THREE.SrcAlphaFactor;
509
+ params.blendDstAlpha = THREE.DstAlphaFactor;
510
+ if (data.metadata.format === "pmx" && (material.flag & 1) === 1) {
511
+ params.side = THREE.DoubleSide;
774
512
  } else {
775
- params.side = params.opacity === 1.0 ? FrontSide : DoubleSide;
513
+ params.side = params.opacity === 1 ? THREE.FrontSide : THREE.DoubleSide;
776
514
  }
777
-
778
- if (data.metadata.format === 'pmd') {
779
- // map, envMap
515
+ if (data.metadata.format === "pmd") {
780
516
  if (material.fileName) {
781
517
  const fileName = material.fileName;
782
- const fileNames = fileName.split('*'); // fileNames[ 0 ]: mapFileName
783
- // fileNames[ 1 ]: envMapFileName( optional )
784
-
518
+ const fileNames = fileName.split("*");
785
519
  params.map = this._loadTexture(fileNames[0], textures);
786
-
787
520
  if (fileNames.length > 1) {
788
521
  const extension = fileNames[1].slice(-4).toLowerCase();
789
522
  params.envMap = this._loadTexture(fileNames[1], textures);
790
- params.combine = extension === '.sph' ? MultiplyOperation : AddOperation;
523
+ params.combine = extension === ".sph" ? THREE.MultiplyOperation : THREE.AddOperation;
791
524
  }
792
- } // gradientMap
793
-
794
-
795
- const toonFileName = material.toonIndex === -1 ? 'toon00.bmp' : data.toonTextures[material.toonIndex].fileName;
525
+ }
526
+ const toonFileName = material.toonIndex === -1 ? "toon00.bmp" : data.toonTextures[material.toonIndex].fileName;
796
527
  params.gradientMap = this._loadTexture(toonFileName, textures, {
797
528
  isToonTexture: true,
798
529
  isDefaultToonTexture: this._isDefaultToonTexture(toonFileName)
799
- }); // parameters for OutlineEffect
800
-
530
+ });
801
531
  params.userData.outlineParameters = {
802
- thickness: material.edgeFlag === 1 ? 0.003 : 0.0,
532
+ thickness: material.edgeFlag === 1 ? 3e-3 : 0,
803
533
  color: [0, 0, 0],
804
- alpha: 1.0,
534
+ alpha: 1,
805
535
  visible: material.edgeFlag === 1
806
536
  };
807
537
  } else {
808
- // map
809
538
  if (material.textureIndex !== -1) {
810
539
  params.map = this._loadTexture(data.textures[material.textureIndex], textures);
811
- } // envMap TODO: support m.envFlag === 3
812
-
813
-
540
+ }
814
541
  if (material.envTextureIndex !== -1 && (material.envFlag === 1 || material.envFlag == 2)) {
815
542
  params.envMap = this._loadTexture(data.textures[material.envTextureIndex], textures);
816
- params.combine = material.envFlag === 1 ? MultiplyOperation : AddOperation;
817
- } // gradientMap
818
-
819
-
543
+ params.combine = material.envFlag === 1 ? THREE.MultiplyOperation : THREE.AddOperation;
544
+ }
820
545
  let toonFileName, isDefaultToon;
821
-
822
546
  if (material.toonIndex === -1 || material.toonFlag !== 0) {
823
- toonFileName = 'toon' + ('0' + (material.toonIndex + 1)).slice(-2) + '.bmp';
547
+ toonFileName = "toon" + ("0" + (material.toonIndex + 1)).slice(-2) + ".bmp";
824
548
  isDefaultToon = true;
825
549
  } else {
826
550
  toonFileName = data.textures[material.toonIndex];
827
551
  isDefaultToon = false;
828
552
  }
829
-
830
553
  params.gradientMap = this._loadTexture(toonFileName, textures, {
831
554
  isToonTexture: true,
832
555
  isDefaultToonTexture: isDefaultToon
833
- }); // parameters for OutlineEffect
834
-
556
+ });
835
557
  params.userData.outlineParameters = {
836
558
  thickness: material.edgeSize / 300,
837
- // TODO: better calculation?
838
559
  color: material.edgeColor.slice(0, 3),
839
560
  alpha: material.edgeColor[3],
840
- visible: (material.flag & 0x10) !== 0 && material.edgeSize > 0.0
561
+ visible: (material.flag & 16) !== 0 && material.edgeSize > 0
841
562
  };
842
563
  }
843
-
844
- if (params.map !== undefined) {
564
+ if (params.map !== void 0) {
845
565
  if (!params.transparent) {
846
566
  this._checkImageTransparency(params.map, geometry, i);
847
567
  }
848
-
849
568
  params.emissive.multiplyScalar(0.2);
850
569
  }
851
-
852
- materials.push(new MeshToonMaterial(params));
570
+ materials.push(new THREE.MeshToonMaterial(params));
853
571
  }
854
-
855
- if (data.metadata.format === 'pmx') {
856
- // set transparent true if alpha morph is defined.
857
- function checkAlphaMorph(elements, materials) {
572
+ if (data.metadata.format === "pmx") {
573
+ let checkAlphaMorph = function(elements, materials2) {
858
574
  for (let i = 0, il = elements.length; i < il; i++) {
859
575
  const element = elements[i];
860
- if (element.index === -1) continue;
861
- const material = materials[element.index];
862
-
576
+ if (element.index === -1)
577
+ continue;
578
+ const material = materials2[element.index];
863
579
  if (material.opacity !== element.diffuse[3]) {
864
580
  material.transparent = true;
865
581
  }
866
582
  }
867
- }
868
-
583
+ };
869
584
  for (let i = 0, il = data.morphs.length; i < il; i++) {
870
585
  const morph = data.morphs[i];
871
586
  const elements = morph.elements;
872
-
873
587
  if (morph.type === 0) {
874
588
  for (let j = 0, jl = elements.length; j < jl; j++) {
875
589
  const morph2 = data.morphs[elements[j].index];
876
- if (morph2.type !== 8) continue;
590
+ if (morph2.type !== 8)
591
+ continue;
877
592
  checkAlphaMorph(morph2.elements, materials);
878
593
  }
879
594
  } else if (morph.type === 8) {
@@ -881,227 +596,175 @@ class MaterialBuilder {
881
596
  }
882
597
  }
883
598
  }
884
-
885
599
  return materials;
886
- } // private methods
887
-
888
-
600
+ }
889
601
  _getTGALoader() {
890
602
  if (this.tgaLoader === null) {
891
- if (TGALoader === undefined) {
892
- throw new Error('THREE.MMDLoader: Import TGALoader');
603
+ if (TGALoader.TGALoader === void 0) {
604
+ throw new Error("THREE.MMDLoader: Import TGALoader");
893
605
  }
894
-
895
- this.tgaLoader = new TGALoader(this.manager);
606
+ this.tgaLoader = new TGALoader.TGALoader(this.manager);
896
607
  }
897
-
898
608
  return this.tgaLoader;
899
609
  }
900
-
901
610
  _isDefaultToonTexture(name) {
902
- if (name.length !== 10) return false;
611
+ if (name.length !== 10)
612
+ return false;
903
613
  return /toon(10|0[0-9])\.bmp/.test(name);
904
614
  }
905
-
906
615
  _loadTexture(filePath, textures, params, onProgress, onError) {
907
616
  params = params || {};
908
617
  const scope = this;
909
618
  let fullPath;
910
-
911
619
  if (params.isDefaultToonTexture === true) {
912
620
  let index;
913
-
914
621
  try {
915
622
  index = parseInt(filePath.match(/toon([0-9]{2})\.bmp$/)[1]);
916
623
  } catch (e) {
917
- console.warn('THREE.MMDLoader: ' + filePath + ' seems like a ' + 'not right default texture path. Using toon00.bmp instead.');
624
+ console.warn(
625
+ "THREE.MMDLoader: " + filePath + " seems like a not right default texture path. Using toon00.bmp instead."
626
+ );
918
627
  index = 0;
919
628
  }
920
-
921
629
  fullPath = DEFAULT_TOON_TEXTURES[index];
922
630
  } else {
923
631
  fullPath = this.resourcePath + filePath;
924
632
  }
925
-
926
- if (textures[fullPath] !== undefined) return textures[fullPath];
633
+ if (textures[fullPath] !== void 0)
634
+ return textures[fullPath];
927
635
  let loader = this.manager.getHandler(fullPath);
928
-
929
636
  if (loader === null) {
930
- loader = filePath.slice(-4).toLowerCase() === '.tga' ? this._getTGALoader() : this.textureLoader;
637
+ loader = filePath.slice(-4).toLowerCase() === ".tga" ? this._getTGALoader() : this.textureLoader;
931
638
  }
932
-
933
- const texture = loader.load(fullPath, function (t) {
934
- // MMD toon texture is Axis-Y oriented
935
- // but Three.js gradient map is Axis-X oriented.
936
- // So here replaces the toon texture image with the rotated one.
937
- if (params.isToonTexture === true) {
938
- t.image = scope._getRotatedImage(t.image);
939
- t.magFilter = NearestFilter;
940
- t.minFilter = NearestFilter;
941
- }
942
-
943
- t.flipY = false;
944
- t.wrapS = RepeatWrapping;
945
- t.wrapT = RepeatWrapping;
946
-
947
- for (let i = 0; i < texture.readyCallbacks.length; i++) {
948
- texture.readyCallbacks[i](texture);
949
- }
950
-
951
- delete texture.readyCallbacks;
952
- }, onProgress, onError);
639
+ const texture = loader.load(
640
+ fullPath,
641
+ function(t) {
642
+ if (params.isToonTexture === true) {
643
+ t.image = scope._getRotatedImage(t.image);
644
+ t.magFilter = THREE.NearestFilter;
645
+ t.minFilter = THREE.NearestFilter;
646
+ }
647
+ t.flipY = false;
648
+ t.wrapS = THREE.RepeatWrapping;
649
+ t.wrapT = THREE.RepeatWrapping;
650
+ for (let i = 0; i < texture.readyCallbacks.length; i++) {
651
+ texture.readyCallbacks[i](texture);
652
+ }
653
+ delete texture.readyCallbacks;
654
+ },
655
+ onProgress,
656
+ onError
657
+ );
953
658
  texture.readyCallbacks = [];
954
659
  textures[fullPath] = texture;
955
660
  return texture;
956
661
  }
957
-
958
662
  _getRotatedImage(image) {
959
- const canvas = document.createElement('canvas');
960
- const context = canvas.getContext('2d');
663
+ const canvas = document.createElement("canvas");
664
+ const context = canvas.getContext("2d");
961
665
  const width = image.width;
962
666
  const height = image.height;
963
667
  canvas.width = width;
964
668
  canvas.height = height;
965
669
  context.clearRect(0, 0, width, height);
966
- context.translate(width / 2.0, height / 2.0);
967
- context.rotate(0.5 * Math.PI); // 90.0 * Math.PI / 180.0
968
-
969
- context.translate(-width / 2.0, -height / 2.0);
670
+ context.translate(width / 2, height / 2);
671
+ context.rotate(0.5 * Math.PI);
672
+ context.translate(-width / 2, -height / 2);
970
673
  context.drawImage(image, 0, 0);
971
674
  return context.getImageData(0, 0, width, height);
972
- } // Check if the partial image area used by the texture is transparent.
973
-
974
-
675
+ }
975
676
  _checkImageTransparency(map, geometry, groupIndex) {
976
- map.readyCallbacks.push(function (texture) {
977
- // Is there any efficient ways?
677
+ map.readyCallbacks.push(function(texture) {
978
678
  function createImageData(image) {
979
- const canvas = document.createElement('canvas');
679
+ const canvas = document.createElement("canvas");
980
680
  canvas.width = image.width;
981
681
  canvas.height = image.height;
982
- const context = canvas.getContext('2d');
682
+ const context = canvas.getContext("2d");
983
683
  context.drawImage(image, 0, 0);
984
684
  return context.getImageData(0, 0, canvas.width, canvas.height);
985
685
  }
986
-
987
686
  function detectImageTransparency(image, uvs, indices) {
988
687
  const width = image.width;
989
688
  const height = image.height;
990
689
  const data = image.data;
991
690
  const threshold = 253;
992
- if (data.length / (width * height) !== 4) return false;
993
-
691
+ if (data.length / (width * height) !== 4)
692
+ return false;
994
693
  for (let i = 0; i < indices.length; i += 3) {
995
- const centerUV = {
996
- x: 0.0,
997
- y: 0.0
998
- };
999
-
694
+ const centerUV = { x: 0, y: 0 };
1000
695
  for (let j = 0; j < 3; j++) {
1001
696
  const index = indices[i * 3 + j];
1002
- const uv = {
1003
- x: uvs[index * 2 + 0],
1004
- y: uvs[index * 2 + 1]
1005
- };
1006
- if (getAlphaByUv(image, uv) < threshold) return true;
697
+ const uv = { x: uvs[index * 2 + 0], y: uvs[index * 2 + 1] };
698
+ if (getAlphaByUv(image, uv) < threshold)
699
+ return true;
1007
700
  centerUV.x += uv.x;
1008
701
  centerUV.y += uv.y;
1009
702
  }
1010
-
1011
703
  centerUV.x /= 3;
1012
704
  centerUV.y /= 3;
1013
- if (getAlphaByUv(image, centerUV) < threshold) return true;
705
+ if (getAlphaByUv(image, centerUV) < threshold)
706
+ return true;
1014
707
  }
1015
-
1016
708
  return false;
1017
709
  }
1018
- /*
1019
- * This method expects
1020
- * texture.flipY = false
1021
- * texture.wrapS = RepeatWrapping
1022
- * texture.wrapT = RepeatWrapping
1023
- * TODO: more precise
1024
- */
1025
-
1026
-
1027
710
  function getAlphaByUv(image, uv) {
1028
711
  const width = image.width;
1029
712
  const height = image.height;
1030
713
  let x = Math.round(uv.x * width) % width;
1031
714
  let y = Math.round(uv.y * height) % height;
1032
- if (x < 0) x += width;
1033
- if (y < 0) y += height;
715
+ if (x < 0)
716
+ x += width;
717
+ if (y < 0)
718
+ y += height;
1034
719
  const index = y * width + x;
1035
720
  return image.data[index * 4 + 3];
1036
721
  }
1037
-
1038
- const imageData = texture.image.data !== undefined ? texture.image : createImageData(texture.image);
722
+ const imageData = texture.image.data !== void 0 ? texture.image : createImageData(texture.image);
1039
723
  const group = geometry.groups[groupIndex];
1040
-
1041
- if (detectImageTransparency(imageData, geometry.attributes.uv.array, geometry.index.array.slice(group.start, group.start + group.count))) {
724
+ if (detectImageTransparency(
725
+ imageData,
726
+ geometry.attributes.uv.array,
727
+ geometry.index.array.slice(group.start, group.start + group.count)
728
+ )) {
1042
729
  map.transparent = true;
1043
730
  }
1044
731
  });
1045
732
  }
1046
-
1047
- } //
1048
-
1049
-
733
+ }
1050
734
  class AnimationBuilder {
1051
- /**
1052
- * @param {Object} vmd - parsed VMD data
1053
- * @param {SkinnedMesh} mesh - tracks will be fitting to mesh
1054
- * @return {AnimationClip}
1055
- */
1056
735
  build(vmd, mesh) {
1057
- // combine skeletal and morph animations
1058
736
  const tracks = this.buildSkeletalAnimation(vmd, mesh).tracks;
1059
737
  const tracks2 = this.buildMorphAnimation(vmd, mesh).tracks;
1060
-
1061
738
  for (let i = 0, il = tracks2.length; i < il; i++) {
1062
739
  tracks.push(tracks2[i]);
1063
740
  }
1064
-
1065
- return new AnimationClip('', -1, tracks);
741
+ return new THREE.AnimationClip("", -1, tracks);
1066
742
  }
1067
- /**
1068
- * @param {Object} vmd - parsed VMD data
1069
- * @param {SkinnedMesh} mesh - tracks will be fitting to mesh
1070
- * @return {AnimationClip}
1071
- */
1072
-
1073
-
1074
743
  buildSkeletalAnimation(vmd, mesh) {
1075
744
  function pushInterpolation(array, interpolation, index) {
1076
- array.push(interpolation[index + 0] / 127); // x1
1077
-
1078
- array.push(interpolation[index + 8] / 127); // x2
1079
-
1080
- array.push(interpolation[index + 4] / 127); // y1
1081
-
1082
- array.push(interpolation[index + 12] / 127); // y2
745
+ array.push(interpolation[index + 0] / 127);
746
+ array.push(interpolation[index + 8] / 127);
747
+ array.push(interpolation[index + 4] / 127);
748
+ array.push(interpolation[index + 12] / 127);
1083
749
  }
1084
-
1085
750
  const tracks = [];
1086
751
  const motions = {};
1087
752
  const bones = mesh.skeleton.bones;
1088
753
  const boneNameDictionary = {};
1089
-
1090
754
  for (let i = 0, il = bones.length; i < il; i++) {
1091
755
  boneNameDictionary[bones[i].name] = true;
1092
756
  }
1093
-
1094
757
  for (let i = 0; i < vmd.metadata.motionCount; i++) {
1095
758
  const motion = vmd.motions[i];
1096
759
  const boneName = motion.boneName;
1097
- if (boneNameDictionary[boneName] === undefined) continue;
760
+ if (boneNameDictionary[boneName] === void 0)
761
+ continue;
1098
762
  motions[boneName] = motions[boneName] || [];
1099
763
  motions[boneName].push(motion);
1100
764
  }
1101
-
1102
765
  for (const key in motions) {
1103
766
  const array = motions[key];
1104
- array.sort(function (a, b) {
767
+ array.sort(function(a, b) {
1105
768
  return a.frameNum - b.frameNum;
1106
769
  });
1107
770
  const times = [];
@@ -1110,100 +773,75 @@ class AnimationBuilder {
1110
773
  const pInterpolations = [];
1111
774
  const rInterpolations = [];
1112
775
  const basePosition = mesh.skeleton.getBoneByName(key).position.toArray();
1113
-
1114
776
  for (let i = 0, il = array.length; i < il; i++) {
1115
777
  const time = array[i].frameNum / 30;
1116
778
  const position = array[i].position;
1117
779
  const rotation = array[i].rotation;
1118
780
  const interpolation = array[i].interpolation;
1119
781
  times.push(time);
1120
-
1121
- for (let j = 0; j < 3; j++) positions.push(basePosition[j] + position[j]);
1122
-
1123
- for (let j = 0; j < 4; j++) rotations.push(rotation[j]);
1124
-
1125
- for (let j = 0; j < 3; j++) pushInterpolation(pInterpolations, interpolation, j);
1126
-
782
+ for (let j = 0; j < 3; j++)
783
+ positions.push(basePosition[j] + position[j]);
784
+ for (let j = 0; j < 4; j++)
785
+ rotations.push(rotation[j]);
786
+ for (let j = 0; j < 3; j++)
787
+ pushInterpolation(pInterpolations, interpolation, j);
1127
788
  pushInterpolation(rInterpolations, interpolation, 3);
1128
789
  }
1129
-
1130
- const targetName = '.bones[' + key + ']';
1131
- tracks.push(this._createTrack(targetName + '.position', VectorKeyframeTrack, times, positions, pInterpolations));
1132
- tracks.push(this._createTrack(targetName + '.quaternion', QuaternionKeyframeTrack, times, rotations, rInterpolations));
790
+ const targetName = ".bones[" + key + "]";
791
+ tracks.push(this._createTrack(targetName + ".position", THREE.VectorKeyframeTrack, times, positions, pInterpolations));
792
+ tracks.push(
793
+ this._createTrack(targetName + ".quaternion", THREE.QuaternionKeyframeTrack, times, rotations, rInterpolations)
794
+ );
1133
795
  }
1134
-
1135
- return new AnimationClip('', -1, tracks);
796
+ return new THREE.AnimationClip("", -1, tracks);
1136
797
  }
1137
- /**
1138
- * @param {Object} vmd - parsed VMD data
1139
- * @param {SkinnedMesh} mesh - tracks will be fitting to mesh
1140
- * @return {AnimationClip}
1141
- */
1142
-
1143
-
1144
798
  buildMorphAnimation(vmd, mesh) {
1145
799
  const tracks = [];
1146
800
  const morphs = {};
1147
801
  const morphTargetDictionary = mesh.morphTargetDictionary;
1148
-
1149
802
  for (let i = 0; i < vmd.metadata.morphCount; i++) {
1150
803
  const morph = vmd.morphs[i];
1151
804
  const morphName = morph.morphName;
1152
- if (morphTargetDictionary[morphName] === undefined) continue;
805
+ if (morphTargetDictionary[morphName] === void 0)
806
+ continue;
1153
807
  morphs[morphName] = morphs[morphName] || [];
1154
808
  morphs[morphName].push(morph);
1155
809
  }
1156
-
1157
810
  for (const key in morphs) {
1158
811
  const array = morphs[key];
1159
- array.sort(function (a, b) {
812
+ array.sort(function(a, b) {
1160
813
  return a.frameNum - b.frameNum;
1161
814
  });
1162
815
  const times = [];
1163
816
  const values = [];
1164
-
1165
817
  for (let i = 0, il = array.length; i < il; i++) {
1166
818
  times.push(array[i].frameNum / 30);
1167
819
  values.push(array[i].weight);
1168
820
  }
1169
-
1170
- tracks.push(new NumberKeyframeTrack('.morphTargetInfluences[' + morphTargetDictionary[key] + ']', times, values));
821
+ tracks.push(new THREE.NumberKeyframeTrack(".morphTargetInfluences[" + morphTargetDictionary[key] + "]", times, values));
1171
822
  }
1172
-
1173
- return new AnimationClip('', -1, tracks);
823
+ return new THREE.AnimationClip("", -1, tracks);
1174
824
  }
1175
- /**
1176
- * @param {Object} vmd - parsed VMD data
1177
- * @return {AnimationClip}
1178
- */
1179
-
1180
-
1181
825
  buildCameraAnimation(vmd) {
1182
826
  function pushVector3(array, vec) {
1183
827
  array.push(vec.x);
1184
828
  array.push(vec.y);
1185
829
  array.push(vec.z);
1186
830
  }
1187
-
1188
831
  function pushQuaternion(array, q) {
1189
832
  array.push(q.x);
1190
833
  array.push(q.y);
1191
834
  array.push(q.z);
1192
835
  array.push(q.w);
1193
836
  }
1194
-
1195
837
  function pushInterpolation(array, interpolation, index) {
1196
- array.push(interpolation[index * 4 + 0] / 127); // x1
1197
-
1198
- array.push(interpolation[index * 4 + 1] / 127); // x2
1199
-
1200
- array.push(interpolation[index * 4 + 2] / 127); // y1
1201
-
1202
- array.push(interpolation[index * 4 + 3] / 127); // y2
838
+ array.push(interpolation[index * 4 + 0] / 127);
839
+ array.push(interpolation[index * 4 + 1] / 127);
840
+ array.push(interpolation[index * 4 + 2] / 127);
841
+ array.push(interpolation[index * 4 + 3] / 127);
1203
842
  }
1204
-
1205
- const cameras = vmd.cameras === undefined ? [] : vmd.cameras.slice();
1206
- cameras.sort(function (a, b) {
843
+ const cameras = vmd.cameras === void 0 ? [] : vmd.cameras.slice();
844
+ cameras.sort(function(a, b) {
1207
845
  return a.frameNum - b.frameNum;
1208
846
  });
1209
847
  const times = [];
@@ -1215,11 +853,10 @@ class AnimationBuilder {
1215
853
  const qInterpolations = [];
1216
854
  const pInterpolations = [];
1217
855
  const fInterpolations = [];
1218
- const quaternion = new Quaternion();
1219
- const euler = new Euler();
1220
- const position = new Vector3();
1221
- const center = new Vector3();
1222
-
856
+ const quaternion = new THREE.Quaternion();
857
+ const euler = new THREE.Euler();
858
+ const position = new THREE.Vector3();
859
+ const center = new THREE.Vector3();
1223
860
  for (let i = 0, il = cameras.length; i < il; i++) {
1224
861
  const motion = cameras[i];
1225
862
  const time = motion.frameNum / 30;
@@ -1239,36 +876,23 @@ class AnimationBuilder {
1239
876
  pushQuaternion(quaternions, quaternion);
1240
877
  pushVector3(positions, position);
1241
878
  fovs.push(fov);
1242
-
1243
879
  for (let j = 0; j < 3; j++) {
1244
880
  pushInterpolation(cInterpolations, interpolation, j);
1245
881
  }
1246
-
1247
- pushInterpolation(qInterpolations, interpolation, 3); // use the same parameter for x, y, z axis.
1248
-
882
+ pushInterpolation(qInterpolations, interpolation, 3);
1249
883
  for (let j = 0; j < 3; j++) {
1250
884
  pushInterpolation(pInterpolations, interpolation, 4);
1251
885
  }
1252
-
1253
886
  pushInterpolation(fInterpolations, interpolation, 5);
1254
887
  }
1255
-
1256
- const tracks = []; // I expect an object whose name 'target' exists under THREE.Camera
1257
-
1258
- tracks.push(this._createTrack('target.position', VectorKeyframeTrack, times, centers, cInterpolations));
1259
- tracks.push(this._createTrack('.quaternion', QuaternionKeyframeTrack, times, quaternions, qInterpolations));
1260
- tracks.push(this._createTrack('.position', VectorKeyframeTrack, times, positions, pInterpolations));
1261
- tracks.push(this._createTrack('.fov', NumberKeyframeTrack, times, fovs, fInterpolations));
1262
- return new AnimationClip('', -1, tracks);
1263
- } // private method
1264
-
1265
-
888
+ const tracks = [];
889
+ tracks.push(this._createTrack("target.position", THREE.VectorKeyframeTrack, times, centers, cInterpolations));
890
+ tracks.push(this._createTrack(".quaternion", THREE.QuaternionKeyframeTrack, times, quaternions, qInterpolations));
891
+ tracks.push(this._createTrack(".position", THREE.VectorKeyframeTrack, times, positions, pInterpolations));
892
+ tracks.push(this._createTrack(".fov", THREE.NumberKeyframeTrack, times, fovs, fInterpolations));
893
+ return new THREE.AnimationClip("", -1, tracks);
894
+ }
1266
895
  _createTrack(node, typedKeyframeTrack, times, values, interpolations) {
1267
- /*
1268
- * optimizes here not to let KeyframeTrackPrototype optimize
1269
- * because KeyframeTrackPrototype optimizes times and values but
1270
- * doesn't optimize interpolations.
1271
- */
1272
896
  if (times.length > 2) {
1273
897
  times = times.slice();
1274
898
  values = values.slice();
@@ -1276,7 +900,6 @@ class AnimationBuilder {
1276
900
  const stride = values.length / times.length;
1277
901
  const interpolateStride = interpolations.length / times.length;
1278
902
  let index = 1;
1279
-
1280
903
  for (let aheadIndex = 2, endIndex = times.length; aheadIndex < endIndex; aheadIndex++) {
1281
904
  for (let i = 0; i < stride; i++) {
1282
905
  if (values[index * stride + i] !== values[(index - 1) * stride + i] || values[index * stride + i] !== values[aheadIndex * stride + i]) {
@@ -1284,151 +907,92 @@ class AnimationBuilder {
1284
907
  break;
1285
908
  }
1286
909
  }
1287
-
1288
910
  if (aheadIndex > index) {
1289
911
  times[index] = times[aheadIndex];
1290
-
1291
912
  for (let i = 0; i < stride; i++) {
1292
913
  values[index * stride + i] = values[aheadIndex * stride + i];
1293
914
  }
1294
-
1295
915
  for (let i = 0; i < interpolateStride; i++) {
1296
916
  interpolations[index * interpolateStride + i] = interpolations[aheadIndex * interpolateStride + i];
1297
917
  }
1298
918
  }
1299
919
  }
1300
-
1301
920
  times.length = index + 1;
1302
921
  values.length = (index + 1) * stride;
1303
922
  interpolations.length = (index + 1) * interpolateStride;
1304
923
  }
1305
-
1306
924
  const track = new typedKeyframeTrack(node, times, values);
1307
-
1308
925
  track.createInterpolant = function InterpolantFactoryMethodCubicBezier(result) {
1309
- return new CubicBezierInterpolation(this.times, this.values, this.getValueSize(), result, new Float32Array(interpolations));
926
+ return new CubicBezierInterpolation(
927
+ this.times,
928
+ this.values,
929
+ this.getValueSize(),
930
+ result,
931
+ new Float32Array(interpolations)
932
+ );
1310
933
  };
1311
-
1312
934
  return track;
1313
935
  }
1314
-
1315
- } // interpolation
1316
-
1317
-
1318
- class CubicBezierInterpolation extends Interpolant {
936
+ }
937
+ class CubicBezierInterpolation extends THREE.Interpolant {
1319
938
  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer, params) {
1320
939
  super(parameterPositions, sampleValues, sampleSize, resultBuffer);
1321
940
  this.interpolationParams = params;
1322
941
  }
1323
-
1324
942
  interpolate_(i1, t0, t, t1) {
1325
943
  const result = this.resultBuffer;
1326
944
  const values = this.sampleValues;
1327
945
  const stride = this.valueSize;
1328
946
  const params = this.interpolationParams;
1329
947
  const offset1 = i1 * stride;
1330
- const offset0 = offset1 - stride; // No interpolation if next key frame is in one frame in 30fps.
1331
- // This is from MMD animation spec.
1332
- // '1.5' is for precision loss. times are Float32 in Three.js Animation system.
1333
-
1334
- const weight1 = t1 - t0 < 1 / 30 * 1.5 ? 0.0 : (t - t0) / (t1 - t0);
1335
-
948
+ const offset0 = offset1 - stride;
949
+ const weight1 = t1 - t0 < 1 / 30 * 1.5 ? 0 : (t - t0) / (t1 - t0);
1336
950
  if (stride === 4) {
1337
- // Quaternion
1338
951
  const x1 = params[i1 * 4 + 0];
1339
952
  const x2 = params[i1 * 4 + 1];
1340
953
  const y1 = params[i1 * 4 + 2];
1341
954
  const y2 = params[i1 * 4 + 3];
1342
-
1343
955
  const ratio = this._calculate(x1, x2, y1, y2, weight1);
1344
-
1345
- Quaternion.slerpFlat(result, 0, values, offset0, values, offset1, ratio);
956
+ THREE.Quaternion.slerpFlat(result, 0, values, offset0, values, offset1, ratio);
1346
957
  } else if (stride === 3) {
1347
- // Vector3
1348
958
  for (let i = 0; i !== stride; ++i) {
1349
959
  const x1 = params[i1 * 12 + i * 4 + 0];
1350
960
  const x2 = params[i1 * 12 + i * 4 + 1];
1351
961
  const y1 = params[i1 * 12 + i * 4 + 2];
1352
962
  const y2 = params[i1 * 12 + i * 4 + 3];
1353
-
1354
963
  const ratio = this._calculate(x1, x2, y1, y2, weight1);
1355
-
1356
964
  result[i] = values[offset0 + i] * (1 - ratio) + values[offset1 + i] * ratio;
1357
965
  }
1358
966
  } else {
1359
- // Number
1360
967
  const x1 = params[i1 * 4 + 0];
1361
968
  const x2 = params[i1 * 4 + 1];
1362
969
  const y1 = params[i1 * 4 + 2];
1363
970
  const y2 = params[i1 * 4 + 3];
1364
-
1365
971
  const ratio = this._calculate(x1, x2, y1, y2, weight1);
1366
-
1367
972
  result[0] = values[offset0] * (1 - ratio) + values[offset1] * ratio;
1368
973
  }
1369
-
1370
974
  return result;
1371
975
  }
1372
-
1373
976
  _calculate(x1, x2, y1, y2, x) {
1374
- /*
1375
- * Cubic Bezier curves
1376
- * https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B.C3.A9zier_curves
1377
- *
1378
- * B(t) = ( 1 - t ) ^ 3 * P0
1379
- * + 3 * ( 1 - t ) ^ 2 * t * P1
1380
- * + 3 * ( 1 - t ) * t^2 * P2
1381
- * + t ^ 3 * P3
1382
- * ( 0 <= t <= 1 )
1383
- *
1384
- * MMD uses Cubic Bezier curves for bone and camera animation interpolation.
1385
- * http://d.hatena.ne.jp/edvakf/20111016/1318716097
1386
- *
1387
- * x = ( 1 - t ) ^ 3 * x0
1388
- * + 3 * ( 1 - t ) ^ 2 * t * x1
1389
- * + 3 * ( 1 - t ) * t^2 * x2
1390
- * + t ^ 3 * x3
1391
- * y = ( 1 - t ) ^ 3 * y0
1392
- * + 3 * ( 1 - t ) ^ 2 * t * y1
1393
- * + 3 * ( 1 - t ) * t^2 * y2
1394
- * + t ^ 3 * y3
1395
- * ( x0 = 0, y0 = 0 )
1396
- * ( x3 = 1, y3 = 1 )
1397
- * ( 0 <= t, x1, x2, y1, y2 <= 1 )
1398
- *
1399
- * Here solves this equation with Bisection method,
1400
- * https://en.wikipedia.org/wiki/Bisection_method
1401
- * gets t, and then calculate y.
1402
- *
1403
- * f(t) = 3 * ( 1 - t ) ^ 2 * t * x1
1404
- * + 3 * ( 1 - t ) * t^2 * x2
1405
- * + t ^ 3 - x = 0
1406
- *
1407
- * (Another option: Newton's method
1408
- * https://en.wikipedia.org/wiki/Newton%27s_method)
1409
- */
1410
977
  let c = 0.5;
1411
978
  let t = c;
1412
- let s = 1.0 - t;
979
+ let s = 1 - t;
1413
980
  const loop = 15;
1414
981
  const eps = 1e-5;
1415
982
  const math = Math;
1416
983
  let sst3, stt3, ttt;
1417
-
1418
984
  for (let i = 0; i < loop; i++) {
1419
- sst3 = 3.0 * s * s * t;
1420
- stt3 = 3.0 * s * t * t;
985
+ sst3 = 3 * s * s * t;
986
+ stt3 = 3 * s * t * t;
1421
987
  ttt = t * t * t;
1422
988
  const ft = sst3 * x1 + stt3 * x2 + ttt - x;
1423
- if (math.abs(ft) < eps) break;
1424
- c /= 2.0;
989
+ if (math.abs(ft) < eps)
990
+ break;
991
+ c /= 2;
1425
992
  t += ft < 0 ? c : -c;
1426
- s = 1.0 - t;
993
+ s = 1 - t;
1427
994
  }
1428
-
1429
995
  return sst3 * y1 + stt3 * y2 + ttt;
1430
996
  }
1431
-
1432
997
  }
1433
-
1434
- export { MMDLoader };
998
+ exports.MMDLoader = MMDLoader;