ohzi-core 11.2.0 → 11.2.2
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/build/index.module.js +1 -1
- package/build/index.module.js.map +1 -1
- package/package.json +2 -2
- package/src/Browser.js +2 -13
- package/src/Graphics.js +25 -0
- package/src/components/EdgeMesh.js +6 -15
- package/src/primitives/Arrow.js +1 -1
- package/src/resource_loader/HDRCubeTextureLoader.js +25 -19
- package/src/static_batcher/GeometryBatcher.js +1 -1
- package/src/static_batcher/MeshBatcher.js +1 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ohzi-core",
|
|
3
3
|
"sideEffects": false,
|
|
4
|
-
"version": "11.2.
|
|
4
|
+
"version": "11.2.2",
|
|
5
5
|
"description": "OHZI Interactive Core Library",
|
|
6
6
|
"source": "src/index.js",
|
|
7
7
|
"module": "build/index.module.js",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"registry": "https://registry.npmjs.org/"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"three": "0.
|
|
47
|
+
"three": "0.161.0"
|
|
48
48
|
},
|
|
49
49
|
"standardx": {
|
|
50
50
|
"ignore": [
|
package/src/Browser.js
CHANGED
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
|
|
2
2
|
class Browser
|
|
3
3
|
{
|
|
4
|
-
init(opr, chrome)
|
|
4
|
+
async init(opr, chrome)
|
|
5
5
|
{
|
|
6
6
|
this.browser_name = '';
|
|
7
7
|
this.agent = navigator.userAgent.toLowerCase();
|
|
8
8
|
|
|
9
|
-
// vr specific
|
|
10
|
-
this.vr_browser_keywords = ['oculusbrowser', 'oculus', 'vive', 'rift', 'windowsmr', 'cardboard', 'daydream', 'wolvic'];
|
|
11
|
-
this.vr_browser_name = this.vr_browser_keywords.find(keyword => this.agent.includes(keyword));
|
|
12
|
-
// Check for WebXR support (indicating VR capabilities)
|
|
13
9
|
this.has_web_xr_support = 'xr' in navigator;
|
|
10
|
+
this.is_vr = this.has_web_xr_support && await navigator.xr.isSessionSupported('immersive-vr');
|
|
14
11
|
|
|
15
12
|
switch (true)
|
|
16
13
|
{
|
|
17
|
-
case this.vr_browser_name !== undefined && this.has_web_xr_support:
|
|
18
|
-
this.browser_name = this.vr_browser_name;
|
|
19
|
-
break;
|
|
20
14
|
case this.agent.indexOf('edge') > -1:
|
|
21
15
|
this.browser_name = 'edge_ie';
|
|
22
16
|
break;
|
|
@@ -71,11 +65,6 @@ class Browser
|
|
|
71
65
|
return this.browser_name === 'edge_chromium';
|
|
72
66
|
}
|
|
73
67
|
|
|
74
|
-
get is_vr()
|
|
75
|
-
{
|
|
76
|
-
return this.vr_browser_keywords.includes(this.browser_name);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
68
|
get has_webm()
|
|
80
69
|
{
|
|
81
70
|
return !!(this.is_chrome || this.is_firefox || this.is_edge_chromium);
|
package/src/Graphics.js
CHANGED
|
@@ -2,6 +2,7 @@ import { CameraManager } from './CameraManager';
|
|
|
2
2
|
import { Capabilities } from './Capabilities';
|
|
3
3
|
import { OScreen } from './OScreen';
|
|
4
4
|
import { SceneManager } from './SceneManager';
|
|
5
|
+
|
|
5
6
|
import { BaseRender } from './render_mode/BaseRender';
|
|
6
7
|
import { Blitter } from './render_utilities/Blitter';
|
|
7
8
|
import { DepthAndNormalsRenderer } from './render_utilities/DepthAndNormalsRenderer';
|
|
@@ -175,6 +176,30 @@ class Graphics
|
|
|
175
176
|
this.__apply_override_material(scene, undefined);
|
|
176
177
|
}
|
|
177
178
|
|
|
179
|
+
compile(scene, camera, RT, override_mat)
|
|
180
|
+
{
|
|
181
|
+
this.__apply_override_material(scene, override_mat);
|
|
182
|
+
|
|
183
|
+
this._renderer.setRenderTarget(RT === undefined ? null : RT);
|
|
184
|
+
this._renderer.compile(scene || SceneManager.current,
|
|
185
|
+
camera || CameraManager.current);
|
|
186
|
+
|
|
187
|
+
this.__apply_override_material(scene, undefined);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
async compile_async(scene, camera, RT, override_mat, target_scene)
|
|
191
|
+
{
|
|
192
|
+
this.__apply_override_material(scene, override_mat);
|
|
193
|
+
|
|
194
|
+
this._renderer.setRenderTarget(RT === undefined ? null : RT);
|
|
195
|
+
const promise = this._renderer.compileAsync(scene || SceneManager.current,
|
|
196
|
+
camera || CameraManager.current, target_scene);
|
|
197
|
+
|
|
198
|
+
this.__apply_override_material(scene, undefined);
|
|
199
|
+
|
|
200
|
+
return promise;
|
|
201
|
+
}
|
|
202
|
+
|
|
178
203
|
render_scene(scene)
|
|
179
204
|
{
|
|
180
205
|
if (scene.on_pre_render)
|
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
import edge_line_vert from '../shaders/edges/edges.vert';
|
|
2
|
-
import edge_line_frag from '../shaders/edges/edges.frag';
|
|
3
|
-
import corners_vert from '../shaders/edges/corners.vert';
|
|
4
1
|
import corners_frag from '../shaders/edges/corners.frag';
|
|
2
|
+
import corners_vert from '../shaders/edges/corners.vert';
|
|
3
|
+
import edge_line_frag from '../shaders/edges/edges.frag';
|
|
4
|
+
import edge_line_vert from '../shaders/edges/edges.vert';
|
|
5
5
|
|
|
6
6
|
import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js';
|
|
7
7
|
|
|
8
|
-
import { Object3D } from 'three';
|
|
9
|
-
import { ShaderMaterial } from 'three';
|
|
10
|
-
import { Color } from 'three';
|
|
11
|
-
import { Mesh } from 'three';
|
|
12
|
-
import { EdgesGeometry } from 'three';
|
|
13
|
-
import { LineSegments } from 'three';
|
|
14
|
-
import { LineBasicMaterial } from 'three';
|
|
15
|
-
import { Vector3 } from 'three';
|
|
16
|
-
import { PlaneGeometry } from 'three';
|
|
17
|
-
import { BufferAttribute } from 'three';
|
|
8
|
+
import { BufferAttribute, Color, EdgesGeometry, LineBasicMaterial, LineSegments, Mesh, Object3D, PlaneGeometry, ShaderMaterial, Vector3 } from 'three';
|
|
18
9
|
|
|
19
10
|
class EdgeMesh extends Object3D
|
|
20
11
|
{
|
|
@@ -114,7 +105,7 @@ class EdgeMesh extends Object3D
|
|
|
114
105
|
buffer_geometries.push(geometry);
|
|
115
106
|
}
|
|
116
107
|
|
|
117
|
-
return BufferGeometryUtils.
|
|
108
|
+
return BufferGeometryUtils.mergeGeometries(buffer_geometries);
|
|
118
109
|
}
|
|
119
110
|
|
|
120
111
|
__get_corners_geometry(geometry_vertices)
|
|
@@ -135,7 +126,7 @@ class EdgeMesh extends Object3D
|
|
|
135
126
|
plane_geometry.setAttribute('w_pos', new BufferAttribute(pos_array, 3));
|
|
136
127
|
circle_buffer_geometries.push(plane_geometry);
|
|
137
128
|
}
|
|
138
|
-
return BufferGeometryUtils.
|
|
129
|
+
return BufferGeometryUtils.mergeGeometries(circle_buffer_geometries);
|
|
139
130
|
}
|
|
140
131
|
|
|
141
132
|
set_visible(boolean)
|
package/src/primitives/Arrow.js
CHANGED
|
@@ -17,7 +17,7 @@ class Arrow extends Mesh
|
|
|
17
17
|
const cone_geometry = new ConeGeometry(0.1, cone_height, 32);
|
|
18
18
|
cone_geometry.translate(0, cylinder_height + cone_height / 2, 0);
|
|
19
19
|
|
|
20
|
-
const buffer_geometry = BufferGeometryUtils.
|
|
20
|
+
const buffer_geometry = BufferGeometryUtils.mergeGeometries([cylinder_geo, cone_geometry]);
|
|
21
21
|
buffer_geometry.rotateX(3.14 / 2);
|
|
22
22
|
|
|
23
23
|
const material = new MeshBasicMaterial({ color: color });
|
|
@@ -1,43 +1,49 @@
|
|
|
1
1
|
import { AbstractLoader } from './AbstractLoader';
|
|
2
2
|
|
|
3
3
|
import { HDRCubeTextureLoader as THDRCubeTextureLoader } from 'three/examples/jsm/loaders/HDRCubeTextureLoader.js';
|
|
4
|
-
import { UnsignedByteType } from 'three';
|
|
5
4
|
|
|
6
5
|
class HDRCubeTextureLoader extends AbstractLoader
|
|
7
6
|
{
|
|
8
|
-
constructor(resource_id, url, size)
|
|
7
|
+
constructor(resource_id, url, extension, size)
|
|
9
8
|
{
|
|
10
9
|
super(resource_id, url, size);
|
|
11
10
|
this.loader = new THDRCubeTextureLoader();
|
|
12
|
-
this.
|
|
11
|
+
this.loader.setPath(url + '/');
|
|
12
|
+
// this.loader.setDataType(UnsignedByteType);
|
|
13
|
+
this.urls = [
|
|
14
|
+
`px.${extension}`,
|
|
15
|
+
`nx.${extension}`,
|
|
16
|
+
`py.${extension}`,
|
|
17
|
+
`ny.${extension}`,
|
|
18
|
+
`pz.${extension}`,
|
|
19
|
+
`nz.${extension}`
|
|
20
|
+
];
|
|
13
21
|
}
|
|
14
22
|
|
|
15
23
|
on_preloaded_finished(resource_container)
|
|
16
24
|
{
|
|
17
25
|
if (resource_container.resources_by_url[this.url] === undefined)
|
|
18
26
|
{
|
|
19
|
-
this.loader.
|
|
20
|
-
|
|
21
|
-
.
|
|
22
|
-
{
|
|
23
|
-
resource_container.set_resource(this.resource_id, this.url, hdr);
|
|
27
|
+
this.loader.load(this.urls, (hdr) =>
|
|
28
|
+
{
|
|
29
|
+
resource_container.set_resource(this.resource_id, this.url, hdr);
|
|
24
30
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
this.__update_downloaded_bytes(1, 1);
|
|
32
|
+
this.__loading_ended();
|
|
33
|
+
},
|
|
34
|
+
(xhr) =>
|
|
35
|
+
{
|
|
30
36
|
// if (xhr)
|
|
31
37
|
// {
|
|
32
38
|
// let total = xhr.total || this.total_bytes;
|
|
33
39
|
// this.__update_downloaded_bytes(xhr.loaded, total);
|
|
34
40
|
// }
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
},
|
|
42
|
+
(msg) =>
|
|
43
|
+
{
|
|
44
|
+
this.__set_error(msg + '\n\n\t If the error says something about unexpected token < in JSON then the probably the problem is related to the file not being found. Check the name and path of the resource');
|
|
45
|
+
this.__loading_ended();
|
|
46
|
+
});
|
|
41
47
|
}
|
|
42
48
|
else
|
|
43
49
|
{
|
|
@@ -36,7 +36,7 @@ class GeometryBatcher
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
const buffer_attribute = new BufferAttribute(new Float32Array(attr_accessor_uvs), 2);
|
|
39
|
-
const buffer_geometry = BufferGeometryUtils.
|
|
39
|
+
const buffer_geometry = BufferGeometryUtils.mergeGeometries(buffer_geometries);
|
|
40
40
|
buffer_geometry.setAttribute('attr_accessor_uv', buffer_attribute);
|
|
41
41
|
|
|
42
42
|
this.batches.push(new GeometryBatch(buffer_geometry, texture_width));
|
|
@@ -41,7 +41,7 @@ class MeshBatcher
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
const buffer_geometry = BufferGeometryUtils.
|
|
44
|
+
const buffer_geometry = BufferGeometryUtils.mergeGeometries(geometries);
|
|
45
45
|
|
|
46
46
|
const buffer_attribute = new BufferAttribute(new Float32Array(attr_mesh_id), 1);
|
|
47
47
|
buffer_geometry.setAttribute('mesh_id', buffer_attribute);
|