three-stdlib 2.22.5 → 2.22.7

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