ohzi-core 12.5.2 → 12.7.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 (265) hide show
  1. package/README.md +9 -9
  2. package/build/index.mjs +1 -1
  3. package/build/index.mjs.map +1 -1
  4. package/build/index.module.js +2 -0
  5. package/build/index.module.js.map +1 -0
  6. package/package.json +64 -63
  7. package/src/.vscode/settings.json +2 -2
  8. package/src/BaseApplication.js +40 -40
  9. package/src/Browser.js +119 -119
  10. package/src/CameraManager.js +37 -37
  11. package/src/Capabilities.js +13 -13
  12. package/src/CustomBezierCurve.js +58 -58
  13. package/src/Debug.js +359 -359
  14. package/src/Graphics.js +507 -507
  15. package/src/Initializer.js +56 -56
  16. package/src/KeyboardInput.js +177 -177
  17. package/src/OS.js +59 -59
  18. package/src/OScreen.js +90 -90
  19. package/src/OrthographicCamera.js +36 -36
  20. package/src/PerspectiveCamera.js +34 -34
  21. package/src/ReflectionPlaneContext.js +22 -22
  22. package/src/RenderLayers.js +30 -30
  23. package/src/RenderLoop.js +125 -122
  24. package/src/RenderOrder.js +40 -40
  25. package/src/ResourceContainer.js +57 -57
  26. package/src/SceneManager.js +55 -55
  27. package/src/Screen.js +71 -71
  28. package/src/Time.js +99 -98
  29. package/src/UI.js +106 -106
  30. package/src/action_sequencer/ActionEvent.js +22 -22
  31. package/src/action_sequencer/ActionInterpolator.js +39 -39
  32. package/src/action_sequencer/ActionSequencer.js +338 -338
  33. package/src/action_sequencer/NumberInterpolator.js +42 -42
  34. package/src/action_sequencer/VectorInterpolator.js +34 -34
  35. package/src/blitter_index.js +14 -14
  36. package/src/canvas_drawer/CanvasDrawer.js +146 -146
  37. package/src/canvas_drawer/MultiLineTextDrawer.js +58 -58
  38. package/src/canvas_drawer/SimpleTextDrawer.js +55 -55
  39. package/src/components/AudioClip.js +67 -67
  40. package/src/components/AxisHelper.js +60 -60
  41. package/src/components/BaseObject.js +50 -50
  42. package/src/components/EdgeMesh.js +172 -172
  43. package/src/components/GeometryEdgeVisualizer.js +57 -57
  44. package/src/components/Grid.js +40 -40
  45. package/src/components/Line.js +225 -225
  46. package/src/components/MultiLinePath.js +25 -25
  47. package/src/components/MultiLineText2D.js +75 -75
  48. package/src/components/ObjectAxis.js +27 -27
  49. package/src/components/ObjectOrientedBoundingBox.js +228 -228
  50. package/src/components/PlaneHelper.js +38 -38
  51. package/src/components/Shape2D.js +52 -52
  52. package/src/components/Shape3D.js +46 -46
  53. package/src/components/Text2D.js +49 -49
  54. package/src/components/UIElement.js +246 -246
  55. package/src/components/UpdatableMaterialMesh.js +26 -26
  56. package/src/components/WorldImage.js +101 -101
  57. package/src/components/mouse_interactors/ObjectRotator.js +64 -64
  58. package/src/components/sdf_text/SDFText.js +156 -156
  59. package/src/components/sdf_text/SDFTextBatch.js +195 -195
  60. package/src/components/sdf_text/TextGlyph.js +17 -17
  61. package/src/data_textures/CustomDataTexture.js +53 -53
  62. package/src/data_textures/RGBADataTexture.js +14 -14
  63. package/src/data_textures/RGBAFloatDataTexture.js +14 -14
  64. package/src/data_textures/RGBDataTexture.js +14 -14
  65. package/src/data_textures/RGBFloatDataTexture.js +13 -13
  66. package/src/editor/ManipulatorHandle.js +73 -73
  67. package/src/editor/ObjectEditor.js +68 -68
  68. package/src/editor/ObjectManipulator.js +112 -112
  69. package/src/editor/ObjectPicker.js +77 -77
  70. package/src/editor/shaders/object_picker.frag +5 -5
  71. package/src/editor/shaders/object_picker.vert +7 -7
  72. package/src/gpu_particles/GPUParticleSystem.js +111 -111
  73. package/src/gpu_particles/ParticleAttribute.js +89 -89
  74. package/src/gpu_particles/ParticlePositionAttribute.js +42 -42
  75. package/src/html_utilities/CSSAnimator.js +66 -66
  76. package/src/html_utilities/css_animator_states/Animating.js +46 -46
  77. package/src/html_utilities/css_animator_states/Idle.js +27 -27
  78. package/src/index.js +134 -134
  79. package/src/loaders/AsyncAbstractLoader.js +160 -160
  80. package/src/loaders/AsyncAudiosLoader.js +34 -34
  81. package/src/loaders/AsyncObjectsLoader.js +44 -44
  82. package/src/loaders/AsyncTexturesLoader.js +81 -70
  83. package/src/loaders/assets_loader/AsyncAssetsLoaderWorker.js +69 -69
  84. package/src/loaders/assets_loader/ResourceContainer.js +37 -37
  85. package/src/loaders/assets_loader/ResourceLoaderChecker.js +39 -39
  86. package/src/materials/AddMaterial.js +20 -20
  87. package/src/materials/AlphaFilterMaterial.js +23 -23
  88. package/src/materials/BaseShaderMaterial.js +21 -21
  89. package/src/materials/BlitMaterial.js +30 -30
  90. package/src/materials/BloomComposeMaterial.js +24 -24
  91. package/src/materials/BoxBlurMaterial.js +16 -16
  92. package/src/materials/ClearAlphaMaterial.js +15 -15
  93. package/src/materials/ClearColorMaterial.js +33 -33
  94. package/src/materials/ClearDepthNormalMaterial.js +16 -16
  95. package/src/materials/DeferredRendererComposeMaterial.js +35 -35
  96. package/src/materials/DepthNormalMaterial.js +30 -30
  97. package/src/materials/DisplayNormalTextureMaterial.js +18 -18
  98. package/src/materials/DualFilteringBlurMaterial.js +14 -14
  99. package/src/materials/FXAAMaterial.js +12 -12
  100. package/src/materials/GaussianBlurMaterial.js +40 -40
  101. package/src/materials/LuminosityHighPassMaterial.js +26 -26
  102. package/src/materials/MedianFilterMaterial.js +45 -45
  103. package/src/materials/NormalMaterial.js +19 -19
  104. package/src/materials/SDFScreenTextMaterial.js +34 -34
  105. package/src/materials/SDFTextMaterial.js +41 -41
  106. package/src/materials/SSAOComposeMaterial.js +14 -14
  107. package/src/materials/SSAOMaterial.js +65 -65
  108. package/src/materials/ScreenSpaceTextureMaterial.js +67 -67
  109. package/src/materials/UIElementMaterial.js +30 -30
  110. package/src/materials/UnrealBloomComposeMaterial.js +100 -100
  111. package/src/materials/UnrealBlurMaterial.js +20 -20
  112. package/src/materials/UnrealComposeMaterial.js +27 -27
  113. package/src/materials/ViewPositionMaterial.js +19 -19
  114. package/src/materials/deferred/DeferredPointLightMaterial.js +42 -42
  115. package/src/materials/gpu_particles/AttributeUpdateMaterial.js +37 -37
  116. package/src/materials/gpu_particles/BasicParticleMaterial.js +25 -25
  117. package/src/materials/gpu_particles/ParticleStorageMaterial.js +37 -37
  118. package/src/materials/gpu_particles/PositionStorageMaterial.js +26 -26
  119. package/src/object_pool/Pool.js +75 -75
  120. package/src/primitives/Arrow.js +62 -62
  121. package/src/primitives/Cube.js +24 -24
  122. package/src/primitives/HorizontalPlane.js +27 -27
  123. package/src/primitives/Sphere.js +22 -22
  124. package/src/primitives/VerticalPlane.js +26 -26
  125. package/src/raycast/GroupRaycaster.js +43 -43
  126. package/src/raycast/PlaneDragResolver.js +92 -92
  127. package/src/raycast/PlaneRaycastResolver.js +24 -24
  128. package/src/raycast/PlaneRaycaster.js +25 -25
  129. package/src/raycast/RaycastResolver.js +24 -24
  130. package/src/raycast/SurfaceDragResolver.js +80 -80
  131. package/src/raycast/states/BaseState.js +18 -18
  132. package/src/raycast/states/IdleState.js +19 -19
  133. package/src/raycast/states/OnRaycastEnter.js +17 -17
  134. package/src/raycast/states/OnRaycastExit.js +18 -18
  135. package/src/raycast/states/OnRaycastHover.js +27 -27
  136. package/src/render_mode/BaseRender.js +34 -34
  137. package/src/render_mode/BloomRender.js +63 -63
  138. package/src/render_mode/DebugNormalsRender.js +22 -22
  139. package/src/render_mode/DeferredRender.js +110 -110
  140. package/src/render_mode/NormalAORender.js +72 -72
  141. package/src/render_mode/NormalRender.js +38 -38
  142. package/src/render_mode/OutlineRender.js +157 -157
  143. package/src/render_mode/PlanarReflectionsRender.js +121 -121
  144. package/src/render_mode/UnrealBloomRender.js +123 -123
  145. package/src/render_mode/VRRender.js +71 -71
  146. package/src/render_utilities/Blitter.js +101 -101
  147. package/src/render_utilities/Blurrer.js +31 -31
  148. package/src/render_utilities/DepthAndNormalsRenderer.js +47 -47
  149. package/src/render_utilities/DualFilteringBlurrer.js +58 -58
  150. package/src/render_utilities/GaussianBlurrer.js +167 -167
  151. package/src/render_utilities/MedianFilter.js +68 -68
  152. package/src/render_utilities/ViewPositionRenderer.js +50 -50
  153. package/src/resource_loader/BasisLoader.js +51 -51
  154. package/src/resource_loader/FontLoader.js +48 -48
  155. package/src/resource_loader/JSONLoader.js +35 -35
  156. package/src/resource_loader/OBJLoader.js +48 -48
  157. package/src/resource_loader/PointArrayLoader.js +72 -72
  158. package/src/resource_loader/RGBETextureLoader.js +48 -48
  159. package/src/resource_loader/VideoLoader.js +32 -32
  160. package/src/scenes/AbstractScene.js +175 -175
  161. package/src/scenes/loading_states/CompilatorManager.js +41 -41
  162. package/src/scenes/loading_states/HighQualityLoadingState.js +28 -28
  163. package/src/scenes/loading_states/LoadingState.js +117 -117
  164. package/src/scenes/loading_states/RegularLoadingState.js +41 -41
  165. package/src/shaders/add/add.frag +27 -27
  166. package/src/shaders/anti_aliasing/fxaa.frag +72 -72
  167. package/src/shaders/basic_color/basic_color.frag +5 -5
  168. package/src/shaders/basic_color/basic_color.vert +9 -9
  169. package/src/shaders/basic_line/basic_line.frag +36 -36
  170. package/src/shaders/basic_line/basic_line.vert +37 -37
  171. package/src/shaders/basic_texture/basic_texture.frag +9 -9
  172. package/src/shaders/basic_texture/basic_texture.vert +16 -16
  173. package/src/shaders/bloom/bloom_compose_frag.glsl +22 -22
  174. package/src/shaders/bloom/cheap_bloom_compose_frag.glsl +13 -13
  175. package/src/shaders/box_blur/box_blur.frag +24 -24
  176. package/src/shaders/box_blur/compose.frag +31 -31
  177. package/src/shaders/clear/clear_depth_normal.frag +24 -24
  178. package/src/shaders/copy/copy.frag +6 -6
  179. package/src/shaders/copy/copy.vert +5 -5
  180. package/src/shaders/deferred/blit_copy.vert +11 -11
  181. package/src/shaders/deferred/deferred_compose.frag +59 -59
  182. package/src/shaders/deferred/point_light.frag +66 -66
  183. package/src/shaders/deferred/point_light.vert +13 -13
  184. package/src/shaders/depth_normals/debug_normals.frag +47 -47
  185. package/src/shaders/depth_normals/depth_normals.frag +30 -30
  186. package/src/shaders/depth_normals/depth_normals.vert +12 -12
  187. package/src/shaders/dual_filter_blur/alpha_filter.frag +14 -14
  188. package/src/shaders/dual_filter_blur/downsample.frag +21 -21
  189. package/src/shaders/dual_filter_blur/upsample.frag +24 -24
  190. package/src/shaders/edge_visualizer/edge_visualizer.frag +17 -17
  191. package/src/shaders/edge_visualizer/edge_visualizer.vert +15 -15
  192. package/src/shaders/edges/corners.frag +10 -10
  193. package/src/shaders/edges/corners.vert +30 -30
  194. package/src/shaders/edges/edges.frag +6 -6
  195. package/src/shaders/edges/edges.vert +27 -27
  196. package/src/shaders/gaussian_blur/gaussian_blur.frag +43 -43
  197. package/src/shaders/gaussian_blur/unreal_bloom_compose.frag +36 -36
  198. package/src/shaders/gpu_particles/common_utils.glsl +12 -12
  199. package/src/shaders/gpu_particles/generic_storage.frag +6 -6
  200. package/src/shaders/gpu_particles/store/store_position.vert +14 -14
  201. package/src/shaders/gpu_particles/update/basic_update.frag +20 -20
  202. package/src/shaders/gpu_particles/visualize/visualize.frag +10 -10
  203. package/src/shaders/gpu_particles/visualize/visualize.vert +12 -12
  204. package/src/shaders/grid/grid.frag +16 -16
  205. package/src/shaders/grid/grid.vert +9 -9
  206. package/src/shaders/luminosity_high_pass/luminosity_high_pass.frag +37 -37
  207. package/src/shaders/median_filter/median_filter.frag +134 -134
  208. package/src/shaders/normal/normal.frag +6 -6
  209. package/src/shaders/normal/normal.vert +6 -6
  210. package/src/shaders/sdf_text/sdf_screen_text.frag +51 -51
  211. package/src/shaders/sdf_text/sdf_screen_text.vert +41 -41
  212. package/src/shaders/sdf_text/sdf_text.frag +53 -53
  213. package/src/shaders/sdf_text/sdf_text.vert +41 -41
  214. package/src/shaders/ssao/hbao.frag +264 -264
  215. package/src/shaders/ssao/ssao.frag +95 -95
  216. package/src/shaders/ssao/ssao.vert +10 -10
  217. package/src/shaders/ssao/ssao_compose.frag +14 -14
  218. package/src/shaders/transparent_mix/copy.frag +6 -6
  219. package/src/shaders/transparent_mix/transparent_mix.frag +18 -18
  220. package/src/shaders/transparent_mix/transparent_mix.vert +7 -7
  221. package/src/shaders/ui/ss_texture.frag +10 -10
  222. package/src/shaders/ui/ss_texture.vert +31 -31
  223. package/src/shaders/ui/ws_texture.vert +38 -38
  224. package/src/shaders/ui_element/ui_element.frag +11 -11
  225. package/src/shaders/ui_element/ui_element.vert +32 -32
  226. package/src/shaders/unreal_blur/unreal_blur.frag +24 -24
  227. package/src/shaders/unreal_blur/unreal_compose.frag +23 -23
  228. package/src/shaders/write_view_position/write_view_position.frag +6 -6
  229. package/src/shaders/write_view_position/write_view_position.vert +8 -8
  230. package/src/static_batcher/BatchedMesh.js +56 -56
  231. package/src/static_batcher/GeometryBatch.js +308 -308
  232. package/src/static_batcher/GeometryBatcher.js +64 -64
  233. package/src/static_batcher/MeshBatcher.js +58 -58
  234. package/src/ui/ui_element_position/ScreenSpacePosition.js +16 -16
  235. package/src/ui/ui_element_position/WorldSpacePosition.js +23 -23
  236. package/src/ui/ui_element_state/OnIdle.js +24 -24
  237. package/src/ui/ui_element_state/OnMouseEnter.js +39 -39
  238. package/src/ui/ui_element_state/OnMouseExit.js +22 -22
  239. package/src/ui/ui_element_state/OnMouseHover.js +46 -46
  240. package/src/ui/ui_element_state/UIElementState.js +34 -34
  241. package/src/utilities/ArrayUtilities.js +57 -57
  242. package/src/utilities/CameraUtilities.js +283 -283
  243. package/src/utilities/EasingFunctions.js +231 -231
  244. package/src/utilities/FrustumPointFitter.js +257 -257
  245. package/src/utilities/GeometryUtilities.js +76 -76
  246. package/src/utilities/HTMLUtilities.js +76 -76
  247. package/src/utilities/ImageUtilities.js +28 -28
  248. package/src/utilities/MeshSampler.js +206 -206
  249. package/src/utilities/ModelUtilities.js +162 -162
  250. package/src/utilities/OMath.js +158 -158
  251. package/src/utilities/OrthographicFrustumPointFitter.js +49 -49
  252. package/src/utilities/PerspectiveFrustumPointFitter.js +254 -254
  253. package/src/utilities/StringUtilities.js +43 -43
  254. package/src/utilities/TimeUtilities.js +24 -24
  255. package/src/utilities/Validation.js +36 -36
  256. package/src/view_components/ApplicationView.js +73 -73
  257. package/src/view_components/TransitionManager.js +75 -75
  258. package/src/view_components/ViewComponent.js +61 -61
  259. package/src/view_components/ViewComponentManager.js +69 -69
  260. package/src/view_components/ViewManager.js +145 -145
  261. package/src/view_components/ViewState.js +49 -49
  262. package/src/view_components/transition/ActionSequencerBuilder.js +124 -124
  263. package/src/view_components/transition/DrawIOAnimationSheet.js +92 -92
  264. package/src/view_components/transition/TransitionTable.js +54 -54
  265. package/src/view_components/transition/ViewStateTransitionHandler.js +106 -106
@@ -1,172 +1,172 @@
1
- // @ts-check
2
- // @ts-ignore
3
- import corners_frag from '../shaders/edges/corners.frag';
4
- // @ts-ignore
5
- import corners_vert from '../shaders/edges/corners.vert';
6
- // @ts-ignore
7
- import edge_line_frag from '../shaders/edges/edges.frag';
8
- // @ts-ignore
9
- import edge_line_vert from '../shaders/edges/edges.vert';
10
-
11
- import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js';
12
-
13
- // eslint-disable-next-line no-unused-vars
14
- import { BufferAttribute, BufferGeometry, Color, EdgesGeometry, InterleavedBufferAttribute, LineBasicMaterial, LineSegments, Mesh, Object3D, PlaneGeometry, ShaderMaterial, Vector3 } from 'three';
15
-
16
- class EdgeMesh extends Object3D
17
- {
18
- /**
19
- * @param {BufferGeometry} buffer_geometry
20
- * @param {number} [thickness]
21
- * @param {string} [color]
22
- */
23
- constructor(buffer_geometry, thickness, color)
24
- {
25
- super();
26
- thickness = thickness || 0.1;
27
- color = color || '#555555';
28
- this.edges_material = new ShaderMaterial({
29
- uniforms: {
30
- _Thickness: { value: thickness },
31
- _Color: { value: new Color(color) }
32
- },
33
- vertexShader: edge_line_vert,
34
- fragmentShader: edge_line_frag,
35
- transparent: true,
36
- depthWrite: false
37
- });
38
-
39
- this.corners_material = new ShaderMaterial({
40
- uniforms: {
41
- _Thickness: { value: thickness },
42
- _Color: { value: new Color(color) }
43
- },
44
- vertexShader: corners_vert,
45
- fragmentShader: corners_frag,
46
- transparent: true,
47
- depthWrite: false
48
- });
49
-
50
- const edges_geometry = this.__get_edges_geometry(this.__get_edges(buffer_geometry));
51
- const corners_geometry = this.__get_corners_geometry(buffer_geometry.getAttribute('position'));
52
-
53
- this.edges_mesh = new Mesh(edges_geometry, this.edges_material);
54
- this.corners_mesh = new Mesh(corners_geometry, this.corners_material);
55
-
56
- this.edges_mesh.frustumCulled = false;
57
- this.corners_mesh.frustumCulled = false;
58
- this.add(this.edges_mesh);
59
- this.add(this.corners_mesh);
60
- }
61
-
62
- /**
63
- * @param {BufferGeometry} cube_geometry
64
- * @returns {Vector3[]}
65
- */
66
- __get_edges(cube_geometry)
67
- {
68
- const edges = new EdgesGeometry(cube_geometry);
69
- const line = new LineSegments(edges, new LineBasicMaterial());
70
- const points_array = line.geometry.attributes.position.array;
71
-
72
- const points = [];
73
- for (let i = 0; i < points_array.length; i += 3)
74
- {
75
- points.push(new Vector3(points_array[i], points_array[i + 1], points_array[i + 2]));
76
- }
77
- return points;
78
- }
79
-
80
- /**
81
- * @param {number} TIME
82
- */
83
- update(TIME) // eslint-disable-line no-unused-vars
84
- {
85
-
86
- }
87
-
88
- /**
89
- * @param {Vector3[]} points
90
- */
91
- __get_edges_geometry(points)
92
- {
93
- const buffer_geometries = [];
94
- for (let i = 0; i < points.length; i += 2)
95
- {
96
- const dir = points[i + 1].clone().sub(points[i]).normalize();
97
- const geometry = new PlaneGeometry(1, 1);
98
- const vertices = geometry.getAttribute('position');
99
- // top right
100
- vertices.array[0] = points[i].x;
101
- vertices.array[1] = points[i].y;
102
- vertices.array[2] = points[i].z;
103
- // top left
104
- vertices.array[3] = points[i].x;
105
- vertices.array[4] = points[i].y;
106
- vertices.array[5] = points[i].z;
107
-
108
- // bottom right
109
- vertices.array[6] = points[i + 1].x;
110
- vertices.array[7] = points[i + 1].y;
111
- vertices.array[8] = points[i + 1].z;
112
- // bottom left
113
- vertices.array[9] = points[i + 1].x;
114
- vertices.array[10] = points[i + 1].y;
115
- vertices.array[11] = points[i + 1].z;
116
-
117
- const dirs = [];
118
- for (let d = 0; d < vertices.count; d++)
119
- {
120
- dirs.push(dir.x);
121
- dirs.push(dir.y);
122
- dirs.push(dir.z);
123
- }
124
- const dir_array = new Float32Array(dirs);
125
- geometry.setAttribute('tangent', new BufferAttribute(dir_array, 3));
126
- buffer_geometries.push(geometry);
127
- }
128
-
129
- return BufferGeometryUtils.mergeGeometries(buffer_geometries);
130
- }
131
-
132
- /**
133
- * @param {BufferAttribute | InterleavedBufferAttribute} geometry_vertices
134
- * @returns {BufferGeometry}
135
- */
136
- __get_corners_geometry(geometry_vertices)
137
- {
138
- const circle_buffer_geometries = [];
139
- for (let i = 0; i < geometry_vertices.count; i++)
140
- {
141
- const plane_geometry = new PlaneGeometry(1, 1);
142
- const plane_vertices = plane_geometry.getAttribute('position');
143
- const w_pos = [];
144
- for (let d = 0; d < plane_vertices.count; d++)
145
- {
146
- w_pos.push(geometry_vertices.array[i * 3 + 0]);
147
- w_pos.push(geometry_vertices.array[i * 3 + 1]);
148
- w_pos.push(geometry_vertices.array[i * 3 + 2]);
149
- }
150
- const pos_array = new Float32Array(w_pos);
151
- plane_geometry.setAttribute('w_pos', new BufferAttribute(pos_array, 3));
152
- circle_buffer_geometries.push(plane_geometry);
153
- }
154
- return BufferGeometryUtils.mergeGeometries(circle_buffer_geometries);
155
- }
156
-
157
- /**
158
- * @param {boolean} boolean
159
- */
160
- set_visible(boolean)
161
- {
162
- this.edges_mesh.visible = boolean;
163
- this.corners_mesh.visible = boolean;
164
- }
165
-
166
- dispose()
167
- {
168
-
169
- }
170
- }
171
-
172
- export { EdgeMesh };
1
+ // @ts-check
2
+ // @ts-ignore
3
+ import corners_frag from '../shaders/edges/corners.frag';
4
+ // @ts-ignore
5
+ import corners_vert from '../shaders/edges/corners.vert';
6
+ // @ts-ignore
7
+ import edge_line_frag from '../shaders/edges/edges.frag';
8
+ // @ts-ignore
9
+ import edge_line_vert from '../shaders/edges/edges.vert';
10
+
11
+ import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js';
12
+
13
+ // eslint-disable-next-line no-unused-vars
14
+ import { BufferAttribute, BufferGeometry, Color, EdgesGeometry, InterleavedBufferAttribute, LineBasicMaterial, LineSegments, Mesh, Object3D, PlaneGeometry, ShaderMaterial, Vector3 } from 'three';
15
+
16
+ class EdgeMesh extends Object3D
17
+ {
18
+ /**
19
+ * @param {BufferGeometry} buffer_geometry
20
+ * @param {number} [thickness]
21
+ * @param {string} [color]
22
+ */
23
+ constructor(buffer_geometry, thickness, color)
24
+ {
25
+ super();
26
+ thickness = thickness || 0.1;
27
+ color = color || '#555555';
28
+ this.edges_material = new ShaderMaterial({
29
+ uniforms: {
30
+ _Thickness: { value: thickness },
31
+ _Color: { value: new Color(color) }
32
+ },
33
+ vertexShader: edge_line_vert,
34
+ fragmentShader: edge_line_frag,
35
+ transparent: true,
36
+ depthWrite: false
37
+ });
38
+
39
+ this.corners_material = new ShaderMaterial({
40
+ uniforms: {
41
+ _Thickness: { value: thickness },
42
+ _Color: { value: new Color(color) }
43
+ },
44
+ vertexShader: corners_vert,
45
+ fragmentShader: corners_frag,
46
+ transparent: true,
47
+ depthWrite: false
48
+ });
49
+
50
+ const edges_geometry = this.__get_edges_geometry(this.__get_edges(buffer_geometry));
51
+ const corners_geometry = this.__get_corners_geometry(buffer_geometry.getAttribute('position'));
52
+
53
+ this.edges_mesh = new Mesh(edges_geometry, this.edges_material);
54
+ this.corners_mesh = new Mesh(corners_geometry, this.corners_material);
55
+
56
+ this.edges_mesh.frustumCulled = false;
57
+ this.corners_mesh.frustumCulled = false;
58
+ this.add(this.edges_mesh);
59
+ this.add(this.corners_mesh);
60
+ }
61
+
62
+ /**
63
+ * @param {BufferGeometry} cube_geometry
64
+ * @returns {Vector3[]}
65
+ */
66
+ __get_edges(cube_geometry)
67
+ {
68
+ const edges = new EdgesGeometry(cube_geometry);
69
+ const line = new LineSegments(edges, new LineBasicMaterial());
70
+ const points_array = line.geometry.attributes.position.array;
71
+
72
+ const points = [];
73
+ for (let i = 0; i < points_array.length; i += 3)
74
+ {
75
+ points.push(new Vector3(points_array[i], points_array[i + 1], points_array[i + 2]));
76
+ }
77
+ return points;
78
+ }
79
+
80
+ /**
81
+ * @param {number} TIME
82
+ */
83
+ update(TIME) // eslint-disable-line no-unused-vars
84
+ {
85
+
86
+ }
87
+
88
+ /**
89
+ * @param {Vector3[]} points
90
+ */
91
+ __get_edges_geometry(points)
92
+ {
93
+ const buffer_geometries = [];
94
+ for (let i = 0; i < points.length; i += 2)
95
+ {
96
+ const dir = points[i + 1].clone().sub(points[i]).normalize();
97
+ const geometry = new PlaneGeometry(1, 1);
98
+ const vertices = geometry.getAttribute('position');
99
+ // top right
100
+ vertices.array[0] = points[i].x;
101
+ vertices.array[1] = points[i].y;
102
+ vertices.array[2] = points[i].z;
103
+ // top left
104
+ vertices.array[3] = points[i].x;
105
+ vertices.array[4] = points[i].y;
106
+ vertices.array[5] = points[i].z;
107
+
108
+ // bottom right
109
+ vertices.array[6] = points[i + 1].x;
110
+ vertices.array[7] = points[i + 1].y;
111
+ vertices.array[8] = points[i + 1].z;
112
+ // bottom left
113
+ vertices.array[9] = points[i + 1].x;
114
+ vertices.array[10] = points[i + 1].y;
115
+ vertices.array[11] = points[i + 1].z;
116
+
117
+ const dirs = [];
118
+ for (let d = 0; d < vertices.count; d++)
119
+ {
120
+ dirs.push(dir.x);
121
+ dirs.push(dir.y);
122
+ dirs.push(dir.z);
123
+ }
124
+ const dir_array = new Float32Array(dirs);
125
+ geometry.setAttribute('tangent', new BufferAttribute(dir_array, 3));
126
+ buffer_geometries.push(geometry);
127
+ }
128
+
129
+ return BufferGeometryUtils.mergeGeometries(buffer_geometries);
130
+ }
131
+
132
+ /**
133
+ * @param {BufferAttribute | InterleavedBufferAttribute} geometry_vertices
134
+ * @returns {BufferGeometry}
135
+ */
136
+ __get_corners_geometry(geometry_vertices)
137
+ {
138
+ const circle_buffer_geometries = [];
139
+ for (let i = 0; i < geometry_vertices.count; i++)
140
+ {
141
+ const plane_geometry = new PlaneGeometry(1, 1);
142
+ const plane_vertices = plane_geometry.getAttribute('position');
143
+ const w_pos = [];
144
+ for (let d = 0; d < plane_vertices.count; d++)
145
+ {
146
+ w_pos.push(geometry_vertices.array[i * 3 + 0]);
147
+ w_pos.push(geometry_vertices.array[i * 3 + 1]);
148
+ w_pos.push(geometry_vertices.array[i * 3 + 2]);
149
+ }
150
+ const pos_array = new Float32Array(w_pos);
151
+ plane_geometry.setAttribute('w_pos', new BufferAttribute(pos_array, 3));
152
+ circle_buffer_geometries.push(plane_geometry);
153
+ }
154
+ return BufferGeometryUtils.mergeGeometries(circle_buffer_geometries);
155
+ }
156
+
157
+ /**
158
+ * @param {boolean} boolean
159
+ */
160
+ set_visible(boolean)
161
+ {
162
+ this.edges_mesh.visible = boolean;
163
+ this.corners_mesh.visible = boolean;
164
+ }
165
+
166
+ dispose()
167
+ {
168
+
169
+ }
170
+ }
171
+
172
+ export { EdgeMesh };
@@ -1,57 +1,57 @@
1
- // @ts-check
2
- // @ts-ignore
3
- import edge_visualizer_frag from '../shaders/edge_visualizer/edge_visualizer.frag';
4
- // @ts-ignore
5
- import edge_visualizer_vert from '../shaders/edge_visualizer/edge_visualizer.vert';
6
-
7
- import { GeometryUtilities } from '../utilities/GeometryUtilities';
8
-
9
- import { BufferGeometry, Mesh } from 'three'; // eslint-disable-line no-unused-vars
10
- import { Color } from 'three';
11
- import { ShaderMaterial } from 'three';
12
-
13
- class GeometryEdgeVisualizer extends Mesh
14
- {
15
- /**
16
- * @param {BufferGeometry} geometry
17
- * @param {string | number} [line_color]
18
- */
19
- constructor(geometry, line_color)
20
- {
21
- line_color = line_color || '#91EE91';
22
-
23
- const material = new ShaderMaterial({
24
- uniforms: {
25
- _Color: { value: new Color('#CC3333') },
26
- _LineColor: { value: new Color(line_color) },
27
- _Alpha: { value: 1 },
28
- _DepthOffset: { value: 0.001 },
29
- _Thickness: { value: 2.5 }
30
- },
31
- vertexShader: edge_visualizer_vert,
32
- fragmentShader: edge_visualizer_frag,
33
- // @ts-ignore
34
- extensions: { derivatives: true },
35
- transparent: true,
36
- depthWrite: false
37
- });
38
-
39
- let non_indexed_geometry = geometry;
40
- if (non_indexed_geometry.index)
41
- {
42
- non_indexed_geometry = GeometryUtilities.convert_to_non_indexed_geometry(geometry);
43
- }
44
-
45
- GeometryUtilities.add_barycentric_attribute(non_indexed_geometry);
46
-
47
- super(non_indexed_geometry, material);
48
- this.material = material;
49
- }
50
-
51
- hide_faces()
52
- {
53
- this.material.uniforms._Alpha.value = 0;
54
- }
55
- }
56
-
57
- export { GeometryEdgeVisualizer };
1
+ // @ts-check
2
+ // @ts-ignore
3
+ import edge_visualizer_frag from '../shaders/edge_visualizer/edge_visualizer.frag';
4
+ // @ts-ignore
5
+ import edge_visualizer_vert from '../shaders/edge_visualizer/edge_visualizer.vert';
6
+
7
+ import { GeometryUtilities } from '../utilities/GeometryUtilities';
8
+
9
+ import { BufferGeometry, Mesh } from 'three'; // eslint-disable-line no-unused-vars
10
+ import { Color } from 'three';
11
+ import { ShaderMaterial } from 'three';
12
+
13
+ class GeometryEdgeVisualizer extends Mesh
14
+ {
15
+ /**
16
+ * @param {BufferGeometry} geometry
17
+ * @param {string | number} [line_color]
18
+ */
19
+ constructor(geometry, line_color)
20
+ {
21
+ line_color = line_color || '#91EE91';
22
+
23
+ const material = new ShaderMaterial({
24
+ uniforms: {
25
+ _Color: { value: new Color('#CC3333') },
26
+ _LineColor: { value: new Color(line_color) },
27
+ _Alpha: { value: 1 },
28
+ _DepthOffset: { value: 0.001 },
29
+ _Thickness: { value: 2.5 }
30
+ },
31
+ vertexShader: edge_visualizer_vert,
32
+ fragmentShader: edge_visualizer_frag,
33
+ // @ts-ignore
34
+ extensions: { derivatives: true },
35
+ transparent: true,
36
+ depthWrite: false
37
+ });
38
+
39
+ let non_indexed_geometry = geometry;
40
+ if (non_indexed_geometry.index)
41
+ {
42
+ non_indexed_geometry = GeometryUtilities.convert_to_non_indexed_geometry(geometry);
43
+ }
44
+
45
+ GeometryUtilities.add_barycentric_attribute(non_indexed_geometry);
46
+
47
+ super(non_indexed_geometry, material);
48
+ this.material = material;
49
+ }
50
+
51
+ hide_faces()
52
+ {
53
+ this.material.uniforms._Alpha.value = 0;
54
+ }
55
+ }
56
+
57
+ export { GeometryEdgeVisualizer };
@@ -1,40 +1,40 @@
1
- // @ts-check
2
- // @ts-ignore
3
- import grid_frag from '../shaders/grid/grid.frag';
4
- // @ts-ignore
5
- import grid_vert from '../shaders/grid/grid.vert';
6
-
7
- import { GeometryUtilities } from '../utilities/GeometryUtilities';
8
-
9
- import { Mesh } from 'three';
10
- import { ShaderMaterial } from 'three';
11
- import { Color } from 'three';
12
- import { PlaneGeometry } from 'three';
13
-
14
- class Grid extends Mesh
15
- {
16
- constructor()
17
- {
18
- const material = new ShaderMaterial({
19
- uniforms: {
20
- _Color: { value: new Color('#919191') }
21
- },
22
- vertexShader: grid_vert,
23
- fragmentShader: grid_frag,
24
- // @ts-ignore
25
- extensions: { derivatives: true },
26
- transparent: true,
27
- depthWrite: false
28
- });
29
-
30
- const plane_geometry = new PlaneGeometry(100, 100, 100, 100);
31
-
32
- const non_indexed_geometry = GeometryUtilities.convert_to_non_indexed_geometry(plane_geometry);
33
-
34
- super(non_indexed_geometry, material);
35
-
36
- this.rotation.x = -3.14 / 2;
37
- }
38
- }
39
-
40
- export { Grid };
1
+ // @ts-check
2
+ // @ts-ignore
3
+ import grid_frag from '../shaders/grid/grid.frag';
4
+ // @ts-ignore
5
+ import grid_vert from '../shaders/grid/grid.vert';
6
+
7
+ import { GeometryUtilities } from '../utilities/GeometryUtilities';
8
+
9
+ import { Mesh } from 'three';
10
+ import { ShaderMaterial } from 'three';
11
+ import { Color } from 'three';
12
+ import { PlaneGeometry } from 'three';
13
+
14
+ class Grid extends Mesh
15
+ {
16
+ constructor()
17
+ {
18
+ const material = new ShaderMaterial({
19
+ uniforms: {
20
+ _Color: { value: new Color('#919191') }
21
+ },
22
+ vertexShader: grid_vert,
23
+ fragmentShader: grid_frag,
24
+ // @ts-ignore
25
+ extensions: { derivatives: true },
26
+ transparent: true,
27
+ depthWrite: false
28
+ });
29
+
30
+ const plane_geometry = new PlaneGeometry(100, 100, 100, 100);
31
+
32
+ const non_indexed_geometry = GeometryUtilities.convert_to_non_indexed_geometry(plane_geometry);
33
+
34
+ super(non_indexed_geometry, material);
35
+
36
+ this.rotation.x = -3.14 / 2;
37
+ }
38
+ }
39
+
40
+ export { Grid };