ohzi-core 6.1.2 → 6.2.1
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.
- package/README.md +9 -9
- package/build/index.module.js +1 -1
- package/build/index.module.js.map +1 -1
- package/package.json +50 -48
- package/src/.vscode/settings.json +2 -2
- package/src/BaseApplication.js +23 -23
- package/src/Browser.js +79 -79
- package/src/CameraManager.js +19 -19
- package/src/Capabilities.js +11 -11
- package/src/Configuration.js +22 -22
- package/src/CustomBezierCurve.js +44 -44
- package/src/Debug.js +260 -260
- package/src/EventManager.js +150 -150
- package/src/Graphics.js +327 -327
- package/src/Initializer.js +57 -57
- package/src/Input.js +21 -21
- package/src/KeyboardInput.js +128 -128
- package/src/OS.js +58 -58
- package/src/OrthographicCamera.js +13 -13
- package/src/PerspectiveCamera.js +13 -13
- package/src/ReflectionPlaneContext.js +17 -17
- package/src/RenderLayers.js +28 -28
- package/src/RenderLoop.js +97 -97
- package/src/RenderOrder.js +38 -38
- package/src/ResourceContainer.js +39 -39
- package/src/SceneManager.js +44 -44
- package/src/Screen.js +69 -69
- package/src/Time.js +38 -38
- package/src/UI.js +90 -90
- package/src/action_sequencer/ActionEvent.js +15 -15
- package/src/action_sequencer/ActionInterpolator.js +23 -23
- package/src/action_sequencer/ActionSequencer.js +194 -194
- package/src/action_sequencer/NumberInterpolator.js +24 -24
- package/src/action_sequencer/VectorInterpolator.js +20 -20
- package/src/blitter_index.js +13 -13
- package/src/canvas_drawer/CanvasDrawer.js +111 -111
- package/src/canvas_drawer/MultiLineTextDrawer.js +49 -49
- package/src/canvas_drawer/SimpleTextDrawer.js +47 -47
- package/src/components/AudioClip.js +55 -55
- package/src/components/AxisHelper.js +58 -58
- package/src/components/BaseObject.js +45 -45
- package/src/components/EdgeMesh.js +151 -151
- package/src/components/GeometryEdgeVisualizer.js +45 -45
- package/src/components/Grid.js +33 -33
- package/src/components/Line.js +199 -199
- package/src/components/MultiLinePath.js +19 -19
- package/src/components/MultiLineText2D.js +62 -62
- package/src/components/ObjectAxis.js +20 -20
- package/src/components/ObjectOrientedBoundingBox.js +201 -201
- package/src/components/PlaneHelper.js +36 -36
- package/src/components/Shape2D.js +42 -42
- package/src/components/Shape3D.js +38 -38
- package/src/components/Text2D.js +39 -39
- package/src/components/UIElement.js +208 -208
- package/src/components/UpdatableMaterialMesh.js +16 -16
- package/src/components/WorldImage.js +91 -91
- package/src/components/mouse_interactors/ObjectRotator.js +61 -61
- package/src/components/sdf_text/SDFText.js +154 -154
- package/src/components/sdf_text/SDFTextBatch.js +193 -193
- package/src/components/sdf_text/TextGlyph.js +15 -15
- package/src/data_textures/CustomDataTexture.js +51 -51
- package/src/data_textures/RGBADataTexture.js +12 -12
- package/src/data_textures/RGBAFloatDataTexture.js +12 -12
- package/src/data_textures/RGBDataTexture.js +12 -12
- package/src/data_textures/RGBFloatDataTexture.js +12 -12
- package/src/editor/ManipulatorHandle.js +70 -70
- package/src/editor/ObjectEditor.js +66 -66
- package/src/editor/ObjectManipulator.js +118 -118
- package/src/editor/ObjectPicker.js +75 -75
- package/src/editor/shaders/object_picker.frag +5 -5
- package/src/editor/shaders/object_picker.vert +7 -7
- package/src/gpu_particles/GPUParticleSystem.js +87 -87
- package/src/gpu_particles/ParticleAttribute.js +83 -83
- package/src/gpu_particles/ParticlePositionAttribute.js +20 -20
- package/src/html_utilities/CSSAnimator.js +64 -64
- package/src/html_utilities/css_animator_states/Animating.js +45 -45
- package/src/html_utilities/css_animator_states/Idle.js +25 -25
- package/src/index.js +211 -211
- package/src/materials/AddMaterial.js +17 -17
- package/src/materials/AlphaFilterMaterial.js +20 -20
- package/src/materials/BaseShaderMaterial.js +19 -19
- package/src/materials/BlitMaterial.js +28 -28
- package/src/materials/BloomComposeMaterial.js +22 -22
- package/src/materials/BoxBlurMaterial.js +13 -13
- package/src/materials/ClearAlphaMaterial.js +13 -13
- package/src/materials/ClearColorMaterial.js +31 -31
- package/src/materials/ClearDepthNormalMaterial.js +13 -13
- package/src/materials/DeferredRendererComposeMaterial.js +32 -32
- package/src/materials/DepthNormalMaterial.js +28 -28
- package/src/materials/DisplayNormalTextureMaterial.js +15 -15
- package/src/materials/DualFilteringBlurMaterial.js +11 -11
- package/src/materials/FXAAMaterial.js +10 -10
- package/src/materials/GaussianBlurMaterial.js +28 -28
- package/src/materials/LuminosityHighPassMaterial.js +15 -15
- package/src/materials/MedianFilterMaterial.js +42 -42
- package/src/materials/NormalMaterial.js +17 -17
- package/src/materials/SDFScreenTextMaterial.js +31 -31
- package/src/materials/SDFTextMaterial.js +37 -37
- package/src/materials/SSAOComposeMaterial.js +11 -11
- package/src/materials/SSAOMaterial.js +66 -66
- package/src/materials/ScreenSpaceTextureMaterial.js +65 -65
- package/src/materials/UIElementMaterial.js +25 -25
- package/src/materials/UnrealBloomComposeMaterial.js +95 -95
- package/src/materials/UnrealBlurMaterial.js +17 -17
- package/src/materials/UnrealComposeMaterial.js +24 -24
- package/src/materials/ViewPositionMaterial.js +17 -17
- package/src/materials/deferred/DeferredPointLightMaterial.js +39 -39
- package/src/materials/gpu_particles/AttributeUpdateMaterial.js +33 -33
- package/src/materials/gpu_particles/BasicParticleMaterial.js +23 -23
- package/src/materials/gpu_particles/ParticleStorageMaterial.js +27 -27
- package/src/materials/gpu_particles/PositionStorageMaterial.js +10 -10
- package/src/object_pool/Pool.js +73 -73
- package/src/primitives/Arrow.js +57 -57
- package/src/primitives/Cube.js +17 -17
- package/src/primitives/HorizontalPlane.js +18 -18
- package/src/primitives/Sphere.js +15 -15
- package/src/primitives/VerticalPlane.js +17 -17
- package/src/raycast/GroupRaycaster.js +41 -41
- package/src/raycast/PlaneDragResolver.js +89 -89
- package/src/raycast/PlaneRaycastResolver.js +22 -22
- package/src/raycast/PlaneRaycaster.js +23 -23
- package/src/raycast/RaycastResolver.js +22 -22
- package/src/raycast/SurfaceDragResolver.js +77 -77
- package/src/raycast/states/BaseState.js +16 -16
- package/src/raycast/states/IdleState.js +17 -17
- package/src/raycast/states/OnRaycastEnter.js +15 -15
- package/src/raycast/states/OnRaycastExit.js +16 -16
- package/src/raycast/states/OnRaycastHover.js +25 -25
- package/src/render_mode/BaseRender.js +32 -32
- package/src/render_mode/BloomRender.js +60 -60
- package/src/render_mode/DebugNormalsRender.js +20 -20
- package/src/render_mode/DeferredRender.js +112 -112
- package/src/render_mode/NormalAORender.js +71 -71
- package/src/render_mode/NormalRender.js +36 -36
- package/src/render_mode/OutlineRender.js +154 -154
- package/src/render_mode/PlanarReflectionsRender.js +118 -118
- package/src/render_mode/TransparencyMixRender.js +143 -143
- package/src/render_mode/UnrealBloomRender.js +109 -109
- package/src/render_utilities/Blitter.js +99 -99
- package/src/render_utilities/Blurrer.js +29 -29
- package/src/render_utilities/DepthAndNormalsRenderer.js +45 -45
- package/src/render_utilities/DualFilteringBlurrer.js +56 -56
- package/src/render_utilities/GaussianBlurrer.js +146 -146
- package/src/render_utilities/MedianFilter.js +66 -66
- package/src/render_utilities/ViewPositionRenderer.js +48 -48
- package/src/resource_loader/BasisLoader.js +50 -50
- package/src/resource_loader/FontLoader.js +39 -39
- package/src/resource_loader/GLTFDRACOLoader.js +2 -0
- package/src/resource_loader/JSONLoader.js +40 -40
- package/src/resource_loader/OBJLoader.js +39 -39
- package/src/resource_loader/PointArrayLoader.js +63 -63
- package/src/resource_loader/RGBETextureLoader.js +42 -42
- package/src/resource_loader/VideoLoader.js +20 -20
- package/src/shaders/add/add.frag +8 -8
- package/src/shaders/anti_aliasing/fxaa.frag +71 -71
- package/src/shaders/basic_color/basic_color.frag +5 -5
- package/src/shaders/basic_color/basic_color.vert +9 -9
- package/src/shaders/basic_line/basic_line.frag +36 -36
- package/src/shaders/basic_line/basic_line.vert +36 -36
- package/src/shaders/basic_texture/basic_texture.frag +9 -9
- package/src/shaders/basic_texture/basic_texture.vert +16 -16
- package/src/shaders/bloom/bloom_compose_frag.glsl +22 -22
- package/src/shaders/bloom/cheap_bloom_compose_frag.glsl +13 -13
- package/src/shaders/box_blur/box_blur.frag +24 -24
- package/src/shaders/box_blur/compose.frag +31 -31
- package/src/shaders/clear/clear_depth_normal.frag +24 -24
- package/src/shaders/copy/copy.frag +6 -6
- package/src/shaders/copy/copy.vert +5 -5
- package/src/shaders/deferred/blit_copy.vert +11 -11
- package/src/shaders/deferred/deferred_compose.frag +59 -59
- package/src/shaders/deferred/point_light.frag +66 -66
- package/src/shaders/deferred/point_light.vert +13 -13
- package/src/shaders/depth_normals/debug_normals.frag +47 -47
- package/src/shaders/depth_normals/depth_normals.frag +30 -30
- package/src/shaders/depth_normals/depth_normals.vert +12 -12
- package/src/shaders/dual_filter_blur/alpha_filter.frag +14 -14
- package/src/shaders/dual_filter_blur/downsample.frag +21 -21
- package/src/shaders/dual_filter_blur/upsample.frag +24 -24
- package/src/shaders/edge_visualizer/edge_visualizer.frag +17 -17
- package/src/shaders/edge_visualizer/edge_visualizer.vert +15 -15
- package/src/shaders/edges/corners.frag +10 -10
- package/src/shaders/edges/corners.vert +30 -30
- package/src/shaders/edges/edges.frag +6 -6
- package/src/shaders/edges/edges.vert +27 -27
- package/src/shaders/gaussian_blur/gaussian_blur.frag +24 -24
- package/src/shaders/gaussian_blur/unreal_bloom_compose.frag +24 -24
- package/src/shaders/gpu_particles/common_utils.glsl +12 -12
- package/src/shaders/gpu_particles/generic_storage.frag +7 -7
- package/src/shaders/gpu_particles/store/store_position.vert +14 -14
- package/src/shaders/gpu_particles/update/basic_update.frag +20 -20
- package/src/shaders/gpu_particles/visualize/visualize.frag +10 -10
- package/src/shaders/gpu_particles/visualize/visualize.vert +12 -12
- package/src/shaders/grid/grid.frag +16 -16
- package/src/shaders/grid/grid.vert +9 -9
- package/src/shaders/luminosity_high_pass/luminosity_high_pass.frag +22 -22
- package/src/shaders/median_filter/median_filter.frag +134 -134
- package/src/shaders/normal/normal.frag +6 -6
- package/src/shaders/normal/normal.vert +6 -6
- package/src/shaders/sdf_text/sdf_screen_text.frag +51 -51
- package/src/shaders/sdf_text/sdf_screen_text.vert +41 -41
- package/src/shaders/sdf_text/sdf_text.frag +53 -53
- package/src/shaders/sdf_text/sdf_text.vert +41 -41
- package/src/shaders/ssao/hbao.frag +264 -264
- package/src/shaders/ssao/ssao.frag +95 -95
- package/src/shaders/ssao/ssao.vert +10 -10
- package/src/shaders/ssao/ssao_compose.frag +14 -14
- package/src/shaders/transparent_mix/copy.frag +6 -6
- package/src/shaders/transparent_mix/transparent_mix.frag +18 -18
- package/src/shaders/transparent_mix/transparent_mix.vert +7 -7
- package/src/shaders/ui/ss_texture.frag +10 -10
- package/src/shaders/ui/ss_texture.vert +31 -31
- package/src/shaders/ui/ws_texture.vert +38 -38
- package/src/shaders/ui_element/ui_element.frag +11 -11
- package/src/shaders/ui_element/ui_element.vert +32 -32
- package/src/shaders/unreal_blur/unreal_blur.frag +24 -24
- package/src/shaders/unreal_blur/unreal_compose.frag +23 -23
- package/src/shaders/write_view_position/write_view_position.frag +6 -6
- package/src/shaders/write_view_position/write_view_position.vert +8 -8
- package/src/static_batcher/BatchedMesh.js +54 -54
- package/src/static_batcher/GeometryBatch.js +312 -312
- package/src/static_batcher/GeometryBatcher.js +63 -63
- package/src/static_batcher/MeshBatcher.js +56 -56
- package/src/ui/ui_element_position/ScreenSpacePosition.js +14 -14
- package/src/ui/ui_element_position/WorldSpacePosition.js +21 -21
- package/src/ui/ui_element_state/OnIdle.js +17 -17
- package/src/ui/ui_element_state/OnMouseEnter.js +26 -26
- package/src/ui/ui_element_state/OnMouseExit.js +15 -15
- package/src/ui/ui_element_state/OnMouseHover.js +31 -31
- package/src/ui/ui_element_state/UIElementState.js +18 -18
- package/src/utilities/ArrayUtilities.js +55 -55
- package/src/utilities/CameraUtilities.js +210 -210
- package/src/utilities/EasingFunctions.js +215 -215
- package/src/utilities/FrustumPointFitter.js +255 -255
- package/src/utilities/GeometryUtilities.js +74 -74
- package/src/utilities/ImageUtilities.js +26 -26
- package/src/utilities/MeshSampler.js +152 -152
- package/src/utilities/ModelUtilities.js +161 -161
- package/src/utilities/OMath.js +155 -155
- package/src/utilities/OrthographicFrustumPointFitter.js +47 -47
- package/src/utilities/PerspectiveFrustumPointFitter.js +250 -250
- package/src/utilities/StringUtilities.js +32 -32
- package/src/utilities/TimeUtilities.js +22 -22
- package/src/utilities/Validation.js +34 -34
- package/src/view_components/ApplicationView.js +60 -60
- package/src/view_components/ViewComponent.js +37 -37
- package/src/view_components/ViewComponentManager.js +58 -58
- package/src/view_components/ViewContext.js +14 -14
- package/src/view_components/ViewManager.js +129 -129
- package/src/view_components/ViewState.js +54 -54
- package/src/view_components/transition/ActionSequencerBuilder.js +91 -91
- package/src/view_components/transition/DrawIOAnimationSheet.js +90 -90
- package/src/view_components/transition/TransitionTable.js +44 -44
- package/src/view_components/transition/ViewStateTransitionHandler.js +95 -95
- package/types/BaseApplication.d.ts +8 -8
- package/types/Browser.d.ts +12 -12
- package/types/CameraManager.d.ts +8 -8
- package/types/Capabilities.d.ts +6 -6
- package/types/Configuration.d.ts +6 -6
- package/types/Debug.d.ts +38 -38
- package/types/EventManager.d.ts +42 -42
- package/types/Graphics.d.ts +35 -35
- package/types/Initializer.d.ts +4 -4
- package/types/Input.d.ts +8 -8
- package/types/OS.d.ts +18 -18
- package/types/OrthographicCamera.d.ts +5 -5
- package/types/PerspectiveCamera.d.ts +5 -5
- package/types/ReflectionPlaneContext.d.ts +6 -6
- package/types/RenderLayers.d.ts +6 -6
- package/types/RenderLoop.d.ts +13 -13
- package/types/ResourceContainer.d.ts +8 -8
- package/types/SceneManager.d.ts +10 -10
- package/types/Screen.d.ts +17 -17
- package/types/Time.d.ts +11 -11
- package/types/UI.d.ts +15 -15
- package/types/action_sequencer/ActionEvent.d.ts +6 -6
- package/types/action_sequencer/ActionInterpolator.d.ts +5 -5
- package/types/action_sequencer/ActionSequencer.d.ts +28 -28
- package/types/action_sequencer/NumberInterpolator.d.ts +8 -8
- package/types/action_sequencer/VectorInterpolator.d.ts +7 -7
- package/types/canvas_drawer/CanvasDrawer.d.ts +13 -13
- package/types/canvas_drawer/MultiLineTextDrawer.d.ts +5 -5
- package/types/canvas_drawer/SimpleTextDrawer.d.ts +5 -5
- package/types/components/AudioClip.d.ts +12 -12
- package/types/components/AxisHelper.d.ts +6 -6
- package/types/components/BaseObject.d.ts +5 -5
- package/types/components/EdgeMesh.d.ts +13 -13
- package/types/components/GeometryEdgeVisualizer.d.ts +4 -4
- package/types/components/Grid.d.ts +2 -2
- package/types/components/Line.d.ts +16 -16
- package/types/components/MultiLinePath.d.ts +4 -4
- package/types/components/MultiLineText2D.d.ts +10 -10
- package/types/components/ObjectAxis.d.ts +3 -3
- package/types/components/ObjectOrientedBoundingBox.d.ts +18 -18
- package/types/components/PlaneHelper.d.ts +6 -6
- package/types/components/Shape2D.d.ts +4 -4
- package/types/components/Shape3D.d.ts +3 -3
- package/types/components/Text2D.d.ts +13 -13
- package/types/components/UIElement.d.ts +52 -52
- package/types/components/UpdatableMaterialMesh.d.ts +4 -4
- package/types/components/WorldImage.d.ts +13 -13
- package/types/components/sdf_text/SDFText.d.ts +30 -30
- package/types/components/sdf_text/SDFTextBatch.d.ts +12 -12
- package/types/components/sdf_text/TextGlyph.d.ts +6 -6
- package/types/editor/ManipulatorHandle.d.ts +14 -14
- package/types/editor/ObjectEditor.d.ts +16 -16
- package/types/editor/ObjectManipulator.d.ts +19 -19
- package/types/editor/ObjectPicker.d.ts +16 -16
- package/types/gpu_particles/GPUParticleSystem.d.ts +12 -12
- package/types/gpu_particles/ParticleAttribute.d.ts +15 -15
- package/types/gpu_particles/ParticlePositionAttribute.d.ts +4 -4
- package/types/html_utilities/CSSAnimator.d.ts +30 -30
- package/types/html_utilities/css_animator_states/Animating.d.ts +8 -8
- package/types/html_utilities/css_animator_states/Idle.d.ts +6 -6
- package/types/index.d.ts +89 -89
- package/types/materials/AddMaterial.d.ts +5 -5
- package/types/materials/AlphaFilterMaterial.d.ts +6 -6
- package/types/materials/BaseShaderMaterial.d.ts +3 -3
- package/types/materials/BlitMaterial.d.ts +3 -3
- package/types/materials/BloomComposeMaterial.d.ts +7 -7
- package/types/materials/BoxBlurMaterial.d.ts +4 -4
- package/types/materials/ClearAlphaMaterial.d.ts +3 -3
- package/types/materials/ClearColorMaterial.d.ts +7 -7
- package/types/materials/ClearDepthNormalMaterial.d.ts +4 -4
- package/types/materials/DeferredRendererComposeMaterial.d.ts +7 -7
- package/types/materials/DepthNormalMaterial.d.ts +4 -4
- package/types/materials/DisplayNormalTextureMaterial.d.ts +4 -4
- package/types/materials/DualFilteringBlurMaterial.d.ts +4 -4
- package/types/materials/FXAAMaterial.d.ts +3 -3
- package/types/materials/GaussianBlurMaterial.d.ts +6 -6
- package/types/materials/LuminosityHighPassMaterial.d.ts +4 -4
- package/types/materials/MedianFilterMaterial.d.ts +6 -6
- package/types/materials/NormalMaterial.d.ts +2 -2
- package/types/materials/SDFScreenTextMaterial.d.ts +11 -11
- package/types/materials/SDFTextMaterial.d.ts +12 -12
- package/types/materials/SSAOComposeMaterial.d.ts +4 -4
- package/types/materials/SSAOMaterial.d.ts +6 -6
- package/types/materials/ScreenSpaceTextureMaterial.d.ts +7 -7
- package/types/materials/UIElementMaterial.d.ts +7 -7
- package/types/materials/UnrealBloomComposeMaterial.d.ts +17 -17
- package/types/materials/UnrealBlurMaterial.d.ts +4 -4
- package/types/materials/UnrealComposeMaterial.d.ts +4 -4
- package/types/materials/ViewPositionMaterial.d.ts +3 -3
- package/types/materials/deferred/DeferredPointLightMaterial.d.ts +10 -10
- package/types/materials/gpu_particles/ParticleStorageMaterial.d.ts +3 -3
- package/types/materials/gpu_particles/PositionStorageMaterial.d.ts +4 -4
- package/types/object_pool/Pool.d.ts +10 -10
- package/types/primitives/Arrow.d.ts +8 -8
- package/types/primitives/Cube.d.ts +3 -3
- package/types/primitives/HorizontalPlane.d.ts +3 -3
- package/types/primitives/Sphere.d.ts +3 -3
- package/types/primitives/VerticalPlane.d.ts +3 -3
- package/types/raycast/GroupRaycaster.d.ts +13 -13
- package/types/raycast/PlaneDragResolver.d.ts +14 -14
- package/types/raycast/PlaneRaycastResolver.d.ts +5 -5
- package/types/raycast/PlaneRaycaster.d.ts +7 -7
- package/types/raycast/RaycastResolver.d.ts +5 -5
- package/types/raycast/SurfaceDragResolver.d.ts +13 -13
- package/types/raycast/states/BaseState.d.ts +5 -5
- package/types/raycast/states/IdleState.d.ts +5 -5
- package/types/raycast/states/OnRaycastEnter.d.ts +5 -5
- package/types/raycast/states/OnRaycastExit.d.ts +4 -4
- package/types/raycast/states/OnRaycastHover.d.ts +4 -4
- package/types/render_mode/BaseRender.d.ts +7 -7
- package/types/render_mode/BloomRender.d.ts +10 -10
- package/types/render_mode/DebugNormalsRender.d.ts +4 -4
- package/types/render_mode/DeferredRender.d.ts +9 -9
- package/types/render_mode/NormalAORender.d.ts +16 -16
- package/types/render_mode/NormalRender.d.ts +4 -4
- package/types/render_mode/OutlineRender.d.ts +20 -20
- package/types/render_mode/PlanarReflectionsRender.d.ts +13 -13
- package/types/render_mode/TransparencyMixRender.d.ts +21 -21
- package/types/render_mode/UnrealBloomRender.d.ts +19 -19
- package/types/render_utilities/Blitter.d.ts +16 -16
- package/types/render_utilities/Blurrer.d.ts +9 -9
- package/types/render_utilities/DepthAndNormalsRenderer.d.ts +12 -12
- package/types/render_utilities/DualFilteringBlurrer.d.ts +19 -19
- package/types/render_utilities/GaussianBlurrer.d.ts +27 -27
- package/types/render_utilities/MedianFilter.d.ts +10 -10
- package/types/render_utilities/ViewPositionRenderer.d.ts +9 -9
- package/types/resource_loader/AbstractLoader.d.ts +18 -18
- package/types/resource_loader/AudioLoader.d.ts +8 -8
- package/types/resource_loader/BasisLoader.d.ts +6 -6
- package/types/resource_loader/CubemapLoader.d.ts +7 -7
- package/types/resource_loader/DAELoader.d.ts +6 -6
- package/types/resource_loader/DDSLoader.d.ts +6 -6
- package/types/resource_loader/FileLoader.d.ts +6 -6
- package/types/resource_loader/FontLoader.d.ts +6 -6
- package/types/resource_loader/GLTFDRACOLoader.d.ts +7 -7
- package/types/resource_loader/GLTFLoader.d.ts +5 -5
- package/types/resource_loader/HDRCubeTextureLoader.d.ts +7 -7
- package/types/resource_loader/JSONLoader.d.ts +6 -6
- package/types/resource_loader/OBJLoader.d.ts +6 -6
- package/types/resource_loader/PointArrayLoader.d.ts +7 -7
- package/types/resource_loader/RGBETextureLoader.d.ts +6 -6
- package/types/resource_loader/ResourceBatch.d.ts +13 -13
- package/types/resource_loader/SVGLoader.d.ts +6 -6
- package/types/resource_loader/TextLoader.d.ts +6 -6
- package/types/resource_loader/TextureLoader.d.ts +6 -6
- package/types/resource_loader/VideoLoader.d.ts +6 -6
- package/types/static_batcher/GeometryBatch.d.ts +37 -37
- package/types/static_batcher/GeometryBatcher.d.ts +7 -7
- package/types/ui/ui_element_position/ScreenSpacePosition.d.ts +4 -4
- package/types/ui/ui_element_position/WorldSpacePosition.d.ts +5 -5
- package/types/ui/ui_element_state/OnIdle.d.ts +5 -5
- package/types/ui/ui_element_state/OnMouseEnter.d.ts +5 -5
- package/types/ui/ui_element_state/OnMouseExit.d.ts +5 -5
- package/types/ui/ui_element_state/OnMouseHover.d.ts +5 -5
- package/types/ui/ui_element_state/UIElementState.d.ts +5 -5
- package/types/utilities/ArrayUtilities.d.ts +7 -7
- package/types/utilities/CameraUtilities.d.ts +24 -24
- package/types/utilities/EasingFunctions.d.ts +35 -35
- package/types/utilities/FrustumPointFitter.d.ts +14 -14
- package/types/utilities/GeometryUtilities.d.ts +4 -4
- package/types/utilities/ImageUtilities.d.ts +4 -4
- package/types/utilities/MeshSampler.d.ts +14 -14
- package/types/utilities/ModelUtilities.d.ts +13 -13
- package/types/utilities/OMath.d.ts +21 -21
- package/types/utilities/ObjectUtilities.d.ts +5 -5
- package/types/utilities/OrthographicFrustumPointFitter.d.ts +7 -7
- package/types/utilities/PerspectiveFrustumPointFitter.d.ts +12 -12
- package/types/utilities/StringUtilities.d.ts +5 -5
- package/types/utilities/TimeUtilities.d.ts +3 -3
- package/types/utilities/Validation.d.ts +6 -6
- package/types/view_components/ApplicationView.d.ts +11 -11
- package/types/view_components/ViewComponent.d.ts +13 -13
- package/types/view_components/ViewComponentManager.d.ts +10 -10
- package/types/view_components/ViewContext.d.ts +6 -6
- package/types/view_components/ViewManager.d.ts +24 -24
- package/types/view_components/ViewState.d.ts +15 -15
- package/types/view_components/transition/ActionSequencerBuilder.d.ts +15 -15
- package/types/view_components/transition/DrawIOAnimationSheet.d.ts +17 -17
- package/types/view_components/transition/TransitionTable.d.ts +8 -8
- package/types/view_components/transition/ViewStateTransitionHandler.d.ts +16 -16
|
@@ -1,250 +1,250 @@
|
|
|
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
|
-
let v_fov = TMath.degToRad(vertical_fov / 2);
|
|
14
|
-
let h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;
|
|
15
|
-
|
|
16
|
-
let up_plane_normal = this.get_up_plane_normal(camera_quaternion, v_fov);
|
|
17
|
-
let down_plane_normal = this.get_down_plane_normal(camera_quaternion, v_fov);
|
|
18
|
-
let left_plane_normal = this.get_left_plane_normal(camera_quaternion, h_fov);
|
|
19
|
-
let right_plane_normal = this.get_right_plane_normal(camera_quaternion, h_fov);
|
|
20
|
-
|
|
21
|
-
let camera_forward_dir = new Vector3(0, 0, -1).applyQuaternion(camera_quaternion);
|
|
22
|
-
|
|
23
|
-
let sphere_center = this.sphere.center.clone();
|
|
24
|
-
|
|
25
|
-
let pull_back_distance = this.get_distance_to_fit_rect(this.sphere.radius * 2, this.sphere.radius * 2, vertical_fov, aspect);
|
|
26
|
-
let far_pos = sphere_center.clone().add(camera_forward_dir.clone().multiplyScalar(pull_back_distance * -1));
|
|
27
|
-
|
|
28
|
-
let up_plane = new Plane().setFromNormalAndCoplanarPoint(up_plane_normal, far_pos);
|
|
29
|
-
let down_plane = new Plane().setFromNormalAndCoplanarPoint(down_plane_normal, far_pos);
|
|
30
|
-
|
|
31
|
-
let left_plane = new Plane().setFromNormalAndCoplanarPoint(left_plane_normal, far_pos);
|
|
32
|
-
let 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
|
-
let inverse_dir = camera_forward_dir.clone().multiplyScalar(pull_back_distance * -2);
|
|
45
|
-
for (let i = 0; i < points.length; i++)
|
|
46
|
-
{
|
|
47
|
-
let line = new Line3(points[i].clone(), points[i].clone().add(inverse_dir));
|
|
48
|
-
|
|
49
|
-
let up_line_intersection = new Vector3();
|
|
50
|
-
let down_line_intersection = new Vector3();
|
|
51
|
-
|
|
52
|
-
let left_line_intersection = new Vector3();
|
|
53
|
-
let 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
|
-
let new_up_distance = points[i].clone().sub(up_line_intersection).length();
|
|
79
|
-
let new_down_distance = points[i].clone().sub(down_line_intersection).length();
|
|
80
|
-
|
|
81
|
-
let new_left_distance = points[i].clone().sub(left_line_intersection).length();
|
|
82
|
-
let new_right_distance = points[i].clone().sub(right_line_intersection).length();
|
|
83
|
-
|
|
84
|
-
let vertical_min = Math.min(new_up_distance, new_down_distance);
|
|
85
|
-
let horizontal_min = Math.min(new_left_distance, new_right_distance);
|
|
86
|
-
|
|
87
|
-
let min = Math.min(vertical_min, horizontal_min);
|
|
88
|
-
|
|
89
|
-
if (min < closest_distance)
|
|
90
|
-
{
|
|
91
|
-
closest_distance = min;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
let forward_correction = camera_forward_dir.clone().multiplyScalar(closest_distance);
|
|
96
|
-
let 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
|
-
let vertical_offset = this.get_vertical_correction(points, down_plane, up_plane, camera_quaternion);
|
|
104
|
-
let 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
|
-
let up_dir = new Vector3(0, 1, 0).applyQuaternion(camera_quaternion);
|
|
118
|
-
for (let i = 0; i < points.length; i++)
|
|
119
|
-
{
|
|
120
|
-
let down_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(-5000000)));
|
|
121
|
-
let up_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(5000000)));
|
|
122
|
-
|
|
123
|
-
let down_line_intersection = new Vector3();
|
|
124
|
-
let 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
|
-
let down_dist = down_line_intersection.distanceTo(points[i]);
|
|
130
|
-
let 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
|
-
let 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
|
-
let right_dir = new Vector3(1, 0, 0).applyQuaternion(camera_quaternion);
|
|
167
|
-
|
|
168
|
-
for (let i = 0; i < points.length; i++)
|
|
169
|
-
{
|
|
170
|
-
let left_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(-5000000)));
|
|
171
|
-
let right_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(5000000)));
|
|
172
|
-
|
|
173
|
-
let left_line_intersection = new Vector3();
|
|
174
|
-
let 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
|
-
let left_dist = left_line_intersection.distanceTo(points[i]);
|
|
180
|
-
let 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
|
-
let 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
|
-
let 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
|
-
let 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
|
-
let 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
|
-
let 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
|
-
let v_fov = (vertical_fov / 2) * Math.PI / 180;
|
|
244
|
-
let h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;
|
|
245
|
-
|
|
246
|
-
let distV = height / Math.tan(v_fov);
|
|
247
|
-
let distH = width / Math.tan(h_fov);
|
|
248
|
-
return Math.max(Math.abs(distH), Math.abs(distV));
|
|
249
|
-
}
|
|
250
|
-
}
|
|
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
|
+
let v_fov = TMath.degToRad(vertical_fov / 2);
|
|
14
|
+
let h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;
|
|
15
|
+
|
|
16
|
+
let up_plane_normal = this.get_up_plane_normal(camera_quaternion, v_fov);
|
|
17
|
+
let down_plane_normal = this.get_down_plane_normal(camera_quaternion, v_fov);
|
|
18
|
+
let left_plane_normal = this.get_left_plane_normal(camera_quaternion, h_fov);
|
|
19
|
+
let right_plane_normal = this.get_right_plane_normal(camera_quaternion, h_fov);
|
|
20
|
+
|
|
21
|
+
let camera_forward_dir = new Vector3(0, 0, -1).applyQuaternion(camera_quaternion);
|
|
22
|
+
|
|
23
|
+
let sphere_center = this.sphere.center.clone();
|
|
24
|
+
|
|
25
|
+
let pull_back_distance = this.get_distance_to_fit_rect(this.sphere.radius * 2, this.sphere.radius * 2, vertical_fov, aspect);
|
|
26
|
+
let far_pos = sphere_center.clone().add(camera_forward_dir.clone().multiplyScalar(pull_back_distance * -1));
|
|
27
|
+
|
|
28
|
+
let up_plane = new Plane().setFromNormalAndCoplanarPoint(up_plane_normal, far_pos);
|
|
29
|
+
let down_plane = new Plane().setFromNormalAndCoplanarPoint(down_plane_normal, far_pos);
|
|
30
|
+
|
|
31
|
+
let left_plane = new Plane().setFromNormalAndCoplanarPoint(left_plane_normal, far_pos);
|
|
32
|
+
let 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
|
+
let inverse_dir = camera_forward_dir.clone().multiplyScalar(pull_back_distance * -2);
|
|
45
|
+
for (let i = 0; i < points.length; i++)
|
|
46
|
+
{
|
|
47
|
+
let line = new Line3(points[i].clone(), points[i].clone().add(inverse_dir));
|
|
48
|
+
|
|
49
|
+
let up_line_intersection = new Vector3();
|
|
50
|
+
let down_line_intersection = new Vector3();
|
|
51
|
+
|
|
52
|
+
let left_line_intersection = new Vector3();
|
|
53
|
+
let 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
|
+
let new_up_distance = points[i].clone().sub(up_line_intersection).length();
|
|
79
|
+
let new_down_distance = points[i].clone().sub(down_line_intersection).length();
|
|
80
|
+
|
|
81
|
+
let new_left_distance = points[i].clone().sub(left_line_intersection).length();
|
|
82
|
+
let new_right_distance = points[i].clone().sub(right_line_intersection).length();
|
|
83
|
+
|
|
84
|
+
let vertical_min = Math.min(new_up_distance, new_down_distance);
|
|
85
|
+
let horizontal_min = Math.min(new_left_distance, new_right_distance);
|
|
86
|
+
|
|
87
|
+
let min = Math.min(vertical_min, horizontal_min);
|
|
88
|
+
|
|
89
|
+
if (min < closest_distance)
|
|
90
|
+
{
|
|
91
|
+
closest_distance = min;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
let forward_correction = camera_forward_dir.clone().multiplyScalar(closest_distance);
|
|
96
|
+
let 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
|
+
let vertical_offset = this.get_vertical_correction(points, down_plane, up_plane, camera_quaternion);
|
|
104
|
+
let 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
|
+
let up_dir = new Vector3(0, 1, 0).applyQuaternion(camera_quaternion);
|
|
118
|
+
for (let i = 0; i < points.length; i++)
|
|
119
|
+
{
|
|
120
|
+
let down_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(-5000000)));
|
|
121
|
+
let up_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(5000000)));
|
|
122
|
+
|
|
123
|
+
let down_line_intersection = new Vector3();
|
|
124
|
+
let 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
|
+
let down_dist = down_line_intersection.distanceTo(points[i]);
|
|
130
|
+
let 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
|
+
let 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
|
+
let right_dir = new Vector3(1, 0, 0).applyQuaternion(camera_quaternion);
|
|
167
|
+
|
|
168
|
+
for (let i = 0; i < points.length; i++)
|
|
169
|
+
{
|
|
170
|
+
let left_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(-5000000)));
|
|
171
|
+
let right_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(5000000)));
|
|
172
|
+
|
|
173
|
+
let left_line_intersection = new Vector3();
|
|
174
|
+
let 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
|
+
let left_dist = left_line_intersection.distanceTo(points[i]);
|
|
180
|
+
let 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
|
+
let 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
|
+
let 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
|
+
let 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
|
+
let 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
|
+
let 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
|
+
let v_fov = (vertical_fov / 2) * Math.PI / 180;
|
|
244
|
+
let h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;
|
|
245
|
+
|
|
246
|
+
let distV = height / Math.tan(v_fov);
|
|
247
|
+
let distH = width / Math.tan(h_fov);
|
|
248
|
+
return Math.max(Math.abs(distH), Math.abs(distV));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
export default class StringUtilities
|
|
2
|
-
{
|
|
3
|
-
constructor()
|
|
4
|
-
{}
|
|
5
|
-
|
|
6
|
-
static capitalize(string)
|
|
7
|
-
{
|
|
8
|
-
const words = string.split(' ');
|
|
9
|
-
|
|
10
|
-
for (let i = 0; i < words.length; i++)
|
|
11
|
-
{
|
|
12
|
-
words[i] = words[i][0].toUpperCase() + words[i].substr(1);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return words.join(' ');
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
static capitalize_first_letter(string)
|
|
19
|
-
{
|
|
20
|
-
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
static snake_to_camelcase(string)
|
|
24
|
-
{
|
|
25
|
-
return string.replace(
|
|
26
|
-
/([-_][a-z])/g,
|
|
27
|
-
(group) => group.toUpperCase()
|
|
28
|
-
.replace('-', '')
|
|
29
|
-
.replace('_', '')
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
1
|
+
export default class StringUtilities
|
|
2
|
+
{
|
|
3
|
+
constructor()
|
|
4
|
+
{}
|
|
5
|
+
|
|
6
|
+
static capitalize(string)
|
|
7
|
+
{
|
|
8
|
+
const words = string.split(' ');
|
|
9
|
+
|
|
10
|
+
for (let i = 0; i < words.length; i++)
|
|
11
|
+
{
|
|
12
|
+
words[i] = words[i][0].toUpperCase() + words[i].substr(1);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return words.join(' ');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
static capitalize_first_letter(string)
|
|
19
|
+
{
|
|
20
|
+
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static snake_to_camelcase(string)
|
|
24
|
+
{
|
|
25
|
+
return string.replace(
|
|
26
|
+
/([-_][a-z])/g,
|
|
27
|
+
(group) => group.toUpperCase()
|
|
28
|
+
.replace('-', '')
|
|
29
|
+
.replace('_', '')
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
export default class TimeUtilities
|
|
2
|
-
{
|
|
3
|
-
constructor()
|
|
4
|
-
{}
|
|
5
|
-
|
|
6
|
-
// Converts a time string (00:00:00.45) into miliseconds
|
|
7
|
-
time_str_to_ms(time_str)
|
|
8
|
-
{
|
|
9
|
-
time_str = time_str.split(':');
|
|
10
|
-
|
|
11
|
-
let hours = Number(time_str[0]);
|
|
12
|
-
hours = hours * 60 * 60 * 1000;
|
|
13
|
-
|
|
14
|
-
let minutes = Number(time_str[1]);
|
|
15
|
-
minutes = minutes * 60 * 1000;
|
|
16
|
-
|
|
17
|
-
let seconds = Number(time_str[2]);
|
|
18
|
-
seconds = seconds * 1000;
|
|
19
|
-
|
|
20
|
-
return hours + minutes + seconds;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
1
|
+
export default class TimeUtilities
|
|
2
|
+
{
|
|
3
|
+
constructor()
|
|
4
|
+
{}
|
|
5
|
+
|
|
6
|
+
// Converts a time string (00:00:00.45) into miliseconds
|
|
7
|
+
time_str_to_ms(time_str)
|
|
8
|
+
{
|
|
9
|
+
time_str = time_str.split(':');
|
|
10
|
+
|
|
11
|
+
let hours = Number(time_str[0]);
|
|
12
|
+
hours = hours * 60 * 60 * 1000;
|
|
13
|
+
|
|
14
|
+
let minutes = Number(time_str[1]);
|
|
15
|
+
minutes = minutes * 60 * 1000;
|
|
16
|
+
|
|
17
|
+
let seconds = Number(time_str[2]);
|
|
18
|
+
seconds = seconds * 1000;
|
|
19
|
+
|
|
20
|
+
return hours + minutes + seconds;
|
|
21
|
+
}
|
|
22
|
+
}
|