super-three 0.141.0 → 0.147.0

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 (646) hide show
  1. package/README.md +9 -9
  2. package/build/three.cjs +2441 -1569
  3. package/build/three.js +2441 -1569
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +2847 -1576
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +50 -67
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +71 -150
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +149 -403
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -61
  14. package/examples/js/controls/FlyControls.js +29 -63
  15. package/examples/js/controls/OrbitControls.js +125 -103
  16. package/examples/js/controls/PointerLockControls.js +5 -22
  17. package/examples/js/controls/TrackballControls.js +33 -88
  18. package/examples/js/controls/TransformControls.js +101 -182
  19. package/examples/js/csm/CSM.js +4 -39
  20. package/examples/js/csm/CSMFrustum.js +3 -9
  21. package/examples/js/csm/CSMHelper.js +24 -4
  22. package/examples/js/csm/CSMShader.js +2 -6
  23. package/examples/js/curves/CurveExtras.js +27 -27
  24. package/examples/js/curves/NURBSCurve.js +4 -16
  25. package/examples/js/curves/NURBSSurface.js +3 -9
  26. package/examples/js/curves/NURBSUtils.js +8 -45
  27. package/examples/js/effects/AnaglyphEffect.js +6 -20
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +30 -54
  30. package/examples/js/effects/ParallaxBarrierEffect.js +2 -15
  31. package/examples/js/effects/PeppersGhostEffect.js +14 -41
  32. package/examples/js/effects/StereoEffect.js +2 -6
  33. package/examples/js/environments/RoomEnvironment.js +32 -8
  34. package/examples/js/exporters/ColladaExporter.js +52 -78
  35. package/examples/js/exporters/DRACOExporter.js +22 -34
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +168 -345
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +40 -52
  40. package/examples/js/exporters/PLYExporter.js +50 -57
  41. package/examples/js/exporters/STLExporter.js +5 -14
  42. package/examples/js/exporters/USDZExporter.js +119 -27
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +12 -7
  45. package/examples/js/geometries/DecalGeometry.js +53 -20
  46. package/examples/js/geometries/LightningStrike.js +54 -67
  47. package/examples/js/geometries/ParametricGeometries.js +8 -7
  48. package/examples/js/geometries/ParametricGeometry.js +23 -17
  49. package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
  50. package/examples/js/geometries/TeapotGeometry.js +54 -50
  51. package/examples/js/geometries/TextGeometry.js +6 -4
  52. package/examples/js/helpers/LightProbeHelper.js +1 -2
  53. package/examples/js/helpers/OctreeHelper.js +22 -20
  54. package/examples/js/helpers/PositionalAudioHelper.js +8 -6
  55. package/examples/js/helpers/RectAreaLightHelper.js +6 -7
  56. package/examples/js/helpers/VertexNormalsHelper.js +15 -13
  57. package/examples/js/helpers/VertexTangentsHelper.js +15 -9
  58. package/examples/js/helpers/ViewHelper.js +31 -16
  59. package/examples/js/interactive/HTMLMesh.js +25 -39
  60. package/examples/js/interactive/InteractiveGroup.js +9 -14
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +2 -8
  63. package/examples/js/libs/ktx-parse.umd.js +1 -0
  64. package/examples/js/libs/meshopt_decoder.js +98 -32
  65. package/examples/js/lights/LightProbeGenerator.js +32 -39
  66. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  67. package/examples/js/lines/LineGeometry.js +3 -5
  68. package/examples/js/lines/LineMaterial.js +4 -11
  69. package/examples/js/lines/LineSegments2.js +40 -89
  70. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  71. package/examples/js/lines/Wireframe.js +2 -7
  72. package/examples/js/lines/WireframeGeometry2.js +3 -1
  73. package/examples/js/loaders/3DMLoader.js +58 -155
  74. package/examples/js/loaders/3MFLoader.js +72 -106
  75. package/examples/js/loaders/AMFLoader.js +0 -25
  76. package/examples/js/loaders/BVHLoader.js +44 -43
  77. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  78. package/examples/js/loaders/ColladaLoader.js +229 -359
  79. package/examples/js/loaders/DDSLoader.js +24 -25
  80. package/examples/js/loaders/DRACOLoader.js +30 -90
  81. package/examples/js/loaders/EXRLoader.js +69 -177
  82. package/examples/js/loaders/FBXLoader.js +294 -441
  83. package/examples/js/loaders/FontLoader.js +9 -31
  84. package/examples/js/loaders/GCodeLoader.js +15 -16
  85. package/examples/js/loaders/GLTFLoader.js +458 -739
  86. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -17
  87. package/examples/js/loaders/KMZLoader.js +3 -7
  88. package/examples/js/loaders/KTXLoader.js +12 -30
  89. package/examples/js/loaders/LDrawLoader.js +309 -355
  90. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  91. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  92. package/examples/js/loaders/LWOLoader.js +59 -124
  93. package/examples/js/loaders/LogLuvLoader.js +27 -77
  94. package/examples/js/loaders/LottieLoader.js +4 -4
  95. package/examples/js/loaders/MD2Loader.js +26 -27
  96. package/examples/js/loaders/MDDLoader.js +6 -10
  97. package/examples/js/loaders/MMDLoader.js +180 -189
  98. package/examples/js/loaders/MTLLoader.js +18 -47
  99. package/examples/js/loaders/NRRDLoader.js +44 -84
  100. package/examples/js/loaders/OBJLoader.js +56 -77
  101. package/examples/js/loaders/PCDLoader.js +92 -42
  102. package/examples/js/loaders/PDBLoader.js +17 -13
  103. package/examples/js/loaders/PLYLoader.js +65 -51
  104. package/examples/js/loaders/PRWMLoader.js +11 -22
  105. package/examples/js/loaders/PVRLoader.js +7 -16
  106. package/examples/js/loaders/RGBELoader.js +36 -61
  107. package/examples/js/loaders/RGBMLoader.js +26 -87
  108. package/examples/js/loaders/STLLoader.js +20 -27
  109. package/examples/js/loaders/SVGLoader.js +365 -236
  110. package/examples/js/loaders/TDSLoader.js +81 -118
  111. package/examples/js/loaders/TGALoader.js +39 -41
  112. package/examples/js/loaders/TIFFLoader.js +30 -0
  113. package/examples/js/loaders/TTFLoader.js +0 -8
  114. package/examples/js/loaders/TiltLoader.js +14 -15
  115. package/examples/js/loaders/VOXLoader.js +8 -16
  116. package/examples/js/loaders/VRMLLoader.js +266 -354
  117. package/examples/js/loaders/VTKLoader.js +102 -119
  118. package/examples/js/loaders/XYZLoader.js +2 -4
  119. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  120. package/examples/js/loaders/lwo/LWO2Parser.js +39 -89
  121. package/examples/js/loaders/lwo/LWO3Parser.js +38 -79
  122. package/examples/js/materials/MeshGouraudMaterial.js +387 -0
  123. package/examples/js/math/Capsule.js +0 -17
  124. package/examples/js/math/ColorConverter.js +3 -53
  125. package/examples/js/math/ConvexHull.js +185 -141
  126. package/examples/js/math/ImprovedNoise.js +1 -1
  127. package/examples/js/math/Lut.js +8 -15
  128. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  129. package/examples/js/math/OBB.js +90 -49
  130. package/examples/js/math/Octree.js +2 -57
  131. package/examples/js/math/SimplexNoise.js +74 -88
  132. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  133. package/examples/js/misc/GPUComputationRenderer.js +47 -14
  134. package/examples/js/misc/Gyroscope.js +5 -9
  135. package/examples/js/misc/MD2Character.js +14 -23
  136. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  137. package/examples/js/misc/MorphAnimMesh.js +0 -6
  138. package/examples/js/misc/MorphBlendMesh.js +3 -30
  139. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  140. package/examples/js/misc/RollerCoaster.js +17 -24
  141. package/examples/js/misc/TubePainter.js +18 -12
  142. package/examples/js/misc/Volume.js +173 -194
  143. package/examples/js/misc/VolumeSlice.js +91 -99
  144. package/examples/js/modifiers/CurveModifier.js +19 -21
  145. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  146. package/examples/js/modifiers/SimplifyModifier.js +57 -60
  147. package/examples/js/modifiers/TessellateModifier.js +2 -9
  148. package/examples/js/objects/GroundProjectedEnv.js +181 -0
  149. package/examples/js/objects/Lensflare.js +47 -38
  150. package/examples/js/objects/LightningStorm.js +10 -13
  151. package/examples/js/objects/MarchingCubes.js +80 -59
  152. package/examples/js/objects/Reflector.js +31 -22
  153. package/examples/js/objects/ReflectorForSSRPass.js +20 -25
  154. package/examples/js/objects/Refractor.js +61 -33
  155. package/examples/js/objects/ShadowMesh.js +6 -3
  156. package/examples/js/objects/Sky.js +2 -7
  157. package/examples/js/objects/Water.js +23 -18
  158. package/examples/js/objects/Water2.js +20 -19
  159. package/examples/js/physics/AmmoPhysics.js +23 -20
  160. package/examples/js/physics/OimoPhysics.js +19 -17
  161. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  162. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  163. package/examples/js/postprocessing/BloomPass.js +38 -17
  164. package/examples/js/postprocessing/BokehPass.js +29 -12
  165. package/examples/js/postprocessing/ClearPass.js +1 -6
  166. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  167. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  168. package/examples/js/postprocessing/EffectComposer.js +25 -32
  169. package/examples/js/postprocessing/FilmPass.js +7 -5
  170. package/examples/js/postprocessing/GlitchPass.js +10 -11
  171. package/examples/js/postprocessing/HalftonePass.js +9 -9
  172. package/examples/js/postprocessing/LUTPass.js +2 -15
  173. package/examples/js/postprocessing/MaskPass.js +20 -17
  174. package/examples/js/postprocessing/OutlinePass.js +49 -38
  175. package/examples/js/postprocessing/Pass.js +11 -14
  176. package/examples/js/postprocessing/RenderPass.js +3 -7
  177. package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
  178. package/examples/js/postprocessing/SAOPass.js +40 -32
  179. package/examples/js/postprocessing/SMAAPass.js +34 -17
  180. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  181. package/examples/js/postprocessing/SSAOPass.js +56 -42
  182. package/examples/js/postprocessing/SSRPass.js +78 -61
  183. package/examples/js/postprocessing/SavePass.js +14 -6
  184. package/examples/js/postprocessing/ShaderPass.js +9 -8
  185. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  186. package/examples/js/postprocessing/TexturePass.js +7 -4
  187. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  188. package/examples/js/renderers/CSS2DRenderer.js +4 -23
  189. package/examples/js/renderers/CSS3DRenderer.js +5 -26
  190. package/examples/js/renderers/Projector.js +31 -108
  191. package/examples/js/renderers/SVGRenderer.js +4 -50
  192. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  193. package/examples/js/shaders/AfterimageShader.js +3 -6
  194. package/examples/js/shaders/BasicShader.js +3 -6
  195. package/examples/js/shaders/BleachBypassShader.js +3 -6
  196. package/examples/js/shaders/BlendShader.js +3 -6
  197. package/examples/js/shaders/BokehShader.js +3 -6
  198. package/examples/js/shaders/BokehShader2.js +4 -13
  199. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  200. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  201. package/examples/js/shaders/ColorifyShader.js +2 -6
  202. package/examples/js/shaders/ConvolutionShader.js +5 -10
  203. package/examples/js/shaders/CopyShader.js +3 -6
  204. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  205. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  206. package/examples/js/shaders/DigitalGlitch.js +3 -6
  207. package/examples/js/shaders/DotScreenShader.js +2 -6
  208. package/examples/js/shaders/FXAAShader.js +1 -3
  209. package/examples/js/shaders/FilmShader.js +3 -6
  210. package/examples/js/shaders/FocusShader.js +3 -6
  211. package/examples/js/shaders/FreiChenShader.js +2 -6
  212. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  213. package/examples/js/shaders/GodRaysShader.js +11 -24
  214. package/examples/js/shaders/HalftoneShader.js +3 -6
  215. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  216. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  217. package/examples/js/shaders/HueSaturationShader.js +3 -6
  218. package/examples/js/shaders/KaleidoShader.js +3 -6
  219. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  220. package/examples/js/shaders/LuminosityShader.js +4 -7
  221. package/examples/js/shaders/MMDToonShader.js +2 -4
  222. package/examples/js/shaders/MirrorShader.js +3 -6
  223. package/examples/js/shaders/NormalMapShader.js +2 -6
  224. package/examples/js/shaders/RGBShiftShader.js +3 -6
  225. package/examples/js/shaders/SAOShader.js +2 -6
  226. package/examples/js/shaders/SMAAShader.js +6 -18
  227. package/examples/js/shaders/SSAOShader.js +2 -6
  228. package/examples/js/shaders/SSRShader.js +6 -18
  229. package/examples/js/shaders/SepiaShader.js +3 -6
  230. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  231. package/examples/js/shaders/TechnicolorShader.js +3 -6
  232. package/examples/js/shaders/ToneMapShader.js +4 -7
  233. package/examples/js/shaders/ToonShader.js +8 -24
  234. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  235. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  236. package/examples/js/shaders/VelocityShader.js +126 -0
  237. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  238. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  239. package/examples/js/shaders/VignetteShader.js +3 -6
  240. package/examples/js/shaders/VolumeShader.js +2 -6
  241. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  242. package/examples/js/textures/FlakesTexture.js +0 -1
  243. package/examples/js/utils/BufferGeometryUtils.js +237 -171
  244. package/examples/js/utils/CameraUtils.js +5 -20
  245. package/examples/js/utils/GPUStatsPanel.js +3 -12
  246. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  247. package/examples/js/utils/GeometryUtils.js +15 -36
  248. package/examples/js/utils/LDrawUtils.js +8 -11
  249. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  250. package/examples/js/utils/SceneUtils.js +109 -14
  251. package/examples/js/utils/ShadowMapViewer.js +17 -14
  252. package/examples/js/utils/SkeletonUtils.js +13 -27
  253. package/examples/js/utils/UVsDebug.js +20 -12
  254. package/examples/js/utils/WorkerPool.js +1 -11
  255. package/examples/jsm/animation/CCDIKSolver.js +27 -3
  256. package/examples/jsm/animation/MMDPhysics.js +28 -22
  257. package/examples/jsm/capabilities/WebGPU.js +3 -1
  258. package/examples/jsm/controls/ArcballControls.js +17 -2
  259. package/examples/jsm/controls/FirstPersonControls.js +20 -27
  260. package/examples/jsm/controls/FlyControls.js +16 -24
  261. package/examples/jsm/controls/OrbitControls.js +44 -9
  262. package/examples/jsm/controls/PointerLockControls.js +0 -7
  263. package/examples/jsm/controls/TrackballControls.js +14 -5
  264. package/examples/jsm/controls/TransformControls.js +18 -16
  265. package/examples/jsm/csm/CSM.js +1 -0
  266. package/examples/jsm/csm/CSMHelper.js +30 -0
  267. package/examples/jsm/effects/AnaglyphEffect.js +2 -2
  268. package/examples/jsm/effects/OutlineEffect.js +4 -25
  269. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
  270. package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
  271. package/examples/jsm/effects/StereoEffect.js +2 -2
  272. package/examples/jsm/environments/RoomEnvironment.js +23 -0
  273. package/examples/jsm/exporters/ColladaExporter.js +4 -13
  274. package/examples/jsm/exporters/DRACOExporter.js +0 -13
  275. package/examples/jsm/exporters/GLTFExporter.js +29 -110
  276. package/examples/jsm/exporters/KTX2Exporter.js +29 -29
  277. package/examples/jsm/exporters/OBJExporter.js +0 -18
  278. package/examples/jsm/exporters/PLYExporter.js +14 -22
  279. package/examples/jsm/exporters/STLExporter.js +1 -9
  280. package/examples/jsm/exporters/USDZExporter.js +107 -4
  281. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  282. package/examples/jsm/geometries/ParametricGeometry.js +0 -6
  283. package/examples/jsm/helpers/OctreeHelper.js +22 -8
  284. package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
  285. package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
  286. package/examples/jsm/helpers/ViewHelper.js +24 -0
  287. package/examples/jsm/interactive/HTMLMesh.js +14 -15
  288. package/examples/jsm/interactive/InteractiveGroup.js +4 -2
  289. package/examples/jsm/interactive/SelectionHelper.js +5 -3
  290. package/examples/jsm/libs/flow.module.js +610 -160
  291. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  292. package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
  293. package/examples/jsm/libs/utif.module.js +1579 -0
  294. package/examples/jsm/libs/zstddec.module.js +1 -0
  295. package/examples/jsm/lines/LineSegments2.js +4 -0
  296. package/examples/jsm/loaders/3DMLoader.js +1 -2
  297. package/examples/jsm/loaders/ColladaLoader.js +29 -0
  298. package/examples/jsm/loaders/DRACOLoader.js +2 -28
  299. package/examples/jsm/loaders/EXRLoader.js +3 -13
  300. package/examples/jsm/loaders/FBXLoader.js +26 -3
  301. package/examples/jsm/loaders/FontLoader.js +3 -16
  302. package/examples/jsm/loaders/GLTFLoader.js +321 -464
  303. package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
  304. package/examples/jsm/loaders/KTX2Loader.js +254 -53
  305. package/examples/jsm/loaders/LDrawLoader.js +149 -87
  306. package/examples/jsm/loaders/LottieLoader.js +4 -2
  307. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  308. package/examples/jsm/loaders/OBJLoader.js +6 -14
  309. package/examples/jsm/loaders/PCDLoader.js +60 -14
  310. package/examples/jsm/loaders/PLYLoader.js +71 -19
  311. package/examples/jsm/loaders/RGBELoader.js +1 -1
  312. package/examples/jsm/loaders/SVGLoader.js +231 -17
  313. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  314. package/examples/jsm/loaders/USDZLoader.js +633 -0
  315. package/examples/jsm/loaders/VRMLLoader.js +36 -26
  316. package/examples/jsm/loaders/VTKLoader.js +1 -1
  317. package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
  318. package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
  319. package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
  320. package/examples/jsm/math/ColorConverter.js +1 -49
  321. package/examples/jsm/math/ConvexHull.js +4 -4
  322. package/examples/jsm/math/Octree.js +1 -1
  323. package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
  324. package/examples/jsm/misc/Volume.js +169 -171
  325. package/examples/jsm/misc/VolumeSlice.js +78 -80
  326. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  327. package/examples/jsm/node-editor/NodeEditor.js +91 -12
  328. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
  329. package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
  330. package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
  331. package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
  332. package/examples/jsm/node-editor/core/BaseNode.js +10 -3
  333. package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
  334. package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
  335. package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
  336. package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
  337. package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
  338. package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
  339. package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
  340. package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
  341. package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
  342. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +7 -10
  343. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
  344. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +7 -10
  345. package/examples/jsm/node-editor/math/AngleEditor.js +4 -4
  346. package/examples/jsm/node-editor/math/DotEditor.js +1 -1
  347. package/examples/jsm/node-editor/math/InvertEditor.js +3 -3
  348. package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
  349. package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
  350. package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
  351. package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
  352. package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
  353. package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
  354. package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
  355. package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
  356. package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
  357. package/examples/jsm/node-editor/utils/PreviewEditor.js +7 -3
  358. package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
  359. package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
  360. package/examples/jsm/nodes/Nodes.js +70 -13
  361. package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
  362. package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
  363. package/examples/jsm/nodes/accessors/NormalNode.js +8 -8
  364. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  365. package/examples/jsm/nodes/accessors/PositionNode.js +11 -5
  366. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  367. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
  368. package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
  369. package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
  370. package/examples/jsm/nodes/core/AttributeNode.js +32 -9
  371. package/examples/jsm/nodes/core/CodeNode.js +3 -3
  372. package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
  373. package/examples/jsm/nodes/core/FunctionNode.js +2 -2
  374. package/examples/jsm/nodes/core/Node.js +15 -13
  375. package/examples/jsm/nodes/core/NodeBuilder.js +67 -18
  376. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  377. package/examples/jsm/nodes/core/NodeUtils.js +23 -1
  378. package/examples/jsm/nodes/core/NodeVarying.js +17 -0
  379. package/examples/jsm/nodes/core/VaryingNode.js +56 -0
  380. package/examples/jsm/nodes/core/constants.js +13 -13
  381. package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
  382. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +84 -0
  383. package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
  384. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  385. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  386. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
  387. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
  388. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
  389. package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
  390. package/examples/jsm/nodes/gpgpu/ComputeNode.js +3 -1
  391. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  392. package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
  393. package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
  394. package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
  395. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +33 -0
  396. package/examples/jsm/nodes/materials/Materials.js +21 -31
  397. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
  398. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
  399. package/examples/jsm/nodes/materials/NodeMaterial.js +11 -3
  400. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
  401. package/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -0
  402. package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
  403. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +56 -0
  404. package/examples/jsm/nodes/materialx/lib/mx_noise.js +617 -0
  405. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  406. package/examples/jsm/nodes/math/MathNode.js +7 -17
  407. package/examples/jsm/nodes/math/OperatorNode.js +16 -3
  408. package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
  409. package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
  410. package/examples/jsm/nodes/shadernode/ShaderNode.js +40 -25
  411. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +95 -68
  412. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +49 -6
  413. package/examples/jsm/nodes/utils/ConvertNode.js +18 -12
  414. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  415. package/examples/jsm/nodes/utils/JoinNode.js +15 -9
  416. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  417. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +3 -2
  418. package/examples/jsm/nodes/utils/OscNode.js +2 -2
  419. package/examples/jsm/nodes/utils/RemapNode.js +34 -0
  420. package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
  421. package/examples/jsm/nodes/utils/SplitNode.js +21 -5
  422. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  423. package/examples/jsm/nodes/utils/TimerNode.js +23 -3
  424. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  425. package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
  426. package/examples/jsm/objects/Reflector.js +12 -5
  427. package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
  428. package/examples/jsm/objects/Refractor.js +12 -6
  429. package/examples/jsm/objects/ShadowMesh.js +8 -2
  430. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  431. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  432. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  433. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  434. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  435. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  436. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  437. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  438. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  439. package/examples/jsm/postprocessing/OutlinePass.js +25 -3
  440. package/examples/jsm/postprocessing/Pass.js +2 -0
  441. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  442. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  443. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  444. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  445. package/examples/jsm/postprocessing/SavePass.js +17 -1
  446. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  447. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  448. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  449. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  450. package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
  451. package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
  452. package/examples/jsm/renderers/Projector.js +2 -24
  453. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
  454. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +363 -231
  455. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
  456. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  457. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  458. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +68 -3
  459. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
  460. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
  461. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  462. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
  463. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
  464. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
  465. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +113 -93
  466. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
  467. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
  468. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
  469. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +63 -36
  470. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  471. package/examples/jsm/shaders/LuminosityShader.js +1 -1
  472. package/examples/jsm/shaders/MMDToonShader.js +2 -4
  473. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  474. package/examples/jsm/shaders/VelocityShader.js +128 -0
  475. package/examples/jsm/utils/BufferGeometryUtils.js +176 -43
  476. package/examples/jsm/utils/GeometryUtils.js +17 -25
  477. package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
  478. package/examples/jsm/utils/SceneUtils.js +117 -12
  479. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  480. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
  481. package/examples/jsm/webxr/VRButton.js +1 -7
  482. package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
  483. package/package.json +22 -18
  484. package/src/Three.Legacy.js +262 -36
  485. package/src/Three.js +4 -2
  486. package/src/animation/AnimationAction.js +6 -5
  487. package/src/animation/AnimationClip.js +1 -1
  488. package/src/animation/AnimationMixer.js +1 -1
  489. package/src/animation/AnimationUtils.js +204 -199
  490. package/src/animation/KeyframeTrack.js +1 -1
  491. package/src/animation/PropertyBinding.js +31 -5
  492. package/src/audio/AudioContext.js +5 -5
  493. package/src/cameras/CubeCamera.js +14 -21
  494. package/src/constants.js +2 -4
  495. package/src/core/BufferAttribute.js +81 -111
  496. package/src/core/BufferGeometry.js +3 -41
  497. package/src/core/InstancedBufferAttribute.js +0 -10
  498. package/src/core/InstancedBufferGeometry.js +1 -7
  499. package/src/core/InterleavedBuffer.js +1 -1
  500. package/src/core/InterleavedBufferAttribute.js +57 -8
  501. package/src/core/Object3D.js +22 -5
  502. package/src/core/Uniform.js +0 -7
  503. package/src/core/UniformsGroup.js +92 -0
  504. package/src/extras/DataUtils.js +104 -88
  505. package/src/extras/Earcut.js +67 -67
  506. package/src/extras/core/Path.js +1 -0
  507. package/src/extras/core/ShapePath.js +1 -4
  508. package/src/extras/curves/CatmullRomCurve3.js +4 -2
  509. package/src/geometries/BoxGeometry.js +1 -1
  510. package/src/geometries/CapsuleGeometry.js +1 -1
  511. package/src/geometries/CircleGeometry.js +1 -1
  512. package/src/geometries/ConeGeometry.js +1 -1
  513. package/src/geometries/CylinderGeometry.js +2 -1
  514. package/src/geometries/DodecahedronGeometry.js +1 -1
  515. package/src/geometries/EdgesGeometry.js +5 -4
  516. package/src/geometries/ExtrudeGeometry.js +2 -11
  517. package/src/geometries/IcosahedronGeometry.js +1 -1
  518. package/src/geometries/LatheGeometry.js +2 -2
  519. package/src/geometries/OctahedronGeometry.js +1 -1
  520. package/src/geometries/PlaneGeometry.js +2 -1
  521. package/src/geometries/PolyhedronGeometry.js +2 -2
  522. package/src/geometries/RingGeometry.js +1 -1
  523. package/src/geometries/ShapeGeometry.js +3 -2
  524. package/src/geometries/SphereGeometry.js +2 -1
  525. package/src/geometries/TetrahedronGeometry.js +1 -1
  526. package/src/geometries/TorusGeometry.js +2 -1
  527. package/src/geometries/TorusKnotGeometry.js +2 -1
  528. package/src/geometries/TubeGeometry.js +2 -1
  529. package/src/geometries/WireframeGeometry.js +1 -0
  530. package/src/helpers/ArrowHelper.js +9 -0
  531. package/src/helpers/Box3Helper.js +7 -0
  532. package/src/helpers/BoxHelper.js +7 -1
  533. package/src/helpers/CameraHelper.js +97 -38
  534. package/src/helpers/DirectionalLightHelper.js +6 -1
  535. package/src/helpers/GridHelper.js +7 -0
  536. package/src/helpers/HemisphereLightHelper.js +5 -1
  537. package/src/helpers/PlaneHelper.js +15 -9
  538. package/src/helpers/PointLightHelper.js +2 -1
  539. package/src/helpers/PolarGridHelper.js +25 -14
  540. package/src/helpers/SkeletonHelper.js +7 -0
  541. package/src/helpers/SpotLightHelper.js +5 -2
  542. package/src/lights/LightShadow.js +1 -2
  543. package/src/lights/PointLight.js +2 -2
  544. package/src/lights/SpotLight.js +4 -2
  545. package/src/loaders/FileLoader.js +16 -2
  546. package/src/loaders/LoadingManager.js +1 -1
  547. package/src/loaders/MaterialLoader.js +49 -7
  548. package/src/loaders/ObjectLoader.js +9 -42
  549. package/src/materials/Material.js +2 -34
  550. package/src/materials/Materials.js +0 -27
  551. package/src/materials/MeshLambertMaterial.js +28 -1
  552. package/src/materials/MeshPhysicalMaterial.js +1 -1
  553. package/src/materials/ShaderMaterial.js +3 -7
  554. package/src/math/Color.js +8 -18
  555. package/src/math/MathUtils.js +1 -7
  556. package/src/math/Matrix3.js +54 -25
  557. package/src/math/Matrix4.js +3 -27
  558. package/src/math/Quaternion.js +1 -21
  559. package/src/math/Ray.js +2 -5
  560. package/src/math/Sphere.js +36 -21
  561. package/src/math/Vector2.js +4 -24
  562. package/src/math/Vector3.js +7 -46
  563. package/src/math/Vector4.js +4 -24
  564. package/src/objects/InstancedMesh.js +7 -0
  565. package/src/objects/LOD.js +25 -6
  566. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  567. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  568. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  569. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  570. package/src/renderers/WebGLRenderTarget.js +1 -1
  571. package/src/renderers/WebGLRenderer.js +119 -69
  572. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
  573. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
  574. package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
  575. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
  576. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  577. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
  578. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
  579. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
  580. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
  581. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -13
  582. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  583. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
  584. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  585. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
  586. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
  587. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  588. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
  589. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
  590. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
  591. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  592. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
  593. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
  594. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
  595. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  596. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
  597. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
  598. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
  599. package/src/renderers/shaders/ShaderChunk.js +7 -2
  600. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  601. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  602. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  603. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
  604. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
  605. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
  606. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
  607. package/src/renderers/shaders/ShaderLib.js +50 -36
  608. package/src/renderers/shaders/UniformsLib.js +13 -12
  609. package/src/renderers/shaders/UniformsUtils.js +29 -0
  610. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  611. package/src/renderers/webgl/WebGLBackground.js +17 -9
  612. package/src/renderers/webgl/WebGLLights.js +37 -17
  613. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  614. package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
  615. package/src/renderers/webgl/WebGLProgram.js +6 -11
  616. package/src/renderers/webgl/WebGLPrograms.js +30 -26
  617. package/src/renderers/webgl/WebGLRenderLists.js +5 -4
  618. package/src/renderers/webgl/WebGLRenderStates.js +5 -4
  619. package/src/renderers/webgl/WebGLShaderCache.js +9 -6
  620. package/src/renderers/webgl/WebGLShadowMap.js +13 -16
  621. package/src/renderers/webgl/WebGLState.js +125 -41
  622. package/src/renderers/webgl/WebGLTextures.js +94 -39
  623. package/src/renderers/webgl/WebGLUniforms.js +156 -28
  624. package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
  625. package/src/renderers/webgl/WebGLUtils.js +3 -1
  626. package/src/renderers/webvr/WebVRManager.js +42 -9
  627. package/src/renderers/webvr/WebVRUtils.js +1 -1
  628. package/src/renderers/webxr/WebXRController.js +91 -50
  629. package/src/renderers/webxr/WebXRManager.js +127 -34
  630. package/src/scenes/Scene.js +24 -3
  631. package/src/textures/CompressedArrayTexture.js +18 -0
  632. package/src/textures/Source.js +1 -1
  633. package/src/textures/Texture.js +2 -1
  634. package/src/utils.js +1 -1
  635. package/examples/js/controls/experimental/CameraControls.js +0 -1048
  636. package/examples/js/libs/lottie_canvas.js +0 -12751
  637. package/examples/js/loaders/KTX2Loader.js +0 -558
  638. package/examples/js/shaders/PixelShader.js +0 -51
  639. package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
  640. package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
  641. package/examples/jsm/nodes/core/NodeVary.js +0 -14
  642. package/examples/jsm/nodes/core/VaryNode.js +0 -54
  643. package/examples/jsm/package.json +0 -3
  644. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
  645. package/examples/jsm/shaders/PixelShader.js +0 -44
  646. package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
@@ -24,19 +24,28 @@
24
24
  * diffuse_blue: 'blue'
25
25
  * } );
26
26
  *
27
+ * Custom properties outside of the defaults for position, uv, normal
28
+ * and color attributes can be added using the setCustomPropertyMapping method.
29
+ * For example, the following maps the element properties “custom_property_a”
30
+ * and “custom_property_b” to an attribute “customAttribute” with an item size of 2.
31
+ * Attribute item sizes are set from the number of element properties in the property array.
32
+ *
33
+ * loader.setCustomPropertyMapping( {
34
+ * customAttribute: ['custom_property_a', 'custom_property_b'],
35
+ * } );
36
+ *
27
37
  */
28
38
 
29
39
  const _color = new THREE.Color();
30
-
31
40
  class PLYLoader extends THREE.Loader {
32
41
 
33
42
  constructor( manager ) {
34
43
 
35
44
  super( manager );
36
45
  this.propertyNameMapping = {};
46
+ this.customPropertyMapping = {};
37
47
 
38
48
  }
39
-
40
49
  load( url, onLoad, onProgress, onError ) {
41
50
 
42
51
  const scope = this;
@@ -70,22 +79,24 @@
70
79
  }, onProgress, onError );
71
80
 
72
81
  }
73
-
74
82
  setPropertyNameMapping( mapping ) {
75
83
 
76
84
  this.propertyNameMapping = mapping;
77
85
 
78
86
  }
87
+ setCustomPropertyNameMapping( mapping ) {
88
+
89
+ this.customPropertyMapping = mapping;
79
90
 
91
+ }
80
92
  parse( data ) {
81
93
 
82
94
  function parseHeader( data ) {
83
95
 
84
- const patternHeader = /^ply([\s\S]*)end_header\r?\n/;
96
+ const patternHeader = /^ply([\s\S]*)end_header(\r\n|\r|\n)/;
85
97
  let headerText = '';
86
98
  let headerLength = 0;
87
99
  const result = patternHeader.exec( data );
88
-
89
100
  if ( result !== null ) {
90
101
 
91
102
  headerText = result[ 1 ];
@@ -99,15 +110,13 @@
99
110
  headerLength: headerLength,
100
111
  objInfo: ''
101
112
  };
102
- const lines = headerText.split( '\n' );
113
+ const lines = headerText.split( /\r\n|\r|\n/ );
103
114
  let currentElement;
104
-
105
115
  function make_ply_element_property( propertValues, propertyNameMapping ) {
106
116
 
107
117
  const property = {
108
118
  type: propertValues[ 0 ]
109
119
  };
110
-
111
120
  if ( property.type === 'list' ) {
112
121
 
113
122
  property.name = propertValues[ 3 ];
@@ -138,18 +147,15 @@
138
147
  const lineValues = line.split( /\s+/ );
139
148
  const lineType = lineValues.shift();
140
149
  line = lineValues.join( ' ' );
141
-
142
150
  switch ( lineType ) {
143
151
 
144
152
  case 'format':
145
153
  header.format = lineValues[ 0 ];
146
154
  header.version = lineValues[ 1 ];
147
155
  break;
148
-
149
156
  case 'comment':
150
157
  header.comments.push( line );
151
158
  break;
152
-
153
159
  case 'element':
154
160
  if ( currentElement !== undefined ) {
155
161
 
@@ -162,15 +168,12 @@
162
168
  currentElement.count = parseInt( lineValues[ 1 ] );
163
169
  currentElement.properties = [];
164
170
  break;
165
-
166
171
  case 'property':
167
172
  currentElement.properties.push( make_ply_element_property( lineValues, scope.propertyNameMapping ) );
168
173
  break;
169
-
170
174
  case 'obj_info':
171
175
  header.objInfo = line;
172
176
  break;
173
-
174
177
  default:
175
178
  console.log( 'unhandled', lineType, lineValues );
176
179
 
@@ -205,7 +208,6 @@
205
208
  case 'int32':
206
209
  case 'uint32':
207
210
  return parseInt( n );
208
-
209
211
  case 'float':
210
212
  case 'double':
211
213
  case 'float32':
@@ -220,14 +222,12 @@
220
222
 
221
223
  const values = line.split( /\s+/ );
222
224
  const element = {};
223
-
224
225
  for ( let i = 0; i < properties.length; i ++ ) {
225
226
 
226
227
  if ( properties[ i ].type === 'list' ) {
227
228
 
228
229
  const list = [];
229
230
  const n = parseASCIINumber( values.shift(), properties[ i ].countType );
230
-
231
231
  for ( let j = 0; j < n; j ++ ) {
232
232
 
233
233
  list.push( parseASCIINumber( values.shift(), properties[ i ].itemType ) );
@@ -248,9 +248,8 @@
248
248
 
249
249
  }
250
250
 
251
- function parseASCII( data, header ) {
251
+ function createBuffer() {
252
252
 
253
- // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)
254
253
  const buffer = {
255
254
  indices: [],
256
255
  vertices: [],
@@ -259,25 +258,37 @@
259
258
  faceVertexUvs: [],
260
259
  colors: []
261
260
  };
261
+ for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
262
+
263
+ buffer[ customProperty ] = [];
264
+
265
+ }
266
+
267
+ return buffer;
268
+
269
+ }
270
+
271
+ function parseASCII( data, header ) {
272
+
273
+ // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)
274
+
275
+ const buffer = createBuffer();
262
276
  let result;
263
277
  const patternBody = /end_header\s([\s\S]*)$/;
264
278
  let body = '';
265
-
266
279
  if ( ( result = patternBody.exec( data ) ) !== null ) {
267
280
 
268
281
  body = result[ 1 ];
269
282
 
270
283
  }
271
284
 
272
- const lines = body.split( '\n' );
285
+ const lines = body.split( /\r\n|\r|\n/ );
273
286
  let currentElement = 0;
274
287
  let currentElementCount = 0;
275
-
276
288
  for ( let i = 0; i < lines.length; i ++ ) {
277
289
 
278
290
  let line = lines[ i ];
279
291
  line = line.trim();
280
-
281
292
  if ( line === '' ) {
282
293
 
283
294
  continue;
@@ -303,7 +314,9 @@
303
314
 
304
315
  function postProcess( buffer ) {
305
316
 
306
- let geometry = new THREE.BufferGeometry(); // mandatory buffer data
317
+ let geometry = new THREE.BufferGeometry();
318
+
319
+ // mandatory buffer data
307
320
 
308
321
  if ( buffer.indices.length > 0 ) {
309
322
 
@@ -311,7 +324,9 @@
311
324
 
312
325
  }
313
326
 
314
- geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( buffer.vertices, 3 ) ); // optional buffer data
327
+ geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( buffer.vertices, 3 ) );
328
+
329
+ // optional buffer data
315
330
 
316
331
  if ( buffer.normals.length > 0 ) {
317
332
 
@@ -338,6 +353,18 @@
338
353
 
339
354
  }
340
355
 
356
+ // custom buffer data
357
+
358
+ for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
359
+
360
+ if ( buffer[ customProperty ].length > 0 ) {
361
+
362
+ geometry.setAttribute( customProperty, new THREE.Float32BufferAttribute( buffer[ customProperty ], scope.customPropertyMapping[ customProperty ].length ) );
363
+
364
+ }
365
+
366
+ }
367
+
341
368
  geometry.computeBoundingSphere();
342
369
  return geometry;
343
370
 
@@ -369,11 +396,9 @@
369
396
  const attrR = findAttrName( [ 'red', 'diffuse_red', 'r', 'diffuse_r' ] );
370
397
  const attrG = findAttrName( [ 'green', 'diffuse_green', 'g', 'diffuse_g' ] );
371
398
  const attrB = findAttrName( [ 'blue', 'diffuse_blue', 'b', 'diffuse_b' ] );
372
-
373
399
  if ( elementName === 'vertex' ) {
374
400
 
375
401
  buffer.vertices.push( element[ attrX ], element[ attrY ], element[ attrZ ] );
376
-
377
402
  if ( attrNX !== null && attrNY !== null && attrNZ !== null ) {
378
403
 
379
404
  buffer.normals.push( element[ attrNX ], element[ attrNY ], element[ attrNZ ] );
@@ -389,21 +414,27 @@
389
414
  if ( attrR !== null && attrG !== null && attrB !== null ) {
390
415
 
391
416
  _color.setRGB( element[ attrR ] / 255.0, element[ attrG ] / 255.0, element[ attrB ] / 255.0 ).convertSRGBToLinear();
392
-
393
417
  buffer.colors.push( _color.r, _color.g, _color.b );
394
418
 
395
419
  }
396
420
 
421
+ for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
422
+
423
+ for ( const elementProperty of scope.customPropertyMapping[ customProperty ] ) {
424
+
425
+ buffer[ customProperty ].push( element[ elementProperty ] );
426
+
427
+ }
428
+
429
+ }
430
+
397
431
  } else if ( elementName === 'face' ) {
398
432
 
399
433
  const vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338
400
-
401
434
  const texcoord = element.texcoord;
402
-
403
435
  if ( vertex_indices.length === 3 ) {
404
436
 
405
437
  buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 2 ] );
406
-
407
438
  if ( texcoord && texcoord.length === 6 ) {
408
439
 
409
440
  buffer.faceVertexUvs.push( texcoord[ 0 ], texcoord[ 1 ] );
@@ -431,31 +462,24 @@
431
462
  case 'int8':
432
463
  case 'char':
433
464
  return [ dataview.getInt8( at ), 1 ];
434
-
435
465
  case 'uint8':
436
466
  case 'uchar':
437
467
  return [ dataview.getUint8( at ), 1 ];
438
-
439
468
  case 'int16':
440
469
  case 'short':
441
470
  return [ dataview.getInt16( at, little_endian ), 2 ];
442
-
443
471
  case 'uint16':
444
472
  case 'ushort':
445
473
  return [ dataview.getUint16( at, little_endian ), 2 ];
446
-
447
474
  case 'int32':
448
475
  case 'int':
449
476
  return [ dataview.getInt32( at, little_endian ), 4 ];
450
-
451
477
  case 'uint32':
452
478
  case 'uint':
453
479
  return [ dataview.getUint32( at, little_endian ), 4 ];
454
-
455
480
  case 'float32':
456
481
  case 'float':
457
482
  return [ dataview.getFloat32( at, little_endian ), 4 ];
458
-
459
483
  case 'float64':
460
484
  case 'double':
461
485
  return [ dataview.getFloat64( at, little_endian ), 8 ];
@@ -469,7 +493,6 @@
469
493
  const element = {};
470
494
  let result,
471
495
  read = 0;
472
-
473
496
  for ( let i = 0; i < properties.length; i ++ ) {
474
497
 
475
498
  if ( properties[ i ].type === 'list' ) {
@@ -478,7 +501,6 @@
478
501
  result = binaryRead( dataview, at + read, properties[ i ].countType, little_endian );
479
502
  const n = result[ 0 ];
480
503
  read += result[ 1 ];
481
-
482
504
  for ( let j = 0; j < n; j ++ ) {
483
505
 
484
506
  result = binaryRead( dataview, at + read, properties[ i ].itemType, little_endian );
@@ -505,19 +527,11 @@
505
527
 
506
528
  function parseBinary( data, header ) {
507
529
 
508
- const buffer = {
509
- indices: [],
510
- vertices: [],
511
- normals: [],
512
- uvs: [],
513
- faceVertexUvs: [],
514
- colors: []
515
- };
530
+ const buffer = createBuffer();
516
531
  const little_endian = header.format === 'binary_little_endian';
517
532
  const body = new DataView( data, header.headerLength );
518
533
  let result,
519
534
  loc = 0;
520
-
521
535
  for ( let currentElement = 0; currentElement < header.elements.length; currentElement ++ ) {
522
536
 
523
537
  for ( let currentElementCount = 0; currentElementCount < header.elements[ currentElement ].count; currentElementCount ++ ) {
@@ -533,12 +547,12 @@
533
547
 
534
548
  return postProcess( buffer );
535
549
 
536
- } //
550
+ }
537
551
 
552
+ //
538
553
 
539
554
  let geometry;
540
555
  const scope = this;
541
-
542
556
  if ( data instanceof ArrayBuffer ) {
543
557
 
544
558
  const text = THREE.LoaderUtils.decodeText( new Uint8Array( data ) );
@@ -5,11 +5,11 @@
5
5
  */
6
6
 
7
7
  let bigEndianPlatform = null;
8
+
8
9
  /**
9
10
  * Check if the endianness of the platform is big-endian (most significant bit first)
10
11
  * @returns {boolean} True if big-endian, false if little-endian
11
12
  */
12
-
13
13
  function isBigEndianPlatform() {
14
14
 
15
15
  if ( bigEndianPlatform === null ) {
@@ -18,20 +18,19 @@
18
18
  uint8Array = new Uint8Array( buffer ),
19
19
  uint16Array = new Uint16Array( buffer );
20
20
  uint8Array[ 0 ] = 0xAA; // set first byte
21
-
22
21
  uint8Array[ 1 ] = 0xBB; // set second byte
23
-
24
22
  bigEndianPlatform = uint16Array[ 0 ] === 0xAABB;
25
23
 
26
24
  }
27
25
 
28
26
  return bigEndianPlatform;
29
27
 
30
- } // match the values defined in the spec to the TypedArray types
31
-
28
+ }
32
29
 
33
- const InvertedEncodingTypes = [ null, Float32Array, null, Int8Array, Int16Array, null, Int32Array, Uint8Array, Uint16Array, null, Uint32Array ]; // define the method to use on a DataView, corresponding the TypedArray type
30
+ // match the values defined in the spec to the TypedArray types
31
+ const InvertedEncodingTypes = [ null, Float32Array, null, Int8Array, Int16Array, null, Int32Array, Uint8Array, Uint16Array, null, Uint32Array ];
34
32
 
33
+ // define the method to use on a DataView, corresponding the TypedArray type
35
34
  const getMethods = {
36
35
  Uint16Array: 'getUint16',
37
36
  Uint32Array: 'getUint32',
@@ -40,12 +39,10 @@
40
39
  Float32Array: 'getFloat32',
41
40
  Float64Array: 'getFloat64'
42
41
  };
43
-
44
42
  function copyFromBuffer( sourceArrayBuffer, viewType, position, length, fromBigEndian ) {
45
43
 
46
44
  const bytesPerElement = viewType.BYTES_PER_ELEMENT;
47
45
  let result;
48
-
49
46
  if ( fromBigEndian === isBigEndianPlatform() || bytesPerElement === 1 ) {
50
47
 
51
48
  result = new viewType( sourceArrayBuffer, position, length );
@@ -56,7 +53,6 @@
56
53
  getMethod = getMethods[ viewType.name ],
57
54
  littleEndian = ! fromBigEndian;
58
55
  result = new viewType( length );
59
-
60
56
  for ( let i = 0; i < length; i ++ ) {
61
57
 
62
58
  result[ i ] = readView[ getMethod ]( i * bytesPerElement, littleEndian );
@@ -80,7 +76,6 @@
80
76
  attributesNumber = flags & 0x1F;
81
77
  let valuesNumber = 0,
82
78
  indicesNumber = 0;
83
-
84
79
  if ( bigEndian ) {
85
80
 
86
81
  valuesNumber = ( array[ 2 ] << 16 ) + ( array[ 3 ] << 8 ) + array[ 4 ];
@@ -92,8 +87,8 @@
92
87
  indicesNumber = array[ 5 ] + ( array[ 6 ] << 8 ) + ( array[ 7 ] << 16 );
93
88
 
94
89
  }
95
- /** PRELIMINARY CHECKS **/
96
90
 
91
+ /** PRELIMINARY CHECKS **/
97
92
 
98
93
  if ( version === 0 ) {
99
94
 
@@ -118,21 +113,18 @@
118
113
  }
119
114
 
120
115
  }
121
- /** PARSING **/
122
116
 
117
+ /** PARSING **/
123
118
 
124
119
  let pos = 8;
125
120
  const attributes = {};
126
-
127
121
  for ( let i = 0; i < attributesNumber; i ++ ) {
128
122
 
129
123
  let attributeName = '';
130
-
131
124
  while ( pos < array.length ) {
132
125
 
133
126
  const char = array[ pos ];
134
127
  pos ++;
135
-
136
128
  if ( char === 0 ) {
137
129
 
138
130
  break;
@@ -150,8 +142,9 @@
150
142
  const cardinality = ( flags >> 4 & 0x03 ) + 1;
151
143
  const encodingType = flags & 0x0F;
152
144
  const arrayType = InvertedEncodingTypes[ encodingType ];
153
- pos ++; // padding to next multiple of 4
145
+ pos ++;
154
146
 
147
+ // padding to next multiple of 4
155
148
  pos = Math.ceil( pos / 4 ) * 4;
156
149
  const values = copyFromBuffer( buffer, arrayType, pos, cardinality * valuesNumber, bigEndian );
157
150
  pos += arrayType.BYTES_PER_ELEMENT * cardinality * valuesNumber;
@@ -165,7 +158,6 @@
165
158
 
166
159
  pos = Math.ceil( pos / 4 ) * 4;
167
160
  let indices = null;
168
-
169
161
  if ( indexedGeometry ) {
170
162
 
171
163
  indices = copyFromBuffer( buffer, indicesType === 1 ? Uint32Array : Uint16Array, pos, indicesNumber, bigEndian );
@@ -178,8 +170,9 @@
178
170
  indices: indices
179
171
  };
180
172
 
181
- } // Define the public interface
173
+ }
182
174
 
175
+ // Define the public interface
183
176
 
184
177
  class PRWMLoader extends THREE.Loader {
185
178
 
@@ -188,7 +181,6 @@
188
181
  super( manager );
189
182
 
190
183
  }
191
-
192
184
  load( url, onLoad, onProgress, onError ) {
193
185
 
194
186
  const scope = this;
@@ -223,13 +215,11 @@
223
215
  }, onProgress, onError );
224
216
 
225
217
  }
226
-
227
218
  parse( arrayBuffer ) {
228
219
 
229
220
  const data = decodePrwm( arrayBuffer ),
230
221
  attributesKey = Object.keys( data.attributes ),
231
222
  bufferGeometry = new THREE.BufferGeometry();
232
-
233
223
  for ( let i = 0; i < attributesKey.length; i ++ ) {
234
224
 
235
225
  const attribute = data.attributes[ attributesKey[ i ] ];
@@ -246,7 +236,6 @@
246
236
  return bufferGeometry;
247
237
 
248
238
  }
249
-
250
239
  static isBigEndianPlatform() {
251
240
 
252
241
  return isBigEndianPlatform();
@@ -13,7 +13,6 @@
13
13
  super( manager );
14
14
 
15
15
  }
16
-
17
16
  parse( buffer, loadMipmaps ) {
18
17
 
19
18
  const headerLengthInt = 13;
@@ -23,15 +22,16 @@
23
22
  header: header,
24
23
  loadMipmaps: loadMipmaps
25
24
  };
26
-
27
25
  if ( header[ 0 ] === 0x03525650 ) {
28
26
 
29
27
  // PVR v3
28
+
30
29
  return _parseV3( pvrDatas );
31
30
 
32
31
  } else if ( header[ 11 ] === 0x21525650 ) {
33
32
 
34
33
  // PVR v2
34
+
35
35
  return _parseV2( pvrDatas );
36
36
 
37
37
  } else {
@@ -43,7 +43,6 @@
43
43
  }
44
44
 
45
45
  }
46
-
47
46
  function _parseV3( pvrDatas ) {
48
47
 
49
48
  const header = pvrDatas.header;
@@ -55,7 +54,6 @@
55
54
  // numSurfs = header[ 9 ],
56
55
  numFaces = header[ 10 ],
57
56
  numMipmaps = header[ 11 ];
58
-
59
57
  switch ( pixelFormat ) {
60
58
 
61
59
  case 0:
@@ -63,25 +61,21 @@
63
61
  bpp = 2;
64
62
  format = THREE.RGB_PVRTC_2BPPV1_Format;
65
63
  break;
66
-
67
64
  case 1:
68
65
  // PVRTC 2bpp RGBA
69
66
  bpp = 2;
70
67
  format = THREE.RGBA_PVRTC_2BPPV1_Format;
71
68
  break;
72
-
73
69
  case 2:
74
70
  // PVRTC 4bpp RGB
75
71
  bpp = 4;
76
72
  format = THREE.RGB_PVRTC_4BPPV1_Format;
77
73
  break;
78
-
79
74
  case 3:
80
75
  // PVRTC 4bpp RGBA
81
76
  bpp = 4;
82
77
  format = THREE.RGBA_PVRTC_4BPPV1_Format;
83
78
  break;
84
-
85
79
  default:
86
80
  console.error( 'THREE.PVRLoader: Unsupported PVR format:', pixelFormat );
87
81
 
@@ -120,9 +114,7 @@
120
114
  PVRTC_4 = 25;
121
115
  const formatFlags = flags & TYPE_MASK;
122
116
  let bpp, format;
123
-
124
117
  const _hasAlpha = bitmaskAlpha > 0;
125
-
126
118
  if ( formatFlags === PVRTC_4 ) {
127
119
 
128
120
  format = _hasAlpha ? THREE.RGBA_PVRTC_4BPPV1_Format : THREE.RGB_PVRTC_4BPPV1_Format;
@@ -145,9 +137,10 @@
145
137
  pvrDatas.width = width;
146
138
  pvrDatas.height = height;
147
139
  pvrDatas.numSurfaces = numSurfs;
148
- pvrDatas.numMipmaps = numMipmaps + 1; // guess cubemap type seems tricky in v2
149
- // it juste a pvr containing 6 surface (no explicit cubemap type)
140
+ pvrDatas.numMipmaps = numMipmaps + 1;
150
141
 
142
+ // guess cubemap type seems tricky in v2
143
+ // it juste a pvr containing 6 surface (no explicit cubemap type)
151
144
  pvrDatas.isCubemap = numSurfs === 6;
152
145
  return _extract( pvrDatas );
153
146
 
@@ -173,7 +166,6 @@
173
166
  heightBlocks = 0;
174
167
  const bpp = pvrDatas.bpp,
175
168
  numSurfs = pvrDatas.numSurfaces;
176
-
177
169
  if ( bpp === 2 ) {
178
170
 
179
171
  blockWidth = 8;
@@ -189,18 +181,17 @@
189
181
  blockSize = blockWidth * blockHeight * bpp / 8;
190
182
  pvr.mipmaps.length = pvrDatas.numMipmaps * numSurfs;
191
183
  let mipLevel = 0;
192
-
193
184
  while ( mipLevel < pvrDatas.numMipmaps ) {
194
185
 
195
186
  const sWidth = pvrDatas.width >> mipLevel,
196
187
  sHeight = pvrDatas.height >> mipLevel;
197
188
  widthBlocks = sWidth / blockWidth;
198
- heightBlocks = sHeight / blockHeight; // Clamp to minimum number of blocks
189
+ heightBlocks = sHeight / blockHeight;
199
190
 
191
+ // Clamp to minimum number of blocks
200
192
  if ( widthBlocks < 2 ) widthBlocks = 2;
201
193
  if ( heightBlocks < 2 ) heightBlocks = 2;
202
194
  dataSize = widthBlocks * heightBlocks * blockSize;
203
-
204
195
  for ( let surfIndex = 0; surfIndex < numSurfs; surfIndex ++ ) {
205
196
 
206
197
  const byteArray = new Uint8Array( buffer, dataOffset, dataSize );