opal-js_wrap-three 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (503) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile.lock +4 -4
  4. data/lib/opal/js_wrap/three/version.rb +1 -1
  5. data/lib-opal/js_wrap/three/WebGL.js +102 -0
  6. data/lib-opal/js_wrap/three/animation/AnimationClipCreator.js +116 -0
  7. data/lib-opal/js_wrap/three/animation/CCDIKSolver.js +436 -0
  8. data/lib-opal/js_wrap/three/animation/MMDAnimationHelper.js +941 -0
  9. data/lib-opal/js_wrap/three/animation/MMDPhysics.js +1183 -0
  10. data/lib-opal/js_wrap/three/cameras/CinematicCamera.js +204 -0
  11. data/lib-opal/js_wrap/three/controls/ArcballControls.js +2649 -0
  12. data/lib-opal/js_wrap/three/controls/DragControls.js +234 -0
  13. data/lib-opal/js_wrap/three/controls/FirstPersonControls.js +301 -0
  14. data/lib-opal/js_wrap/three/controls/FlyControls.js +357 -0
  15. data/lib-opal/js_wrap/three/controls/OrbitControls.js +908 -0
  16. data/lib-opal/js_wrap/three/controls/PointerLockControls.js +173 -0
  17. data/lib-opal/js_wrap/three/controls/TrackballControls.js +666 -0
  18. data/lib-opal/js_wrap/three/controls/TransformControls.js +1210 -0
  19. data/lib-opal/js_wrap/three/controls/experimental/CameraControls.js +860 -0
  20. data/lib-opal/js_wrap/three/csm/CSM.js +346 -0
  21. data/lib-opal/js_wrap/three/csm/CSMFrustum.js +123 -0
  22. data/lib-opal/js_wrap/three/csm/CSMHelper.js +197 -0
  23. data/lib-opal/js_wrap/three/csm/CSMShader.js +29 -0
  24. data/lib-opal/js_wrap/three/curves/CurveExtras.js +544 -0
  25. data/lib-opal/js_wrap/three/curves/NURBSCurve.js +122 -0
  26. data/lib-opal/js_wrap/three/curves/NURBSSurface.js +78 -0
  27. data/lib-opal/js_wrap/three/curves/NURBSUtils.js +413 -0
  28. data/lib-opal/js_wrap/three/deprecated/Geometry.js +1373 -0
  29. data/lib-opal/js_wrap/three/effects/AnaglyphEffect.js +113 -0
  30. data/lib-opal/js_wrap/three/effects/AsciiEffect.js +267 -0
  31. data/lib-opal/js_wrap/three/effects/OutlineEffect.js +400 -0
  32. data/lib-opal/js_wrap/three/effects/ParallaxBarrierEffect.js +90 -0
  33. data/lib-opal/js_wrap/three/effects/PeppersGhostEffect.js +160 -0
  34. data/lib-opal/js_wrap/three/effects/StereoEffect.js +63 -0
  35. data/lib-opal/js_wrap/three/environments/DebugEnvironment.js +107 -0
  36. data/lib-opal/js_wrap/three/environments/RoomEnvironment.js +166 -0
  37. data/lib-opal/js_wrap/three/exporters/ColladaExporter.js +442 -0
  38. data/lib-opal/js_wrap/three/exporters/DRACOExporter.js +205 -0
  39. data/lib-opal/js_wrap/three/exporters/GLTFExporter.js +2042 -0
  40. data/lib-opal/js_wrap/three/exporters/MMDExporter.js +189 -0
  41. data/lib-opal/js_wrap/three/exporters/OBJExporter.js +241 -0
  42. data/lib-opal/js_wrap/three/exporters/PLYExporter.js +370 -0
  43. data/lib-opal/js_wrap/three/exporters/STLExporter.js +186 -0
  44. data/lib-opal/js_wrap/three/exporters/USDZExporter.js +402 -0
  45. data/lib-opal/js_wrap/three/geometries/BoxLineGeometry.js +106 -0
  46. data/lib-opal/js_wrap/three/geometries/ConvexGeometry.js +88 -0
  47. data/lib-opal/js_wrap/three/geometries/DecalGeometry.js +302 -0
  48. data/lib-opal/js_wrap/three/geometries/LightningStrike.js +817 -0
  49. data/lib-opal/js_wrap/three/geometries/ParametricGeometries.js +280 -0
  50. data/lib-opal/js_wrap/three/geometries/ParametricGeometry.js +146 -0
  51. data/lib-opal/js_wrap/three/geometries/RoundedBoxGeometry.js +183 -0
  52. data/lib-opal/js_wrap/three/geometries/TeapotGeometry.js +352 -0
  53. data/lib-opal/js_wrap/three/geometries/TextGeometry.js +76 -0
  54. data/lib-opal/js_wrap/three/helpers/LightProbeHelper.js +95 -0
  55. data/lib-opal/js_wrap/three/helpers/PositionalAudioHelper.js +138 -0
  56. data/lib-opal/js_wrap/three/helpers/RectAreaLightHelper.js +115 -0
  57. data/lib-opal/js_wrap/three/helpers/VertexNormalsHelper.js +131 -0
  58. data/lib-opal/js_wrap/three/helpers/VertexTangentsHelper.js +118 -0
  59. data/lib-opal/js_wrap/three/interactive/HTMLMesh.js +307 -0
  60. data/lib-opal/js_wrap/three/interactive/InteractiveGroup.js +138 -0
  61. data/lib-opal/js_wrap/three/interactive/SelectionBox.js +264 -0
  62. data/lib-opal/js_wrap/three/interactive/SelectionHelper.js +88 -0
  63. data/lib-opal/js_wrap/three/libs/OimoPhysics/OimoPhysics.js +46059 -0
  64. data/lib-opal/js_wrap/three/libs/OimoPhysics/index.js +92 -0
  65. data/lib-opal/js_wrap/three/libs/chevrotain.module.min.js +6947 -0
  66. data/lib-opal/js_wrap/three/libs/ecsy.module.js +1999 -0
  67. data/lib-opal/js_wrap/three/libs/fflate.module.js +3002 -0
  68. data/lib-opal/js_wrap/three/libs/flow.module.js +3033 -0
  69. data/lib-opal/js_wrap/three/libs/ktx-parse.module.js +392 -0
  70. data/lib-opal/js_wrap/three/libs/lil-gui.module.min.js +821 -0
  71. data/lib-opal/js_wrap/three/libs/meshopt_decoder.module.js +136 -0
  72. data/lib-opal/js_wrap/three/libs/mmdparser.module.js +11022 -0
  73. data/lib-opal/js_wrap/three/libs/motion-controllers.module.js +589 -0
  74. data/lib-opal/js_wrap/three/libs/opentype.module.min.js +6132 -0
  75. data/lib-opal/js_wrap/three/libs/potpack.module.js +171 -0
  76. data/lib-opal/js_wrap/three/libs/rhino3dm/rhino3dm.js +6781 -0
  77. data/lib-opal/js_wrap/three/libs/rhino3dm/rhino3dm.module.js +6783 -0
  78. data/lib-opal/js_wrap/three/libs/stats.module.js +139 -0
  79. data/lib-opal/js_wrap/three/libs/tween.module.min.js +349 -0
  80. data/lib-opal/js_wrap/three/lights/LightProbeGenerator.js +233 -0
  81. data/lib-opal/js_wrap/three/lights/RectAreaLightUniformsLib.js +75 -0
  82. data/lib-opal/js_wrap/three/lines/Line2.js +66 -0
  83. data/lib-opal/js_wrap/three/lines/LineGeometry.js +122 -0
  84. data/lib-opal/js_wrap/three/lines/LineMaterial.js +227 -0
  85. data/lib-opal/js_wrap/three/lines/LineSegments2.js +312 -0
  86. data/lib-opal/js_wrap/three/lines/LineSegmentsGeometry.js +238 -0
  87. data/lib-opal/js_wrap/three/lines/Wireframe.js +98 -0
  88. data/lib-opal/js_wrap/three/lines/WireframeGeometry2.js +65 -0
  89. data/lib-opal/js_wrap/three/loaders/3DMLoader.js +1230 -0
  90. data/lib-opal/js_wrap/three/loaders/3MFLoader.js +1123 -0
  91. data/lib-opal/js_wrap/three/loaders/AMFLoader.js +445 -0
  92. data/lib-opal/js_wrap/three/loaders/BVHLoader.js +365 -0
  93. data/lib-opal/js_wrap/three/loaders/BasisTextureLoader.js +692 -0
  94. data/lib-opal/js_wrap/three/loaders/ColladaLoader.js +3046 -0
  95. data/lib-opal/js_wrap/three/loaders/DDSLoader.js +264 -0
  96. data/lib-opal/js_wrap/three/loaders/DRACOLoader.js +531 -0
  97. data/lib-opal/js_wrap/three/loaders/EXRLoader.js +1834 -0
  98. data/lib-opal/js_wrap/three/loaders/FBXLoader.js +3125 -0
  99. data/lib-opal/js_wrap/three/loaders/FontLoader.js +201 -0
  100. data/lib-opal/js_wrap/three/loaders/GCodeLoader.js +248 -0
  101. data/lib-opal/js_wrap/three/loaders/GLTFLoader.js +3334 -0
  102. data/lib-opal/js_wrap/three/loaders/HDRCubeTextureLoader.js +144 -0
  103. data/lib-opal/js_wrap/three/loaders/IFCLoader.js +2395 -0
  104. data/lib-opal/js_wrap/three/loaders/KMZLoader.js +142 -0
  105. data/lib-opal/js_wrap/three/loaders/KTX2Loader.js +535 -0
  106. data/lib-opal/js_wrap/three/loaders/KTXLoader.js +202 -0
  107. data/lib-opal/js_wrap/three/loaders/LDrawLoader.js +1737 -0
  108. data/lib-opal/js_wrap/three/loaders/LUT3dlLoader.js +163 -0
  109. data/lib-opal/js_wrap/three/loaders/LUTCubeLoader.js +171 -0
  110. data/lib-opal/js_wrap/three/loaders/LWOLoader.js +831 -0
  111. data/lib-opal/js_wrap/three/loaders/LogLuvLoader.js +713 -0
  112. data/lib-opal/js_wrap/three/loaders/LottieLoader.js +103 -0
  113. data/lib-opal/js_wrap/three/loaders/MD2Loader.js +258 -0
  114. data/lib-opal/js_wrap/three/loaders/MDDLoader.js +116 -0
  115. data/lib-opal/js_wrap/three/loaders/MMDLoader.js +1687 -0
  116. data/lib-opal/js_wrap/three/loaders/MTLLoader.js +465 -0
  117. data/lib-opal/js_wrap/three/loaders/NRRDLoader.js +554 -0
  118. data/lib-opal/js_wrap/three/loaders/NodeMaterialLoader.js +248 -0
  119. data/lib-opal/js_wrap/three/loaders/OBJLoader.js +673 -0
  120. data/lib-opal/js_wrap/three/loaders/PCDLoader.js +322 -0
  121. data/lib-opal/js_wrap/three/loaders/PDBLoader.js +318 -0
  122. data/lib-opal/js_wrap/three/loaders/PLYLoader.js +489 -0
  123. data/lib-opal/js_wrap/three/loaders/PRWMLoader.js +247 -0
  124. data/lib-opal/js_wrap/three/loaders/PVRLoader.js +240 -0
  125. data/lib-opal/js_wrap/three/loaders/RGBELoader.js +462 -0
  126. data/lib-opal/js_wrap/three/loaders/RGBMLoader.js +1169 -0
  127. data/lib-opal/js_wrap/three/loaders/STLLoader.js +345 -0
  128. data/lib-opal/js_wrap/three/loaders/SVGLoader.js +2162 -0
  129. data/lib-opal/js_wrap/three/loaders/TDSLoader.js +982 -0
  130. data/lib-opal/js_wrap/three/loaders/TGALoader.js +444 -0
  131. data/lib-opal/js_wrap/three/loaders/TTFLoader.js +210 -0
  132. data/lib-opal/js_wrap/three/loaders/TiltLoader.js +391 -0
  133. data/lib-opal/js_wrap/three/loaders/VOXLoader.js +272 -0
  134. data/lib-opal/js_wrap/three/loaders/VRMLLoader.js +2685 -0
  135. data/lib-opal/js_wrap/three/loaders/VRMLoader.js +103 -0
  136. data/lib-opal/js_wrap/three/loaders/VTKLoader.js +894 -0
  137. data/lib-opal/js_wrap/three/loaders/XYZLoader.js +136 -0
  138. data/lib-opal/js_wrap/three/loaders/ifc/web-ifc-api.js +60504 -0
  139. data/lib-opal/js_wrap/three/loaders/lwo/IFFParser.js +931 -0
  140. data/lib-opal/js_wrap/three/loaders/lwo/LWO2Parser.js +450 -0
  141. data/lib-opal/js_wrap/three/loaders/lwo/LWO3Parser.js +406 -0
  142. data/lib-opal/js_wrap/three/math/Capsule.js +133 -0
  143. data/lib-opal/js_wrap/three/math/ColorConverter.js +104 -0
  144. data/lib-opal/js_wrap/three/math/ConvexHull.js +924 -0
  145. data/lib-opal/js_wrap/three/math/ImprovedNoise.js +86 -0
  146. data/lib-opal/js_wrap/three/math/Lut.js +170 -0
  147. data/lib-opal/js_wrap/three/math/MeshSurfaceSampler.js +187 -0
  148. data/lib-opal/js_wrap/three/math/OBB.js +345 -0
  149. data/lib-opal/js_wrap/three/math/Octree.js +409 -0
  150. data/lib-opal/js_wrap/three/math/SimplexNoise.js +425 -0
  151. data/lib-opal/js_wrap/three/misc/ConvexObjectBreaker.js +447 -0
  152. data/lib-opal/js_wrap/three/misc/GPUComputationRenderer.js +322 -0
  153. data/lib-opal/js_wrap/three/misc/Gyroscope.js +94 -0
  154. data/lib-opal/js_wrap/three/misc/MD2Character.js +225 -0
  155. data/lib-opal/js_wrap/three/misc/MD2CharacterComplex.js +424 -0
  156. data/lib-opal/js_wrap/three/misc/MorphAnimMesh.js +109 -0
  157. data/lib-opal/js_wrap/three/misc/MorphBlendMesh.js +283 -0
  158. data/lib-opal/js_wrap/three/misc/ProgressiveLightMap.js +324 -0
  159. data/lib-opal/js_wrap/three/misc/RollerCoaster.js +489 -0
  160. data/lib-opal/js_wrap/three/misc/TubePainter.js +158 -0
  161. data/lib-opal/js_wrap/three/misc/Volume.js +427 -0
  162. data/lib-opal/js_wrap/three/misc/VolumeSlice.js +210 -0
  163. data/lib-opal/js_wrap/three/modifiers/CurveModifier.js +291 -0
  164. data/lib-opal/js_wrap/three/modifiers/EdgeSplitModifier.js +308 -0
  165. data/lib-opal/js_wrap/three/modifiers/SimplifyModifier.js +435 -0
  166. data/lib-opal/js_wrap/three/modifiers/TessellateModifier.js +264 -0
  167. data/lib-opal/js_wrap/three/node-editor/NodeEditor.js +402 -0
  168. data/lib-opal/js_wrap/three/node-editor/accessors/NormalEditor.js +80 -0
  169. data/lib-opal/js_wrap/three/node-editor/accessors/PositionEditor.js +80 -0
  170. data/lib-opal/js_wrap/three/node-editor/accessors/UVEditor.js +71 -0
  171. data/lib-opal/js_wrap/three/node-editor/display/BlendEditor.js +78 -0
  172. data/lib-opal/js_wrap/three/node-editor/inputs/ColorEditor.js +111 -0
  173. data/lib-opal/js_wrap/three/node-editor/inputs/FloatEditor.js +69 -0
  174. data/lib-opal/js_wrap/three/node-editor/inputs/SliderEditor.js +97 -0
  175. data/lib-opal/js_wrap/three/node-editor/inputs/Vector2Editor.js +73 -0
  176. data/lib-opal/js_wrap/three/node-editor/inputs/Vector3Editor.js +75 -0
  177. data/lib-opal/js_wrap/three/node-editor/inputs/Vector4Editor.js +77 -0
  178. data/lib-opal/js_wrap/three/node-editor/materials/StandardMaterialEditor.js +121 -0
  179. data/lib-opal/js_wrap/three/node-editor/math/DotEditor.js +76 -0
  180. data/lib-opal/js_wrap/three/node-editor/math/InvertEditor.js +80 -0
  181. data/lib-opal/js_wrap/three/node-editor/math/LimiterEditor.js +85 -0
  182. data/lib-opal/js_wrap/three/node-editor/math/NormalizeEditor.js +69 -0
  183. data/lib-opal/js_wrap/three/node-editor/math/OperatorEditor.js +91 -0
  184. data/lib-opal/js_wrap/three/node-editor/math/PowerEditor.js +73 -0
  185. data/lib-opal/js_wrap/three/node-editor/math/TrigonometryEditor.js +83 -0
  186. data/lib-opal/js_wrap/three/node-editor/procedural/CheckerEditor.js +69 -0
  187. data/lib-opal/js_wrap/three/node-editor/utils/OscillatorEditor.js +87 -0
  188. data/lib-opal/js_wrap/three/node-editor/utils/TimerEditor.js +89 -0
  189. data/lib-opal/js_wrap/three/nodes/Nodes.js +481 -0
  190. data/lib-opal/js_wrap/three/nodes/accessors/CameraNode.js +222 -0
  191. data/lib-opal/js_wrap/three/nodes/accessors/ColorsNode.js +99 -0
  192. data/lib-opal/js_wrap/three/nodes/accessors/LightNode.js +100 -0
  193. data/lib-opal/js_wrap/three/nodes/accessors/NormalNode.js +152 -0
  194. data/lib-opal/js_wrap/three/nodes/accessors/PositionNode.js +163 -0
  195. data/lib-opal/js_wrap/three/nodes/accessors/ReflectNode.js +161 -0
  196. data/lib-opal/js_wrap/three/nodes/accessors/ResolutionNode.js +99 -0
  197. data/lib-opal/js_wrap/three/nodes/accessors/ScreenUVNode.js +101 -0
  198. data/lib-opal/js_wrap/three/nodes/accessors/UVNode.js +105 -0
  199. data/lib-opal/js_wrap/three/nodes/core/AttributeNode.js +106 -0
  200. data/lib-opal/js_wrap/three/nodes/core/ConstNode.js +149 -0
  201. data/lib-opal/js_wrap/three/nodes/core/ExpressionNode.js +57 -0
  202. data/lib-opal/js_wrap/three/nodes/core/FunctionCallNode.js +138 -0
  203. data/lib-opal/js_wrap/three/nodes/core/FunctionNode.js +259 -0
  204. data/lib-opal/js_wrap/three/nodes/core/InputNode.js +124 -0
  205. data/lib-opal/js_wrap/three/nodes/core/Node.js +193 -0
  206. data/lib-opal/js_wrap/three/nodes/core/NodeBuilder.js +782 -0
  207. data/lib-opal/js_wrap/three/nodes/core/NodeFrame.js +69 -0
  208. data/lib-opal/js_wrap/three/nodes/core/NodeLib.js +56 -0
  209. data/lib-opal/js_wrap/three/nodes/core/NodeUniform.js +53 -0
  210. data/lib-opal/js_wrap/three/nodes/core/NodeUtils.js +60 -0
  211. data/lib-opal/js_wrap/three/nodes/core/StructNode.js +131 -0
  212. data/lib-opal/js_wrap/three/nodes/core/TempNode.js +160 -0
  213. data/lib-opal/js_wrap/three/nodes/core/VarNode.js +105 -0
  214. data/lib-opal/js_wrap/three/nodes/effects/BlurNode.js +160 -0
  215. data/lib-opal/js_wrap/three/nodes/effects/ColorAdjustmentNode.js +139 -0
  216. data/lib-opal/js_wrap/three/nodes/effects/LuminanceNode.js +106 -0
  217. data/lib-opal/js_wrap/three/nodes/inputs/BoolNode.js +95 -0
  218. data/lib-opal/js_wrap/three/nodes/inputs/ColorNode.js +99 -0
  219. data/lib-opal/js_wrap/three/nodes/inputs/CubeTextureNode.js +136 -0
  220. data/lib-opal/js_wrap/three/nodes/inputs/FloatNode.js +95 -0
  221. data/lib-opal/js_wrap/three/nodes/inputs/IntNode.js +95 -0
  222. data/lib-opal/js_wrap/three/nodes/inputs/Matrix3Node.js +102 -0
  223. data/lib-opal/js_wrap/three/nodes/inputs/Matrix4Node.js +102 -0
  224. data/lib-opal/js_wrap/three/nodes/inputs/PropertyNode.js +85 -0
  225. data/lib-opal/js_wrap/three/nodes/inputs/RTTNode.js +164 -0
  226. data/lib-opal/js_wrap/three/nodes/inputs/ReflectorNode.js +111 -0
  227. data/lib-opal/js_wrap/three/nodes/inputs/ScreenNode.js +69 -0
  228. data/lib-opal/js_wrap/three/nodes/inputs/TextureNode.js +140 -0
  229. data/lib-opal/js_wrap/three/nodes/inputs/Vector2Node.js +98 -0
  230. data/lib-opal/js_wrap/three/nodes/inputs/Vector3Node.js +99 -0
  231. data/lib-opal/js_wrap/three/nodes/inputs/Vector4Node.js +100 -0
  232. data/lib-opal/js_wrap/three/nodes/materials/BasicNodeMaterial.js +63 -0
  233. data/lib-opal/js_wrap/three/nodes/materials/MeshStandardNodeMaterial.js +63 -0
  234. data/lib-opal/js_wrap/three/nodes/materials/NodeMaterial.js +202 -0
  235. data/lib-opal/js_wrap/three/nodes/materials/PhongNodeMaterial.js +63 -0
  236. data/lib-opal/js_wrap/three/nodes/materials/SpriteNodeMaterial.js +63 -0
  237. data/lib-opal/js_wrap/three/nodes/materials/StandardNodeMaterial.js +63 -0
  238. data/lib-opal/js_wrap/three/nodes/materials/nodes/BasicNode.js +146 -0
  239. data/lib-opal/js_wrap/three/nodes/materials/nodes/MeshStandardNode.js +133 -0
  240. data/lib-opal/js_wrap/three/nodes/materials/nodes/PhongNode.js +273 -0
  241. data/lib-opal/js_wrap/three/nodes/materials/nodes/RawNode.js +101 -0
  242. data/lib-opal/js_wrap/three/nodes/materials/nodes/SpriteNode.js +176 -0
  243. data/lib-opal/js_wrap/three/nodes/materials/nodes/StandardNode.js +397 -0
  244. data/lib-opal/js_wrap/three/nodes/math/CondNode.js +151 -0
  245. data/lib-opal/js_wrap/three/nodes/math/MathNode.js +266 -0
  246. data/lib-opal/js_wrap/three/nodes/math/OperatorNode.js +120 -0
  247. data/lib-opal/js_wrap/three/nodes/misc/BumpMapNode.js +139 -0
  248. data/lib-opal/js_wrap/three/nodes/misc/NormalMapNode.js +122 -0
  249. data/lib-opal/js_wrap/three/nodes/misc/TextureCubeNode.js +107 -0
  250. data/lib-opal/js_wrap/three/nodes/misc/TextureCubeUVNode.js +191 -0
  251. data/lib-opal/js_wrap/three/nodes/postprocessing/NodePass.js +117 -0
  252. data/lib-opal/js_wrap/three/nodes/postprocessing/NodePostProcessing.js +128 -0
  253. data/lib-opal/js_wrap/three/nodes/procedural/CheckerNode.js +104 -0
  254. data/lib-opal/js_wrap/three/nodes/procedural/Fractal3DNode.js +121 -0
  255. data/lib-opal/js_wrap/three/nodes/procedural/Noise2DNode.js +115 -0
  256. data/lib-opal/js_wrap/three/nodes/procedural/Noise3DNode.js +112 -0
  257. data/lib-opal/js_wrap/three/nodes/utils/BypassNode.js +115 -0
  258. data/lib-opal/js_wrap/three/nodes/utils/ColorSpaceNode.js +214 -0
  259. data/lib-opal/js_wrap/three/nodes/utils/JoinNode.js +138 -0
  260. data/lib-opal/js_wrap/three/nodes/utils/MaxMIPLevelNode.js +88 -0
  261. data/lib-opal/js_wrap/three/nodes/utils/RemapNode.js +117 -0
  262. data/lib-opal/js_wrap/three/nodes/utils/SpecularMIPLevelNode.js +121 -0
  263. data/lib-opal/js_wrap/three/nodes/utils/SubSlotNode.js +112 -0
  264. data/lib-opal/js_wrap/three/nodes/utils/SwitchNode.js +129 -0
  265. data/lib-opal/js_wrap/three/nodes/utils/TimerNode.js +126 -0
  266. data/lib-opal/js_wrap/three/nodes/utils/UVTransformNode.js +104 -0
  267. data/lib-opal/js_wrap/three/nodes/utils/VelocityNode.js +181 -0
  268. data/lib-opal/js_wrap/three/objects/Lensflare.js +285 -0
  269. data/lib-opal/js_wrap/three/objects/LightningStorm.js +238 -0
  270. data/lib-opal/js_wrap/three/objects/MarchingCubes.js +667 -0
  271. data/lib-opal/js_wrap/three/objects/Reflector.js +205 -0
  272. data/lib-opal/js_wrap/three/objects/ReflectorForSSRPass.js +288 -0
  273. data/lib-opal/js_wrap/three/objects/ReflectorRTT.js +63 -0
  274. data/lib-opal/js_wrap/three/objects/Refractor.js +243 -0
  275. data/lib-opal/js_wrap/three/objects/ShadowMesh.js +100 -0
  276. data/lib-opal/js_wrap/three/objects/Sky.js +107 -0
  277. data/lib-opal/js_wrap/three/objects/Water.js +246 -0
  278. data/lib-opal/js_wrap/three/objects/Water2.js +238 -0
  279. data/lib-opal/js_wrap/three/offscreen/jank.js +51 -0
  280. data/lib-opal/js_wrap/three/offscreen/offscreen.js +24 -0
  281. data/lib-opal/js_wrap/three/offscreen/scene.js +99 -0
  282. data/lib-opal/js_wrap/three/physics/AmmoPhysics.js +266 -0
  283. data/lib-opal/js_wrap/three/physics/OimoPhysics.js +214 -0
  284. data/lib-opal/js_wrap/three/postprocessing/AdaptiveToneMappingPass.js +307 -0
  285. data/lib-opal/js_wrap/three/postprocessing/AfterimagePass.js +116 -0
  286. data/lib-opal/js_wrap/three/postprocessing/BloomPass.js +132 -0
  287. data/lib-opal/js_wrap/three/postprocessing/BokehPass.js +143 -0
  288. data/lib-opal/js_wrap/three/postprocessing/ClearPass.js +85 -0
  289. data/lib-opal/js_wrap/three/postprocessing/CubeTexturePass.js +104 -0
  290. data/lib-opal/js_wrap/three/postprocessing/DotScreenPass.js +90 -0
  291. data/lib-opal/js_wrap/three/postprocessing/EffectComposer.js +272 -0
  292. data/lib-opal/js_wrap/three/postprocessing/FilmPass.js +91 -0
  293. data/lib-opal/js_wrap/three/postprocessing/GlitchPass.js +140 -0
  294. data/lib-opal/js_wrap/three/postprocessing/HalftonePass.js +108 -0
  295. data/lib-opal/js_wrap/three/postprocessing/LUTPass.js +132 -0
  296. data/lib-opal/js_wrap/three/postprocessing/MaskPass.js +142 -0
  297. data/lib-opal/js_wrap/three/postprocessing/OutlinePass.js +480 -0
  298. data/lib-opal/js_wrap/three/postprocessing/Pass.js +101 -0
  299. data/lib-opal/js_wrap/three/postprocessing/RenderPass.js +109 -0
  300. data/lib-opal/js_wrap/three/postprocessing/SAOPass.js +384 -0
  301. data/lib-opal/js_wrap/three/postprocessing/SMAAPass.js +199 -0
  302. data/lib-opal/js_wrap/three/postprocessing/SSAARenderPass.js +186 -0
  303. data/lib-opal/js_wrap/three/postprocessing/SSAOPass.js +388 -0
  304. data/lib-opal/js_wrap/three/postprocessing/SSRPass.js +537 -0
  305. data/lib-opal/js_wrap/three/postprocessing/SSRrPass.js +481 -0
  306. data/lib-opal/js_wrap/three/postprocessing/SavePass.js +96 -0
  307. data/lib-opal/js_wrap/three/postprocessing/ShaderPass.js +98 -0
  308. data/lib-opal/js_wrap/three/postprocessing/TAARenderPass.js +159 -0
  309. data/lib-opal/js_wrap/three/postprocessing/TexturePass.js +91 -0
  310. data/lib-opal/js_wrap/three/postprocessing/UnrealBloomPass.js +335 -0
  311. data/lib-opal/js_wrap/three/renderers/CSS2DRenderer.js +213 -0
  312. data/lib-opal/js_wrap/three/renderers/CSS3DRenderer.js +277 -0
  313. data/lib-opal/js_wrap/three/renderers/Projector.js +733 -0
  314. data/lib-opal/js_wrap/three/renderers/SVGRenderer.js +470 -0
  315. data/lib-opal/js_wrap/three/renderers/nodes/Nodes.js +531 -0
  316. data/lib-opal/js_wrap/three/renderers/nodes/ShaderNode.js +386 -0
  317. data/lib-opal/js_wrap/three/renderers/nodes/accessors/CameraNode.js +114 -0
  318. data/lib-opal/js_wrap/three/renderers/nodes/accessors/MaterialNode.js +140 -0
  319. data/lib-opal/js_wrap/three/renderers/nodes/accessors/MaterialReferenceNode.js +79 -0
  320. data/lib-opal/js_wrap/three/renderers/nodes/accessors/ModelNode.js +62 -0
  321. data/lib-opal/js_wrap/three/renderers/nodes/accessors/ModelViewProjectionNode.js +80 -0
  322. data/lib-opal/js_wrap/three/renderers/nodes/accessors/NormalNode.js +113 -0
  323. data/lib-opal/js_wrap/three/renderers/nodes/accessors/Object3DNode.js +136 -0
  324. data/lib-opal/js_wrap/three/renderers/nodes/accessors/PointUVNode.js +70 -0
  325. data/lib-opal/js_wrap/three/renderers/nodes/accessors/PositionNode.js +117 -0
  326. data/lib-opal/js_wrap/three/renderers/nodes/accessors/ReferenceNode.js +124 -0
  327. data/lib-opal/js_wrap/three/renderers/nodes/accessors/SkinningNode.js +129 -0
  328. data/lib-opal/js_wrap/three/renderers/nodes/accessors/UVNode.js +77 -0
  329. data/lib-opal/js_wrap/three/renderers/nodes/core/ArrayInputNode.js +74 -0
  330. data/lib-opal/js_wrap/three/renderers/nodes/core/AttributeNode.js +97 -0
  331. data/lib-opal/js_wrap/three/renderers/nodes/core/BypassNode.js +84 -0
  332. data/lib-opal/js_wrap/three/renderers/nodes/core/CodeNode.js +131 -0
  333. data/lib-opal/js_wrap/three/renderers/nodes/core/ContextNode.js +84 -0
  334. data/lib-opal/js_wrap/three/renderers/nodes/core/ExpressionNode.js +81 -0
  335. data/lib-opal/js_wrap/three/renderers/nodes/core/FunctionCallNode.js +123 -0
  336. data/lib-opal/js_wrap/three/renderers/nodes/core/FunctionNode.js +126 -0
  337. data/lib-opal/js_wrap/three/renderers/nodes/core/InputNode.js +103 -0
  338. data/lib-opal/js_wrap/three/renderers/nodes/core/Node.js +120 -0
  339. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeAttribute.js +37 -0
  340. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeBuilder.js +650 -0
  341. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeCode.js +42 -0
  342. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeFrame.js +70 -0
  343. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeFunction.js +55 -0
  344. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeFunctionInput.js +44 -0
  345. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeKeywords.js +117 -0
  346. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeParser.js +46 -0
  347. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeUniform.js +55 -0
  348. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeVar.js +37 -0
  349. data/lib-opal/js_wrap/three/renderers/nodes/core/NodeVary.js +37 -0
  350. data/lib-opal/js_wrap/three/renderers/nodes/core/PropertyNode.js +90 -0
  351. data/lib-opal/js_wrap/three/renderers/nodes/core/TempNode.js +89 -0
  352. data/lib-opal/js_wrap/three/renderers/nodes/core/VarNode.js +101 -0
  353. data/lib-opal/js_wrap/three/renderers/nodes/core/VaryNode.js +101 -0
  354. data/lib-opal/js_wrap/three/renderers/nodes/core/constants.js +42 -0
  355. data/lib-opal/js_wrap/three/renderers/nodes/display/ColorSpaceNode.js +165 -0
  356. data/lib-opal/js_wrap/three/renderers/nodes/display/NormalMapNode.js +120 -0
  357. data/lib-opal/js_wrap/three/renderers/nodes/functions/BSDFs.js +133 -0
  358. data/lib-opal/js_wrap/three/renderers/nodes/inputs/BufferNode.js +78 -0
  359. data/lib-opal/js_wrap/three/renderers/nodes/inputs/ColorNode.js +67 -0
  360. data/lib-opal/js_wrap/three/renderers/nodes/inputs/FloatNode.js +67 -0
  361. data/lib-opal/js_wrap/three/renderers/nodes/inputs/IntNode.js +67 -0
  362. data/lib-opal/js_wrap/three/renderers/nodes/inputs/Matrix3Node.js +67 -0
  363. data/lib-opal/js_wrap/three/renderers/nodes/inputs/Matrix4Node.js +67 -0
  364. data/lib-opal/js_wrap/three/renderers/nodes/inputs/TextureNode.js +120 -0
  365. data/lib-opal/js_wrap/three/renderers/nodes/inputs/Vector2Node.js +67 -0
  366. data/lib-opal/js_wrap/three/renderers/nodes/inputs/Vector3Node.js +67 -0
  367. data/lib-opal/js_wrap/three/renderers/nodes/inputs/Vector4Node.js +67 -0
  368. data/lib-opal/js_wrap/three/renderers/nodes/lights/LightContextNode.js +103 -0
  369. data/lib-opal/js_wrap/three/renderers/nodes/lights/LightNode.js +115 -0
  370. data/lib-opal/js_wrap/three/renderers/nodes/lights/LightsNode.js +117 -0
  371. data/lib-opal/js_wrap/three/renderers/nodes/materials/LineBasicNodeMaterial.js +82 -0
  372. data/lib-opal/js_wrap/three/renderers/nodes/materials/Materials.js +49 -0
  373. data/lib-opal/js_wrap/three/renderers/nodes/materials/MeshBasicNodeMaterial.js +82 -0
  374. data/lib-opal/js_wrap/three/renderers/nodes/materials/MeshStandardNodeMaterial.js +96 -0
  375. data/lib-opal/js_wrap/three/renderers/nodes/materials/PointsNodeMaterial.js +84 -0
  376. data/lib-opal/js_wrap/three/renderers/nodes/math/CondNode.js +98 -0
  377. data/lib-opal/js_wrap/three/renderers/nodes/math/MathNode.js +255 -0
  378. data/lib-opal/js_wrap/three/renderers/nodes/math/OperatorNode.js +163 -0
  379. data/lib-opal/js_wrap/three/renderers/nodes/parsers/GLSLNodeFunction.js +158 -0
  380. data/lib-opal/js_wrap/three/renderers/nodes/parsers/GLSLNodeParser.js +68 -0
  381. data/lib-opal/js_wrap/three/renderers/nodes/parsers/WGSLNodeFunction.js +126 -0
  382. data/lib-opal/js_wrap/three/renderers/nodes/parsers/WGSLNodeParser.js +68 -0
  383. data/lib-opal/js_wrap/three/renderers/nodes/procedural/CheckerNode.js +84 -0
  384. data/lib-opal/js_wrap/three/renderers/nodes/utils/ArrayElementNode.js +79 -0
  385. data/lib-opal/js_wrap/three/renderers/nodes/utils/ConvertNode.js +82 -0
  386. data/lib-opal/js_wrap/three/renderers/nodes/utils/JoinNode.js +88 -0
  387. data/lib-opal/js_wrap/three/renderers/nodes/utils/OscNode.js +105 -0
  388. data/lib-opal/js_wrap/three/renderers/nodes/utils/SplitNode.js +96 -0
  389. data/lib-opal/js_wrap/three/renderers/nodes/utils/SpriteSheetUVNode.js +98 -0
  390. data/lib-opal/js_wrap/three/renderers/nodes/utils/TimerNode.js +93 -0
  391. data/lib-opal/js_wrap/three/renderers/webgl/nodes/SlotNode.js +72 -0
  392. data/lib-opal/js_wrap/three/renderers/webgl/nodes/WebGLNodeBuilder.js +463 -0
  393. data/lib-opal/js_wrap/three/renderers/webgl/nodes/WebGLNodes.js +62 -0
  394. data/lib-opal/js_wrap/three/renderers/webgl/nodes/WebGLPhysicalContextNode.js +95 -0
  395. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPU.js +62 -0
  396. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUAttributes.js +118 -0
  397. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUBackground.js +109 -0
  398. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUBinding.js +52 -0
  399. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUBindings.js +254 -0
  400. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUBufferUtils.js +39 -0
  401. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUComputePipelines.js +82 -0
  402. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUGeometries.js +84 -0
  403. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUInfo.js +86 -0
  404. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUObjects.js +64 -0
  405. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUProgrammableStage.js +46 -0
  406. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUProperties.js +63 -0
  407. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPURenderLists.js +180 -0
  408. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPURenderPipeline.js +662 -0
  409. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPURenderPipelines.js +275 -0
  410. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPURenderer.js +883 -0
  411. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUSampledTexture.js +139 -0
  412. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUSampler.js +76 -0
  413. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUStorageBuffer.js +69 -0
  414. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUTextureRenderer.js +64 -0
  415. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUTextureUtils.js +125 -0
  416. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUTextures.js +681 -0
  417. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUUniform.js +237 -0
  418. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUUniformBuffer.js +90 -0
  419. data/lib-opal/js_wrap/three/renderers/webgpu/WebGPUUniformsGroup.js +294 -0
  420. data/lib-opal/js_wrap/three/renderers/webgpu/constants.js +263 -0
  421. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodeBuilder.js +619 -0
  422. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +67 -0
  423. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodeSampler.js +71 -0
  424. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodeUniform.js +229 -0
  425. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +68 -0
  426. data/lib-opal/js_wrap/three/renderers/webgpu/nodes/WebGPUNodes.js +106 -0
  427. data/lib-opal/js_wrap/three/shaders/ACESFilmicToneMappingShader.js +45 -0
  428. data/lib-opal/js_wrap/three/shaders/AfterimageShader.js +46 -0
  429. data/lib-opal/js_wrap/three/shaders/BasicShader.js +34 -0
  430. data/lib-opal/js_wrap/three/shaders/BleachBypassShader.js +43 -0
  431. data/lib-opal/js_wrap/three/shaders/BlendShader.js +47 -0
  432. data/lib-opal/js_wrap/three/shaders/BokehShader.js +65 -0
  433. data/lib-opal/js_wrap/three/shaders/BokehShader2.js +125 -0
  434. data/lib-opal/js_wrap/three/shaders/BrightnessContrastShader.js +47 -0
  435. data/lib-opal/js_wrap/three/shaders/ColorCorrectionShader.js +47 -0
  436. data/lib-opal/js_wrap/three/shaders/ColorifyShader.js +41 -0
  437. data/lib-opal/js_wrap/three/shaders/ConvolutionShader.js +75 -0
  438. data/lib-opal/js_wrap/three/shaders/CopyShader.js +41 -0
  439. data/lib-opal/js_wrap/three/shaders/DOFMipMapShader.js +49 -0
  440. data/lib-opal/js_wrap/three/shaders/DepthLimitedBlurShader.js +95 -0
  441. data/lib-opal/js_wrap/three/shaders/DigitalGlitch.js +79 -0
  442. data/lib-opal/js_wrap/three/shaders/DotScreenShader.js +52 -0
  443. data/lib-opal/js_wrap/three/shaders/FXAAShader.js +78 -0
  444. data/lib-opal/js_wrap/three/shaders/FilmShader.js +69 -0
  445. data/lib-opal/js_wrap/three/shaders/FocusShader.js +52 -0
  446. data/lib-opal/js_wrap/three/shaders/FreiChenShader.js +44 -0
  447. data/lib-opal/js_wrap/three/shaders/GammaCorrectionShader.js +39 -0
  448. data/lib-opal/js_wrap/three/shaders/GodRaysShader.js +140 -0
  449. data/lib-opal/js_wrap/three/shaders/HalftoneShader.js +77 -0
  450. data/lib-opal/js_wrap/three/shaders/HorizontalBlurShader.js +47 -0
  451. data/lib-opal/js_wrap/three/shaders/HorizontalTiltShiftShader.js +49 -0
  452. data/lib-opal/js_wrap/three/shaders/HueSaturationShader.js +47 -0
  453. data/lib-opal/js_wrap/three/shaders/KaleidoShader.js +50 -0
  454. data/lib-opal/js_wrap/three/shaders/LuminosityHighPassShader.js +52 -0
  455. data/lib-opal/js_wrap/three/shaders/LuminosityShader.js +39 -0
  456. data/lib-opal/js_wrap/three/shaders/MMDToonShader.js +48 -0
  457. data/lib-opal/js_wrap/three/shaders/MirrorShader.js +44 -0
  458. data/lib-opal/js_wrap/three/shaders/NormalMapShader.js +48 -0
  459. data/lib-opal/js_wrap/three/shaders/PixelShader.js +44 -0
  460. data/lib-opal/js_wrap/three/shaders/RGBShiftShader.js +50 -0
  461. data/lib-opal/js_wrap/three/shaders/SAOShader.js +85 -0
  462. data/lib-opal/js_wrap/three/shaders/SMAAShader.js +95 -0
  463. data/lib-opal/js_wrap/three/shaders/SSAOShader.js +113 -0
  464. data/lib-opal/js_wrap/three/shaders/SSRShader.js +126 -0
  465. data/lib-opal/js_wrap/three/shaders/SSRrShader.js +106 -0
  466. data/lib-opal/js_wrap/three/shaders/SepiaShader.js +43 -0
  467. data/lib-opal/js_wrap/three/shaders/SobelOperatorShader.js +44 -0
  468. data/lib-opal/js_wrap/three/shaders/SubsurfaceScatteringShader.js +64 -0
  469. data/lib-opal/js_wrap/three/shaders/TechnicolorShader.js +41 -0
  470. data/lib-opal/js_wrap/three/shaders/ToneMapShader.js +53 -0
  471. data/lib-opal/js_wrap/three/shaders/ToonShader.js +148 -0
  472. data/lib-opal/js_wrap/three/shaders/TriangleBlurShader.js +47 -0
  473. data/lib-opal/js_wrap/three/shaders/UnpackDepthRGBAShader.js +42 -0
  474. data/lib-opal/js_wrap/three/shaders/VerticalBlurShader.js +47 -0
  475. data/lib-opal/js_wrap/three/shaders/VerticalTiltShiftShader.js +49 -0
  476. data/lib-opal/js_wrap/three/shaders/VignetteShader.js +46 -0
  477. data/lib-opal/js_wrap/three/shaders/VolumeShader.js +55 -0
  478. data/lib-opal/js_wrap/three/shaders/WaterRefractionShader.js +46 -0
  479. data/lib-opal/js_wrap/three/textures/FlakesTexture.js +61 -0
  480. data/lib-opal/js_wrap/three/utils/BufferGeometryUtils.js +683 -0
  481. data/lib-opal/js_wrap/three/utils/CameraUtils.js +97 -0
  482. data/lib-opal/js_wrap/three/utils/GPUStatsPanel.js +154 -0
  483. data/lib-opal/js_wrap/three/utils/GeometryCompressionUtils.js +468 -0
  484. data/lib-opal/js_wrap/three/utils/GeometryUtils.js +192 -0
  485. data/lib-opal/js_wrap/three/utils/PackedPhongMaterial.js +77 -0
  486. data/lib-opal/js_wrap/three/utils/RoughnessMipmapper.js +169 -0
  487. data/lib-opal/js_wrap/three/utils/SceneUtils.js +62 -0
  488. data/lib-opal/js_wrap/three/utils/ShadowMapViewer.js +182 -0
  489. data/lib-opal/js_wrap/three/utils/SkeletonUtils.js +400 -0
  490. data/lib-opal/js_wrap/three/utils/UVsDebug.js +132 -0
  491. data/lib-opal/js_wrap/three/utils/WorkerPool.js +130 -0
  492. data/lib-opal/js_wrap/three/webxr/ARButton.js +203 -0
  493. data/lib-opal/js_wrap/three/webxr/OculusHandModel.js +131 -0
  494. data/lib-opal/js_wrap/three/webxr/OculusHandPointerModel.js +328 -0
  495. data/lib-opal/js_wrap/three/webxr/Text2D.js +54 -0
  496. data/lib-opal/js_wrap/three/webxr/VRButton.js +181 -0
  497. data/lib-opal/js_wrap/three/webxr/XRControllerModelFactory.js +266 -0
  498. data/lib-opal/js_wrap/three/webxr/XREstimatedLight.js +221 -0
  499. data/lib-opal/js_wrap/three/webxr/XRHandMeshModel.js +93 -0
  500. data/lib-opal/js_wrap/three/webxr/XRHandModelFactory.js +127 -0
  501. data/lib-opal/js_wrap/three/webxr/XRHandPrimitiveModel.js +85 -0
  502. data/opal-js_wrap-three.gemspec +4 -4
  503. metadata +502 -5
@@ -0,0 +1,442 @@
1
+ (function (global, factory) {
2
+ if (typeof define === "function" && define.amd) {
3
+ define(["exports", "three"], factory);
4
+ } else if (typeof exports !== "undefined") {
5
+ factory(exports, require("three"));
6
+ } else {
7
+ var mod = {
8
+ exports: {}
9
+ };
10
+ factory(mod.exports, global.three);
11
+ global.ColladaExporter = mod.exports;
12
+ }
13
+ })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _three) {
14
+ "use strict";
15
+
16
+ Object.defineProperty(_exports, "__esModule", {
17
+ value: true
18
+ });
19
+ _exports.ColladaExporter = void 0;
20
+
21
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
22
+
23
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
24
+
25
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
26
+
27
+ /**
28
+ * https://github.com/gkjohnson/collada-exporter-js
29
+ *
30
+ * Usage:
31
+ * const exporter = new ColladaExporter();
32
+ *
33
+ * const data = exporter.parse(mesh);
34
+ *
35
+ * Format Definition:
36
+ * https://www.khronos.org/collada/
37
+ */
38
+ var ColladaExporter = /*#__PURE__*/function () {
39
+ function ColladaExporter() {
40
+ _classCallCheck(this, ColladaExporter);
41
+ }
42
+
43
+ _createClass(ColladaExporter, [{
44
+ key: "parse",
45
+ value: function parse(object, onDone) {
46
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
47
+ options = Object.assign({
48
+ version: '1.4.1',
49
+ author: null,
50
+ textureDirectory: '',
51
+ upAxis: 'Y_UP',
52
+ unitName: null,
53
+ unitMeter: null
54
+ }, options);
55
+
56
+ if (options.upAxis.match(/^[XYZ]_UP$/) === null) {
57
+ console.error('ColladaExporter: Invalid upAxis: valid values are X_UP, Y_UP or Z_UP.');
58
+ return null;
59
+ }
60
+
61
+ if (options.unitName !== null && options.unitMeter === null) {
62
+ console.error('ColladaExporter: unitMeter needs to be specified if unitName is specified.');
63
+ return null;
64
+ }
65
+
66
+ if (options.unitMeter !== null && options.unitName === null) {
67
+ console.error('ColladaExporter: unitName needs to be specified if unitMeter is specified.');
68
+ return null;
69
+ }
70
+
71
+ if (options.textureDirectory !== '') {
72
+ options.textureDirectory = "".concat(options.textureDirectory, "/").replace(/\\/g, '/').replace(/\/+/g, '/');
73
+ }
74
+
75
+ var version = options.version;
76
+
77
+ if (version !== '1.4.1' && version !== '1.5.0') {
78
+ console.warn("ColladaExporter : Version ".concat(version, " not supported for export. Only 1.4.1 and 1.5.0."));
79
+ return null;
80
+ } // Convert the urdf xml into a well-formatted, indented format
81
+
82
+
83
+ function format(urdf) {
84
+ var IS_END_TAG = /^<\//;
85
+ var IS_SELF_CLOSING = /(\?>$)|(\/>$)/;
86
+ var HAS_TEXT = /<[^>]+>[^<]*<\/[^<]+>/;
87
+
88
+ var pad = function pad(ch, num) {
89
+ return num > 0 ? ch + pad(ch, num - 1) : '';
90
+ };
91
+
92
+ var tagnum = 0;
93
+ return urdf.match(/(<[^>]+>[^<]+<\/[^<]+>)|(<[^>]+>)/g).map(function (tag) {
94
+ if (!HAS_TEXT.test(tag) && !IS_SELF_CLOSING.test(tag) && IS_END_TAG.test(tag)) {
95
+ tagnum--;
96
+ }
97
+
98
+ var res = "".concat(pad(' ', tagnum)).concat(tag);
99
+
100
+ if (!HAS_TEXT.test(tag) && !IS_SELF_CLOSING.test(tag) && !IS_END_TAG.test(tag)) {
101
+ tagnum++;
102
+ }
103
+
104
+ return res;
105
+ }).join('\n');
106
+ } // Convert an image into a png format for saving
107
+
108
+
109
+ function base64ToBuffer(str) {
110
+ var b = atob(str);
111
+ var buf = new Uint8Array(b.length);
112
+
113
+ for (var i = 0, l = buf.length; i < l; i++) {
114
+ buf[i] = b.charCodeAt(i);
115
+ }
116
+
117
+ return buf;
118
+ }
119
+
120
+ var canvas, ctx;
121
+
122
+ function imageToData(image, ext) {
123
+ canvas = canvas || document.createElement('canvas');
124
+ ctx = ctx || canvas.getContext('2d');
125
+ canvas.width = image.width;
126
+ canvas.height = image.height;
127
+ ctx.drawImage(image, 0, 0); // Get the base64 encoded data
128
+
129
+ var base64data = canvas.toDataURL("image/".concat(ext), 1).replace(/^data:image\/(png|jpg);base64,/, ''); // Convert to a uint8 array
130
+
131
+ return base64ToBuffer(base64data);
132
+ } // gets the attribute array. Generate a new array if the attribute is interleaved
133
+
134
+
135
+ var getFuncs = ['getX', 'getY', 'getZ', 'getW'];
136
+
137
+ function attrBufferToArray(attr) {
138
+ if (attr.isInterleavedBufferAttribute) {
139
+ // use the typed array constructor to save on memory
140
+ var arr = new attr.array.constructor(attr.count * attr.itemSize);
141
+ var size = attr.itemSize;
142
+
143
+ for (var i = 0, l = attr.count; i < l; i++) {
144
+ for (var j = 0; j < size; j++) {
145
+ arr[i * size + j] = attr[getFuncs[j]](i);
146
+ }
147
+ }
148
+
149
+ return arr;
150
+ } else {
151
+ return attr.array;
152
+ }
153
+ } // Returns an array of the same type starting at the `st` index,
154
+ // and `ct` length
155
+
156
+
157
+ function subArray(arr, st, ct) {
158
+ if (Array.isArray(arr)) return arr.slice(st, st + ct);else return new arr.constructor(arr.buffer, st * arr.BYTES_PER_ELEMENT, ct);
159
+ } // Returns the string for a geometry's attribute
160
+
161
+
162
+ function getAttribute(attr, name, params, type) {
163
+ var array = attrBufferToArray(attr);
164
+ var res = "<source id=\"".concat(name, "\">") + "<float_array id=\"".concat(name, "-array\" count=\"").concat(array.length, "\">") + array.join(' ') + '</float_array>' + '<technique_common>' + "<accessor source=\"#".concat(name, "-array\" count=\"").concat(Math.floor(array.length / attr.itemSize), "\" stride=\"").concat(attr.itemSize, "\">") + params.map(function (n) {
165
+ return "<param name=\"".concat(n, "\" type=\"").concat(type, "\" />");
166
+ }).join('') + '</accessor>' + '</technique_common>' + '</source>';
167
+ return res;
168
+ } // Returns the string for a node's transform information
169
+
170
+
171
+ var transMat;
172
+
173
+ function getTransform(o) {
174
+ // ensure the object's matrix is up to date
175
+ // before saving the transform
176
+ o.updateMatrix();
177
+ transMat = transMat || new _three.Matrix4();
178
+ transMat.copy(o.matrix);
179
+ transMat.transpose();
180
+ return "<matrix>".concat(transMat.toArray().join(' '), "</matrix>");
181
+ } // Process the given piece of geometry into the geometry library
182
+ // Returns the mesh id
183
+
184
+
185
+ function processGeometry(g) {
186
+ var info = geometryInfo.get(g);
187
+
188
+ if (!info) {
189
+ // convert the geometry to bufferGeometry if it isn't already
190
+ var bufferGeometry = g;
191
+
192
+ if (bufferGeometry.isBufferGeometry !== true) {
193
+ throw new Error('THREE.ColladaExporter: Geometry is not of type THREE.BufferGeometry.');
194
+ }
195
+
196
+ var meshid = "Mesh".concat(libraryGeometries.length + 1);
197
+ var indexCount = bufferGeometry.index ? bufferGeometry.index.count * bufferGeometry.index.itemSize : bufferGeometry.attributes.position.count;
198
+ var groups = bufferGeometry.groups != null && bufferGeometry.groups.length !== 0 ? bufferGeometry.groups : [{
199
+ start: 0,
200
+ count: indexCount,
201
+ materialIndex: 0
202
+ }];
203
+ var gname = g.name ? " name=\"".concat(g.name, "\"") : '';
204
+ var gnode = "<geometry id=\"".concat(meshid, "\"").concat(gname, "><mesh>"); // define the geometry node and the vertices for the geometry
205
+
206
+ var posName = "".concat(meshid, "-position");
207
+ var vertName = "".concat(meshid, "-vertices");
208
+ gnode += getAttribute(bufferGeometry.attributes.position, posName, ['X', 'Y', 'Z'], 'float');
209
+ gnode += "<vertices id=\"".concat(vertName, "\"><input semantic=\"POSITION\" source=\"#").concat(posName, "\" /></vertices>"); // NOTE: We're not optimizing the attribute arrays here, so they're all the same length and
210
+ // can therefore share the same triangle indices. However, MeshLab seems to have trouble opening
211
+ // models with attributes that share an offset.
212
+ // MeshLab Bug#424: https://sourceforge.net/p/meshlab/bugs/424/
213
+ // serialize normals
214
+
215
+ var triangleInputs = "<input semantic=\"VERTEX\" source=\"#".concat(vertName, "\" offset=\"0\" />");
216
+
217
+ if ('normal' in bufferGeometry.attributes) {
218
+ var normName = "".concat(meshid, "-normal");
219
+ gnode += getAttribute(bufferGeometry.attributes.normal, normName, ['X', 'Y', 'Z'], 'float');
220
+ triangleInputs += "<input semantic=\"NORMAL\" source=\"#".concat(normName, "\" offset=\"0\" />");
221
+ } // serialize uvs
222
+
223
+
224
+ if ('uv' in bufferGeometry.attributes) {
225
+ var uvName = "".concat(meshid, "-texcoord");
226
+ gnode += getAttribute(bufferGeometry.attributes.uv, uvName, ['S', 'T'], 'float');
227
+ triangleInputs += "<input semantic=\"TEXCOORD\" source=\"#".concat(uvName, "\" offset=\"0\" set=\"0\" />");
228
+ } // serialize lightmap uvs
229
+
230
+
231
+ if ('uv2' in bufferGeometry.attributes) {
232
+ var _uvName = "".concat(meshid, "-texcoord2");
233
+
234
+ gnode += getAttribute(bufferGeometry.attributes.uv2, _uvName, ['S', 'T'], 'float');
235
+ triangleInputs += "<input semantic=\"TEXCOORD\" source=\"#".concat(_uvName, "\" offset=\"0\" set=\"1\" />");
236
+ } // serialize colors
237
+
238
+
239
+ if ('color' in bufferGeometry.attributes) {
240
+ var colName = "".concat(meshid, "-color");
241
+ gnode += getAttribute(bufferGeometry.attributes.color, colName, ['X', 'Y', 'Z'], 'uint8');
242
+ triangleInputs += "<input semantic=\"COLOR\" source=\"#".concat(colName, "\" offset=\"0\" />");
243
+ }
244
+
245
+ var indexArray = null;
246
+
247
+ if (bufferGeometry.index) {
248
+ indexArray = attrBufferToArray(bufferGeometry.index);
249
+ } else {
250
+ indexArray = new Array(indexCount);
251
+
252
+ for (var i = 0, l = indexArray.length; i < l; i++) {
253
+ indexArray[i] = i;
254
+ }
255
+ }
256
+
257
+ for (var _i = 0, _l = groups.length; _i < _l; _i++) {
258
+ var group = groups[_i];
259
+ var subarr = subArray(indexArray, group.start, group.count);
260
+ var polycount = subarr.length / 3;
261
+ gnode += "<triangles material=\"MESH_MATERIAL_".concat(group.materialIndex, "\" count=\"").concat(polycount, "\">");
262
+ gnode += triangleInputs;
263
+ gnode += "<p>".concat(subarr.join(' '), "</p>");
264
+ gnode += '</triangles>';
265
+ }
266
+
267
+ gnode += '</mesh></geometry>';
268
+ libraryGeometries.push(gnode);
269
+ info = {
270
+ meshid: meshid,
271
+ bufferGeometry: bufferGeometry
272
+ };
273
+ geometryInfo.set(g, info);
274
+ }
275
+
276
+ return info;
277
+ } // Process the given texture into the image library
278
+ // Returns the image library
279
+
280
+
281
+ function processTexture(tex) {
282
+ var texid = imageMap.get(tex);
283
+
284
+ if (texid == null) {
285
+ texid = "image-".concat(libraryImages.length + 1);
286
+ var ext = 'png';
287
+ var name = tex.name || texid;
288
+ var imageNode = "<image id=\"".concat(texid, "\" name=\"").concat(name, "\">");
289
+
290
+ if (version === '1.5.0') {
291
+ imageNode += "<init_from><ref>".concat(options.textureDirectory).concat(name, ".").concat(ext, "</ref></init_from>");
292
+ } else {
293
+ // version image node 1.4.1
294
+ imageNode += "<init_from>".concat(options.textureDirectory).concat(name, ".").concat(ext, "</init_from>");
295
+ }
296
+
297
+ imageNode += '</image>';
298
+ libraryImages.push(imageNode);
299
+ imageMap.set(tex, texid);
300
+ textures.push({
301
+ directory: options.textureDirectory,
302
+ name: name,
303
+ ext: ext,
304
+ data: imageToData(tex.image, ext),
305
+ original: tex
306
+ });
307
+ }
308
+
309
+ return texid;
310
+ } // Process the given material into the material and effect libraries
311
+ // Returns the material id
312
+
313
+
314
+ function processMaterial(m) {
315
+ var matid = materialMap.get(m);
316
+
317
+ if (matid == null) {
318
+ matid = "Mat".concat(libraryEffects.length + 1);
319
+ var type = 'phong';
320
+
321
+ if (m.isMeshLambertMaterial === true) {
322
+ type = 'lambert';
323
+ } else if (m.isMeshBasicMaterial === true) {
324
+ type = 'constant';
325
+
326
+ if (m.map !== null) {
327
+ // The Collada spec does not support diffuse texture maps with the
328
+ // constant shader type.
329
+ // mrdoob/three.js#15469
330
+ console.warn('ColladaExporter: Texture maps not supported with MeshBasicMaterial.');
331
+ }
332
+ }
333
+
334
+ var emissive = m.emissive ? m.emissive : new _three.Color(0, 0, 0);
335
+ var diffuse = m.color ? m.color : new _three.Color(0, 0, 0);
336
+ var specular = m.specular ? m.specular : new _three.Color(1, 1, 1);
337
+ var shininess = m.shininess || 0;
338
+ var reflectivity = m.reflectivity || 0; // Do not export and alpha map for the reasons mentioned in issue (#13792)
339
+ // in three.js alpha maps are black and white, but collada expects the alpha
340
+ // channel to specify the transparency
341
+
342
+ var transparencyNode = '';
343
+
344
+ if (m.transparent === true) {
345
+ transparencyNode += '<transparent>' + (m.map ? '<texture texture="diffuse-sampler"></texture>' : '<float>1</float>') + '</transparent>';
346
+
347
+ if (m.opacity < 1) {
348
+ transparencyNode += "<transparency><float>".concat(m.opacity, "</float></transparency>");
349
+ }
350
+ }
351
+
352
+ var techniqueNode = "<technique sid=\"common\"><".concat(type, ">") + '<emission>' + (m.emissiveMap ? '<texture texture="emissive-sampler" texcoord="TEXCOORD" />' : "<color sid=\"emission\">".concat(emissive.r, " ").concat(emissive.g, " ").concat(emissive.b, " 1</color>")) + '</emission>' + (type !== 'constant' ? '<diffuse>' + (m.map ? '<texture texture="diffuse-sampler" texcoord="TEXCOORD" />' : "<color sid=\"diffuse\">".concat(diffuse.r, " ").concat(diffuse.g, " ").concat(diffuse.b, " 1</color>")) + '</diffuse>' : '') + (type !== 'constant' ? '<bump>' + (m.normalMap ? '<texture texture="bump-sampler" texcoord="TEXCOORD" />' : '') + '</bump>' : '') + (type === 'phong' ? "<specular><color sid=\"specular\">".concat(specular.r, " ").concat(specular.g, " ").concat(specular.b, " 1</color></specular>") + '<shininess>' + (m.specularMap ? '<texture texture="specular-sampler" texcoord="TEXCOORD" />' : "<float sid=\"shininess\">".concat(shininess, "</float>")) + '</shininess>' : '') + "<reflective><color>".concat(diffuse.r, " ").concat(diffuse.g, " ").concat(diffuse.b, " 1</color></reflective>") + "<reflectivity><float>".concat(reflectivity, "</float></reflectivity>") + transparencyNode + "</".concat(type, "></technique>");
353
+ var effectnode = "<effect id=\"".concat(matid, "-effect\">") + '<profile_COMMON>' + (m.map ? '<newparam sid="diffuse-surface"><surface type="2D">' + "<init_from>".concat(processTexture(m.map), "</init_from>") + '</surface></newparam>' + '<newparam sid="diffuse-sampler"><sampler2D><source>diffuse-surface</source></sampler2D></newparam>' : '') + (m.specularMap ? '<newparam sid="specular-surface"><surface type="2D">' + "<init_from>".concat(processTexture(m.specularMap), "</init_from>") + '</surface></newparam>' + '<newparam sid="specular-sampler"><sampler2D><source>specular-surface</source></sampler2D></newparam>' : '') + (m.emissiveMap ? '<newparam sid="emissive-surface"><surface type="2D">' + "<init_from>".concat(processTexture(m.emissiveMap), "</init_from>") + '</surface></newparam>' + '<newparam sid="emissive-sampler"><sampler2D><source>emissive-surface</source></sampler2D></newparam>' : '') + (m.normalMap ? '<newparam sid="bump-surface"><surface type="2D">' + "<init_from>".concat(processTexture(m.normalMap), "</init_from>") + '</surface></newparam>' + '<newparam sid="bump-sampler"><sampler2D><source>bump-surface</source></sampler2D></newparam>' : '') + techniqueNode + (m.side === _three.DoubleSide ? '<extra><technique profile="THREEJS"><double_sided sid="double_sided" type="int">1</double_sided></technique></extra>' : '') + '</profile_COMMON>' + '</effect>';
354
+ var materialName = m.name ? " name=\"".concat(m.name, "\"") : '';
355
+ var materialNode = "<material id=\"".concat(matid, "\"").concat(materialName, "><instance_effect url=\"#").concat(matid, "-effect\" /></material>");
356
+ libraryMaterials.push(materialNode);
357
+ libraryEffects.push(effectnode);
358
+ materialMap.set(m, matid);
359
+ }
360
+
361
+ return matid;
362
+ } // Recursively process the object into a scene
363
+
364
+
365
+ function processObject(o) {
366
+ var node = "<node name=\"".concat(o.name, "\">");
367
+ node += getTransform(o);
368
+
369
+ if (o.isMesh === true && o.geometry !== null) {
370
+ // function returns the id associated with the mesh and a "BufferGeometry" version
371
+ // of the geometry in case it's not a geometry.
372
+ var geomInfo = processGeometry(o.geometry);
373
+ var meshid = geomInfo.meshid;
374
+ var geometry = geomInfo.bufferGeometry; // ids of the materials to bind to the geometry
375
+
376
+ var matids = null;
377
+ var matidsArray; // get a list of materials to bind to the sub groups of the geometry.
378
+ // If the amount of subgroups is greater than the materials, than reuse
379
+ // the materials.
380
+
381
+ var mat = o.material || new _three.MeshBasicMaterial();
382
+ var materials = Array.isArray(mat) ? mat : [mat];
383
+
384
+ if (geometry.groups.length > materials.length) {
385
+ matidsArray = new Array(geometry.groups.length);
386
+ } else {
387
+ matidsArray = new Array(materials.length);
388
+ }
389
+
390
+ matids = matidsArray.fill().map(function (v, i) {
391
+ return processMaterial(materials[i % materials.length]);
392
+ });
393
+ node += "<instance_geometry url=\"#".concat(meshid, "\">") + (matids != null ? '<bind_material><technique_common>' + matids.map(function (id, i) {
394
+ return "<instance_material symbol=\"MESH_MATERIAL_".concat(i, "\" target=\"#").concat(id, "\" >") + '<bind_vertex_input semantic="TEXCOORD" input_semantic="TEXCOORD" input_set="0" />' + '</instance_material>';
395
+ }).join('') + '</technique_common></bind_material>' : '') + '</instance_geometry>';
396
+ }
397
+
398
+ o.children.forEach(function (c) {
399
+ return node += processObject(c);
400
+ });
401
+ node += '</node>';
402
+ return node;
403
+ }
404
+
405
+ var geometryInfo = new WeakMap();
406
+ var materialMap = new WeakMap();
407
+ var imageMap = new WeakMap();
408
+ var textures = [];
409
+ var libraryImages = [];
410
+ var libraryGeometries = [];
411
+ var libraryEffects = [];
412
+ var libraryMaterials = [];
413
+ var libraryVisualScenes = processObject(object);
414
+ var specLink = version === '1.4.1' ? 'http://www.collada.org/2005/11/COLLADASchema' : 'https://www.khronos.org/collada/';
415
+ var dae = '<?xml version="1.0" encoding="UTF-8" standalone="no" ?>' + "<COLLADA xmlns=\"".concat(specLink, "\" version=\"").concat(version, "\">") + '<asset>' + ('<contributor>' + '<authoring_tool>three.js Collada Exporter</authoring_tool>' + (options.author !== null ? "<author>".concat(options.author, "</author>") : '') + '</contributor>' + "<created>".concat(new Date().toISOString(), "</created>") + "<modified>".concat(new Date().toISOString(), "</modified>") + (options.unitName !== null ? "<unit name=\"".concat(options.unitName, "\" meter=\"").concat(options.unitMeter, "\" />") : '') + "<up_axis>".concat(options.upAxis, "</up_axis>")) + '</asset>';
416
+ dae += "<library_images>".concat(libraryImages.join(''), "</library_images>");
417
+ dae += "<library_effects>".concat(libraryEffects.join(''), "</library_effects>");
418
+ dae += "<library_materials>".concat(libraryMaterials.join(''), "</library_materials>");
419
+ dae += "<library_geometries>".concat(libraryGeometries.join(''), "</library_geometries>");
420
+ dae += "<library_visual_scenes><visual_scene id=\"Scene\" name=\"scene\">".concat(libraryVisualScenes, "</visual_scene></library_visual_scenes>");
421
+ dae += '<scene><instance_visual_scene url="#Scene"/></scene>';
422
+ dae += '</COLLADA>';
423
+ var res = {
424
+ data: format(dae),
425
+ textures: textures
426
+ };
427
+
428
+ if (typeof onDone === 'function') {
429
+ requestAnimationFrame(function () {
430
+ return onDone(res);
431
+ });
432
+ }
433
+
434
+ return res;
435
+ }
436
+ }]);
437
+
438
+ return ColladaExporter;
439
+ }();
440
+
441
+ _exports.ColladaExporter = ColladaExporter;
442
+ });
@@ -0,0 +1,205 @@
1
+ (function (global, factory) {
2
+ if (typeof define === "function" && define.amd) {
3
+ define(["exports"], factory);
4
+ } else if (typeof exports !== "undefined") {
5
+ factory(exports);
6
+ } else {
7
+ var mod = {
8
+ exports: {}
9
+ };
10
+ factory(mod.exports);
11
+ global.DRACOExporter = mod.exports;
12
+ }
13
+ })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports) {
14
+ "use strict";
15
+
16
+ Object.defineProperty(_exports, "__esModule", {
17
+ value: true
18
+ });
19
+ _exports.DRACOExporter = void 0;
20
+
21
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
22
+
23
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
24
+
25
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
26
+
27
+ /**
28
+ * Export draco compressed files from threejs geometry objects.
29
+ *
30
+ * Draco files are compressed and usually are smaller than conventional 3D file formats.
31
+ *
32
+ * The exporter receives a options object containing
33
+ * - decodeSpeed, indicates how to tune the encoder regarding decode speed (0 gives better speed but worst quality)
34
+ * - encodeSpeed, indicates how to tune the encoder parameters (0 gives better speed but worst quality)
35
+ * - encoderMethod
36
+ * - quantization, indicates the presision of each type of data stored in the draco file in the order (POSITION, NORMAL, COLOR, TEX_COORD, GENERIC)
37
+ * - exportUvs
38
+ * - exportNormals
39
+ */
40
+
41
+ /* global DracoEncoderModule */
42
+ var DRACOExporter = /*#__PURE__*/function () {
43
+ function DRACOExporter() {
44
+ _classCallCheck(this, DRACOExporter);
45
+ }
46
+
47
+ _createClass(DRACOExporter, [{
48
+ key: "parse",
49
+ value: function parse(object) {
50
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
51
+ decodeSpeed: 5,
52
+ encodeSpeed: 5,
53
+ encoderMethod: DRACOExporter.MESH_EDGEBREAKER_ENCODING,
54
+ quantization: [16, 8, 8, 8, 8],
55
+ exportUvs: true,
56
+ exportNormals: true,
57
+ exportColor: false
58
+ };
59
+
60
+ if (object.isBufferGeometry === true) {
61
+ throw new Error('DRACOExporter: The first parameter of parse() is now an instance of Mesh or Points.');
62
+ }
63
+
64
+ if (DracoEncoderModule === undefined) {
65
+ throw new Error('THREE.DRACOExporter: required the draco_encoder to work.');
66
+ }
67
+
68
+ var geometry = object.geometry;
69
+ var dracoEncoder = DracoEncoderModule();
70
+ var encoder = new dracoEncoder.Encoder();
71
+ var builder;
72
+ var dracoObject;
73
+
74
+ if (geometry.isBufferGeometry !== true) {
75
+ throw new Error('THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.BufferGeometry instance.');
76
+ }
77
+
78
+ if (object.isMesh === true) {
79
+ builder = new dracoEncoder.MeshBuilder();
80
+ dracoObject = new dracoEncoder.Mesh();
81
+ var vertices = geometry.getAttribute('position');
82
+ builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array);
83
+ var faces = geometry.getIndex();
84
+
85
+ if (faces !== null) {
86
+ builder.AddFacesToMesh(dracoObject, faces.count / 3, faces.array);
87
+ } else {
88
+ var _faces = new (vertices.count > 65535 ? Uint32Array : Uint16Array)(vertices.count);
89
+
90
+ for (var i = 0; i < _faces.length; i++) {
91
+ _faces[i] = i;
92
+ }
93
+
94
+ builder.AddFacesToMesh(dracoObject, vertices.count, _faces);
95
+ }
96
+
97
+ if (options.exportNormals === true) {
98
+ var normals = geometry.getAttribute('normal');
99
+
100
+ if (normals !== undefined) {
101
+ builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.NORMAL, normals.count, normals.itemSize, normals.array);
102
+ }
103
+ }
104
+
105
+ if (options.exportUvs === true) {
106
+ var uvs = geometry.getAttribute('uv');
107
+
108
+ if (uvs !== undefined) {
109
+ builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array);
110
+ }
111
+ }
112
+
113
+ if (options.exportColor === true) {
114
+ var colors = geometry.getAttribute('color');
115
+
116
+ if (colors !== undefined) {
117
+ builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array);
118
+ }
119
+ }
120
+ } else if (object.isPoints === true) {
121
+ builder = new dracoEncoder.PointCloudBuilder();
122
+ dracoObject = new dracoEncoder.PointCloud();
123
+
124
+ var _vertices = geometry.getAttribute('position');
125
+
126
+ builder.AddFloatAttribute(dracoObject, dracoEncoder.POSITION, _vertices.count, _vertices.itemSize, _vertices.array);
127
+
128
+ if (options.exportColor === true) {
129
+ var _colors = geometry.getAttribute('color');
130
+
131
+ if (_colors !== undefined) {
132
+ builder.AddFloatAttribute(dracoObject, dracoEncoder.COLOR, _colors.count, _colors.itemSize, _colors.array);
133
+ }
134
+ }
135
+ } else {
136
+ throw new Error('DRACOExporter: Unsupported object type.');
137
+ } //Compress using draco encoder
138
+
139
+
140
+ var encodedData = new dracoEncoder.DracoInt8Array(); //Sets the desired encoding and decoding speed for the given options from 0 (slowest speed, but the best compression) to 10 (fastest, but the worst compression).
141
+
142
+ var encodeSpeed = options.encodeSpeed !== undefined ? options.encodeSpeed : 5;
143
+ var decodeSpeed = options.decodeSpeed !== undefined ? options.decodeSpeed : 5;
144
+ encoder.SetSpeedOptions(encodeSpeed, decodeSpeed); // Sets the desired encoding method for a given geometry.
145
+
146
+ if (options.encoderMethod !== undefined) {
147
+ encoder.SetEncodingMethod(options.encoderMethod);
148
+ } // Sets the quantization (number of bits used to represent) compression options for a named attribute.
149
+ // The attribute values will be quantized in a box defined by the maximum extent of the attribute values.
150
+
151
+
152
+ if (options.quantization !== undefined) {
153
+ for (var _i = 0; _i < 5; _i++) {
154
+ if (options.quantization[_i] !== undefined) {
155
+ encoder.SetAttributeQuantization(_i, options.quantization[_i]);
156
+ }
157
+ }
158
+ }
159
+
160
+ var length;
161
+
162
+ if (object.isMesh === true) {
163
+ length = encoder.EncodeMeshToDracoBuffer(dracoObject, encodedData);
164
+ } else {
165
+ length = encoder.EncodePointCloudToDracoBuffer(dracoObject, true, encodedData);
166
+ }
167
+
168
+ dracoEncoder.destroy(dracoObject);
169
+
170
+ if (length === 0) {
171
+ throw new Error('THREE.DRACOExporter: Draco encoding failed.');
172
+ } //Copy encoded data to buffer.
173
+
174
+
175
+ var outputData = new Int8Array(new ArrayBuffer(length));
176
+
177
+ for (var _i2 = 0; _i2 < length; _i2++) {
178
+ outputData[_i2] = encodedData.GetValue(_i2);
179
+ }
180
+
181
+ dracoEncoder.destroy(encodedData);
182
+ dracoEncoder.destroy(encoder);
183
+ dracoEncoder.destroy(builder);
184
+ return outputData;
185
+ }
186
+ }]);
187
+
188
+ return DRACOExporter;
189
+ }(); // Encoder methods
190
+
191
+
192
+ _exports.DRACOExporter = DRACOExporter;
193
+ DRACOExporter.MESH_EDGEBREAKER_ENCODING = 1;
194
+ DRACOExporter.MESH_SEQUENTIAL_ENCODING = 0; // Geometry type
195
+
196
+ DRACOExporter.POINT_CLOUD = 0;
197
+ DRACOExporter.TRIANGULAR_MESH = 1; // Attribute type
198
+
199
+ DRACOExporter.INVALID = -1;
200
+ DRACOExporter.POSITION = 0;
201
+ DRACOExporter.NORMAL = 1;
202
+ DRACOExporter.COLOR = 2;
203
+ DRACOExporter.TEX_COORD = 3;
204
+ DRACOExporter.GENERIC = 4;
205
+ });