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,427 @@
1
+ (function (global, factory) {
2
+ if (typeof define === "function" && define.amd) {
3
+ define(["exports", "three", "../misc/VolumeSlice.js"], factory);
4
+ } else if (typeof exports !== "undefined") {
5
+ factory(exports, require("three"), require("../misc/VolumeSlice.js"));
6
+ } else {
7
+ var mod = {
8
+ exports: {}
9
+ };
10
+ factory(mod.exports, global.three, global.VolumeSlice);
11
+ global.Volume = mod.exports;
12
+ }
13
+ })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _three, _VolumeSlice) {
14
+ "use strict";
15
+
16
+ Object.defineProperty(_exports, "__esModule", {
17
+ value: true
18
+ });
19
+ _exports.Volume = Volume;
20
+
21
+ /**
22
+ * This class had been written to handle the output of the NRRD loader.
23
+ * It contains a volume of data and informations about it.
24
+ * For now it only handles 3 dimensional data.
25
+ * See the webgl_loader_nrrd.html example and the loaderNRRD.js file to see how to use this class.
26
+ * @class
27
+ * @param {number} xLength Width of the volume
28
+ * @param {number} yLength Length of the volume
29
+ * @param {number} zLength Depth of the volume
30
+ * @param {string} type The type of data (uint8, uint16, ...)
31
+ * @param {ArrayBuffer} arrayBuffer The buffer with volume data
32
+ */
33
+ function Volume(xLength, yLength, zLength, type, arrayBuffer) {
34
+ if (arguments.length > 0) {
35
+ /**
36
+ * @member {number} xLength Width of the volume in the IJK coordinate system
37
+ */
38
+ this.xLength = Number(xLength) || 1;
39
+ /**
40
+ * @member {number} yLength Height of the volume in the IJK coordinate system
41
+ */
42
+
43
+ this.yLength = Number(yLength) || 1;
44
+ /**
45
+ * @member {number} zLength Depth of the volume in the IJK coordinate system
46
+ */
47
+
48
+ this.zLength = Number(zLength) || 1;
49
+ /**
50
+ * @member {Array<string>} The order of the Axis dictated by the NRRD header
51
+ */
52
+
53
+ this.axisOrder = ['x', 'y', 'z'];
54
+ /**
55
+ * @member {TypedArray} data Data of the volume
56
+ */
57
+
58
+ switch (type) {
59
+ case 'Uint8':
60
+ case 'uint8':
61
+ case 'uchar':
62
+ case 'unsigned char':
63
+ case 'uint8_t':
64
+ this.data = new Uint8Array(arrayBuffer);
65
+ break;
66
+
67
+ case 'Int8':
68
+ case 'int8':
69
+ case 'signed char':
70
+ case 'int8_t':
71
+ this.data = new Int8Array(arrayBuffer);
72
+ break;
73
+
74
+ case 'Int16':
75
+ case 'int16':
76
+ case 'short':
77
+ case 'short int':
78
+ case 'signed short':
79
+ case 'signed short int':
80
+ case 'int16_t':
81
+ this.data = new Int16Array(arrayBuffer);
82
+ break;
83
+
84
+ case 'Uint16':
85
+ case 'uint16':
86
+ case 'ushort':
87
+ case 'unsigned short':
88
+ case 'unsigned short int':
89
+ case 'uint16_t':
90
+ this.data = new Uint16Array(arrayBuffer);
91
+ break;
92
+
93
+ case 'Int32':
94
+ case 'int32':
95
+ case 'int':
96
+ case 'signed int':
97
+ case 'int32_t':
98
+ this.data = new Int32Array(arrayBuffer);
99
+ break;
100
+
101
+ case 'Uint32':
102
+ case 'uint32':
103
+ case 'uint':
104
+ case 'unsigned int':
105
+ case 'uint32_t':
106
+ this.data = new Uint32Array(arrayBuffer);
107
+ break;
108
+
109
+ case 'longlong':
110
+ case 'long long':
111
+ case 'long long int':
112
+ case 'signed long long':
113
+ case 'signed long long int':
114
+ case 'int64':
115
+ case 'int64_t':
116
+ case 'ulonglong':
117
+ case 'unsigned long long':
118
+ case 'unsigned long long int':
119
+ case 'uint64':
120
+ case 'uint64_t':
121
+ throw 'Error in Volume constructor : this type is not supported in JavaScript';
122
+ break;
123
+
124
+ case 'Float32':
125
+ case 'float32':
126
+ case 'float':
127
+ this.data = new Float32Array(arrayBuffer);
128
+ break;
129
+
130
+ case 'Float64':
131
+ case 'float64':
132
+ case 'double':
133
+ this.data = new Float64Array(arrayBuffer);
134
+ break;
135
+
136
+ default:
137
+ this.data = new Uint8Array(arrayBuffer);
138
+ }
139
+
140
+ if (this.data.length !== this.xLength * this.yLength * this.zLength) {
141
+ throw 'Error in Volume constructor, lengths are not matching arrayBuffer size';
142
+ }
143
+ }
144
+ /**
145
+ * @member {Array} spacing Spacing to apply to the volume from IJK to RAS coordinate system
146
+ */
147
+
148
+
149
+ this.spacing = [1, 1, 1];
150
+ /**
151
+ * @member {Array} offset Offset of the volume in the RAS coordinate system
152
+ */
153
+
154
+ this.offset = [0, 0, 0];
155
+ /**
156
+ * @member {Martrix3} matrix The IJK to RAS matrix
157
+ */
158
+
159
+ this.matrix = new _three.Matrix3();
160
+ this.matrix.identity();
161
+ /**
162
+ * @member {Martrix3} inverseMatrix The RAS to IJK matrix
163
+ */
164
+
165
+ /**
166
+ * @member {number} lowerThreshold The voxels with values under this threshold won't appear in the slices.
167
+ * If changed, geometryNeedsUpdate is automatically set to true on all the slices associated to this volume
168
+ */
169
+
170
+ var lowerThreshold = -Infinity;
171
+ Object.defineProperty(this, 'lowerThreshold', {
172
+ get: function get() {
173
+ return lowerThreshold;
174
+ },
175
+ set: function set(value) {
176
+ lowerThreshold = value;
177
+ this.sliceList.forEach(function (slice) {
178
+ slice.geometryNeedsUpdate = true;
179
+ });
180
+ }
181
+ });
182
+ /**
183
+ * @member {number} upperThreshold The voxels with values over this threshold won't appear in the slices.
184
+ * If changed, geometryNeedsUpdate is automatically set to true on all the slices associated to this volume
185
+ */
186
+
187
+ var upperThreshold = Infinity;
188
+ Object.defineProperty(this, 'upperThreshold', {
189
+ get: function get() {
190
+ return upperThreshold;
191
+ },
192
+ set: function set(value) {
193
+ upperThreshold = value;
194
+ this.sliceList.forEach(function (slice) {
195
+ slice.geometryNeedsUpdate = true;
196
+ });
197
+ }
198
+ });
199
+ /**
200
+ * @member {Array} sliceList The list of all the slices associated to this volume
201
+ */
202
+
203
+ this.sliceList = [];
204
+ /**
205
+ * @member {Array} RASDimensions This array holds the dimensions of the volume in the RAS space
206
+ */
207
+ }
208
+
209
+ Volume.prototype = {
210
+ constructor: Volume,
211
+
212
+ /**
213
+ * @member {Function} getData Shortcut for data[access(i,j,k)]
214
+ * @memberof Volume
215
+ * @param {number} i First coordinate
216
+ * @param {number} j Second coordinate
217
+ * @param {number} k Third coordinate
218
+ * @returns {number} value in the data array
219
+ */
220
+ getData: function getData(i, j, k) {
221
+ return this.data[k * this.xLength * this.yLength + j * this.xLength + i];
222
+ },
223
+
224
+ /**
225
+ * @member {Function} access compute the index in the data array corresponding to the given coordinates in IJK system
226
+ * @memberof Volume
227
+ * @param {number} i First coordinate
228
+ * @param {number} j Second coordinate
229
+ * @param {number} k Third coordinate
230
+ * @returns {number} index
231
+ */
232
+ access: function access(i, j, k) {
233
+ return k * this.xLength * this.yLength + j * this.xLength + i;
234
+ },
235
+
236
+ /**
237
+ * @member {Function} reverseAccess Retrieve the IJK coordinates of the voxel corresponding of the given index in the data
238
+ * @memberof Volume
239
+ * @param {number} index index of the voxel
240
+ * @returns {Array} [x,y,z]
241
+ */
242
+ reverseAccess: function reverseAccess(index) {
243
+ var z = Math.floor(index / (this.yLength * this.xLength));
244
+ var y = Math.floor((index - z * this.yLength * this.xLength) / this.xLength);
245
+ var x = index - z * this.yLength * this.xLength - y * this.xLength;
246
+ return [x, y, z];
247
+ },
248
+
249
+ /**
250
+ * @member {Function} map Apply a function to all the voxels, be careful, the value will be replaced
251
+ * @memberof Volume
252
+ * @param {Function} functionToMap A function to apply to every voxel, will be called with the following parameters :
253
+ * value of the voxel
254
+ * index of the voxel
255
+ * the data (TypedArray)
256
+ * @param {Object} context You can specify a context in which call the function, default if this Volume
257
+ * @returns {Volume} this
258
+ */
259
+ map: function map(functionToMap, context) {
260
+ var length = this.data.length;
261
+ context = context || this;
262
+
263
+ for (var i = 0; i < length; i++) {
264
+ this.data[i] = functionToMap.call(context, this.data[i], i, this.data);
265
+ }
266
+
267
+ return this;
268
+ },
269
+
270
+ /**
271
+ * @member {Function} extractPerpendicularPlane Compute the orientation of the slice and returns all the information relative to the geometry such as sliceAccess, the plane matrix (orientation and position in RAS coordinate) and the dimensions of the plane in both coordinate system.
272
+ * @memberof Volume
273
+ * @param {string} axis the normal axis to the slice 'x' 'y' or 'z'
274
+ * @param {number} index the index of the slice
275
+ * @returns {Object} an object containing all the usefull information on the geometry of the slice
276
+ */
277
+ extractPerpendicularPlane: function extractPerpendicularPlane(axis, RASIndex) {
278
+ var iLength,
279
+ jLength,
280
+ sliceAccess,
281
+ planeMatrix = new _three.Matrix4().identity(),
282
+ volume = this,
283
+ planeWidth,
284
+ planeHeight,
285
+ firstSpacing,
286
+ secondSpacing,
287
+ positionOffset,
288
+ IJKIndex;
289
+ var axisInIJK = new _three.Vector3(),
290
+ firstDirection = new _three.Vector3(),
291
+ secondDirection = new _three.Vector3();
292
+ var dimensions = new _three.Vector3(this.xLength, this.yLength, this.zLength);
293
+
294
+ switch (axis) {
295
+ case 'x':
296
+ axisInIJK.set(1, 0, 0);
297
+ firstDirection.set(0, 0, -1);
298
+ secondDirection.set(0, -1, 0);
299
+ firstSpacing = this.spacing[this.axisOrder.indexOf('z')];
300
+ secondSpacing = this.spacing[this.axisOrder.indexOf('y')];
301
+ IJKIndex = new _three.Vector3(RASIndex, 0, 0);
302
+ planeMatrix.multiply(new _three.Matrix4().makeRotationY(Math.PI / 2));
303
+ positionOffset = (volume.RASDimensions[0] - 1) / 2;
304
+ planeMatrix.setPosition(new _three.Vector3(RASIndex - positionOffset, 0, 0));
305
+ break;
306
+
307
+ case 'y':
308
+ axisInIJK.set(0, 1, 0);
309
+ firstDirection.set(1, 0, 0);
310
+ secondDirection.set(0, 0, 1);
311
+ firstSpacing = this.spacing[this.axisOrder.indexOf('x')];
312
+ secondSpacing = this.spacing[this.axisOrder.indexOf('z')];
313
+ IJKIndex = new _three.Vector3(0, RASIndex, 0);
314
+ planeMatrix.multiply(new _three.Matrix4().makeRotationX(-Math.PI / 2));
315
+ positionOffset = (volume.RASDimensions[1] - 1) / 2;
316
+ planeMatrix.setPosition(new _three.Vector3(0, RASIndex - positionOffset, 0));
317
+ break;
318
+
319
+ case 'z':
320
+ default:
321
+ axisInIJK.set(0, 0, 1);
322
+ firstDirection.set(1, 0, 0);
323
+ secondDirection.set(0, -1, 0);
324
+ firstSpacing = this.spacing[this.axisOrder.indexOf('x')];
325
+ secondSpacing = this.spacing[this.axisOrder.indexOf('y')];
326
+ IJKIndex = new _three.Vector3(0, 0, RASIndex);
327
+ positionOffset = (volume.RASDimensions[2] - 1) / 2;
328
+ planeMatrix.setPosition(new _three.Vector3(0, 0, RASIndex - positionOffset));
329
+ break;
330
+ }
331
+
332
+ firstDirection.applyMatrix4(volume.inverseMatrix).normalize();
333
+ firstDirection.argVar = 'i';
334
+ secondDirection.applyMatrix4(volume.inverseMatrix).normalize();
335
+ secondDirection.argVar = 'j';
336
+ axisInIJK.applyMatrix4(volume.inverseMatrix).normalize();
337
+ iLength = Math.floor(Math.abs(firstDirection.dot(dimensions)));
338
+ jLength = Math.floor(Math.abs(secondDirection.dot(dimensions)));
339
+ planeWidth = Math.abs(iLength * firstSpacing);
340
+ planeHeight = Math.abs(jLength * secondSpacing);
341
+ IJKIndex = Math.abs(Math.round(IJKIndex.applyMatrix4(volume.inverseMatrix).dot(axisInIJK)));
342
+ var base = [new _three.Vector3(1, 0, 0), new _three.Vector3(0, 1, 0), new _three.Vector3(0, 0, 1)];
343
+ var iDirection = [firstDirection, secondDirection, axisInIJK].find(function (x) {
344
+ return Math.abs(x.dot(base[0])) > 0.9;
345
+ });
346
+ var jDirection = [firstDirection, secondDirection, axisInIJK].find(function (x) {
347
+ return Math.abs(x.dot(base[1])) > 0.9;
348
+ });
349
+ var kDirection = [firstDirection, secondDirection, axisInIJK].find(function (x) {
350
+ return Math.abs(x.dot(base[2])) > 0.9;
351
+ });
352
+
353
+ sliceAccess = function sliceAccess(i, j) {
354
+ var accessI, accessJ, accessK;
355
+ var si = iDirection === axisInIJK ? IJKIndex : iDirection.argVar === 'i' ? i : j;
356
+ var sj = jDirection === axisInIJK ? IJKIndex : jDirection.argVar === 'i' ? i : j;
357
+ var sk = kDirection === axisInIJK ? IJKIndex : kDirection.argVar === 'i' ? i : j; // invert indices if necessary
358
+
359
+ var accessI = iDirection.dot(base[0]) > 0 ? si : volume.xLength - 1 - si;
360
+ var accessJ = jDirection.dot(base[1]) > 0 ? sj : volume.yLength - 1 - sj;
361
+ var accessK = kDirection.dot(base[2]) > 0 ? sk : volume.zLength - 1 - sk;
362
+ return volume.access(accessI, accessJ, accessK);
363
+ };
364
+
365
+ return {
366
+ iLength: iLength,
367
+ jLength: jLength,
368
+ sliceAccess: sliceAccess,
369
+ matrix: planeMatrix,
370
+ planeWidth: planeWidth,
371
+ planeHeight: planeHeight
372
+ };
373
+ },
374
+
375
+ /**
376
+ * @member {Function} extractSlice Returns a slice corresponding to the given axis and index
377
+ * The coordinate are given in the Right Anterior Superior coordinate format
378
+ * @memberof Volume
379
+ * @param {string} axis the normal axis to the slice 'x' 'y' or 'z'
380
+ * @param {number} index the index of the slice
381
+ * @returns {VolumeSlice} the extracted slice
382
+ */
383
+ extractSlice: function extractSlice(axis, index) {
384
+ var slice = new _VolumeSlice.VolumeSlice(this, index, axis);
385
+ this.sliceList.push(slice);
386
+ return slice;
387
+ },
388
+
389
+ /**
390
+ * @member {Function} repaintAllSlices Call repaint on all the slices extracted from this volume
391
+ * @see VolumeSlice.repaint
392
+ * @memberof Volume
393
+ * @returns {Volume} this
394
+ */
395
+ repaintAllSlices: function repaintAllSlices() {
396
+ this.sliceList.forEach(function (slice) {
397
+ slice.repaint();
398
+ });
399
+ return this;
400
+ },
401
+
402
+ /**
403
+ * @member {Function} computeMinMax Compute the minimum and the maximum of the data in the volume
404
+ * @memberof Volume
405
+ * @returns {Array} [min,max]
406
+ */
407
+ computeMinMax: function computeMinMax() {
408
+ var min = Infinity;
409
+ var max = -Infinity; // buffer the length
410
+
411
+ var datasize = this.data.length;
412
+ var i = 0;
413
+
414
+ for (i = 0; i < datasize; i++) {
415
+ if (!isNaN(this.data[i])) {
416
+ var value = this.data[i];
417
+ min = Math.min(min, value);
418
+ max = Math.max(max, value);
419
+ }
420
+ }
421
+
422
+ this.min = min;
423
+ this.max = max;
424
+ return [min, max];
425
+ }
426
+ };
427
+ });
@@ -0,0 +1,210 @@
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.VolumeSlice = 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.VolumeSlice = VolumeSlice;
20
+
21
+ /**
22
+ * This class has been made to hold a slice of a volume data
23
+ * @class
24
+ * @param {Volume} volume The associated volume
25
+ * @param {number} [index=0] The index of the slice
26
+ * @param {string} [axis='z'] For now only 'x', 'y' or 'z' but later it will change to a normal vector
27
+ * @see Volume
28
+ */
29
+ function VolumeSlice(volume, index, axis) {
30
+ var slice = this;
31
+ /**
32
+ * @member {Volume} volume The associated volume
33
+ */
34
+
35
+ this.volume = volume;
36
+ /**
37
+ * @member {Number} index The index of the slice, if changed, will automatically call updateGeometry at the next repaint
38
+ */
39
+
40
+ index = index || 0;
41
+ Object.defineProperty(this, 'index', {
42
+ get: function get() {
43
+ return index;
44
+ },
45
+ set: function set(value) {
46
+ index = value;
47
+ slice.geometryNeedsUpdate = true;
48
+ return index;
49
+ }
50
+ });
51
+ /**
52
+ * @member {String} axis The normal axis
53
+ */
54
+
55
+ this.axis = axis || 'z';
56
+ /**
57
+ * @member {HTMLCanvasElement} canvas The final canvas used for the texture
58
+ */
59
+
60
+ /**
61
+ * @member {CanvasRenderingContext2D} ctx Context of the canvas
62
+ */
63
+
64
+ this.canvas = document.createElement('canvas');
65
+ /**
66
+ * @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
67
+ */
68
+
69
+ /**
70
+ * @member {CanvasRenderingContext2D} ctxBuffer Context of the canvas buffer
71
+ */
72
+
73
+ this.canvasBuffer = document.createElement('canvas');
74
+ this.updateGeometry();
75
+ var canvasMap = new _three.Texture(this.canvas);
76
+ canvasMap.minFilter = _three.LinearFilter;
77
+ canvasMap.wrapS = canvasMap.wrapT = _three.ClampToEdgeWrapping;
78
+ var material = new _three.MeshBasicMaterial({
79
+ map: canvasMap,
80
+ side: _three.DoubleSide,
81
+ transparent: true
82
+ });
83
+ /**
84
+ * @member {Mesh} mesh The mesh ready to get used in the scene
85
+ */
86
+
87
+ this.mesh = new _three.Mesh(this.geometry, material);
88
+ this.mesh.matrixAutoUpdate = false;
89
+ /**
90
+ * @member {Boolean} geometryNeedsUpdate If set to true, updateGeometry will be triggered at the next repaint
91
+ */
92
+
93
+ this.geometryNeedsUpdate = true;
94
+ this.repaint();
95
+ /**
96
+ * @member {Number} iLength Width of slice in the original coordinate system, corresponds to the width of the buffer canvas
97
+ */
98
+
99
+ /**
100
+ * @member {Number} jLength Height of slice in the original coordinate system, corresponds to the height of the buffer canvas
101
+ */
102
+
103
+ /**
104
+ * @member {Function} sliceAccess Function that allow the slice to access right data
105
+ * @see Volume.extractPerpendicularPlane
106
+ * @param {Number} i The first coordinate
107
+ * @param {Number} j The second coordinate
108
+ * @returns {Number} the index corresponding to the voxel in volume.data of the given position in the slice
109
+ */
110
+ }
111
+
112
+ VolumeSlice.prototype = {
113
+ constructor: VolumeSlice,
114
+
115
+ /**
116
+ * @member {Function} repaint Refresh the texture and the geometry if geometryNeedsUpdate is set to true
117
+ * @memberof VolumeSlice
118
+ */
119
+ repaint: function repaint() {
120
+ if (this.geometryNeedsUpdate) {
121
+ this.updateGeometry();
122
+ }
123
+
124
+ var iLength = this.iLength,
125
+ jLength = this.jLength,
126
+ sliceAccess = this.sliceAccess,
127
+ volume = this.volume,
128
+ canvas = this.canvasBuffer,
129
+ ctx = this.ctxBuffer; // get the imageData and pixel array from the canvas
130
+
131
+ var imgData = ctx.getImageData(0, 0, iLength, jLength);
132
+ var data = imgData.data;
133
+ var volumeData = volume.data;
134
+ var upperThreshold = volume.upperThreshold;
135
+ var lowerThreshold = volume.lowerThreshold;
136
+ var windowLow = volume.windowLow;
137
+ var windowHigh = volume.windowHigh; // manipulate some pixel elements
138
+
139
+ var pixelCount = 0;
140
+
141
+ if (volume.dataType === 'label') {
142
+ //this part is currently useless but will be used when colortables will be handled
143
+ for (var j = 0; j < jLength; j++) {
144
+ for (var i = 0; i < iLength; i++) {
145
+ var label = volumeData[sliceAccess(i, j)];
146
+ label = label >= this.colorMap.length ? label % this.colorMap.length + 1 : label;
147
+ var color = this.colorMap[label];
148
+ data[4 * pixelCount] = color >> 24 & 0xff;
149
+ data[4 * pixelCount + 1] = color >> 16 & 0xff;
150
+ data[4 * pixelCount + 2] = color >> 8 & 0xff;
151
+ data[4 * pixelCount + 3] = color & 0xff;
152
+ pixelCount++;
153
+ }
154
+ }
155
+ } else {
156
+ for (var j = 0; j < jLength; j++) {
157
+ for (var i = 0; i < iLength; i++) {
158
+ var value = volumeData[sliceAccess(i, j)];
159
+ var alpha = 0xff; //apply threshold
160
+
161
+ alpha = upperThreshold >= value ? lowerThreshold <= value ? alpha : 0 : 0; //apply window level
162
+
163
+ value = Math.floor(255 * (value - windowLow) / (windowHigh - windowLow));
164
+ value = value > 255 ? 255 : value < 0 ? 0 : value | 0;
165
+ data[4 * pixelCount] = value;
166
+ data[4 * pixelCount + 1] = value;
167
+ data[4 * pixelCount + 2] = value;
168
+ data[4 * pixelCount + 3] = alpha;
169
+ pixelCount++;
170
+ }
171
+ }
172
+ }
173
+
174
+ ctx.putImageData(imgData, 0, 0);
175
+ this.ctx.drawImage(canvas, 0, 0, iLength, jLength, 0, 0, this.canvas.width, this.canvas.height);
176
+ this.mesh.material.map.needsUpdate = true;
177
+ },
178
+
179
+ /**
180
+ * @member {Function} Refresh the geometry according to axis and index
181
+ * @see Volume.extractPerpendicularPlane
182
+ * @memberof VolumeSlice
183
+ */
184
+ updateGeometry: function updateGeometry() {
185
+ var extracted = this.volume.extractPerpendicularPlane(this.axis, this.index);
186
+ this.sliceAccess = extracted.sliceAccess;
187
+ this.jLength = extracted.jLength;
188
+ this.iLength = extracted.iLength;
189
+ this.matrix = extracted.matrix;
190
+ this.canvas.width = extracted.planeWidth;
191
+ this.canvas.height = extracted.planeHeight;
192
+ this.canvasBuffer.width = this.iLength;
193
+ this.canvasBuffer.height = this.jLength;
194
+ this.ctx = this.canvas.getContext('2d');
195
+ this.ctxBuffer = this.canvasBuffer.getContext('2d');
196
+ if (this.geometry) this.geometry.dispose(); // dispose existing geometry
197
+
198
+ this.geometry = new _three.PlaneGeometry(extracted.planeWidth, extracted.planeHeight);
199
+
200
+ if (this.mesh) {
201
+ this.mesh.geometry = this.geometry; //reset mesh matrix
202
+
203
+ this.mesh.matrix.identity();
204
+ this.mesh.applyMatrix4(this.matrix);
205
+ }
206
+
207
+ this.geometryNeedsUpdate = false;
208
+ }
209
+ };
210
+ });