@operato/scene-visualizer 10.0.0-beta.1 → 10.0.0-beta.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/package.json +2 -2
- package/dist/banner.d.ts +0 -244
- package/dist/banner.js +0 -75
- package/dist/banner.js.map +0 -1
- package/dist/camera.d.ts +0 -249
- package/dist/camera.js +0 -107
- package/dist/camera.js.map +0 -1
- package/dist/cube.d.ts +0 -241
- package/dist/cube.js +0 -37
- package/dist/cube.js.map +0 -1
- package/dist/cylinder.d.ts +0 -9
- package/dist/cylinder.js +0 -37
- package/dist/cylinder.js.map +0 -1
- package/dist/ellipse.d.ts +0 -5
- package/dist/ellipse.js +0 -20
- package/dist/ellipse.js.map +0 -1
- package/dist/gltf-object.d.ts +0 -249
- package/dist/gltf-object.js +0 -103
- package/dist/gltf-object.js.map +0 -1
- package/dist/html-overlay-element.d.ts +0 -1
- package/dist/html-overlay-element.js +0 -8
- package/dist/html-overlay-element.js.map +0 -1
- package/dist/light.d.ts +0 -14
- package/dist/light.js +0 -134
- package/dist/light.js.map +0 -1
- package/dist/polygon.d.ts +0 -17
- package/dist/polygon.js +0 -62
- package/dist/polygon.js.map +0 -1
- package/dist/rect.d.ts +0 -5
- package/dist/rect.js +0 -34
- package/dist/rect.js.map +0 -1
- package/dist/scene/component.d.ts +0 -1
- package/dist/scene/component.js +0 -29
- package/dist/scene/component.js.map +0 -1
- package/dist/sphere.d.ts +0 -9
- package/dist/sphere.js +0 -37
- package/dist/sphere.js.map +0 -1
- package/dist/sprite.d.ts +0 -238
- package/dist/sprite.js +0 -27
- package/dist/sprite.js.map +0 -1
- package/dist/text.d.ts +0 -1
- package/dist/text.js +0 -7
- package/dist/text.js.map +0 -1
- package/dist/three-container-editor.d.ts +0 -22
- package/dist/three-container-editor.js +0 -132
- package/dist/three-container-editor.js.map +0 -1
- package/dist/three-container.d.ts +0 -61
- package/dist/three-container.js +0 -371
- package/dist/three-container.js.map +0 -1
- package/dist/three-controls.d.ts +0 -111
- package/dist/three-controls.js +0 -414
- package/dist/three-controls.js.map +0 -1
- package/dist/three-layout.d.ts +0 -8
- package/dist/three-layout.js +0 -20
- package/dist/three-layout.js.map +0 -1
- package/dist/three-space.d.ts +0 -8
- package/dist/three-space.js +0 -58
- package/dist/three-space.js.map +0 -1
- package/dist/threed/common.d.ts +0 -22
- package/dist/threed/common.js +0 -19
- package/dist/threed/common.js.map +0 -1
- package/dist/threed/floor/floor.d.ts +0 -3
- package/dist/threed/floor/floor.js +0 -51
- package/dist/threed/floor/floor.js.map +0 -1
- package/dist/threed/html/elements.d.ts +0 -2
- package/dist/threed/html/elements.js +0 -21
- package/dist/threed/html/elements.js.map +0 -1
- package/dist/threed/index.d.ts +0 -16
- package/dist/threed/index.js +0 -17
- package/dist/threed/index.js.map +0 -1
- package/dist/threed/interfaces.d.ts +0 -15
- package/dist/threed/interfaces.js +0 -5
- package/dist/threed/interfaces.js.map +0 -1
- package/dist/threed/managers/camera-manager.d.ts +0 -14
- package/dist/threed/managers/camera-manager.js +0 -60
- package/dist/threed/managers/camera-manager.js.map +0 -1
- package/dist/threed/managers/controls-manager.d.ts +0 -50
- package/dist/threed/managers/controls-manager.js +0 -249
- package/dist/threed/managers/controls-manager.js.map +0 -1
- package/dist/threed/managers/event-manager3d.d.ts +0 -19
- package/dist/threed/managers/event-manager3d.js +0 -76
- package/dist/threed/managers/event-manager3d.js.map +0 -1
- package/dist/threed/managers/index.d.ts +0 -7
- package/dist/threed/managers/index.js +0 -7
- package/dist/threed/managers/index.js.map +0 -1
- package/dist/threed/managers/light-manager.d.ts +0 -7
- package/dist/threed/managers/light-manager.js +0 -37
- package/dist/threed/managers/light-manager.js.map +0 -1
- package/dist/threed/managers/renderer-manager.d.ts +0 -30
- package/dist/threed/managers/renderer-manager.js +0 -120
- package/dist/threed/managers/renderer-manager.js.map +0 -1
- package/dist/threed/managers/scene-manager.d.ts +0 -15
- package/dist/threed/managers/scene-manager.js +0 -48
- package/dist/threed/managers/scene-manager.js.map +0 -1
- package/dist/threed/managers/types.d.ts +0 -36
- package/dist/threed/managers/types.js +0 -2
- package/dist/threed/managers/types.js.map +0 -1
- package/dist/threed/real-object-camera-meshed.d.ts +0 -12
- package/dist/threed/real-object-camera-meshed.js +0 -49
- package/dist/threed/real-object-camera-meshed.js.map +0 -1
- package/dist/threed/real-object-camera.d.ts +0 -9
- package/dist/threed/real-object-camera.js +0 -31
- package/dist/threed/real-object-camera.js.map +0 -1
- package/dist/threed/real-object-dom-element.d.ts +0 -9
- package/dist/threed/real-object-dom-element.js +0 -48
- package/dist/threed/real-object-dom-element.js.map +0 -1
- package/dist/threed/real-object-dummy.d.ts +0 -6
- package/dist/threed/real-object-dummy.js +0 -11
- package/dist/threed/real-object-dummy.js.map +0 -1
- package/dist/threed/real-object-extrude.d.ts +0 -22
- package/dist/threed/real-object-extrude.js +0 -180
- package/dist/threed/real-object-extrude.js.map +0 -1
- package/dist/threed/real-object-gltf.d.ts +0 -16
- package/dist/threed/real-object-gltf.js +0 -105
- package/dist/threed/real-object-gltf.js.map +0 -1
- package/dist/threed/real-object-group.d.ts +0 -5
- package/dist/threed/real-object-group.js +0 -11
- package/dist/threed/real-object-group.js.map +0 -1
- package/dist/threed/real-object-mesh.d.ts +0 -13
- package/dist/threed/real-object-mesh.js +0 -73
- package/dist/threed/real-object-mesh.js.map +0 -1
- package/dist/threed/real-object-plane.d.ts +0 -5
- package/dist/threed/real-object-plane.js +0 -22
- package/dist/threed/real-object-plane.js.map +0 -1
- package/dist/threed/real-object-registry.d.ts +0 -7
- package/dist/threed/real-object-registry.js +0 -32
- package/dist/threed/real-object-registry.js.map +0 -1
- package/dist/threed/real-object-scene.d.ts +0 -21
- package/dist/threed/real-object-scene.js +0 -72
- package/dist/threed/real-object-scene.js.map +0 -1
- package/dist/threed/real-object-sprite-2d.d.ts +0 -14
- package/dist/threed/real-object-sprite-2d.js +0 -45
- package/dist/threed/real-object-sprite-2d.js.map +0 -1
- package/dist/threed/real-object-sprite.d.ts +0 -11
- package/dist/threed/real-object-sprite.js +0 -52
- package/dist/threed/real-object-sprite.js.map +0 -1
- package/dist/threed/real-object-text.d.ts +0 -15
- package/dist/threed/real-object-text.js +0 -66
- package/dist/threed/real-object-text.js.map +0 -1
- package/dist/threed/real-object.d.ts +0 -65
- package/dist/threed/real-object.js +0 -251
- package/dist/threed/real-object.js.map +0 -1
- package/dist/threed/texture/canvas-texture.d.ts +0 -4
- package/dist/threed/texture/canvas-texture.js +0 -49
- package/dist/threed/texture/canvas-texture.js.map +0 -1
- package/dist/threed/texture/text-texture.d.ts +0 -8
- package/dist/threed/texture/text-texture.js +0 -79
- package/dist/threed/texture/text-texture.js.map +0 -1
- package/dist/threed/three-dimensional-container.d.ts +0 -7
- package/dist/threed/three-dimensional-container.js +0 -2
- package/dist/threed/three-dimensional-container.js.map +0 -1
- package/dist/threed/utils/bound-uv-generator.d.ts +0 -16
- package/dist/threed/utils/bound-uv-generator.js +0 -42
- package/dist/threed/utils/bound-uv-generator.js.map +0 -1
- package/dist/threed/utils/dispose.d.ts +0 -2
- package/dist/threed/utils/dispose.js +0 -32
- package/dist/threed/utils/dispose.js.map +0 -1
- package/dist/wall.d.ts +0 -241
- package/dist/wall.js +0 -44
- package/dist/wall.js.map +0 -1
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
export class EventManager3D {
|
|
3
|
-
constructor() {
|
|
4
|
-
this._mouse = new THREE.Vector2();
|
|
5
|
-
this._raycaster = new THREE.Raycaster();
|
|
6
|
-
}
|
|
7
|
-
get mouse() {
|
|
8
|
-
return this._mouse;
|
|
9
|
-
}
|
|
10
|
-
get lastFocused() {
|
|
11
|
-
return this._lastFocused;
|
|
12
|
-
}
|
|
13
|
-
set lastFocused(value) {
|
|
14
|
-
this._lastFocused = value;
|
|
15
|
-
}
|
|
16
|
-
get lastHovered() {
|
|
17
|
-
return this._lastHovered;
|
|
18
|
-
}
|
|
19
|
-
set lastHovered(value) {
|
|
20
|
-
this._lastHovered = value;
|
|
21
|
-
}
|
|
22
|
-
updateMouseNDC(px, py, left, top, width, height) {
|
|
23
|
-
this._mouse.x = ((px - left) / width) * 2 - 1;
|
|
24
|
-
this._mouse.y = -((py - top) / height) * 2 + 1;
|
|
25
|
-
}
|
|
26
|
-
getObjectByRaycast(camera, scene) {
|
|
27
|
-
const intersects = this.getObjectsByRaycast(camera, scene);
|
|
28
|
-
if (intersects && intersects.length > 0) {
|
|
29
|
-
let object = intersects[0].object;
|
|
30
|
-
while (object) {
|
|
31
|
-
if (object.userData.context) {
|
|
32
|
-
return object;
|
|
33
|
-
}
|
|
34
|
-
object = object.parent;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
getObjectsByRaycast(camera, scene) {
|
|
39
|
-
this._raycaster.setFromCamera(this._mouse, camera);
|
|
40
|
-
return this._raycaster.intersectObjects(scene.children, true);
|
|
41
|
-
}
|
|
42
|
-
handleClick(camera, scene, event) {
|
|
43
|
-
var _a;
|
|
44
|
-
if (this._lastFocused) {
|
|
45
|
-
this._lastFocused.focused = false;
|
|
46
|
-
}
|
|
47
|
-
const object = this.getObjectByRaycast(camera, scene);
|
|
48
|
-
const realObject = object === null || object === void 0 ? void 0 : object.userData.context;
|
|
49
|
-
if (realObject) {
|
|
50
|
-
realObject.focused = true;
|
|
51
|
-
this._lastFocused = realObject;
|
|
52
|
-
(_a = realObject.component) === null || _a === void 0 ? void 0 : _a.trigger('click', event);
|
|
53
|
-
}
|
|
54
|
-
return realObject;
|
|
55
|
-
}
|
|
56
|
-
handleHover(camera, scene, event) {
|
|
57
|
-
var _a, _b;
|
|
58
|
-
const object = this.getObjectByRaycast(camera, scene);
|
|
59
|
-
const realObject = object === null || object === void 0 ? void 0 : object.userData.context;
|
|
60
|
-
if (realObject !== this._lastHovered) {
|
|
61
|
-
if (this._lastHovered) {
|
|
62
|
-
(_a = this._lastHovered.component) === null || _a === void 0 ? void 0 : _a.trigger('mouseleave', event);
|
|
63
|
-
this._lastHovered = undefined;
|
|
64
|
-
}
|
|
65
|
-
if (realObject) {
|
|
66
|
-
this._lastHovered = realObject;
|
|
67
|
-
(_b = this._lastHovered.component) === null || _b === void 0 ? void 0 : _b.trigger('mouseenter', event);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
destroy() {
|
|
72
|
-
this._lastFocused = undefined;
|
|
73
|
-
this._lastHovered = undefined;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=event-manager3d.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-manager3d.js","sourceRoot":"","sources":["../../../src/threed/managers/event-manager3d.ts"],"names":[],"mappings":"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","sourcesContent":["import * as THREE from 'three'\nimport type { IThreeRealObject } from '../interfaces.js'\n\nexport class EventManager3D {\n private _mouse = new THREE.Vector2()\n private _raycaster = new THREE.Raycaster()\n private _lastFocused?: IThreeRealObject\n private _lastHovered?: IThreeRealObject\n\n get mouse() {\n return this._mouse\n }\n\n get lastFocused() {\n return this._lastFocused\n }\n\n set lastFocused(value: IThreeRealObject | undefined) {\n this._lastFocused = value\n }\n\n get lastHovered() {\n return this._lastHovered\n }\n\n set lastHovered(value: IThreeRealObject | undefined) {\n this._lastHovered = value\n }\n\n updateMouseNDC(px: number, py: number, left: number, top: number, width: number, height: number) {\n this._mouse.x = ((px - left) / width) * 2 - 1\n this._mouse.y = -((py - top) / height) * 2 + 1\n }\n\n getObjectByRaycast(camera: THREE.Camera, scene: THREE.Scene): THREE.Object3D | undefined {\n const intersects = this.getObjectsByRaycast(camera, scene)\n\n if (intersects && intersects.length > 0) {\n let object: THREE.Object3D | null = intersects[0].object\n while (object) {\n if (object.userData.context) {\n return object\n }\n object = object.parent\n }\n }\n }\n\n getObjectsByRaycast(camera: THREE.Camera, scene: THREE.Scene): THREE.Intersection[] {\n this._raycaster.setFromCamera(this._mouse, camera)\n return this._raycaster.intersectObjects(scene.children, true)\n }\n\n handleClick(camera: THREE.Camera, scene: THREE.Scene, event: MouseEvent): IThreeRealObject | undefined {\n if (this._lastFocused) {\n this._lastFocused.focused = false\n }\n\n const object = this.getObjectByRaycast(camera, scene)\n const realObject = object?.userData.context as IThreeRealObject | undefined\n\n if (realObject) {\n realObject.focused = true\n this._lastFocused = realObject\n realObject.component?.trigger('click', event)\n }\n\n return realObject\n }\n\n handleHover(camera: THREE.Camera, scene: THREE.Scene, event: MouseEvent) {\n const object = this.getObjectByRaycast(camera, scene)\n const realObject = object?.userData.context as IThreeRealObject | undefined\n\n if (realObject !== this._lastHovered) {\n if (this._lastHovered) {\n this._lastHovered.component?.trigger('mouseleave', event)\n this._lastHovered = undefined\n }\n\n if (realObject) {\n this._lastHovered = realObject\n this._lastHovered.component?.trigger('mouseenter', event)\n }\n }\n }\n\n destroy() {\n this._lastFocused = undefined\n this._lastHovered = undefined\n }\n}\n"]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { SceneManager } from './scene-manager.js';
|
|
2
|
-
export { CameraManager } from './camera-manager.js';
|
|
3
|
-
export { RendererManager } from './renderer-manager.js';
|
|
4
|
-
export { LightManager } from './light-manager.js';
|
|
5
|
-
export { ControlsManager } from './controls-manager.js';
|
|
6
|
-
export { EventManager3D } from './event-manager3d.js';
|
|
7
|
-
export type { CameraConfig, RendererConfig, LightingConfig } from './types.js';
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { SceneManager } from './scene-manager.js';
|
|
2
|
-
export { CameraManager } from './camera-manager.js';
|
|
3
|
-
export { RendererManager } from './renderer-manager.js';
|
|
4
|
-
export { LightManager } from './light-manager.js';
|
|
5
|
-
export { ControlsManager } from './controls-manager.js';
|
|
6
|
-
export { EventManager3D } from './event-manager3d.js';
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/threed/managers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA","sourcesContent":["export { SceneManager } from './scene-manager.js'\nexport { CameraManager } from './camera-manager.js'\nexport { RendererManager } from './renderer-manager.js'\nexport { LightManager } from './light-manager.js'\nexport { ControlsManager } from './controls-manager.js'\nexport { EventManager3D } from './event-manager3d.js'\nexport type { CameraConfig, RendererConfig, LightingConfig } from './types.js'\n"]}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
export class LightManager {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.lights = [];
|
|
5
|
-
}
|
|
6
|
-
setup(scene, camera, config) {
|
|
7
|
-
const { hemisphere, directional, point } = config;
|
|
8
|
-
const hemiLight = new THREE.HemisphereLight(hemisphere.skyColor, hemisphere.groundColor, hemisphere.intensity);
|
|
9
|
-
scene.add(hemiLight);
|
|
10
|
-
this.lights.push(hemiLight);
|
|
11
|
-
if (directional) {
|
|
12
|
-
const dirLight = new THREE.DirectionalLight(directional.color, directional.intensity);
|
|
13
|
-
if (directional.attachToCamera) {
|
|
14
|
-
camera.add(dirLight);
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
scene.add(dirLight);
|
|
18
|
-
}
|
|
19
|
-
this.lights.push(dirLight);
|
|
20
|
-
}
|
|
21
|
-
if (point) {
|
|
22
|
-
const pointLight = new THREE.PointLight(point.color, point.intensity, undefined, point.decay);
|
|
23
|
-
pointLight.power = point.power;
|
|
24
|
-
pointLight.castShadow = point.castShadow;
|
|
25
|
-
pointLight.position.set(...point.position);
|
|
26
|
-
pointLight.shadow.camera.near = point.shadowNear;
|
|
27
|
-
pointLight.shadow.camera.far = point.shadowFar;
|
|
28
|
-
scene.add(pointLight);
|
|
29
|
-
this.lights.push(pointLight);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
destroy() {
|
|
33
|
-
this.lights.forEach(light => light.dispose());
|
|
34
|
-
this.lights = [];
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=light-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"light-manager.js","sourceRoot":"","sources":["../../../src/threed/managers/light-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,OAAO,YAAY;IAAzB;QACU,WAAM,GAAkB,EAAE,CAAA;IAmCpC,CAAC;IAjCC,KAAK,CAAC,KAAkB,EAAE,MAAoB,EAAE,MAAsB;QACpE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;QAEjD,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;QAC9G,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE3B,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;YACrF,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACrB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5B,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YAC7F,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YAC9B,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;YACxC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC1C,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAA;YAChD,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAA;YAC9C,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;IAClB,CAAC;CACF","sourcesContent":["import * as THREE from 'three'\nimport { LightingConfig } from './types.js'\n\nexport class LightManager {\n private lights: THREE.Light[] = []\n\n setup(scene: THREE.Scene, camera: THREE.Camera, config: LightingConfig) {\n const { hemisphere, directional, point } = config\n\n const hemiLight = new THREE.HemisphereLight(hemisphere.skyColor, hemisphere.groundColor, hemisphere.intensity)\n scene.add(hemiLight)\n this.lights.push(hemiLight)\n\n if (directional) {\n const dirLight = new THREE.DirectionalLight(directional.color, directional.intensity)\n if (directional.attachToCamera) {\n camera.add(dirLight)\n } else {\n scene.add(dirLight)\n }\n this.lights.push(dirLight)\n }\n\n if (point) {\n const pointLight = new THREE.PointLight(point.color, point.intensity, undefined, point.decay)\n pointLight.power = point.power\n pointLight.castShadow = point.castShadow\n pointLight.position.set(...point.position)\n pointLight.shadow.camera.near = point.shadowNear\n pointLight.shadow.camera.far = point.shadowFar\n scene.add(pointLight)\n this.lights.push(pointLight)\n }\n }\n\n destroy() {\n this.lights.forEach(light => light.dispose())\n this.lights = []\n }\n}\n"]}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
|
|
3
|
-
import { CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
|
|
4
|
-
import { RendererConfig } from './types.js';
|
|
5
|
-
export declare class RendererManager {
|
|
6
|
-
private _renderer?;
|
|
7
|
-
private _css3DRenderer?;
|
|
8
|
-
private _css3DScene?;
|
|
9
|
-
private _composer?;
|
|
10
|
-
private _noSupportWebgl;
|
|
11
|
-
get renderer(): THREE.WebGLRenderer | undefined;
|
|
12
|
-
get css3DRenderer(): CSS3DRenderer;
|
|
13
|
-
get css3DScene(): THREE.Scene;
|
|
14
|
-
get composer(): EffectComposer | undefined;
|
|
15
|
-
get noSupportWebgl(): boolean;
|
|
16
|
-
get domElement(): HTMLCanvasElement | undefined;
|
|
17
|
-
setupWebGL(width: number, height: number, config: RendererConfig): boolean;
|
|
18
|
-
setupCSS3D(isViewMode: boolean, sceneAttr?: string): void;
|
|
19
|
-
private createCSS3DRenderer;
|
|
20
|
-
setupComposer(scene: THREE.Scene, camera: THREE.Camera, width: number, height: number): EffectComposer;
|
|
21
|
-
resize(width: number, height: number): void;
|
|
22
|
-
render(): void;
|
|
23
|
-
renderCSS3D(camera: THREE.Camera): void;
|
|
24
|
-
getSize(): {
|
|
25
|
-
width: number;
|
|
26
|
-
height: number;
|
|
27
|
-
};
|
|
28
|
-
destroy(): void;
|
|
29
|
-
disposeCSS3DScene(): void;
|
|
30
|
-
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
|
|
3
|
-
import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';
|
|
4
|
-
import { CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
|
|
5
|
-
export class RendererManager {
|
|
6
|
-
constructor() {
|
|
7
|
-
this._noSupportWebgl = false;
|
|
8
|
-
}
|
|
9
|
-
get renderer() {
|
|
10
|
-
return this._renderer;
|
|
11
|
-
}
|
|
12
|
-
get css3DRenderer() {
|
|
13
|
-
if (!this._css3DRenderer) {
|
|
14
|
-
this._css3DRenderer = this.createCSS3DRenderer();
|
|
15
|
-
}
|
|
16
|
-
return this._css3DRenderer;
|
|
17
|
-
}
|
|
18
|
-
get css3DScene() {
|
|
19
|
-
if (!this._css3DScene) {
|
|
20
|
-
this._css3DScene = new THREE.Scene();
|
|
21
|
-
}
|
|
22
|
-
return this._css3DScene;
|
|
23
|
-
}
|
|
24
|
-
get composer() {
|
|
25
|
-
return this._composer;
|
|
26
|
-
}
|
|
27
|
-
get noSupportWebgl() {
|
|
28
|
-
return this._noSupportWebgl;
|
|
29
|
-
}
|
|
30
|
-
get domElement() {
|
|
31
|
-
var _a;
|
|
32
|
-
return (_a = this._renderer) === null || _a === void 0 ? void 0 : _a.domElement;
|
|
33
|
-
}
|
|
34
|
-
setupWebGL(width, height, config) {
|
|
35
|
-
try {
|
|
36
|
-
const canvas = document.createElement('canvas');
|
|
37
|
-
const context = canvas.getContext('webgl2');
|
|
38
|
-
const renderer = new THREE.WebGLRenderer({
|
|
39
|
-
canvas,
|
|
40
|
-
context,
|
|
41
|
-
precision: config.precision,
|
|
42
|
-
alpha: true,
|
|
43
|
-
antialias: config.antialias
|
|
44
|
-
});
|
|
45
|
-
renderer.autoClear = true;
|
|
46
|
-
// @ts-ignore for three@0.150.1
|
|
47
|
-
renderer.outputColorSpace = THREE.SRGBColorSpace;
|
|
48
|
-
renderer.useLegacyLights = false;
|
|
49
|
-
renderer.toneMappingExposure = Math.pow(config.exposure, 5.0);
|
|
50
|
-
renderer.toneMapping = THREE.LinearToneMapping;
|
|
51
|
-
renderer.shadowMap.enabled = true;
|
|
52
|
-
renderer.setClearColor(0xffffff, 0);
|
|
53
|
-
renderer.setSize(width, height);
|
|
54
|
-
this._renderer = renderer;
|
|
55
|
-
this._noSupportWebgl = false;
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
58
|
-
catch (e) {
|
|
59
|
-
this._noSupportWebgl = true;
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
setupCSS3D(isViewMode, sceneAttr) {
|
|
64
|
-
const renderer = this.css3DRenderer;
|
|
65
|
-
const div = renderer.domElement;
|
|
66
|
-
div.style.position = 'absolute';
|
|
67
|
-
div.style.top = '0';
|
|
68
|
-
div.style.pointerEvents = 'none';
|
|
69
|
-
if (sceneAttr) {
|
|
70
|
-
div.setAttribute('scene', sceneAttr);
|
|
71
|
-
}
|
|
72
|
-
if (!isViewMode) {
|
|
73
|
-
div.style.pointerEvents = 'none';
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
createCSS3DRenderer() {
|
|
77
|
-
return new CSS3DRenderer();
|
|
78
|
-
}
|
|
79
|
-
setupComposer(scene, camera, width, height) {
|
|
80
|
-
this._composer = new EffectComposer(this._renderer);
|
|
81
|
-
this._composer.setSize(width, height);
|
|
82
|
-
const renderPass = new RenderPass(scene, camera);
|
|
83
|
-
this._composer.addPass(renderPass);
|
|
84
|
-
return this._composer;
|
|
85
|
-
}
|
|
86
|
-
resize(width, height) {
|
|
87
|
-
var _a, _b, _c;
|
|
88
|
-
(_a = this._renderer) === null || _a === void 0 ? void 0 : _a.setSize(width, height);
|
|
89
|
-
(_b = this._css3DRenderer) === null || _b === void 0 ? void 0 : _b.setSize(width, height);
|
|
90
|
-
(_c = this._composer) === null || _c === void 0 ? void 0 : _c.setSize(width, height);
|
|
91
|
-
}
|
|
92
|
-
render() {
|
|
93
|
-
var _a;
|
|
94
|
-
(_a = this._composer) === null || _a === void 0 ? void 0 : _a.render();
|
|
95
|
-
}
|
|
96
|
-
renderCSS3D(camera) {
|
|
97
|
-
var _a;
|
|
98
|
-
(_a = this._css3DRenderer) === null || _a === void 0 ? void 0 : _a.render(this.css3DScene, camera);
|
|
99
|
-
}
|
|
100
|
-
getSize() {
|
|
101
|
-
var _a;
|
|
102
|
-
const v = new THREE.Vector2();
|
|
103
|
-
(_a = this._renderer) === null || _a === void 0 ? void 0 : _a.getSize(v);
|
|
104
|
-
return { width: v.x, height: v.y };
|
|
105
|
-
}
|
|
106
|
-
destroy() {
|
|
107
|
-
var _a, _b;
|
|
108
|
-
(_a = this._composer) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
109
|
-
(_b = this._renderer) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
110
|
-
delete this._composer;
|
|
111
|
-
delete this._renderer;
|
|
112
|
-
}
|
|
113
|
-
disposeCSS3DScene() {
|
|
114
|
-
if (this._css3DScene) {
|
|
115
|
-
const children = [...this._css3DScene.children];
|
|
116
|
-
children.forEach(child => this._css3DScene.remove(child));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=renderer-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-manager.js","sourceRoot":"","sources":["../../../src/threed/managers/renderer-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import * as THREE from 'three'\nimport { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js'\nimport { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js'\nimport { CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer.js'\nimport { RendererConfig } from './types.js'\n\nexport class RendererManager {\n private _renderer?: THREE.WebGLRenderer\n private _css3DRenderer?: CSS3DRenderer\n private _css3DScene?: THREE.Scene\n private _composer?: EffectComposer\n private _noSupportWebgl = false\n\n get renderer() {\n return this._renderer\n }\n\n get css3DRenderer() {\n if (!this._css3DRenderer) {\n this._css3DRenderer = this.createCSS3DRenderer()\n }\n return this._css3DRenderer\n }\n\n get css3DScene() {\n if (!this._css3DScene) {\n this._css3DScene = new THREE.Scene()\n }\n return this._css3DScene\n }\n\n get composer() {\n return this._composer\n }\n\n get noSupportWebgl() {\n return this._noSupportWebgl\n }\n\n get domElement() {\n return this._renderer?.domElement\n }\n\n setupWebGL(width: number, height: number, config: RendererConfig): boolean {\n try {\n const canvas = document.createElement('canvas')\n const context = canvas.getContext('webgl2')!\n\n const renderer = new THREE.WebGLRenderer({\n canvas,\n context,\n precision: config.precision,\n alpha: true,\n antialias: config.antialias\n })\n\n renderer.autoClear = true\n // @ts-ignore for three@0.150.1\n renderer.outputColorSpace = THREE.SRGBColorSpace\n renderer.useLegacyLights = false\n renderer.toneMappingExposure = Math.pow(config.exposure, 5.0)\n renderer.toneMapping = THREE.LinearToneMapping\n renderer.shadowMap.enabled = true\n renderer.setClearColor(0xffffff, 0)\n renderer.setSize(width, height)\n\n this._renderer = renderer\n this._noSupportWebgl = false\n return true\n } catch (e) {\n this._noSupportWebgl = true\n return false\n }\n }\n\n setupCSS3D(isViewMode: boolean, sceneAttr?: string) {\n const renderer = this.css3DRenderer\n const div = renderer.domElement\n div.style.position = 'absolute'\n div.style.top = '0'\n div.style.pointerEvents = 'none'\n\n if (sceneAttr) {\n div.setAttribute('scene', sceneAttr)\n }\n\n if (!isViewMode) {\n div.style.pointerEvents = 'none'\n }\n }\n\n private createCSS3DRenderer(): CSS3DRenderer {\n return new CSS3DRenderer()\n }\n\n setupComposer(scene: THREE.Scene, camera: THREE.Camera, width: number, height: number) {\n this._composer = new EffectComposer(this._renderer!)\n this._composer.setSize(width, height)\n\n const renderPass = new RenderPass(scene, camera)\n this._composer.addPass(renderPass)\n\n return this._composer\n }\n\n resize(width: number, height: number) {\n this._renderer?.setSize(width, height)\n this._css3DRenderer?.setSize(width, height)\n this._composer?.setSize(width, height)\n }\n\n render() {\n this._composer?.render()\n }\n\n renderCSS3D(camera: THREE.Camera) {\n this._css3DRenderer?.render(this.css3DScene, camera)\n }\n\n getSize(): { width: number; height: number } {\n const v = new THREE.Vector2()\n this._renderer?.getSize(v)\n return { width: v.x, height: v.y }\n }\n\n destroy() {\n this._composer?.dispose()\n this._renderer?.dispose()\n delete this._composer\n delete this._renderer\n }\n\n disposeCSS3DScene() {\n if (this._css3DScene) {\n const children = [...this._css3DScene.children]\n children.forEach(child => this._css3DScene!.remove(child))\n }\n }\n}\n"]}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import { Component } from '@hatiolab/things-scene';
|
|
3
|
-
export declare class SceneManager {
|
|
4
|
-
private _scene?;
|
|
5
|
-
private _mixer?;
|
|
6
|
-
private _clock?;
|
|
7
|
-
get scene(): THREE.Scene | undefined;
|
|
8
|
-
get mixer(): THREE.AnimationMixer | undefined;
|
|
9
|
-
setup(): THREE.Scene;
|
|
10
|
-
setupMixer(): THREE.AnimationMixer;
|
|
11
|
-
addFloor(component: Component): void;
|
|
12
|
-
addObject(obj3d: THREE.Object3D): void;
|
|
13
|
-
updateAnimation(): void;
|
|
14
|
-
destroy(): void;
|
|
15
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import { createFloor } from '../floor/floor.js';
|
|
3
|
-
import { disposeObject3D } from '../utils/dispose.js';
|
|
4
|
-
export class SceneManager {
|
|
5
|
-
get scene() {
|
|
6
|
-
return this._scene;
|
|
7
|
-
}
|
|
8
|
-
get mixer() {
|
|
9
|
-
return this._mixer;
|
|
10
|
-
}
|
|
11
|
-
setup() {
|
|
12
|
-
this._scene = new THREE.Scene();
|
|
13
|
-
return this._scene;
|
|
14
|
-
}
|
|
15
|
-
setupMixer() {
|
|
16
|
-
this._clock = new THREE.Clock(true);
|
|
17
|
-
this._mixer = new THREE.AnimationMixer(this._scene);
|
|
18
|
-
return this._mixer;
|
|
19
|
-
}
|
|
20
|
-
addFloor(component) {
|
|
21
|
-
const floor = createFloor(component);
|
|
22
|
-
if (floor) {
|
|
23
|
-
this._scene.add(floor);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
addObject(obj3d) {
|
|
27
|
-
this._scene.add(obj3d);
|
|
28
|
-
}
|
|
29
|
-
updateAnimation() {
|
|
30
|
-
if (this._mixer && this._clock) {
|
|
31
|
-
this._mixer.update(this._clock.getDelta());
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
destroy() {
|
|
35
|
-
if (this._mixer) {
|
|
36
|
-
this._mixer.stopAllAction();
|
|
37
|
-
this._mixer.uncacheRoot(this._scene);
|
|
38
|
-
}
|
|
39
|
-
if (this._scene) {
|
|
40
|
-
disposeObject3D(this._scene);
|
|
41
|
-
this._scene.clear();
|
|
42
|
-
}
|
|
43
|
-
delete this._scene;
|
|
44
|
-
delete this._mixer;
|
|
45
|
-
delete this._clock;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=scene-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scene-manager.js","sourceRoot":"","sources":["../../../src/threed/managers/scene-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,MAAM,OAAO,YAAY;IAKvB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAA;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAO,CAAC,CAAA;QACpD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,QAAQ,CAAC,SAAoB;QAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAED,SAAS,CAAC,KAAqB;QAC7B,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA;YAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAO,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;CACF","sourcesContent":["import * as THREE from 'three'\nimport { Component } from '@hatiolab/things-scene'\nimport { createFloor } from '../floor/floor.js'\nimport { disposeObject3D } from '../utils/dispose.js'\n\nexport class SceneManager {\n private _scene?: THREE.Scene\n private _mixer?: THREE.AnimationMixer\n private _clock?: THREE.Clock\n\n get scene() {\n return this._scene\n }\n\n get mixer() {\n return this._mixer\n }\n\n setup() {\n this._scene = new THREE.Scene()\n return this._scene\n }\n\n setupMixer() {\n this._clock = new THREE.Clock(true)\n this._mixer = new THREE.AnimationMixer(this._scene!)\n return this._mixer\n }\n\n addFloor(component: Component) {\n const floor = createFloor(component)\n if (floor) {\n this._scene!.add(floor)\n }\n }\n\n addObject(obj3d: THREE.Object3D) {\n this._scene!.add(obj3d)\n }\n\n updateAnimation() {\n if (this._mixer && this._clock) {\n this._mixer.update(this._clock.getDelta())\n }\n }\n\n destroy() {\n if (this._mixer) {\n this._mixer.stopAllAction()\n this._mixer.uncacheRoot(this._scene!)\n }\n\n if (this._scene) {\n disposeObject3D(this._scene)\n this._scene.clear()\n }\n\n delete this._scene\n delete this._mixer\n delete this._clock\n }\n}\n"]}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export interface CameraConfig {
|
|
2
|
-
fov: number;
|
|
3
|
-
near: number;
|
|
4
|
-
far: number;
|
|
5
|
-
zoom: number;
|
|
6
|
-
cameraX?: number;
|
|
7
|
-
cameraY?: number;
|
|
8
|
-
cameraZ?: number;
|
|
9
|
-
}
|
|
10
|
-
export interface RendererConfig {
|
|
11
|
-
precision: string;
|
|
12
|
-
antialias: boolean;
|
|
13
|
-
exposure: number;
|
|
14
|
-
}
|
|
15
|
-
export interface LightingConfig {
|
|
16
|
-
hemisphere: {
|
|
17
|
-
skyColor: number;
|
|
18
|
-
groundColor: number;
|
|
19
|
-
intensity: number;
|
|
20
|
-
};
|
|
21
|
-
directional?: {
|
|
22
|
-
color: number;
|
|
23
|
-
intensity: number;
|
|
24
|
-
attachToCamera: boolean;
|
|
25
|
-
};
|
|
26
|
-
point?: {
|
|
27
|
-
color: number;
|
|
28
|
-
intensity: number;
|
|
29
|
-
decay: number;
|
|
30
|
-
power: number;
|
|
31
|
-
castShadow: boolean;
|
|
32
|
-
position: [number, number, number];
|
|
33
|
-
shadowNear: number;
|
|
34
|
-
shadowFar: number;
|
|
35
|
-
};
|
|
36
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/threed/managers/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface CameraConfig {\n fov: number\n near: number\n far: number\n zoom: number\n cameraX?: number\n cameraY?: number\n cameraZ?: number\n}\n\nexport interface RendererConfig {\n precision: string\n antialias: boolean\n exposure: number\n}\n\nexport interface LightingConfig {\n hemisphere: { skyColor: number; groundColor: number; intensity: number }\n directional?: { color: number; intensity: number; attachToCamera: boolean }\n point?: {\n color: number\n intensity: number\n decay: number\n power: number\n castShadow: boolean\n position: [number, number, number]\n shadowNear: number\n shadowFar: number\n }\n}\n"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import { RealObjectMesh } from './real-object-mesh.js';
|
|
3
|
-
export declare class RealObjectCamera extends RealObjectMesh {
|
|
4
|
-
protected _camera?: THREE.PerspectiveCamera;
|
|
5
|
-
update(): void;
|
|
6
|
-
get camera(): THREE.PerspectiveCamera;
|
|
7
|
-
createCamera(): THREE.PerspectiveCamera;
|
|
8
|
-
updateCamera(): void;
|
|
9
|
-
build(): void;
|
|
10
|
-
clear(): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
|
|
11
|
-
buildGeometry(): void;
|
|
12
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
import { RealObjectMesh } from './real-object-mesh.js';
|
|
6
|
-
import { UNIT_DIMENSION } from './common.js';
|
|
7
|
-
const DEFAULT = {
|
|
8
|
-
far: 100000,
|
|
9
|
-
fov: 80,
|
|
10
|
-
near: 1,
|
|
11
|
-
zoom: 1
|
|
12
|
-
};
|
|
13
|
-
export class RealObjectCamera extends RealObjectMesh {
|
|
14
|
-
update() {
|
|
15
|
-
super.update();
|
|
16
|
-
this.updateCamera();
|
|
17
|
-
}
|
|
18
|
-
get camera() {
|
|
19
|
-
if (!this._camera) {
|
|
20
|
-
this._camera = this.createCamera();
|
|
21
|
-
this.updateCamera();
|
|
22
|
-
}
|
|
23
|
-
return this._camera;
|
|
24
|
-
}
|
|
25
|
-
createCamera() {
|
|
26
|
-
return new THREE.PerspectiveCamera();
|
|
27
|
-
}
|
|
28
|
-
updateCamera() {
|
|
29
|
-
var { near = DEFAULT.near, far = DEFAULT.far, fov = DEFAULT.fov, zoom = DEFAULT.zoom } = this.component.state;
|
|
30
|
-
this.camera.far = far;
|
|
31
|
-
this.camera.fov = fov;
|
|
32
|
-
this.camera.near = near;
|
|
33
|
-
this.camera.zoom = zoom;
|
|
34
|
-
}
|
|
35
|
-
build() {
|
|
36
|
-
super.build();
|
|
37
|
-
this.object3d.add(this.camera);
|
|
38
|
-
}
|
|
39
|
-
clear() {
|
|
40
|
-
delete this._camera;
|
|
41
|
-
return super.clear();
|
|
42
|
-
}
|
|
43
|
-
buildGeometry() {
|
|
44
|
-
var { width = 1, height = 1, depth = 1 } = this.component.state.dimension || UNIT_DIMENSION;
|
|
45
|
-
var radius = Math.min(width, height, depth) / 2;
|
|
46
|
-
this.object3d.geometry = new THREE.SphereGeometry(radius, 32, 32);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=real-object-camera-meshed.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-camera-meshed.js","sourceRoot":"","sources":["../../src/threed/real-object-camera-meshed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAA;AAED,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAGlD,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAA;QAEd,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;YAClC,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,YAAY;QACV,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE7G,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA;QACrB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAA;QAEnB,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAED,aAAa;QACX,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI,cAAc,CAAA;QAE3F,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QAE/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACnE,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport { RealObjectMesh } from './real-object-mesh.js'\nimport { UNIT_DIMENSION } from './common.js'\n\nconst DEFAULT = {\n far: 100000,\n fov: 80,\n near: 1,\n zoom: 1\n}\n\nexport class RealObjectCamera extends RealObjectMesh {\n protected _camera?: THREE.PerspectiveCamera\n\n update() {\n super.update()\n\n this.updateCamera()\n }\n\n get camera(): THREE.PerspectiveCamera {\n if (!this._camera) {\n this._camera = this.createCamera()\n this.updateCamera()\n }\n\n return this._camera\n }\n\n createCamera() {\n return new THREE.PerspectiveCamera()\n }\n\n updateCamera() {\n var { near = DEFAULT.near, far = DEFAULT.far, fov = DEFAULT.fov, zoom = DEFAULT.zoom } = this.component.state\n\n this.camera.far = far\n this.camera.fov = fov\n this.camera.near = near\n this.camera.zoom = zoom\n }\n\n build() {\n super.build()\n\n this.object3d.add(this.camera)\n }\n\n clear() {\n delete this._camera\n\n return super.clear()\n }\n\n buildGeometry() {\n var { width = 1, height = 1, depth = 1 } = this.component.state.dimension || UNIT_DIMENSION\n\n var radius = Math.min(width, height, depth) / 2\n\n this.object3d.geometry = new THREE.SphereGeometry(radius, 32, 32)\n }\n}\n"]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import { RealObject } from './real-object.js';
|
|
3
|
-
export declare class RealObjectCamera extends RealObject<THREE.PerspectiveCamera> {
|
|
4
|
-
protected _camera?: THREE.PerspectiveCamera;
|
|
5
|
-
build(): void;
|
|
6
|
-
update(): void;
|
|
7
|
-
protected getObject3dInstance(): THREE.PerspectiveCamera;
|
|
8
|
-
updateCamera(): void;
|
|
9
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
import { RealObject } from './real-object.js';
|
|
6
|
-
const DEFAULT = {
|
|
7
|
-
far: 100000,
|
|
8
|
-
fov: 80,
|
|
9
|
-
near: 1,
|
|
10
|
-
zoom: 1
|
|
11
|
-
};
|
|
12
|
-
export class RealObjectCamera extends RealObject {
|
|
13
|
-
build() {
|
|
14
|
-
super.build();
|
|
15
|
-
}
|
|
16
|
-
update() {
|
|
17
|
-
super.update();
|
|
18
|
-
this.updateCamera();
|
|
19
|
-
}
|
|
20
|
-
getObject3dInstance() {
|
|
21
|
-
return new THREE.PerspectiveCamera();
|
|
22
|
-
}
|
|
23
|
-
updateCamera() {
|
|
24
|
-
var { near = DEFAULT.near, far = DEFAULT.far, fov = DEFAULT.fov, zoom = DEFAULT.zoom } = this.component.state;
|
|
25
|
-
this.object3d.far = far;
|
|
26
|
-
this.object3d.fov = fov;
|
|
27
|
-
this.object3d.near = near;
|
|
28
|
-
this.object3d.zoom = zoom;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=real-object-camera.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-camera.js","sourceRoot":"","sources":["../../src/threed/real-object-camera.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAA;AAED,MAAM,OAAO,gBAAiB,SAAQ,UAAmC;IAGvE,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;IACf,CAAC;IAED,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAA;QAEd,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAES,mBAAmB;QAC3B,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,YAAY;QACV,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE7G,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAA;IAC3B,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport { RealObject } from './real-object.js'\n\nconst DEFAULT = {\n far: 100000,\n fov: 80,\n near: 1,\n zoom: 1\n}\n\nexport class RealObjectCamera extends RealObject<THREE.PerspectiveCamera> {\n protected _camera?: THREE.PerspectiveCamera\n\n build() {\n super.build()\n }\n\n update() {\n super.update()\n\n this.updateCamera()\n }\n\n protected getObject3dInstance() {\n return new THREE.PerspectiveCamera()\n }\n\n updateCamera() {\n var { near = DEFAULT.near, far = DEFAULT.far, fov = DEFAULT.fov, zoom = DEFAULT.zoom } = this.component.state\n\n this.object3d.far = far\n this.object3d.fov = fov\n this.object3d.near = near\n this.object3d.zoom = zoom\n }\n}\n"]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
|
|
2
|
-
import { RealObject } from './real-object.js';
|
|
3
|
-
export declare class RealObjectDomElement extends RealObject<CSS3DObject> {
|
|
4
|
-
protected getObject3dInstance(): CSS3DObject;
|
|
5
|
-
get cz(): any;
|
|
6
|
-
build(): void;
|
|
7
|
-
updateDimension(): void;
|
|
8
|
-
updateAlpha(): void;
|
|
9
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer.js';
|
|
5
|
-
import { RealObject } from './real-object.js';
|
|
6
|
-
export class RealObjectDomElement extends RealObject {
|
|
7
|
-
getObject3dInstance() {
|
|
8
|
-
return new CSS3DObject(this.component.element);
|
|
9
|
-
}
|
|
10
|
-
get cz() {
|
|
11
|
-
var { zPos = 0 } = this.component.state;
|
|
12
|
-
var { height } = this.component.bounds;
|
|
13
|
-
var { tz = 0 } = this.component.delta();
|
|
14
|
-
return zPos + tz + height / 2;
|
|
15
|
-
}
|
|
16
|
-
build() {
|
|
17
|
-
super.build();
|
|
18
|
-
var element = this.component.element;
|
|
19
|
-
if (!element)
|
|
20
|
-
return;
|
|
21
|
-
var { width, height } = this.component.bounds;
|
|
22
|
-
element.style.width = width + 'px';
|
|
23
|
-
element.style.height = height + 'px';
|
|
24
|
-
element.style.left = '';
|
|
25
|
-
element.style.top = '';
|
|
26
|
-
}
|
|
27
|
-
updateDimension() {
|
|
28
|
-
super.updateDimension();
|
|
29
|
-
var dimension = this.dimension;
|
|
30
|
-
var element = this.component.element;
|
|
31
|
-
if (!element)
|
|
32
|
-
return;
|
|
33
|
-
element.style.width = dimension.width + 'px';
|
|
34
|
-
element.style.height = dimension.height + 'px';
|
|
35
|
-
}
|
|
36
|
-
updateAlpha() {
|
|
37
|
-
super.updateAlpha();
|
|
38
|
-
// material의 opacity는 항상 0으로 유지되어야 하며,
|
|
39
|
-
// dom element의 opacity에 alpha를 적용해야한다.
|
|
40
|
-
// 하지만, 컬러톤의 반영 외에 transparent 기능은 하지 못하므로, 뒤에 있는 오브젝트를 보여주지 못한다.
|
|
41
|
-
var { alpha = 1 } = this.component.state;
|
|
42
|
-
var element = this.component.element;
|
|
43
|
-
if (element) {
|
|
44
|
-
element.style.opacity = String(alpha);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=real-object-dom-element.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-dom-element.js","sourceRoot":"","sources":["../../src/threed/real-object-dom-element.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,OAAO,oBAAqB,SAAQ,UAAuB;IACrD,mBAAmB;QAC3B,OAAO,IAAI,WAAW,CAAE,IAAI,CAAC,SAAkE,CAAC,OAAQ,CAAC,CAAA;IAC3G,CAAC;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QACvC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;QACtC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAW,CAAA;QAEhD,OAAO,IAAI,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,OAAO,GAAI,IAAI,CAAC,SAAkE,CAAC,OAAO,CAAA;QAC9F,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;QAE7C,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;QAClC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;QAEpC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAA;QACvB,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAA;IACxB,CAAC;IAED,eAAe;QACb,KAAK,CAAC,eAAe,EAAE,CAAA;QAEvB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAC9B,IAAI,OAAO,GAAI,IAAI,CAAC,SAAkE,CAAC,OAAO,CAAA;QAC9F,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAAA;QAC5C,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAA;IAChD,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAA;QAEnB,sCAAsC;QACtC,uCAAuC;QACvC,iEAAiE;QACjE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAExC,IAAI,OAAO,GAAI,IAAI,CAAC,SAAkE,CAAC,OAAO,CAAA;QAC9F,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { HTMLOverlayElement, HTMLOverlayContainer, DELTA } from '@hatiolab/things-scene'\n\nimport { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer.js'\nimport { RealObject } from './real-object.js'\n\nexport class RealObjectDomElement extends RealObject<CSS3DObject> {\n protected getObject3dInstance() {\n return new CSS3DObject((this.component as unknown as HTMLOverlayElement | HTMLOverlayContainer).element!)\n }\n\n get cz() {\n var { zPos = 0 } = this.component.state\n var { height } = this.component.bounds\n var { tz = 0 } = this.component.delta() as DELTA\n\n return zPos + tz + height / 2\n }\n\n build() {\n super.build()\n\n var element = (this.component as unknown as HTMLOverlayElement | HTMLOverlayContainer).element\n if (!element) return\n\n var { width, height } = this.component.bounds\n\n element.style.width = width + 'px'\n element.style.height = height + 'px'\n\n element.style.left = ''\n element.style.top = ''\n }\n\n updateDimension() {\n super.updateDimension()\n\n var dimension = this.dimension\n var element = (this.component as unknown as HTMLOverlayElement | HTMLOverlayContainer).element\n if (!element) return\n\n element.style.width = dimension.width + 'px'\n element.style.height = dimension.height + 'px'\n }\n\n updateAlpha() {\n super.updateAlpha()\n\n // material의 opacity는 항상 0으로 유지되어야 하며,\n // dom element의 opacity에 alpha를 적용해야한다.\n // 하지만, 컬러톤의 반영 외에 transparent 기능은 하지 못하므로, 뒤에 있는 오브젝트를 보여주지 못한다.\n var { alpha = 1 } = this.component.state\n\n var element = (this.component as unknown as HTMLOverlayElement | HTMLOverlayContainer).element\n if (element) {\n element.style.opacity = String(alpha)\n }\n }\n}\n"]}
|