ohzi-core 6.16.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/README.md +9 -9
  2. package/build/index.module.js +1 -1
  3. package/build/index.module.js.map +1 -1
  4. package/package.json +51 -51
  5. package/src/.vscode/settings.json +2 -2
  6. package/src/BaseApplication.js +23 -23
  7. package/src/Browser.js +79 -79
  8. package/src/CameraManager.js +19 -19
  9. package/src/Capabilities.js +11 -11
  10. package/src/Configuration.js +22 -22
  11. package/src/CustomBezierCurve.js +44 -44
  12. package/src/Debug.js +260 -260
  13. package/src/EventManager.js +150 -150
  14. package/src/Graphics.js +337 -337
  15. package/src/Initializer.js +57 -57
  16. package/src/Input.js +66 -66
  17. package/src/KeyboardInput.js +135 -135
  18. package/src/OS.js +58 -58
  19. package/src/OScreen.js +74 -74
  20. package/src/OrthographicCamera.js +21 -21
  21. package/src/PerspectiveCamera.js +21 -21
  22. package/src/ReflectionPlaneContext.js +17 -17
  23. package/src/RenderLayers.js +28 -28
  24. package/src/RenderLoop.js +97 -97
  25. package/src/RenderOrder.js +38 -38
  26. package/src/ResourceContainer.js +39 -39
  27. package/src/SceneManager.js +44 -44
  28. package/src/Screen.js +54 -54
  29. package/src/Time.js +57 -57
  30. package/src/UI.js +90 -90
  31. package/src/action_sequencer/ActionEvent.js +15 -15
  32. package/src/action_sequencer/ActionInterpolator.js +23 -23
  33. package/src/action_sequencer/ActionSequencer.js +245 -246
  34. package/src/action_sequencer/NumberInterpolator.js +25 -25
  35. package/src/action_sequencer/VectorInterpolator.js +20 -20
  36. package/src/blitter_index.js +13 -13
  37. package/src/canvas_drawer/CanvasDrawer.js +111 -111
  38. package/src/canvas_drawer/MultiLineTextDrawer.js +49 -49
  39. package/src/canvas_drawer/SimpleTextDrawer.js +47 -47
  40. package/src/components/AudioClip.js +55 -55
  41. package/src/components/AxisHelper.js +58 -58
  42. package/src/components/BaseObject.js +45 -45
  43. package/src/components/EdgeMesh.js +151 -151
  44. package/src/components/GeometryEdgeVisualizer.js +45 -45
  45. package/src/components/Grid.js +33 -33
  46. package/src/components/Line.js +199 -199
  47. package/src/components/MultiLinePath.js +19 -19
  48. package/src/components/MultiLineText2D.js +62 -62
  49. package/src/components/ObjectAxis.js +20 -20
  50. package/src/components/ObjectOrientedBoundingBox.js +201 -201
  51. package/src/components/PlaneHelper.js +36 -36
  52. package/src/components/Shape2D.js +42 -42
  53. package/src/components/Shape3D.js +38 -38
  54. package/src/components/Text2D.js +39 -39
  55. package/src/components/UIElement.js +208 -208
  56. package/src/components/UpdatableMaterialMesh.js +16 -16
  57. package/src/components/WorldImage.js +91 -91
  58. package/src/components/mouse_interactors/ObjectRotator.js +61 -61
  59. package/src/components/sdf_text/SDFText.js +154 -154
  60. package/src/components/sdf_text/SDFTextBatch.js +193 -193
  61. package/src/components/sdf_text/TextGlyph.js +15 -15
  62. package/src/data_textures/CustomDataTexture.js +51 -51
  63. package/src/data_textures/RGBADataTexture.js +12 -12
  64. package/src/data_textures/RGBAFloatDataTexture.js +12 -12
  65. package/src/data_textures/RGBDataTexture.js +12 -12
  66. package/src/data_textures/RGBFloatDataTexture.js +12 -12
  67. package/src/editor/ManipulatorHandle.js +70 -70
  68. package/src/editor/ObjectEditor.js +66 -66
  69. package/src/editor/ObjectManipulator.js +118 -118
  70. package/src/editor/ObjectPicker.js +75 -75
  71. package/src/editor/shaders/object_picker.frag +5 -5
  72. package/src/editor/shaders/object_picker.vert +7 -7
  73. package/src/gpu_particles/GPUParticleSystem.js +87 -87
  74. package/src/gpu_particles/ParticleAttribute.js +83 -83
  75. package/src/gpu_particles/ParticlePositionAttribute.js +20 -20
  76. package/src/html_utilities/CSSAnimator.js +64 -64
  77. package/src/html_utilities/css_animator_states/Animating.js +44 -45
  78. package/src/html_utilities/css_animator_states/Idle.js +25 -25
  79. package/src/index.js +217 -217
  80. package/src/materials/AddMaterial.js +17 -17
  81. package/src/materials/AlphaFilterMaterial.js +20 -20
  82. package/src/materials/BaseShaderMaterial.js +19 -19
  83. package/src/materials/BlitMaterial.js +28 -28
  84. package/src/materials/BloomComposeMaterial.js +22 -22
  85. package/src/materials/BoxBlurMaterial.js +13 -13
  86. package/src/materials/ClearAlphaMaterial.js +13 -13
  87. package/src/materials/ClearColorMaterial.js +31 -31
  88. package/src/materials/ClearDepthNormalMaterial.js +13 -13
  89. package/src/materials/DeferredRendererComposeMaterial.js +32 -32
  90. package/src/materials/DepthNormalMaterial.js +28 -28
  91. package/src/materials/DisplayNormalTextureMaterial.js +15 -15
  92. package/src/materials/DualFilteringBlurMaterial.js +11 -11
  93. package/src/materials/FXAAMaterial.js +10 -10
  94. package/src/materials/GaussianBlurMaterial.js +28 -28
  95. package/src/materials/LuminosityHighPassMaterial.js +15 -15
  96. package/src/materials/MedianFilterMaterial.js +42 -42
  97. package/src/materials/NormalMaterial.js +17 -17
  98. package/src/materials/SDFScreenTextMaterial.js +31 -31
  99. package/src/materials/SDFTextMaterial.js +38 -37
  100. package/src/materials/SSAOComposeMaterial.js +11 -11
  101. package/src/materials/SSAOMaterial.js +65 -66
  102. package/src/materials/ScreenSpaceTextureMaterial.js +65 -65
  103. package/src/materials/UIElementMaterial.js +27 -27
  104. package/src/materials/UnrealBloomComposeMaterial.js +95 -95
  105. package/src/materials/UnrealBlurMaterial.js +17 -17
  106. package/src/materials/UnrealComposeMaterial.js +24 -24
  107. package/src/materials/ViewPositionMaterial.js +17 -17
  108. package/src/materials/deferred/DeferredPointLightMaterial.js +39 -39
  109. package/src/materials/gpu_particles/AttributeUpdateMaterial.js +33 -33
  110. package/src/materials/gpu_particles/BasicParticleMaterial.js +23 -23
  111. package/src/materials/gpu_particles/ParticleStorageMaterial.js +27 -27
  112. package/src/materials/gpu_particles/PositionStorageMaterial.js +10 -10
  113. package/src/object_pool/Pool.js +73 -73
  114. package/src/primitives/Arrow.js +57 -57
  115. package/src/primitives/Cube.js +17 -17
  116. package/src/primitives/HorizontalPlane.js +18 -18
  117. package/src/primitives/Sphere.js +15 -15
  118. package/src/primitives/VerticalPlane.js +17 -17
  119. package/src/raycast/GroupRaycaster.js +41 -41
  120. package/src/raycast/PlaneDragResolver.js +89 -89
  121. package/src/raycast/PlaneRaycastResolver.js +22 -22
  122. package/src/raycast/PlaneRaycaster.js +23 -23
  123. package/src/raycast/RaycastResolver.js +22 -22
  124. package/src/raycast/SurfaceDragResolver.js +77 -77
  125. package/src/raycast/states/BaseState.js +16 -16
  126. package/src/raycast/states/IdleState.js +17 -17
  127. package/src/raycast/states/OnRaycastEnter.js +15 -15
  128. package/src/raycast/states/OnRaycastExit.js +16 -16
  129. package/src/raycast/states/OnRaycastHover.js +25 -25
  130. package/src/render_mode/BaseRender.js +32 -32
  131. package/src/render_mode/BloomRender.js +61 -61
  132. package/src/render_mode/DebugNormalsRender.js +20 -20
  133. package/src/render_mode/DeferredRender.js +112 -112
  134. package/src/render_mode/NormalAORender.js +71 -71
  135. package/src/render_mode/NormalRender.js +36 -36
  136. package/src/render_mode/OutlineRender.js +154 -154
  137. package/src/render_mode/PlanarReflectionsRender.js +118 -118
  138. package/src/render_mode/TransparencyMixRender.js +143 -143
  139. package/src/render_mode/UnrealBloomRender.js +109 -109
  140. package/src/render_utilities/Blitter.js +99 -99
  141. package/src/render_utilities/Blurrer.js +29 -29
  142. package/src/render_utilities/DepthAndNormalsRenderer.js +45 -45
  143. package/src/render_utilities/DualFilteringBlurrer.js +56 -56
  144. package/src/render_utilities/GaussianBlurrer.js +146 -146
  145. package/src/render_utilities/MedianFilter.js +66 -66
  146. package/src/render_utilities/ViewPositionRenderer.js +48 -48
  147. package/src/resource_loader/BasisLoader.js +49 -49
  148. package/src/resource_loader/FontLoader.js +46 -46
  149. package/src/resource_loader/JSONLoader.js +30 -30
  150. package/src/resource_loader/OBJLoader.js +46 -46
  151. package/src/resource_loader/PointArrayLoader.js +70 -70
  152. package/src/resource_loader/RGBETextureLoader.js +46 -46
  153. package/src/resource_loader/VideoLoader.js +30 -30
  154. package/src/shaders/add/add.frag +8 -8
  155. package/src/shaders/anti_aliasing/fxaa.frag +71 -71
  156. package/src/shaders/basic_color/basic_color.frag +5 -5
  157. package/src/shaders/basic_color/basic_color.vert +9 -9
  158. package/src/shaders/basic_line/basic_line.frag +36 -36
  159. package/src/shaders/basic_line/basic_line.vert +36 -36
  160. package/src/shaders/basic_texture/basic_texture.frag +9 -9
  161. package/src/shaders/basic_texture/basic_texture.vert +16 -16
  162. package/src/shaders/bloom/bloom_compose_frag.glsl +22 -22
  163. package/src/shaders/bloom/cheap_bloom_compose_frag.glsl +13 -13
  164. package/src/shaders/box_blur/box_blur.frag +24 -24
  165. package/src/shaders/box_blur/compose.frag +31 -31
  166. package/src/shaders/clear/clear_depth_normal.frag +24 -24
  167. package/src/shaders/copy/copy.frag +6 -6
  168. package/src/shaders/copy/copy.vert +5 -5
  169. package/src/shaders/deferred/blit_copy.vert +11 -11
  170. package/src/shaders/deferred/deferred_compose.frag +59 -59
  171. package/src/shaders/deferred/point_light.frag +66 -66
  172. package/src/shaders/deferred/point_light.vert +13 -13
  173. package/src/shaders/depth_normals/debug_normals.frag +47 -47
  174. package/src/shaders/depth_normals/depth_normals.frag +30 -30
  175. package/src/shaders/depth_normals/depth_normals.vert +12 -12
  176. package/src/shaders/dual_filter_blur/alpha_filter.frag +14 -14
  177. package/src/shaders/dual_filter_blur/downsample.frag +21 -21
  178. package/src/shaders/dual_filter_blur/upsample.frag +24 -24
  179. package/src/shaders/edge_visualizer/edge_visualizer.frag +17 -17
  180. package/src/shaders/edge_visualizer/edge_visualizer.vert +15 -15
  181. package/src/shaders/edges/corners.frag +10 -10
  182. package/src/shaders/edges/corners.vert +30 -30
  183. package/src/shaders/edges/edges.frag +6 -6
  184. package/src/shaders/edges/edges.vert +27 -27
  185. package/src/shaders/gaussian_blur/gaussian_blur.frag +24 -24
  186. package/src/shaders/gaussian_blur/unreal_bloom_compose.frag +24 -24
  187. package/src/shaders/gpu_particles/common_utils.glsl +12 -12
  188. package/src/shaders/gpu_particles/generic_storage.frag +7 -7
  189. package/src/shaders/gpu_particles/store/store_position.vert +14 -14
  190. package/src/shaders/gpu_particles/update/basic_update.frag +20 -20
  191. package/src/shaders/gpu_particles/visualize/visualize.frag +10 -10
  192. package/src/shaders/gpu_particles/visualize/visualize.vert +12 -12
  193. package/src/shaders/grid/grid.frag +16 -16
  194. package/src/shaders/grid/grid.vert +9 -9
  195. package/src/shaders/luminosity_high_pass/luminosity_high_pass.frag +22 -22
  196. package/src/shaders/median_filter/median_filter.frag +134 -134
  197. package/src/shaders/normal/normal.frag +6 -6
  198. package/src/shaders/normal/normal.vert +6 -6
  199. package/src/shaders/sdf_text/sdf_screen_text.frag +51 -51
  200. package/src/shaders/sdf_text/sdf_screen_text.vert +41 -41
  201. package/src/shaders/sdf_text/sdf_text.frag +53 -53
  202. package/src/shaders/sdf_text/sdf_text.vert +41 -41
  203. package/src/shaders/ssao/hbao.frag +264 -264
  204. package/src/shaders/ssao/ssao.frag +95 -95
  205. package/src/shaders/ssao/ssao.vert +10 -10
  206. package/src/shaders/ssao/ssao_compose.frag +14 -14
  207. package/src/shaders/transparent_mix/copy.frag +6 -6
  208. package/src/shaders/transparent_mix/transparent_mix.frag +18 -18
  209. package/src/shaders/transparent_mix/transparent_mix.vert +7 -7
  210. package/src/shaders/ui/ss_texture.frag +10 -10
  211. package/src/shaders/ui/ss_texture.vert +31 -31
  212. package/src/shaders/ui/ws_texture.vert +38 -38
  213. package/src/shaders/ui_element/ui_element.frag +11 -11
  214. package/src/shaders/ui_element/ui_element.vert +32 -32
  215. package/src/shaders/unreal_blur/unreal_blur.frag +24 -24
  216. package/src/shaders/unreal_blur/unreal_compose.frag +23 -23
  217. package/src/shaders/write_view_position/write_view_position.frag +6 -6
  218. package/src/shaders/write_view_position/write_view_position.vert +8 -8
  219. package/src/static_batcher/BatchedMesh.js +54 -54
  220. package/src/static_batcher/GeometryBatch.js +312 -312
  221. package/src/static_batcher/GeometryBatcher.js +63 -63
  222. package/src/static_batcher/MeshBatcher.js +56 -56
  223. package/src/ui/ui_element_position/ScreenSpacePosition.js +14 -14
  224. package/src/ui/ui_element_position/WorldSpacePosition.js +21 -21
  225. package/src/ui/ui_element_state/OnIdle.js +17 -17
  226. package/src/ui/ui_element_state/OnMouseEnter.js +26 -26
  227. package/src/ui/ui_element_state/OnMouseExit.js +15 -15
  228. package/src/ui/ui_element_state/OnMouseHover.js +31 -31
  229. package/src/ui/ui_element_state/UIElementState.js +18 -18
  230. package/src/utilities/ArrayUtilities.js +55 -55
  231. package/src/utilities/CameraUtilities.js +210 -210
  232. package/src/utilities/EasingFunctions.js +226 -226
  233. package/src/utilities/FrustumPointFitter.js +255 -255
  234. package/src/utilities/GeometryUtilities.js +74 -74
  235. package/src/utilities/HTMLUtilities.js +44 -44
  236. package/src/utilities/ImageUtilities.js +26 -26
  237. package/src/utilities/MeshSampler.js +205 -205
  238. package/src/utilities/ModelUtilities.js +161 -161
  239. package/src/utilities/OMath.js +154 -155
  240. package/src/utilities/OrthographicFrustumPointFitter.js +47 -47
  241. package/src/utilities/PerspectiveFrustumPointFitter.js +251 -250
  242. package/src/utilities/StringUtilities.js +32 -32
  243. package/src/utilities/TimeUtilities.js +22 -22
  244. package/src/utilities/Validation.js +34 -34
  245. package/src/view_components/ApplicationView.js +75 -75
  246. package/src/view_components/ViewComponent.js +72 -72
  247. package/src/view_components/ViewComponentManager.js +68 -68
  248. package/src/view_components/ViewContext.js +14 -14
  249. package/src/view_components/ViewManager.js +189 -189
  250. package/src/view_components/ViewState.js +54 -54
  251. package/src/view_components/transition/ActionSequencerBuilder.js +106 -106
  252. package/src/view_components/transition/DrawIOAnimationSheet.js +90 -90
  253. package/src/view_components/transition/TransitionTable.js +54 -54
  254. package/src/view_components/transition/ViewStateTransitionHandler.js +96 -96
  255. package/types/BaseApplication.d.ts +8 -8
  256. package/types/Browser.d.ts +12 -12
  257. package/types/CameraManager.d.ts +8 -8
  258. package/types/Capabilities.d.ts +6 -6
  259. package/types/Configuration.d.ts +6 -6
  260. package/types/Debug.d.ts +38 -38
  261. package/types/EventManager.d.ts +42 -42
  262. package/types/Graphics.d.ts +35 -35
  263. package/types/Initializer.d.ts +4 -4
  264. package/types/Input.d.ts +170 -170
  265. package/types/OS.d.ts +18 -18
  266. package/types/OScreen.d.ts +18 -18
  267. package/types/OrthographicCamera.d.ts +5 -5
  268. package/types/PerspectiveCamera.d.ts +5 -5
  269. package/types/ReflectionPlaneContext.d.ts +6 -6
  270. package/types/RenderLayers.d.ts +6 -6
  271. package/types/RenderLoop.d.ts +12 -12
  272. package/types/ResourceContainer.d.ts +8 -8
  273. package/types/SceneManager.d.ts +10 -10
  274. package/types/Screen.d.ts +17 -17
  275. package/types/Time.d.ts +11 -11
  276. package/types/UI.d.ts +15 -15
  277. package/types/action_sequencer/ActionEvent.d.ts +6 -6
  278. package/types/action_sequencer/ActionInterpolator.d.ts +5 -5
  279. package/types/action_sequencer/ActionSequencer.d.ts +30 -30
  280. package/types/action_sequencer/NumberInterpolator.d.ts +8 -8
  281. package/types/action_sequencer/VectorInterpolator.d.ts +7 -7
  282. package/types/canvas_drawer/CanvasDrawer.d.ts +13 -13
  283. package/types/canvas_drawer/MultiLineTextDrawer.d.ts +5 -5
  284. package/types/canvas_drawer/SimpleTextDrawer.d.ts +5 -5
  285. package/types/components/AudioClip.d.ts +12 -12
  286. package/types/components/AxisHelper.d.ts +6 -6
  287. package/types/components/BaseObject.d.ts +5 -5
  288. package/types/components/EdgeMesh.d.ts +13 -13
  289. package/types/components/GeometryEdgeVisualizer.d.ts +4 -4
  290. package/types/components/Grid.d.ts +2 -2
  291. package/types/components/Line.d.ts +16 -16
  292. package/types/components/MultiLinePath.d.ts +4 -4
  293. package/types/components/MultiLineText2D.d.ts +10 -10
  294. package/types/components/ObjectAxis.d.ts +3 -3
  295. package/types/components/ObjectOrientedBoundingBox.d.ts +18 -18
  296. package/types/components/PlaneHelper.d.ts +6 -6
  297. package/types/components/Shape2D.d.ts +4 -4
  298. package/types/components/Shape3D.d.ts +3 -3
  299. package/types/components/Text2D.d.ts +13 -13
  300. package/types/components/UIElement.d.ts +52 -52
  301. package/types/components/UpdatableMaterialMesh.d.ts +4 -4
  302. package/types/components/WorldImage.d.ts +13 -13
  303. package/types/components/sdf_text/SDFText.d.ts +30 -30
  304. package/types/components/sdf_text/SDFTextBatch.d.ts +12 -12
  305. package/types/components/sdf_text/TextGlyph.d.ts +6 -6
  306. package/types/editor/ManipulatorHandle.d.ts +14 -14
  307. package/types/editor/ObjectEditor.d.ts +16 -16
  308. package/types/editor/ObjectManipulator.d.ts +19 -19
  309. package/types/editor/ObjectPicker.d.ts +16 -16
  310. package/types/gpu_particles/GPUParticleSystem.d.ts +12 -12
  311. package/types/gpu_particles/ParticleAttribute.d.ts +15 -15
  312. package/types/gpu_particles/ParticlePositionAttribute.d.ts +4 -4
  313. package/types/html_utilities/CSSAnimator.d.ts +30 -30
  314. package/types/html_utilities/css_animator_states/Animating.d.ts +8 -8
  315. package/types/html_utilities/css_animator_states/Idle.d.ts +6 -6
  316. package/types/index.d.ts +90 -90
  317. package/types/materials/AddMaterial.d.ts +5 -5
  318. package/types/materials/AlphaFilterMaterial.d.ts +6 -6
  319. package/types/materials/BaseShaderMaterial.d.ts +3 -3
  320. package/types/materials/BlitMaterial.d.ts +3 -3
  321. package/types/materials/BloomComposeMaterial.d.ts +7 -7
  322. package/types/materials/BoxBlurMaterial.d.ts +4 -4
  323. package/types/materials/ClearAlphaMaterial.d.ts +3 -3
  324. package/types/materials/ClearColorMaterial.d.ts +7 -7
  325. package/types/materials/ClearDepthNormalMaterial.d.ts +4 -4
  326. package/types/materials/DeferredRendererComposeMaterial.d.ts +7 -7
  327. package/types/materials/DepthNormalMaterial.d.ts +4 -4
  328. package/types/materials/DisplayNormalTextureMaterial.d.ts +4 -4
  329. package/types/materials/DualFilteringBlurMaterial.d.ts +4 -4
  330. package/types/materials/FXAAMaterial.d.ts +3 -3
  331. package/types/materials/GaussianBlurMaterial.d.ts +6 -6
  332. package/types/materials/LuminosityHighPassMaterial.d.ts +4 -4
  333. package/types/materials/MedianFilterMaterial.d.ts +6 -6
  334. package/types/materials/NormalMaterial.d.ts +2 -2
  335. package/types/materials/SDFScreenTextMaterial.d.ts +11 -11
  336. package/types/materials/SDFTextMaterial.d.ts +12 -12
  337. package/types/materials/SSAOComposeMaterial.d.ts +4 -4
  338. package/types/materials/SSAOMaterial.d.ts +6 -6
  339. package/types/materials/ScreenSpaceTextureMaterial.d.ts +7 -7
  340. package/types/materials/UIElementMaterial.d.ts +7 -7
  341. package/types/materials/UnrealBloomComposeMaterial.d.ts +17 -17
  342. package/types/materials/UnrealBlurMaterial.d.ts +4 -4
  343. package/types/materials/UnrealComposeMaterial.d.ts +4 -4
  344. package/types/materials/ViewPositionMaterial.d.ts +3 -3
  345. package/types/materials/deferred/DeferredPointLightMaterial.d.ts +10 -10
  346. package/types/materials/gpu_particles/ParticleStorageMaterial.d.ts +3 -3
  347. package/types/materials/gpu_particles/PositionStorageMaterial.d.ts +4 -4
  348. package/types/object_pool/Pool.d.ts +10 -10
  349. package/types/primitives/Arrow.d.ts +8 -8
  350. package/types/primitives/Cube.d.ts +3 -3
  351. package/types/primitives/HorizontalPlane.d.ts +3 -3
  352. package/types/primitives/Sphere.d.ts +3 -3
  353. package/types/primitives/VerticalPlane.d.ts +3 -3
  354. package/types/raycast/GroupRaycaster.d.ts +13 -13
  355. package/types/raycast/PlaneDragResolver.d.ts +14 -14
  356. package/types/raycast/PlaneRaycastResolver.d.ts +5 -5
  357. package/types/raycast/PlaneRaycaster.d.ts +7 -7
  358. package/types/raycast/RaycastResolver.d.ts +5 -5
  359. package/types/raycast/SurfaceDragResolver.d.ts +13 -13
  360. package/types/raycast/states/BaseState.d.ts +5 -5
  361. package/types/raycast/states/IdleState.d.ts +5 -5
  362. package/types/raycast/states/OnRaycastEnter.d.ts +5 -5
  363. package/types/raycast/states/OnRaycastExit.d.ts +4 -4
  364. package/types/raycast/states/OnRaycastHover.d.ts +4 -4
  365. package/types/render_mode/BaseRender.d.ts +7 -7
  366. package/types/render_mode/BloomRender.d.ts +10 -10
  367. package/types/render_mode/DebugNormalsRender.d.ts +4 -4
  368. package/types/render_mode/DeferredRender.d.ts +9 -9
  369. package/types/render_mode/NormalAORender.d.ts +16 -16
  370. package/types/render_mode/NormalRender.d.ts +4 -4
  371. package/types/render_mode/OutlineRender.d.ts +20 -20
  372. package/types/render_mode/PlanarReflectionsRender.d.ts +13 -13
  373. package/types/render_mode/TransparencyMixRender.d.ts +21 -21
  374. package/types/render_mode/UnrealBloomRender.d.ts +19 -19
  375. package/types/render_utilities/Blitter.d.ts +16 -16
  376. package/types/render_utilities/Blurrer.d.ts +9 -9
  377. package/types/render_utilities/DepthAndNormalsRenderer.d.ts +12 -12
  378. package/types/render_utilities/DualFilteringBlurrer.d.ts +19 -19
  379. package/types/render_utilities/GaussianBlurrer.d.ts +27 -27
  380. package/types/render_utilities/MedianFilter.d.ts +10 -10
  381. package/types/render_utilities/ViewPositionRenderer.d.ts +9 -9
  382. package/types/resource_loader/AbstractLoader.d.ts +18 -18
  383. package/types/resource_loader/AsyncTextureLoader.ts +6 -6
  384. package/types/resource_loader/AudioLoader.d.ts +8 -8
  385. package/types/resource_loader/BasisLoader.d.ts +6 -6
  386. package/types/resource_loader/CubemapLoader.d.ts +7 -7
  387. package/types/resource_loader/DAELoader.d.ts +6 -6
  388. package/types/resource_loader/DDSLoader.d.ts +6 -6
  389. package/types/resource_loader/FileLoader.d.ts +6 -6
  390. package/types/resource_loader/FontLoader.d.ts +6 -6
  391. package/types/resource_loader/GLTFDRACOLoader.d.ts +6 -6
  392. package/types/resource_loader/GLTFLoader.d.ts +5 -5
  393. package/types/resource_loader/HDRCubeTextureLoader.d.ts +7 -7
  394. package/types/resource_loader/JSONLoader.d.ts +6 -6
  395. package/types/resource_loader/OBJLoader.d.ts +6 -6
  396. package/types/resource_loader/PointArrayLoader.d.ts +7 -7
  397. package/types/resource_loader/RGBETextureLoader.d.ts +6 -6
  398. package/types/resource_loader/ResourceBatch.d.ts +13 -13
  399. package/types/resource_loader/SVGLoader.d.ts +6 -6
  400. package/types/resource_loader/TextLoader.d.ts +6 -6
  401. package/types/resource_loader/TextureLoader.d.ts +6 -6
  402. package/types/resource_loader/VideoLoader.d.ts +6 -6
  403. package/types/static_batcher/GeometryBatch.d.ts +37 -37
  404. package/types/static_batcher/GeometryBatcher.d.ts +7 -7
  405. package/types/ui/ui_element_position/ScreenSpacePosition.d.ts +4 -4
  406. package/types/ui/ui_element_position/WorldSpacePosition.d.ts +5 -5
  407. package/types/ui/ui_element_state/OnIdle.d.ts +5 -5
  408. package/types/ui/ui_element_state/OnMouseEnter.d.ts +5 -5
  409. package/types/ui/ui_element_state/OnMouseExit.d.ts +5 -5
  410. package/types/ui/ui_element_state/OnMouseHover.d.ts +5 -5
  411. package/types/ui/ui_element_state/UIElementState.d.ts +5 -5
  412. package/types/utilities/ArrayUtilities.d.ts +7 -7
  413. package/types/utilities/CameraUtilities.d.ts +24 -24
  414. package/types/utilities/EasingFunctions.d.ts +35 -35
  415. package/types/utilities/FrustumPointFitter.d.ts +14 -14
  416. package/types/utilities/GeometryUtilities.d.ts +4 -4
  417. package/types/utilities/HTMLUtilities.d.ts +10 -10
  418. package/types/utilities/ImageUtilities.d.ts +4 -4
  419. package/types/utilities/MeshSampler.d.ts +14 -14
  420. package/types/utilities/ModelUtilities.d.ts +13 -13
  421. package/types/utilities/OMath.d.ts +21 -21
  422. package/types/utilities/ObjectUtilities.d.ts +16 -16
  423. package/types/utilities/OrthographicFrustumPointFitter.d.ts +7 -7
  424. package/types/utilities/PerspectiveFrustumPointFitter.d.ts +12 -12
  425. package/types/utilities/StringUtilities.d.ts +5 -5
  426. package/types/utilities/TimeUtilities.d.ts +3 -3
  427. package/types/utilities/Validation.d.ts +6 -6
  428. package/types/view_components/ApplicationView.d.ts +20 -20
  429. package/types/view_components/ViewComponent.d.ts +15 -15
  430. package/types/view_components/ViewComponentManager.d.ts +10 -10
  431. package/types/view_components/ViewContext.d.ts +6 -6
  432. package/types/view_components/ViewManager.d.ts +24 -24
  433. package/types/view_components/ViewState.d.ts +15 -15
  434. package/types/view_components/transition/ActionSequencerBuilder.d.ts +15 -15
  435. package/types/view_components/transition/DrawIOAnimationSheet.d.ts +17 -17
  436. package/types/view_components/transition/TransitionTable.d.ts +8 -8
  437. package/types/view_components/transition/ViewStateTransitionHandler.d.ts +16 -16
@@ -1,47 +1,47 @@
1
- import { Vector3, Box3 } from 'three';
2
-
3
- export default class OrthographicFrustumPointFitter
4
- {
5
- constructor()
6
- {
7
-
8
- }
9
-
10
- fit_points(points, camera_quaternion, vertical_fov, aspect)
11
- {
12
- const inverse_camera_quat = camera_quaternion.clone().inverse();
13
-
14
- const inverted_points = [];
15
-
16
- for (let i = 0; i < points.length; i++)
17
- {
18
- inverted_points.push(points[i].clone().applyQuaternion(inverse_camera_quat));
19
- }
20
-
21
- const box = new Box3().setFromPoints(inverted_points);
22
- const size = new Vector3();
23
- box.getSize(size);
24
-
25
- const distance = this.get_distance_to_fit_rect(size.x / 2, size.y / 2, vertical_fov, aspect);
26
-
27
- const center = new Vector3();
28
- box.getCenter(center);
29
-
30
- center.applyQuaternion(camera_quaternion);
31
-
32
- return {
33
- center: center,
34
- distance_to_center: distance
35
- };
36
- }
37
-
38
- get_distance_to_fit_rect(width, height, vertical_fov, aspect)
39
- {
40
- const v_fov = (vertical_fov / 2) * Math.PI / 180;
41
- const h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;
42
-
43
- const distV = height / Math.tan(v_fov);
44
- const distH = width / Math.tan(h_fov);
45
- return Math.max(Math.abs(distH), Math.abs(distV));
46
- }
47
- }
1
+ import { Vector3, Box3 } from 'three';
2
+
3
+ export default class OrthographicFrustumPointFitter
4
+ {
5
+ constructor()
6
+ {
7
+
8
+ }
9
+
10
+ fit_points(points, camera_quaternion, vertical_fov, aspect)
11
+ {
12
+ const inverse_camera_quat = camera_quaternion.clone().inverse();
13
+
14
+ const inverted_points = [];
15
+
16
+ for (let i = 0; i < points.length; i++)
17
+ {
18
+ inverted_points.push(points[i].clone().applyQuaternion(inverse_camera_quat));
19
+ }
20
+
21
+ const box = new Box3().setFromPoints(inverted_points);
22
+ const size = new Vector3();
23
+ box.getSize(size);
24
+
25
+ const distance = this.get_distance_to_fit_rect(size.x / 2, size.y / 2, vertical_fov, aspect);
26
+
27
+ const center = new Vector3();
28
+ box.getCenter(center);
29
+
30
+ center.applyQuaternion(camera_quaternion);
31
+
32
+ return {
33
+ center: center,
34
+ distance_to_center: distance
35
+ };
36
+ }
37
+
38
+ get_distance_to_fit_rect(width, height, vertical_fov, aspect)
39
+ {
40
+ const v_fov = (vertical_fov / 2) * Math.PI / 180;
41
+ const h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;
42
+
43
+ const distV = height / Math.tan(v_fov);
44
+ const distH = width / Math.tan(h_fov);
45
+ return Math.max(Math.abs(distH), Math.abs(distV));
46
+ }
47
+ }
@@ -1,250 +1,251 @@
1
- import { Vector3, Plane, Quaternion, Sphere, Math as TMath, Line3 } from 'three';
2
- export default class PerspectiveFrustumPointFitter
3
- {
4
- constructor()
5
- {
6
- this.sphere = new Sphere();
7
- }
8
-
9
- fit_points(points, camera_quaternion, vertical_fov, aspect)
10
- {
11
- this.sphere.setFromPoints(points);
12
-
13
- const v_fov = TMath.degToRad(vertical_fov / 2);
14
- const h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;
15
-
16
- const up_plane_normal = this.get_up_plane_normal(camera_quaternion, v_fov);
17
- const down_plane_normal = this.get_down_plane_normal(camera_quaternion, v_fov);
18
- const left_plane_normal = this.get_left_plane_normal(camera_quaternion, h_fov);
19
- const right_plane_normal = this.get_right_plane_normal(camera_quaternion, h_fov);
20
-
21
- const camera_forward_dir = new Vector3(0, 0, -1).applyQuaternion(camera_quaternion);
22
-
23
- const sphere_center = this.sphere.center.clone();
24
-
25
- const pull_back_distance = this.get_distance_to_fit_rect(this.sphere.radius * 2, this.sphere.radius * 2, vertical_fov, aspect);
26
- const far_pos = sphere_center.clone().add(camera_forward_dir.clone().multiplyScalar(pull_back_distance * -1));
27
-
28
- const up_plane = new Plane().setFromNormalAndCoplanarPoint(up_plane_normal, far_pos);
29
- const down_plane = new Plane().setFromNormalAndCoplanarPoint(down_plane_normal, far_pos);
30
-
31
- const left_plane = new Plane().setFromNormalAndCoplanarPoint(left_plane_normal, far_pos);
32
- const right_plane = new Plane().setFromNormalAndCoplanarPoint(right_plane_normal, far_pos);
33
-
34
- this.apply_center_correction_to_pos(far_pos, points, camera_quaternion, up_plane, down_plane, left_plane, right_plane);
35
-
36
- up_plane.setFromNormalAndCoplanarPoint(up_plane_normal, far_pos);
37
- down_plane.setFromNormalAndCoplanarPoint(down_plane_normal, far_pos);
38
-
39
- left_plane.setFromNormalAndCoplanarPoint(left_plane_normal, far_pos);
40
- right_plane.setFromNormalAndCoplanarPoint(right_plane_normal, far_pos);
41
-
42
- let closest_distance = Infinity;
43
-
44
- const inverse_dir = camera_forward_dir.clone().multiplyScalar(pull_back_distance * -2);
45
- for (let i = 0; i < points.length; i++)
46
- {
47
- const line = new Line3(points[i].clone(), points[i].clone().add(inverse_dir));
48
-
49
- const up_line_intersection = new Vector3();
50
- const down_line_intersection = new Vector3();
51
-
52
- const left_line_intersection = new Vector3();
53
- const right_line_intersection = new Vector3();
54
-
55
- up_plane.intersectLine(line, up_line_intersection);
56
- down_plane.intersectLine(line, down_line_intersection);
57
-
58
- left_plane.intersectLine(line, left_line_intersection);
59
- right_plane.intersectLine(line, right_line_intersection);
60
-
61
- if (up_line_intersection.length() < 0.0001)
62
- {
63
- console.log('up intersection not found', i);
64
- }
65
- if (down_line_intersection.length() < 0.0001)
66
- {
67
- console.log('down intersection not found', i);
68
- }
69
- if (left_line_intersection.length() < 0.0001)
70
- {
71
- console.log('left intersection not found', i);
72
- }
73
- if (right_line_intersection.length() < 0.0001)
74
- {
75
- console.log('right intersection not found', i);
76
- }
77
-
78
- const new_up_distance = points[i].clone().sub(up_line_intersection).length();
79
- const new_down_distance = points[i].clone().sub(down_line_intersection).length();
80
-
81
- const new_left_distance = points[i].clone().sub(left_line_intersection).length();
82
- const new_right_distance = points[i].clone().sub(right_line_intersection).length();
83
-
84
- const vertical_min = Math.min(new_up_distance, new_down_distance);
85
- const horizontal_min = Math.min(new_left_distance, new_right_distance);
86
-
87
- const min = Math.min(vertical_min, horizontal_min);
88
-
89
- if (min < closest_distance)
90
- {
91
- closest_distance = min;
92
- }
93
- }
94
-
95
- const forward_correction = camera_forward_dir.clone().multiplyScalar(closest_distance);
96
- const closest_position = far_pos.clone().add(forward_correction);
97
-
98
- return closest_position;
99
- }
100
-
101
- apply_center_correction_to_pos(target_pos, points, camera_quaternion, up_plane, down_plane, left_plane, right_plane)
102
- {
103
- const vertical_offset = this.get_vertical_correction(points, down_plane, up_plane, camera_quaternion);
104
- const horizontal_offset = this.get_horizontal_correction(points, left_plane, right_plane, camera_quaternion);
105
-
106
- target_pos.add(vertical_offset);
107
- target_pos.add(horizontal_offset);
108
- }
109
-
110
- get_vertical_correction(points, down_plane, up_plane, camera_quaternion)
111
- {
112
- let closest_distance_to_up_plane = Infinity;
113
- let closest_distance_to_down_plane = Infinity;
114
- // let closest_up_point = undefined;
115
- // let closest_down_point = undefined;
116
-
117
- const up_dir = new Vector3(0, 1, 0).applyQuaternion(camera_quaternion);
118
- for (let i = 0; i < points.length; i++)
119
- {
120
- const down_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(-5000000)));
121
- const up_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(5000000)));
122
-
123
- const down_line_intersection = new Vector3();
124
- const up_line_intersection = new Vector3();
125
-
126
- down_plane.intersectLine(down_line, down_line_intersection);
127
- up_plane.intersectLine(up_line, up_line_intersection);
128
-
129
- const down_dist = down_line_intersection.distanceTo(points[i]);
130
- const up_dist = up_line_intersection.distanceTo(points[i]);
131
-
132
- if (up_line_intersection.length() < 0.0001)
133
- {
134
- console.log('vertical up intersection not found', i);
135
- }
136
- if (down_line_intersection.length() < 0.0001)
137
- {
138
- console.log('vertical down intersection not found', i);
139
- }
140
-
141
- if (down_dist < closest_distance_to_down_plane)
142
- {
143
- closest_distance_to_down_plane = down_dist;
144
- // closest_down_point = points[i];
145
- }
146
- if (up_dist < closest_distance_to_up_plane)
147
- {
148
- closest_distance_to_up_plane = up_dist;
149
- // closest_up_point = points[i];
150
- }
151
- }
152
-
153
- const correction = (closest_distance_to_up_plane - closest_distance_to_down_plane) / 2;
154
-
155
- // console.log("vertical_correction", correction)
156
- return up_dir.clone().multiplyScalar(-correction);
157
- }
158
-
159
- get_horizontal_correction(points, left_plane, right_plane, camera_quaternion)
160
- {
161
- let closest_distance_to_right_plane = Infinity;
162
- let closest_distance_to_left_plane = Infinity;
163
- // let closest_right_point = undefined;
164
- // let closest_left_point = undefined;
165
-
166
- const right_dir = new Vector3(1, 0, 0).applyQuaternion(camera_quaternion);
167
-
168
- for (let i = 0; i < points.length; i++)
169
- {
170
- const left_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(-5000000)));
171
- const right_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(5000000)));
172
-
173
- const left_line_intersection = new Vector3();
174
- const right_line_intersection = new Vector3();
175
-
176
- left_plane.intersectLine(left_line, left_line_intersection);
177
- right_plane.intersectLine(right_line, right_line_intersection);
178
-
179
- const left_dist = left_line_intersection.distanceTo(points[i]);
180
- const right_dist = right_line_intersection.distanceTo(points[i]);
181
-
182
- if (left_line_intersection.length() < 0.0001)
183
- {
184
- console.log('left intersection not found', i);
185
- }
186
- if (right_line_intersection.length() < 0.0001)
187
- {
188
- console.log('right intersection not found', i);
189
- }
190
-
191
- if (left_dist < closest_distance_to_left_plane)
192
- {
193
- closest_distance_to_left_plane = left_dist;
194
- // closest_left_point = points[i];
195
- }
196
- if (right_dist < closest_distance_to_right_plane)
197
- {
198
- closest_distance_to_right_plane = right_dist;
199
- // closest_right_point = points[i];
200
- }
201
- }
202
-
203
- const correction = (closest_distance_to_right_plane - closest_distance_to_left_plane) / 2;
204
- // console.log("horizontal_correction", correction)
205
-
206
- return right_dir.clone().multiplyScalar(-correction);
207
- }
208
-
209
- get_up_plane_normal(camera_quaternion, v_fov)
210
- {
211
- const up_plane_normal = new Vector3(0, -1, 0);
212
- up_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), v_fov));
213
- up_plane_normal.applyQuaternion(camera_quaternion);
214
- return up_plane_normal;
215
- }
216
-
217
- get_down_plane_normal(camera_quaternion, v_fov)
218
- {
219
- const down_plane_normal = new Vector3(0, 1, 0);
220
- down_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), -v_fov));
221
- down_plane_normal.applyQuaternion(camera_quaternion);
222
- return down_plane_normal;
223
- }
224
-
225
- get_left_plane_normal(camera_quaternion, h_fov)
226
- {
227
- const left_plane_normal = new Vector3(1, 0, 0);
228
- left_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), h_fov));
229
- left_plane_normal.applyQuaternion(camera_quaternion);
230
- return left_plane_normal;
231
- }
232
-
233
- get_right_plane_normal(camera_quaternion, h_fov)
234
- {
235
- const right_plane_normal = new Vector3(-1, 0, 0);
236
- right_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), -h_fov));
237
- right_plane_normal.applyQuaternion(camera_quaternion);
238
- return right_plane_normal;
239
- }
240
-
241
- get_distance_to_fit_rect(width, height, vertical_fov, aspect)
242
- {
243
- const v_fov = (vertical_fov / 2) * Math.PI / 180;
244
- const h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;
245
-
246
- const distV = height / Math.tan(v_fov);
247
- const distH = width / Math.tan(h_fov);
248
- return Math.max(Math.abs(distH), Math.abs(distV));
249
- }
250
- }
1
+ import { Vector3, Plane, Quaternion, Sphere, Line3 } from 'three';
2
+ import OMath from './OMath';
3
+ export default class PerspectiveFrustumPointFitter
4
+ {
5
+ constructor()
6
+ {
7
+ this.sphere = new Sphere();
8
+ }
9
+
10
+ fit_points(points, camera_quaternion, vertical_fov, aspect)
11
+ {
12
+ this.sphere.setFromPoints(points);
13
+
14
+ const v_fov = OMath.degToRad(vertical_fov / 2);
15
+ const h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;
16
+
17
+ const up_plane_normal = this.get_up_plane_normal(camera_quaternion, v_fov);
18
+ const down_plane_normal = this.get_down_plane_normal(camera_quaternion, v_fov);
19
+ const left_plane_normal = this.get_left_plane_normal(camera_quaternion, h_fov);
20
+ const right_plane_normal = this.get_right_plane_normal(camera_quaternion, h_fov);
21
+
22
+ const camera_forward_dir = new Vector3(0, 0, -1).applyQuaternion(camera_quaternion);
23
+
24
+ const sphere_center = this.sphere.center.clone();
25
+
26
+ const pull_back_distance = this.get_distance_to_fit_rect(this.sphere.radius * 2, this.sphere.radius * 2, vertical_fov, aspect);
27
+ const far_pos = sphere_center.clone().add(camera_forward_dir.clone().multiplyScalar(pull_back_distance * -1));
28
+
29
+ const up_plane = new Plane().setFromNormalAndCoplanarPoint(up_plane_normal, far_pos);
30
+ const down_plane = new Plane().setFromNormalAndCoplanarPoint(down_plane_normal, far_pos);
31
+
32
+ const left_plane = new Plane().setFromNormalAndCoplanarPoint(left_plane_normal, far_pos);
33
+ const right_plane = new Plane().setFromNormalAndCoplanarPoint(right_plane_normal, far_pos);
34
+
35
+ this.apply_center_correction_to_pos(far_pos, points, camera_quaternion, up_plane, down_plane, left_plane, right_plane);
36
+
37
+ up_plane.setFromNormalAndCoplanarPoint(up_plane_normal, far_pos);
38
+ down_plane.setFromNormalAndCoplanarPoint(down_plane_normal, far_pos);
39
+
40
+ left_plane.setFromNormalAndCoplanarPoint(left_plane_normal, far_pos);
41
+ right_plane.setFromNormalAndCoplanarPoint(right_plane_normal, far_pos);
42
+
43
+ let closest_distance = Infinity;
44
+
45
+ const inverse_dir = camera_forward_dir.clone().multiplyScalar(pull_back_distance * -2);
46
+ for (let i = 0; i < points.length; i++)
47
+ {
48
+ const line = new Line3(points[i].clone(), points[i].clone().add(inverse_dir));
49
+
50
+ const up_line_intersection = new Vector3();
51
+ const down_line_intersection = new Vector3();
52
+
53
+ const left_line_intersection = new Vector3();
54
+ const right_line_intersection = new Vector3();
55
+
56
+ up_plane.intersectLine(line, up_line_intersection);
57
+ down_plane.intersectLine(line, down_line_intersection);
58
+
59
+ left_plane.intersectLine(line, left_line_intersection);
60
+ right_plane.intersectLine(line, right_line_intersection);
61
+
62
+ if (up_line_intersection.length() < 0.0001)
63
+ {
64
+ console.log('up intersection not found', i);
65
+ }
66
+ if (down_line_intersection.length() < 0.0001)
67
+ {
68
+ console.log('down intersection not found', i);
69
+ }
70
+ if (left_line_intersection.length() < 0.0001)
71
+ {
72
+ console.log('left intersection not found', i);
73
+ }
74
+ if (right_line_intersection.length() < 0.0001)
75
+ {
76
+ console.log('right intersection not found', i);
77
+ }
78
+
79
+ const new_up_distance = points[i].clone().sub(up_line_intersection).length();
80
+ const new_down_distance = points[i].clone().sub(down_line_intersection).length();
81
+
82
+ const new_left_distance = points[i].clone().sub(left_line_intersection).length();
83
+ const new_right_distance = points[i].clone().sub(right_line_intersection).length();
84
+
85
+ const vertical_min = Math.min(new_up_distance, new_down_distance);
86
+ const horizontal_min = Math.min(new_left_distance, new_right_distance);
87
+
88
+ const min = Math.min(vertical_min, horizontal_min);
89
+
90
+ if (min < closest_distance)
91
+ {
92
+ closest_distance = min;
93
+ }
94
+ }
95
+
96
+ const forward_correction = camera_forward_dir.clone().multiplyScalar(closest_distance);
97
+ const closest_position = far_pos.clone().add(forward_correction);
98
+
99
+ return closest_position;
100
+ }
101
+
102
+ apply_center_correction_to_pos(target_pos, points, camera_quaternion, up_plane, down_plane, left_plane, right_plane)
103
+ {
104
+ const vertical_offset = this.get_vertical_correction(points, down_plane, up_plane, camera_quaternion);
105
+ const horizontal_offset = this.get_horizontal_correction(points, left_plane, right_plane, camera_quaternion);
106
+
107
+ target_pos.add(vertical_offset);
108
+ target_pos.add(horizontal_offset);
109
+ }
110
+
111
+ get_vertical_correction(points, down_plane, up_plane, camera_quaternion)
112
+ {
113
+ let closest_distance_to_up_plane = Infinity;
114
+ let closest_distance_to_down_plane = Infinity;
115
+ // let closest_up_point = undefined;
116
+ // let closest_down_point = undefined;
117
+
118
+ const up_dir = new Vector3(0, 1, 0).applyQuaternion(camera_quaternion);
119
+ for (let i = 0; i < points.length; i++)
120
+ {
121
+ const down_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(-5000000)));
122
+ const up_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(5000000)));
123
+
124
+ const down_line_intersection = new Vector3();
125
+ const up_line_intersection = new Vector3();
126
+
127
+ down_plane.intersectLine(down_line, down_line_intersection);
128
+ up_plane.intersectLine(up_line, up_line_intersection);
129
+
130
+ const down_dist = down_line_intersection.distanceTo(points[i]);
131
+ const up_dist = up_line_intersection.distanceTo(points[i]);
132
+
133
+ if (up_line_intersection.length() < 0.0001)
134
+ {
135
+ console.log('vertical up intersection not found', i);
136
+ }
137
+ if (down_line_intersection.length() < 0.0001)
138
+ {
139
+ console.log('vertical down intersection not found', i);
140
+ }
141
+
142
+ if (down_dist < closest_distance_to_down_plane)
143
+ {
144
+ closest_distance_to_down_plane = down_dist;
145
+ // closest_down_point = points[i];
146
+ }
147
+ if (up_dist < closest_distance_to_up_plane)
148
+ {
149
+ closest_distance_to_up_plane = up_dist;
150
+ // closest_up_point = points[i];
151
+ }
152
+ }
153
+
154
+ const correction = (closest_distance_to_up_plane - closest_distance_to_down_plane) / 2;
155
+
156
+ // console.log("vertical_correction", correction)
157
+ return up_dir.clone().multiplyScalar(-correction);
158
+ }
159
+
160
+ get_horizontal_correction(points, left_plane, right_plane, camera_quaternion)
161
+ {
162
+ let closest_distance_to_right_plane = Infinity;
163
+ let closest_distance_to_left_plane = Infinity;
164
+ // let closest_right_point = undefined;
165
+ // let closest_left_point = undefined;
166
+
167
+ const right_dir = new Vector3(1, 0, 0).applyQuaternion(camera_quaternion);
168
+
169
+ for (let i = 0; i < points.length; i++)
170
+ {
171
+ const left_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(-5000000)));
172
+ const right_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(5000000)));
173
+
174
+ const left_line_intersection = new Vector3();
175
+ const right_line_intersection = new Vector3();
176
+
177
+ left_plane.intersectLine(left_line, left_line_intersection);
178
+ right_plane.intersectLine(right_line, right_line_intersection);
179
+
180
+ const left_dist = left_line_intersection.distanceTo(points[i]);
181
+ const right_dist = right_line_intersection.distanceTo(points[i]);
182
+
183
+ if (left_line_intersection.length() < 0.0001)
184
+ {
185
+ console.log('left intersection not found', i);
186
+ }
187
+ if (right_line_intersection.length() < 0.0001)
188
+ {
189
+ console.log('right intersection not found', i);
190
+ }
191
+
192
+ if (left_dist < closest_distance_to_left_plane)
193
+ {
194
+ closest_distance_to_left_plane = left_dist;
195
+ // closest_left_point = points[i];
196
+ }
197
+ if (right_dist < closest_distance_to_right_plane)
198
+ {
199
+ closest_distance_to_right_plane = right_dist;
200
+ // closest_right_point = points[i];
201
+ }
202
+ }
203
+
204
+ const correction = (closest_distance_to_right_plane - closest_distance_to_left_plane) / 2;
205
+ // console.log("horizontal_correction", correction)
206
+
207
+ return right_dir.clone().multiplyScalar(-correction);
208
+ }
209
+
210
+ get_up_plane_normal(camera_quaternion, v_fov)
211
+ {
212
+ const up_plane_normal = new Vector3(0, -1, 0);
213
+ up_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), v_fov));
214
+ up_plane_normal.applyQuaternion(camera_quaternion);
215
+ return up_plane_normal;
216
+ }
217
+
218
+ get_down_plane_normal(camera_quaternion, v_fov)
219
+ {
220
+ const down_plane_normal = new Vector3(0, 1, 0);
221
+ down_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), -v_fov));
222
+ down_plane_normal.applyQuaternion(camera_quaternion);
223
+ return down_plane_normal;
224
+ }
225
+
226
+ get_left_plane_normal(camera_quaternion, h_fov)
227
+ {
228
+ const left_plane_normal = new Vector3(1, 0, 0);
229
+ left_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), h_fov));
230
+ left_plane_normal.applyQuaternion(camera_quaternion);
231
+ return left_plane_normal;
232
+ }
233
+
234
+ get_right_plane_normal(camera_quaternion, h_fov)
235
+ {
236
+ const right_plane_normal = new Vector3(-1, 0, 0);
237
+ right_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), -h_fov));
238
+ right_plane_normal.applyQuaternion(camera_quaternion);
239
+ return right_plane_normal;
240
+ }
241
+
242
+ get_distance_to_fit_rect(width, height, vertical_fov, aspect)
243
+ {
244
+ const v_fov = (vertical_fov / 2) * Math.PI / 180;
245
+ const h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;
246
+
247
+ const distV = height / Math.tan(v_fov);
248
+ const distH = width / Math.tan(h_fov);
249
+ return Math.max(Math.abs(distH), Math.abs(distV));
250
+ }
251
+ }