@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.7.2 → 3.7.4

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 (46) hide show
  1. package/dist/loaders/MaterialLoader.d.ts +1 -1
  2. package/dist/managers/environmentGeometry/ContactShadow.d.ts +42 -0
  3. package/dist/managers/environmentGeometry/ContactShadow.d.ts.map +1 -0
  4. package/dist/managers/environmentGeometry/ContactShadow.js +232 -0
  5. package/dist/managers/environmentGeometry/ContactShadow.js.map +1 -0
  6. package/dist/managers/environmentGeometry/Grid.d.ts +21 -0
  7. package/dist/managers/environmentGeometry/Grid.d.ts.map +1 -0
  8. package/dist/managers/environmentGeometry/Grid.js +86 -0
  9. package/dist/managers/environmentGeometry/Grid.js.map +1 -0
  10. package/dist/managers/environmentGeometry/GroundPlane.d.ts +22 -0
  11. package/dist/managers/environmentGeometry/GroundPlane.d.ts.map +1 -0
  12. package/dist/managers/environmentGeometry/GroundPlane.js +88 -0
  13. package/dist/managers/environmentGeometry/GroundPlane.js.map +1 -0
  14. package/dist/managers/environmentGeometry/GroundPlaneShadow.d.ts +22 -0
  15. package/dist/managers/environmentGeometry/GroundPlaneShadow.d.ts.map +1 -0
  16. package/dist/managers/environmentGeometry/GroundPlaneShadow.js +84 -0
  17. package/dist/managers/environmentGeometry/GroundPlaneShadow.js.map +1 -0
  18. package/dist/managers/environmentGeometry/GroundProjection.d.ts +19 -0
  19. package/dist/managers/environmentGeometry/GroundProjection.d.ts.map +1 -0
  20. package/dist/managers/environmentGeometry/GroundProjection.js +66 -0
  21. package/dist/managers/environmentGeometry/GroundProjection.js.map +1 -0
  22. package/dist/managers/environmentGeometry/IEnvironmentGeometry.d.ts +9 -0
  23. package/dist/managers/environmentGeometry/IEnvironmentGeometry.d.ts.map +1 -0
  24. package/dist/managers/environmentGeometry/IEnvironmentGeometry.js +3 -0
  25. package/dist/managers/environmentGeometry/IEnvironmentGeometry.js.map +1 -0
  26. package/dist/managers/environmentGeometry/SkyBottom.d.ts +1 -0
  27. package/dist/managers/environmentGeometry/SkyBottom.d.ts.map +1 -0
  28. package/dist/managers/environmentGeometry/SkyBottom.js +2 -0
  29. package/dist/managers/environmentGeometry/SkyBottom.js.map +1 -0
  30. package/package.json +17 -17
  31. package/dist/injectors/Tag3dGeometryCreationInjector.d.ts +0 -10
  32. package/dist/injectors/Tag3dGeometryCreationInjector.d.ts.map +0 -1
  33. package/dist/injectors/Tag3dGeometryCreationInjector.js +0 -67
  34. package/dist/injectors/Tag3dGeometryCreationInjector.js.map +0 -1
  35. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts +0 -2
  36. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts.map +0 -1
  37. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js +0 -99
  38. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js.map +0 -1
  39. package/dist/three/font.d.ts +0 -2365
  40. package/dist/three/font.d.ts.map +0 -1
  41. package/dist/three/font.js +0 -6
  42. package/dist/three/font.js.map +0 -1
  43. package/dist/three/loaders/FontLoader.d.ts +0 -15
  44. package/dist/three/loaders/FontLoader.d.ts.map +0 -1
  45. package/dist/three/loaders/FontLoader.js +0 -118
  46. package/dist/three/loaders/FontLoader.js.map +0 -1
@@ -67,7 +67,7 @@ export declare class MaterialLoader implements ILoader {
67
67
  assignEnvironmentMapRotation(value: quat): void;
68
68
  assignPointSize(p: number): void;
69
69
  cacheSize(): number;
70
- createMaterial(type: MATERIAL_TYPE, incomingData: IMaterialAbstractData | GeometryData, materialData: IMaterialAbstractData | null, materialSettings?: MaterialSettings): THREE.Material | THREE.LineBasicMaterial | THREE.MeshBasicMaterial | THREE.PointsMaterial | MultiPointsMaterial;
70
+ createMaterial(type: MATERIAL_TYPE, incomingData: IMaterialAbstractData | GeometryData, materialData: IMaterialAbstractData | null, materialSettings?: MaterialSettings): THREE.LineBasicMaterial | THREE.Material | THREE.MeshBasicMaterial | THREE.PointsMaterial | MultiPointsMaterial;
71
71
  emptyMaterialCache(): void;
72
72
  getMaterialProperties(materialData: IMaterialAbstractData | null, type: MATERIAL_TYPE, materialSettings?: MaterialSettings): {
73
73
  properties: ThreeJsMaterialParameterTypes;
@@ -0,0 +1,42 @@
1
+ import { vec3 } from 'gl-matrix';
2
+ import { SDObject } from '../../objects/SDObject';
3
+ import { RenderingEngine } from '../../RenderingEngine';
4
+ import { IEnvironmentGeometry } from './IEnvironmentGeometry';
5
+ export declare class ContactShadow implements IEnvironmentGeometry {
6
+ private readonly _renderingEngine;
7
+ private readonly _parent;
8
+ private _blur;
9
+ private _blurPlane;
10
+ private _color;
11
+ private _contactShadowObject;
12
+ private _darkness;
13
+ private _depthMaterial;
14
+ private _fillPlane;
15
+ private _height;
16
+ private _horizontalBlurMaterial;
17
+ private _opacity;
18
+ private _plane;
19
+ private _renderTarget;
20
+ private _renderTargetBlur;
21
+ private _shadowCamera;
22
+ private _shadowGroup;
23
+ private _verticalBlurMaterial;
24
+ private _currentGridExtents;
25
+ constructor(_renderingEngine: RenderingEngine, _parent: SDObject);
26
+ get blur(): number;
27
+ set blur(value: number);
28
+ get darkness(): number;
29
+ set darkness(value: number);
30
+ get height(): number;
31
+ set height(value: number);
32
+ get opacity(): number;
33
+ set opacity(value: number);
34
+ get visible(): boolean;
35
+ set visible(value: boolean);
36
+ changeSceneExtents(position: vec3, divisions: number, gridExtents: number): void;
37
+ render(): void;
38
+ updatePosition(position: vec3): void;
39
+ private blurShadow;
40
+ private createContactShadow;
41
+ }
42
+ //# sourceMappingURL=ContactShadow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactShadow.d.ts","sourceRoot":"","sources":["../../../src/managers/environmentGeometry/ContactShadow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,qBAAa,aAAc,YAAW,oBAAoB;IAyB1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAAmB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAtBxF,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,UAAU,CAA8F;IAChH,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,UAAU,CAAoF;IACtG,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,uBAAuB,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,MAAM,CAAoF;IAClG,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,iBAAiB,CAA0C;IACnE,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,mBAAmB,CAAa;gBAMX,gBAAgB,EAAE,eAAe,EAAmB,OAAO,EAAE,QAAQ;IAWlG,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,MAAM,EAE5B;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAGhC;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAO9B;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAG/B;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAEhC;IAMM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IA0BhF,MAAM;IAgDN,cAAc,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAQ3C,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,mBAAmB;CAgF9B"}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ContactShadow = void 0;
27
+ const SDData_1 = require("../../objects/SDData");
28
+ const THREE = __importStar(require("three"));
29
+ const HorizontalBlurShader_js_1 = require("three/examples/jsm/shaders/HorizontalBlurShader.js");
30
+ const VerticalBlurShader_js_1 = require("three/examples/jsm/shaders/VerticalBlurShader.js");
31
+ class ContactShadow {
32
+ // #endregion Properties (17)
33
+ // #region Constructors (1)
34
+ constructor(_renderingEngine, _parent) {
35
+ this._renderingEngine = _renderingEngine;
36
+ this._parent = _parent;
37
+ // #region Properties (17)
38
+ this._blur = 1.5;
39
+ this._color = '#ffffff';
40
+ this._darkness = 2.5;
41
+ this._height = 0.25;
42
+ this._opacity = 1;
43
+ this._currentGridExtents = 1;
44
+ this._contactShadowObject = new SDData_1.SDData('contactShadow', '');
45
+ this._contactShadowObject.visible = false;
46
+ this._parent.add(this._contactShadowObject);
47
+ this.createContactShadow();
48
+ }
49
+ // #endregion Constructors (1)
50
+ // #region Public Getters And Setters (10)
51
+ get blur() {
52
+ return this._blur;
53
+ }
54
+ set blur(value) {
55
+ this._blur = value;
56
+ }
57
+ get darkness() {
58
+ return this._darkness;
59
+ }
60
+ set darkness(value) {
61
+ this._darkness = value;
62
+ this._depthMaterial.userData.darkness.value = value;
63
+ }
64
+ get height() {
65
+ return this._height;
66
+ }
67
+ set height(value) {
68
+ this._height = value;
69
+ this._shadowCamera.far = this._currentGridExtents * value;
70
+ this._shadowCamera.updateProjectionMatrix();
71
+ // const cameraHelper = new THREE.CameraHelper(this._shadowCamera);
72
+ // this._parent.add(cameraHelper);
73
+ this._renderingEngine.renderingManager.updateShadowMap();
74
+ }
75
+ get opacity() {
76
+ return this._opacity;
77
+ }
78
+ set opacity(value) {
79
+ this._opacity = value;
80
+ this._plane.material.opacity = value;
81
+ }
82
+ get visible() {
83
+ return this._contactShadowObject.visible;
84
+ }
85
+ set visible(value) {
86
+ this._contactShadowObject.visible = value;
87
+ }
88
+ // #endregion Public Getters And Setters (10)
89
+ // #region Public Methods (3)
90
+ changeSceneExtents(position, divisions, gridExtents) {
91
+ this._currentGridExtents = gridExtents;
92
+ const widthAndHeight = 2 * gridExtents;
93
+ const planeGeometry = new THREE.PlaneGeometry(widthAndHeight, widthAndHeight);
94
+ this._plane.geometry.dispose();
95
+ this._plane.geometry = planeGeometry;
96
+ this._fillPlane.geometry.dispose();
97
+ this._fillPlane.geometry = planeGeometry;
98
+ this._blurPlane.geometry.dispose();
99
+ this._blurPlane.geometry = planeGeometry;
100
+ this._shadowCamera = new THREE.OrthographicCamera(-widthAndHeight / 2, widthAndHeight / 2, widthAndHeight / 2, -widthAndHeight / 2, 0, gridExtents * this._height);
101
+ this._shadowCamera.up.set(0, 1, 0);
102
+ this._shadowCamera.position.set(0, 0, -gridExtents / 50);
103
+ this._shadowCamera.lookAt(0, 0, 1);
104
+ this._shadowCamera.updateProjectionMatrix();
105
+ this._shadowGroup.add(this._shadowCamera);
106
+ // const cameraHelper = new THREE.CameraHelper(this._shadowCamera);
107
+ // this._parent.add(cameraHelper);
108
+ this._contactShadowObject.position.set(position[0], position[1], position[2]);
109
+ this._renderingEngine.renderingManager.updateShadowMap();
110
+ }
111
+ render() {
112
+ const initialGridVisibility = this._renderingEngine.gridVisibility;
113
+ this._renderingEngine.gridVisibility = false;
114
+ const initialGroundPlaneVisibility = this._renderingEngine.groundPlaneVisibility;
115
+ this._renderingEngine.groundPlaneVisibility = false;
116
+ const initialGroundPlaneShadowVisibility = this._renderingEngine.groundPlaneShadowVisibility;
117
+ this._renderingEngine.groundPlaneShadowVisibility = false;
118
+ this._blurPlane.visible = false;
119
+ this._fillPlane.visible = false;
120
+ this._plane.visible = false;
121
+ // remove the background
122
+ const initialBackground = this._renderingEngine.scene.background;
123
+ this._renderingEngine.scene.background = null;
124
+ // force the depthMaterial to everything
125
+ this._renderingEngine.scene.overrideMaterial = this._depthMaterial;
126
+ // set renderer clear alpha
127
+ const initialClearAlpha = this._renderingEngine.renderer.getClearAlpha();
128
+ this._renderingEngine.renderer.setClearAlpha(0);
129
+ // render to the render target to get the depths
130
+ this._renderingEngine.renderer.setRenderTarget(this._renderTarget);
131
+ this._renderingEngine.renderer.render(this._renderingEngine.scene, this._shadowCamera);
132
+ // and reset the override material
133
+ this._renderingEngine.scene.overrideMaterial = null;
134
+ this.blurShadow(this._blur);
135
+ // // a second pass to reduce the artifacts
136
+ // // (0.4 is the minimum blur amount so that the artifacts are gone)
137
+ this.blurShadow(this._blur * 0.4);
138
+ // reset and render the normal scene
139
+ this._renderingEngine.renderer.setRenderTarget(null);
140
+ this._renderingEngine.renderer.setClearAlpha(initialClearAlpha);
141
+ this._renderingEngine.scene.background = initialBackground;
142
+ this._plane.visible = true;
143
+ this._renderingEngine.gridVisibility = initialGridVisibility;
144
+ this._renderingEngine.groundPlaneVisibility = initialGroundPlaneVisibility;
145
+ this._renderingEngine.groundPlaneShadowVisibility = initialGroundPlaneShadowVisibility;
146
+ }
147
+ updatePosition(position) {
148
+ this._contactShadowObject.position.set(position[0], position[1], position[2]);
149
+ }
150
+ // #endregion Public Methods (3)
151
+ // #region Private Methods (2)
152
+ blurShadow(amount) {
153
+ this._blurPlane.visible = true;
154
+ // blur horizontally and draw in the renderTargetBlur
155
+ this._blurPlane.material = this._horizontalBlurMaterial;
156
+ this._blurPlane.material.uniforms.tDiffuse.value = this._renderTarget.texture;
157
+ this._horizontalBlurMaterial.uniforms.h.value = amount * 1 / 256;
158
+ this._renderingEngine.renderer.setRenderTarget(this._renderTargetBlur);
159
+ this._renderingEngine.renderer.render(this._blurPlane, this._shadowCamera);
160
+ // blur vertically and draw in the main renderTarget
161
+ this._blurPlane.material = this._verticalBlurMaterial;
162
+ this._blurPlane.material.uniforms.tDiffuse.value = this._renderTargetBlur.texture;
163
+ this._verticalBlurMaterial.uniforms.v.value = amount * 1 / 256;
164
+ this._renderingEngine.renderer.setRenderTarget(this._renderTarget);
165
+ this._renderingEngine.renderer.render(this._blurPlane, this._shadowCamera);
166
+ this._blurPlane.visible = false;
167
+ }
168
+ createContactShadow() {
169
+ const widthAndHeight = 1;
170
+ // the container, if you need to move the plane just move this
171
+ this._shadowGroup = new THREE.Group();
172
+ this._contactShadowObject.add(this._shadowGroup);
173
+ // the render target that will show the shadows in the plane texture
174
+ this._renderTarget = new THREE.WebGLRenderTarget(512, 512);
175
+ this._renderTarget.texture.generateMipmaps = false;
176
+ // the render target that we will use to blur the first render target
177
+ this._renderTargetBlur = new THREE.WebGLRenderTarget(512, 512);
178
+ this._renderTargetBlur.texture.generateMipmaps = false;
179
+ // make a plane and make it face up
180
+ const planeGeometry = new THREE.PlaneGeometry(widthAndHeight, widthAndHeight);
181
+ const planeMaterial = new THREE.MeshBasicMaterial({
182
+ map: this._renderTarget.texture,
183
+ opacity: this._opacity,
184
+ transparent: true,
185
+ depthWrite: false,
186
+ });
187
+ this._plane = new THREE.Mesh(planeGeometry, planeMaterial);
188
+ // make sure it's rendered after the fillPlane
189
+ this._plane.renderOrder = 1;
190
+ this._shadowGroup.add(this._plane);
191
+ // // the y from the texture is flipped!
192
+ // this._plane.rotateZ(-Math.PI/2);
193
+ this._plane.scale.x = -1;
194
+ // this._plane.scale.y = -1;
195
+ // the plane onto which to blur the texture
196
+ this._blurPlane = new THREE.Mesh(planeGeometry);
197
+ this._blurPlane.rotateX(Math.PI);
198
+ this._blurPlane.visible = false;
199
+ this._shadowGroup.add(this._blurPlane);
200
+ // the plane with the color of the ground
201
+ const fillPlaneMaterial = new THREE.MeshBasicMaterial({
202
+ color: this._color,
203
+ opacity: 0,
204
+ transparent: true,
205
+ depthWrite: false,
206
+ });
207
+ this._fillPlane = new THREE.Mesh(planeGeometry, fillPlaneMaterial);
208
+ this._shadowGroup.add(this._fillPlane);
209
+ // the camera to render the depth material from
210
+ this._shadowCamera = new THREE.OrthographicCamera(-widthAndHeight / 2, widthAndHeight / 2, widthAndHeight / 2, -widthAndHeight / 2, 0, 1);
211
+ this._shadowGroup.add(this._shadowCamera);
212
+ // like MeshDepthMaterial, but goes from black to transparent
213
+ this._depthMaterial = new THREE.MeshDepthMaterial();
214
+ this._depthMaterial.side = THREE.DoubleSide;
215
+ this._depthMaterial.userData.darkness = { value: this._darkness };
216
+ this._depthMaterial.onBeforeCompile = (shader) => {
217
+ shader.uniforms.darkness = this._depthMaterial.userData.darkness;
218
+ shader.fragmentShader = /* glsl */ `
219
+ uniform float darkness;
220
+ ${shader.fragmentShader.replace('gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );', 'gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );')}
221
+ `;
222
+ };
223
+ this._depthMaterial.depthTest = false;
224
+ this._depthMaterial.depthWrite = false;
225
+ this._horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader_js_1.HorizontalBlurShader);
226
+ this._horizontalBlurMaterial.depthTest = false;
227
+ this._verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader_js_1.VerticalBlurShader);
228
+ this._verticalBlurMaterial.depthTest = false;
229
+ }
230
+ }
231
+ exports.ContactShadow = ContactShadow;
232
+ //# sourceMappingURL=ContactShadow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactShadow.js","sourceRoot":"","sources":["../../../src/managers/environmentGeometry/ContactShadow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { Color } from '@shapediver/viewer.shared.types';
2
+ import { RenderingEngine } from '../..';
3
+ import { vec3 } from 'gl-matrix';
4
+ import { SDObject } from '../../objects/SDObject';
5
+ import { IEnvironmentGeometry } from './IEnvironmentGeometry';
6
+ export declare class Grid implements IEnvironmentGeometry {
7
+ private readonly _renderingEngine;
8
+ private readonly _parent;
9
+ private readonly _converter;
10
+ private _grid;
11
+ private _color;
12
+ private _gridObject;
13
+ constructor(_renderingEngine: RenderingEngine, _parent: SDObject);
14
+ get color(): Color;
15
+ set color(value: Color);
16
+ get visible(): boolean;
17
+ set visible(value: boolean);
18
+ changeSceneExtents(position: vec3, divisions: number, gridExtents: number): void;
19
+ updatePosition(position: vec3): void;
20
+ }
21
+ //# sourceMappingURL=Grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../../src/managers/environmentGeometry/Grid.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,qBAAa,IAAK,YAAW,oBAAoB;IAajC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAAmB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVxF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAE5D,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,WAAW,CAAU;gBAMA,gBAAgB,EAAE,eAAe,EAAmB,OAAO,EAAE,QAAQ;IAgBlG,IAAW,KAAK,IAAI,KAAK,CAExB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,KAAK,EAM5B;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAEhC;IAMM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAahF,cAAc,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;CAK9C"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Grid = void 0;
27
+ const SDData_1 = require("../../objects/SDData");
28
+ const THREE = __importStar(require("three"));
29
+ const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
30
+ class Grid {
31
+ // #endregion Properties (5)
32
+ // #region Constructors (1)
33
+ constructor(_renderingEngine, _parent) {
34
+ this._renderingEngine = _renderingEngine;
35
+ this._parent = _parent;
36
+ // #region Properties (5)
37
+ this._converter = viewer_shared_services_1.Converter.instance;
38
+ this._color = '#44444426';
39
+ this._gridObject = new SDData_1.SDData('grid', '');
40
+ this._grid = new THREE.GridHelper();
41
+ this._grid.material.opacity = typeof this._color == 'string' && this._color.length <= 8 ? 0.15 : this._converter.toAlpha(this._color);
42
+ this._grid.material.transparent = this._grid.material.opacity !== 1;
43
+ this._grid.material.color = this._renderingEngine.createThreeJsColor(this._color);
44
+ this._grid.rotateX(Math.PI / 2);
45
+ this._grid.visible = false;
46
+ this._gridObject.add(this._grid);
47
+ this._parent.add(this._gridObject);
48
+ }
49
+ // #endregion Constructors (1)
50
+ // #region Public Getters And Setters (3)
51
+ get color() {
52
+ return this._color;
53
+ }
54
+ set color(value) {
55
+ this._color = value;
56
+ this._grid.material.opacity = typeof this._color == 'string' && this._color.length <= 8 ? 0.15 : this._converter.toAlpha(this._color);
57
+ this._grid.material.transparent = this._grid.material.opacity !== 1;
58
+ this._grid.material.color = this._renderingEngine.createThreeJsColor(this._color);
59
+ this._grid.material.needsUpdate = true;
60
+ }
61
+ get visible() {
62
+ return this._grid.visible;
63
+ }
64
+ set visible(value) {
65
+ this._grid.visible = value;
66
+ }
67
+ // #endregion Public Getters And Setters (3)
68
+ // #region Public Methods (3)
69
+ changeSceneExtents(position, divisions, gridExtents) {
70
+ this._gridObject.remove(this._grid);
71
+ this._grid = new THREE.GridHelper(2 * gridExtents, divisions);
72
+ this._grid.material.opacity = typeof this._color == 'string' && this._color.length <= 8 ? 0.15 : this._converter.toAlpha(this._color);
73
+ this._grid.material.transparent = this._grid.material.opacity !== 1;
74
+ this._grid.material.color = this._renderingEngine.createThreeJsColor(this._color);
75
+ this._grid.rotateX(Math.PI / 2);
76
+ this._grid.visible = this._renderingEngine.gridVisibility;
77
+ this._gridObject.add(this._grid);
78
+ this._grid.position.set(position[0], position[1], position[2]);
79
+ }
80
+ updatePosition(position) {
81
+ if (this._grid)
82
+ this._grid.position.set(position[0], position[1], position[2]);
83
+ }
84
+ }
85
+ exports.Grid = Grid;
86
+ //# sourceMappingURL=Grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../../src/managers/environmentGeometry/Grid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Color } from '@shapediver/viewer.shared.types';
2
+ import { RenderingEngine } from '../..';
3
+ import { vec3 } from 'gl-matrix';
4
+ import { SDObject } from '../../objects/SDObject';
5
+ import { IEnvironmentGeometry } from './IEnvironmentGeometry';
6
+ export declare class GroundPlane implements IEnvironmentGeometry {
7
+ private readonly _renderingEngine;
8
+ private readonly _parent;
9
+ private readonly _converter;
10
+ private _color;
11
+ private _groundPlane;
12
+ private _groundPlaneObject;
13
+ constructor(_renderingEngine: RenderingEngine, _parent: SDObject);
14
+ get color(): Color;
15
+ set color(value: Color);
16
+ get visible(): boolean;
17
+ set visible(value: boolean);
18
+ changeSceneExtents(position: vec3, divisions: number, gridExtents: number): void;
19
+ updatePosition(position: vec3): void;
20
+ private assignGroundPlaneColor;
21
+ }
22
+ //# sourceMappingURL=GroundPlane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroundPlane.d.ts","sourceRoot":"","sources":["../../../src/managers/environmentGeometry/GroundPlane.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAuC,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,qBAAa,WAAY,YAAW,oBAAoB;IAaxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAAmB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVxF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAE5D,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,kBAAkB,CAAU;gBAMP,gBAAgB,EAAE,eAAe,EAAmB,OAAO,EAAE,QAAQ;IAmBlG,IAAW,KAAK,IAAI,KAAK,CAExB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,KAAK,EAG5B;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAEhC;IAMM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAKhF,cAAc,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAQ3C,OAAO,CAAC,sBAAsB;CASjC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.GroundPlane = void 0;
27
+ const SDData_1 = require("../../objects/SDData");
28
+ const THREE = __importStar(require("three"));
29
+ const viewer_shared_types_1 = require("@shapediver/viewer.shared.types");
30
+ const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
31
+ class GroundPlane {
32
+ // #endregion Properties (4)
33
+ // #region Constructors (1)
34
+ constructor(_renderingEngine, _parent) {
35
+ this._renderingEngine = _renderingEngine;
36
+ this._parent = _parent;
37
+ // #region Properties (4)
38
+ this._converter = viewer_shared_services_1.Converter.instance;
39
+ this._color = '#d3d3d3ff';
40
+ this._groundPlaneObject = new SDData_1.SDData('groundPlane', '');
41
+ const mat = new viewer_shared_types_1.MaterialStandardData();
42
+ mat.color = this._color;
43
+ mat.side = viewer_shared_types_1.MATERIAL_SIDE.FRONT;
44
+ mat.opacity = this._converter.toAlpha(this._color);
45
+ mat.roughness = 1;
46
+ mat.metalness = 0;
47
+ this._groundPlane = new THREE.Mesh(new THREE.PlaneGeometry(), this._renderingEngine.materialLoader.load(mat));
48
+ this._groundPlane.receiveShadow = true;
49
+ this._groundPlane.visible = false;
50
+ this._groundPlaneObject.add(this._groundPlane);
51
+ this._parent.add(this._groundPlaneObject);
52
+ }
53
+ // #endregion Constructors (1)
54
+ // #region Public Getters And Setters (4)
55
+ get color() {
56
+ return this._color;
57
+ }
58
+ set color(value) {
59
+ this._color = value;
60
+ this.assignGroundPlaneColor(value);
61
+ }
62
+ get visible() {
63
+ return this._groundPlane.visible;
64
+ }
65
+ set visible(value) {
66
+ this._groundPlane.visible = value;
67
+ }
68
+ // #endregion Public Getters And Setters (4)
69
+ // #region Public Methods (2)
70
+ changeSceneExtents(position, divisions, gridExtents) {
71
+ this._groundPlane.geometry = new THREE.PlaneGeometry(2 * gridExtents, 2 * gridExtents, 2, 2);
72
+ this._groundPlane.position.set(position[0], position[1], position[2]);
73
+ }
74
+ updatePosition(position) {
75
+ this._groundPlane.position.set(position[0], position[1], position[2]);
76
+ }
77
+ // #endregion Public Methods (2)
78
+ // #region Private Methods (1)
79
+ assignGroundPlaneColor(color) {
80
+ this._groundPlane.material.opacity = this._converter.toAlpha(color);
81
+ this._groundPlane.material.transparent = this._groundPlane.material.opacity !== 1;
82
+ this._groundPlane.material.depthWrite = !this._groundPlane.material.transparent;
83
+ this._groundPlane.material.color = this._renderingEngine.createThreeJsColor(color);
84
+ this._groundPlane.material.needsUpdate = true;
85
+ }
86
+ }
87
+ exports.GroundPlane = GroundPlane;
88
+ //# sourceMappingURL=GroundPlane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroundPlane.js","sourceRoot":"","sources":["../../../src/managers/environmentGeometry/GroundPlane.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Color } from '@shapediver/viewer.shared.types';
2
+ import { RenderingEngine } from '../..';
3
+ import { vec3 } from 'gl-matrix';
4
+ import { SDObject } from '../../objects/SDObject';
5
+ import { IEnvironmentGeometry } from './IEnvironmentGeometry';
6
+ export declare class GroundPlaneShadow implements IEnvironmentGeometry {
7
+ private readonly _renderingEngine;
8
+ private readonly _parent;
9
+ private readonly _converter;
10
+ private _color;
11
+ private _groundPlaneShadow;
12
+ private _groundPlaneShadowObject;
13
+ constructor(_renderingEngine: RenderingEngine, _parent: SDObject);
14
+ get color(): Color;
15
+ set color(value: Color);
16
+ get visible(): boolean;
17
+ set visible(value: boolean);
18
+ changeSceneExtents(position: vec3, divisions: number, gridExtents: number): void;
19
+ updatePosition(position: vec3): void;
20
+ private assignGroundPlaneShadowColor;
21
+ }
22
+ //# sourceMappingURL=GroundPlaneShadow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroundPlaneShadow.d.ts","sourceRoot":"","sources":["../../../src/managers/environmentGeometry/GroundPlaneShadow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAsB,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,oBAAoB;IAa9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAAmB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVxF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAE5D,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,wBAAwB,CAAU;gBAMb,gBAAgB,EAAE,eAAe,EAAmB,OAAO,EAAE,QAAQ;IAiBlG,IAAW,KAAK,IAAI,KAAK,CAExB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,KAAK,EAG5B;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAEhC;IAMM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAKhF,cAAc,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAQ3C,OAAO,CAAC,4BAA4B;CAOvC"}