@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.3.4 → 3.3.6
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/package.json +19 -20
- package/src/RenderingEngine.ts +0 -1336
- package/src/index.ts +0 -81
- package/src/injectors/Tag3dGeometryCreationInjector.ts +0 -154
- package/src/injectors/TextureUnifierInjector.ts +0 -214
- package/src/interfaces/ILoader.ts +0 -3
- package/src/interfaces/IPostProcessingEffectDefinitions.ts +0 -402
- package/src/interfaces/IRenderingEngine.ts +0 -48
- package/src/loaders/EnvironmentMapLoader.ts +0 -357
- package/src/loaders/GeometryLoader.ts +0 -585
- package/src/loaders/HTMLElementAnchorLoader.ts +0 -107
- package/src/loaders/LightLoader.ts +0 -171
- package/src/loaders/MaterialLoader.ts +0 -1413
- package/src/managers/CameraManager.ts +0 -178
- package/src/managers/EnvironmentGeometryManager.ts +0 -224
- package/src/managers/PostProcessingManager.ts +0 -1181
- package/src/managers/RenderingManager.ts +0 -657
- package/src/managers/SceneTracingManager.ts +0 -127
- package/src/managers/SceneTreeManager.ts +0 -576
- package/src/managers/postprocessing/GodRaysManager.ts +0 -52
- package/src/managers/postprocessing/OutlineManager.ts +0 -58
- package/src/managers/postprocessing/SSAARenderPass.ts +0 -339
- package/src/managers/postprocessing/SelectiveBloomManager.ts +0 -58
- package/src/managers/postprocessing/ao/ao/AOEffect.ts +0 -180
- package/src/managers/postprocessing/ao/ao/AOPass.ts +0 -128
- package/src/managers/postprocessing/ao/ao/shader/ao_compose.glsl +0 -17
- package/src/managers/postprocessing/ao/ao/shader/ao_compose.ts +0 -19
- package/src/managers/postprocessing/ao/hbao/HBAOEffect.ts +0 -41
- package/src/managers/postprocessing/ao/hbao/shader/hbao.glsl +0 -96
- package/src/managers/postprocessing/ao/hbao/shader/hbao.ts +0 -98
- package/src/managers/postprocessing/ao/hbao/shader/hbao_utils.glsl +0 -92
- package/src/managers/postprocessing/ao/hbao/shader/hbao_utils.ts +0 -95
- package/src/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.ts +0 -259
- package/src/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.glsl +0 -125
- package/src/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.ts +0 -127
- package/src/managers/postprocessing/ao/ssao/SSAOEffect.ts +0 -106
- package/src/managers/postprocessing/ao/ssao/shader/ssao.glsl +0 -128
- package/src/managers/postprocessing/ao/ssao/shader/ssao.ts +0 -130
- package/src/managers/postprocessing/ao/utils/shader/basic.glsl +0 -6
- package/src/managers/postprocessing/ao/utils/shader/basic.ts +0 -8
- package/src/managers/postprocessing/ao/utils/shader/sampleBlueNoise.glsl +0 -36
- package/src/managers/postprocessing/ao/utils/shader/sampleBlueNoise.ts +0 -38
- package/src/managers/postprocessing/utils/CopyMaterial.ts +0 -130
- package/src/managers/postprocessing/utils/CopyShader.ts +0 -39
- package/src/managers/postprocessing/utils/FullScreenQuad.ts +0 -47
- package/src/managers/postprocessing/utils/NormalPass.ts +0 -222
- package/src/managers/postprocessing/utils/RenderPass.ts +0 -366
- package/src/materials/GemMaterial.ts +0 -268
- package/src/materials/MeshUnlitMaterialParameters.ts +0 -4
- package/src/materials/MultiPointsMaterial.ts +0 -646
- package/src/materials/SpecularGlossinessMaterial.ts +0 -182
- package/src/objects/SDBone.ts +0 -51
- package/src/objects/SDColor.ts +0 -54
- package/src/objects/SDData.ts +0 -44
- package/src/objects/SDObject.ts +0 -58
- package/src/shaders/PCSS.ts +0 -124
- package/src/shaders/gem.ts +0 -579
- package/src/shaders/gem_frag.glsl +0 -522
- package/src/shaders/gem_vert.glsl +0 -53
- package/src/shaders/multi_points.ts +0 -291
- package/src/shaders/multi_points_frag.glsl +0 -166
- package/src/shaders/multi_points_vert.glsl +0 -120
- package/src/styling/viewport-css.ts +0 -113
- package/src/styling/viewport.css +0 -111
- package/src/three/font.ts +0 -2
- package/src/three/geometries/TextGeometry.ts +0 -58
- package/src/three/loaders/FontLoader.ts +0 -205
- package/src/three/loaders/RGBELoader.ts +0 -496
- package/src/types/IThreejsData.ts +0 -16
- package/src/types/ThreejsData.ts +0 -43
- package/tsconfig.json +0 -20
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import { AbstractCamera, ORTHOGRAPHIC_CAMERA_DIRECTION, OrthographicCamera } from '@shapediver/viewer.rendering-engine.camera-engine';
|
|
3
|
-
import { IManager } from '@shapediver/viewer.rendering-engine.rendering-engine';
|
|
4
|
-
import { RenderingEngine } from '../RenderingEngine';
|
|
5
|
-
import { ShapeDiverViewerViewportError } from '@shapediver/viewer.shared.services';
|
|
6
|
-
import { vec2, vec3 } from 'gl-matrix';
|
|
7
|
-
|
|
8
|
-
export class SceneTracingManager implements IManager {
|
|
9
|
-
// #region Properties (1)
|
|
10
|
-
|
|
11
|
-
private readonly _raycaster = new THREE.Raycaster();
|
|
12
|
-
|
|
13
|
-
// #endregion Properties (1)
|
|
14
|
-
|
|
15
|
-
// #region Constructors (1)
|
|
16
|
-
|
|
17
|
-
constructor(private readonly _renderingEngine: RenderingEngine) { }
|
|
18
|
-
|
|
19
|
-
// #endregion Constructors (1)
|
|
20
|
-
|
|
21
|
-
// #region Public Methods (3)
|
|
22
|
-
|
|
23
|
-
public convert3Dto2D(p: vec3): {
|
|
24
|
-
container: vec2, client: vec2, page: vec2, hidden: boolean
|
|
25
|
-
} {
|
|
26
|
-
const canvasPageCoordinates = this._renderingEngine.canvas.getBoundingClientRect(),
|
|
27
|
-
width = this._renderingEngine.canvas.width,
|
|
28
|
-
height = this._renderingEngine.canvas.height;
|
|
29
|
-
|
|
30
|
-
const camera = this._renderingEngine.cameraEngine.camera;
|
|
31
|
-
if (!camera)
|
|
32
|
-
throw new ShapeDiverViewerViewportError('SceneTracingManager.convert3Dto2D: No camera is defined for this viewer.');
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if(camera instanceof OrthographicCamera) {
|
|
36
|
-
const direction = vec3.sub(vec3.create(), camera.target, camera.position);
|
|
37
|
-
const length = vec3.length(direction);
|
|
38
|
-
vec3.divide(direction, direction, vec3.fromValues(length, length, length));
|
|
39
|
-
this._raycaster.ray.direction.set(direction[0], direction[1], direction[2]);
|
|
40
|
-
|
|
41
|
-
// set the origin of the ray to the opposite direction of the camera with the start at the initial provided point
|
|
42
|
-
this._raycaster.ray.origin.set(p[0] + direction[0] * length, p[1] + direction[1] * length, p[2] + direction[2] * length);
|
|
43
|
-
} else {
|
|
44
|
-
this._raycaster.ray.direction.set(p[0], p[1], p[2]);
|
|
45
|
-
this._raycaster.ray.origin.set(0, 0, 0);
|
|
46
|
-
(camera.convertedObject[this._renderingEngine.id] as THREE.Camera).localToWorld(this._raycaster.ray.origin);
|
|
47
|
-
this._raycaster.ray.direction.sub(this._raycaster.ray.origin);
|
|
48
|
-
this._raycaster.ray.direction.normalize();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
let closestIntersectionDistance = Number.MAX_VALUE;
|
|
52
|
-
this._renderingEngine.sceneTreeManager.scene.traverseVisible((obj: THREE.Object3D) => {
|
|
53
|
-
if (obj instanceof THREE.Mesh) {
|
|
54
|
-
const curIntersections = this._raycaster.intersectObject(obj);
|
|
55
|
-
if (curIntersections.length)
|
|
56
|
-
if (curIntersections[0].distance < closestIntersectionDistance)
|
|
57
|
-
closestIntersectionDistance = curIntersections[0].distance;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
const pos: vec2 = (<AbstractCamera>camera).project(vec3.clone(p));
|
|
62
|
-
|
|
63
|
-
pos[0] = (pos[0] * (width / 2)) + (width / 2);
|
|
64
|
-
pos[1] = - (pos[1] * (height / 2)) + (height / 2);
|
|
65
|
-
|
|
66
|
-
// take care of correction by device pixel ratio
|
|
67
|
-
pos[0] = pos[0] / devicePixelRatio;
|
|
68
|
-
pos[1] = pos[1] / devicePixelRatio;
|
|
69
|
-
|
|
70
|
-
// epsilon is added as a distance spacer as users tend to put the anchors of html elements directly at the vertices
|
|
71
|
-
// with this we prevent flickering
|
|
72
|
-
const eps = 0.0001;
|
|
73
|
-
|
|
74
|
-
return {
|
|
75
|
-
hidden: closestIntersectionDistance + eps < vec3.distance(camera.position, p),
|
|
76
|
-
container: vec2.clone(pos),
|
|
77
|
-
client: vec2.fromValues(pos[0] + canvasPageCoordinates.left, pos[1] + canvasPageCoordinates.top),
|
|
78
|
-
page: vec2.fromValues(pos[0] + canvasPageCoordinates.left + window.pageXOffset, pos[1] + canvasPageCoordinates.top + window.pageYOffset)
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
public init(): void { }
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Calculate the ray that is created by the mouse event and the camera.
|
|
86
|
-
*
|
|
87
|
-
* @param event
|
|
88
|
-
* @returns
|
|
89
|
-
*/
|
|
90
|
-
public pointerEventToRay(event: PointerEvent): {
|
|
91
|
-
origin: vec3,
|
|
92
|
-
direction: vec3
|
|
93
|
-
} {
|
|
94
|
-
const rect = this._renderingEngine.canvas.getBoundingClientRect();
|
|
95
|
-
const camera = this._renderingEngine.cameraEngine.camera;
|
|
96
|
-
if (!camera)
|
|
97
|
-
throw new ShapeDiverViewerViewportError('SceneTracingManager.pointerEventToRay: No camera is defined for this viewer.');
|
|
98
|
-
|
|
99
|
-
const _mouse_x = ((event.clientX - rect.left) / rect.width) * 2 - 1;
|
|
100
|
-
const _mouse_y = - ((event.clientY - rect.top) / rect.height) * 2 + 1;
|
|
101
|
-
|
|
102
|
-
let origin = vec3.clone(camera.position);
|
|
103
|
-
if (camera instanceof OrthographicCamera) {
|
|
104
|
-
if (camera.direction == ORTHOGRAPHIC_CAMERA_DIRECTION.TOP) {
|
|
105
|
-
origin = vec3.add(vec3.create(), camera.position, vec3.fromValues(_mouse_x * camera.right, _mouse_y * camera.top, 0));
|
|
106
|
-
} else if (camera.direction == ORTHOGRAPHIC_CAMERA_DIRECTION.BOTTOM) {
|
|
107
|
-
origin = vec3.add(vec3.create(), camera.position, vec3.fromValues(_mouse_x * camera.left, _mouse_y * camera.top, 0));
|
|
108
|
-
} else if (camera.direction == ORTHOGRAPHIC_CAMERA_DIRECTION.LEFT) {
|
|
109
|
-
origin = vec3.add(vec3.create(), camera.position, vec3.fromValues(0, _mouse_x * camera.left, _mouse_y * camera.top));
|
|
110
|
-
} else if (camera.direction == ORTHOGRAPHIC_CAMERA_DIRECTION.RIGHT) {
|
|
111
|
-
origin = vec3.add(vec3.create(), camera.position, vec3.fromValues(0, _mouse_x * camera.right, _mouse_y * camera.top));
|
|
112
|
-
} else if (camera.direction == ORTHOGRAPHIC_CAMERA_DIRECTION.FRONT) {
|
|
113
|
-
origin = vec3.add(vec3.create(), camera.position, vec3.fromValues(_mouse_x * camera.right, 0, _mouse_y * camera.top));
|
|
114
|
-
} else if (camera.direction == ORTHOGRAPHIC_CAMERA_DIRECTION.BACK) {
|
|
115
|
-
origin = vec3.add(vec3.create(), camera.position, vec3.fromValues(_mouse_x * camera.left, 0, _mouse_y * camera.top));
|
|
116
|
-
} else {
|
|
117
|
-
origin = vec3.add(vec3.create(), camera.position, vec3.fromValues(0, _mouse_x * camera.left, _mouse_y * camera.top));
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const direction = vec3.normalize(vec3.create(), vec3.sub(vec3.create(), camera.unproject(vec3.fromValues(_mouse_x, _mouse_y, 0.5)), origin));
|
|
122
|
-
|
|
123
|
-
return { origin, direction };
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// #endregion Public Methods (3)
|
|
127
|
-
}
|