@operato/scene-visualizer 10.0.0-beta.1 → 10.0.0-beta.3

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 (163) hide show
  1. package/dist/editors/property-editor-gltf-info.d.ts +8 -1
  2. package/dist/editors/property-editor-gltf-info.js +80 -24
  3. package/dist/editors/property-editor-gltf-info.js.map +1 -1
  4. package/package.json +2 -2
  5. package/dist/banner.d.ts +0 -244
  6. package/dist/banner.js +0 -75
  7. package/dist/banner.js.map +0 -1
  8. package/dist/camera.d.ts +0 -249
  9. package/dist/camera.js +0 -107
  10. package/dist/camera.js.map +0 -1
  11. package/dist/cube.d.ts +0 -241
  12. package/dist/cube.js +0 -37
  13. package/dist/cube.js.map +0 -1
  14. package/dist/cylinder.d.ts +0 -9
  15. package/dist/cylinder.js +0 -37
  16. package/dist/cylinder.js.map +0 -1
  17. package/dist/ellipse.d.ts +0 -5
  18. package/dist/ellipse.js +0 -20
  19. package/dist/ellipse.js.map +0 -1
  20. package/dist/gltf-object.d.ts +0 -249
  21. package/dist/gltf-object.js +0 -103
  22. package/dist/gltf-object.js.map +0 -1
  23. package/dist/html-overlay-element.d.ts +0 -1
  24. package/dist/html-overlay-element.js +0 -8
  25. package/dist/html-overlay-element.js.map +0 -1
  26. package/dist/light.d.ts +0 -14
  27. package/dist/light.js +0 -134
  28. package/dist/light.js.map +0 -1
  29. package/dist/polygon.d.ts +0 -17
  30. package/dist/polygon.js +0 -62
  31. package/dist/polygon.js.map +0 -1
  32. package/dist/rect.d.ts +0 -5
  33. package/dist/rect.js +0 -34
  34. package/dist/rect.js.map +0 -1
  35. package/dist/scene/component.d.ts +0 -1
  36. package/dist/scene/component.js +0 -29
  37. package/dist/scene/component.js.map +0 -1
  38. package/dist/sphere.d.ts +0 -9
  39. package/dist/sphere.js +0 -37
  40. package/dist/sphere.js.map +0 -1
  41. package/dist/sprite.d.ts +0 -238
  42. package/dist/sprite.js +0 -27
  43. package/dist/sprite.js.map +0 -1
  44. package/dist/text.d.ts +0 -1
  45. package/dist/text.js +0 -7
  46. package/dist/text.js.map +0 -1
  47. package/dist/three-container-editor.d.ts +0 -22
  48. package/dist/three-container-editor.js +0 -132
  49. package/dist/three-container-editor.js.map +0 -1
  50. package/dist/three-container.d.ts +0 -61
  51. package/dist/three-container.js +0 -371
  52. package/dist/three-container.js.map +0 -1
  53. package/dist/three-controls.d.ts +0 -111
  54. package/dist/three-controls.js +0 -414
  55. package/dist/three-controls.js.map +0 -1
  56. package/dist/three-layout.d.ts +0 -8
  57. package/dist/three-layout.js +0 -20
  58. package/dist/three-layout.js.map +0 -1
  59. package/dist/three-space.d.ts +0 -8
  60. package/dist/three-space.js +0 -58
  61. package/dist/three-space.js.map +0 -1
  62. package/dist/threed/common.d.ts +0 -22
  63. package/dist/threed/common.js +0 -19
  64. package/dist/threed/common.js.map +0 -1
  65. package/dist/threed/floor/floor.d.ts +0 -3
  66. package/dist/threed/floor/floor.js +0 -51
  67. package/dist/threed/floor/floor.js.map +0 -1
  68. package/dist/threed/html/elements.d.ts +0 -2
  69. package/dist/threed/html/elements.js +0 -21
  70. package/dist/threed/html/elements.js.map +0 -1
  71. package/dist/threed/index.d.ts +0 -16
  72. package/dist/threed/index.js +0 -17
  73. package/dist/threed/index.js.map +0 -1
  74. package/dist/threed/interfaces.d.ts +0 -15
  75. package/dist/threed/interfaces.js +0 -5
  76. package/dist/threed/interfaces.js.map +0 -1
  77. package/dist/threed/managers/camera-manager.d.ts +0 -14
  78. package/dist/threed/managers/camera-manager.js +0 -60
  79. package/dist/threed/managers/camera-manager.js.map +0 -1
  80. package/dist/threed/managers/controls-manager.d.ts +0 -50
  81. package/dist/threed/managers/controls-manager.js +0 -249
  82. package/dist/threed/managers/controls-manager.js.map +0 -1
  83. package/dist/threed/managers/event-manager3d.d.ts +0 -19
  84. package/dist/threed/managers/event-manager3d.js +0 -76
  85. package/dist/threed/managers/event-manager3d.js.map +0 -1
  86. package/dist/threed/managers/index.d.ts +0 -7
  87. package/dist/threed/managers/index.js +0 -7
  88. package/dist/threed/managers/index.js.map +0 -1
  89. package/dist/threed/managers/light-manager.d.ts +0 -7
  90. package/dist/threed/managers/light-manager.js +0 -37
  91. package/dist/threed/managers/light-manager.js.map +0 -1
  92. package/dist/threed/managers/renderer-manager.d.ts +0 -30
  93. package/dist/threed/managers/renderer-manager.js +0 -120
  94. package/dist/threed/managers/renderer-manager.js.map +0 -1
  95. package/dist/threed/managers/scene-manager.d.ts +0 -15
  96. package/dist/threed/managers/scene-manager.js +0 -48
  97. package/dist/threed/managers/scene-manager.js.map +0 -1
  98. package/dist/threed/managers/types.d.ts +0 -36
  99. package/dist/threed/managers/types.js +0 -2
  100. package/dist/threed/managers/types.js.map +0 -1
  101. package/dist/threed/real-object-camera-meshed.d.ts +0 -12
  102. package/dist/threed/real-object-camera-meshed.js +0 -49
  103. package/dist/threed/real-object-camera-meshed.js.map +0 -1
  104. package/dist/threed/real-object-camera.d.ts +0 -9
  105. package/dist/threed/real-object-camera.js +0 -31
  106. package/dist/threed/real-object-camera.js.map +0 -1
  107. package/dist/threed/real-object-dom-element.d.ts +0 -9
  108. package/dist/threed/real-object-dom-element.js +0 -48
  109. package/dist/threed/real-object-dom-element.js.map +0 -1
  110. package/dist/threed/real-object-dummy.d.ts +0 -6
  111. package/dist/threed/real-object-dummy.js +0 -11
  112. package/dist/threed/real-object-dummy.js.map +0 -1
  113. package/dist/threed/real-object-extrude.d.ts +0 -22
  114. package/dist/threed/real-object-extrude.js +0 -180
  115. package/dist/threed/real-object-extrude.js.map +0 -1
  116. package/dist/threed/real-object-gltf.d.ts +0 -16
  117. package/dist/threed/real-object-gltf.js +0 -105
  118. package/dist/threed/real-object-gltf.js.map +0 -1
  119. package/dist/threed/real-object-group.d.ts +0 -5
  120. package/dist/threed/real-object-group.js +0 -11
  121. package/dist/threed/real-object-group.js.map +0 -1
  122. package/dist/threed/real-object-mesh.d.ts +0 -13
  123. package/dist/threed/real-object-mesh.js +0 -73
  124. package/dist/threed/real-object-mesh.js.map +0 -1
  125. package/dist/threed/real-object-plane.d.ts +0 -5
  126. package/dist/threed/real-object-plane.js +0 -22
  127. package/dist/threed/real-object-plane.js.map +0 -1
  128. package/dist/threed/real-object-registry.d.ts +0 -7
  129. package/dist/threed/real-object-registry.js +0 -32
  130. package/dist/threed/real-object-registry.js.map +0 -1
  131. package/dist/threed/real-object-scene.d.ts +0 -21
  132. package/dist/threed/real-object-scene.js +0 -72
  133. package/dist/threed/real-object-scene.js.map +0 -1
  134. package/dist/threed/real-object-sprite-2d.d.ts +0 -14
  135. package/dist/threed/real-object-sprite-2d.js +0 -45
  136. package/dist/threed/real-object-sprite-2d.js.map +0 -1
  137. package/dist/threed/real-object-sprite.d.ts +0 -11
  138. package/dist/threed/real-object-sprite.js +0 -52
  139. package/dist/threed/real-object-sprite.js.map +0 -1
  140. package/dist/threed/real-object-text.d.ts +0 -15
  141. package/dist/threed/real-object-text.js +0 -66
  142. package/dist/threed/real-object-text.js.map +0 -1
  143. package/dist/threed/real-object.d.ts +0 -65
  144. package/dist/threed/real-object.js +0 -251
  145. package/dist/threed/real-object.js.map +0 -1
  146. package/dist/threed/texture/canvas-texture.d.ts +0 -4
  147. package/dist/threed/texture/canvas-texture.js +0 -49
  148. package/dist/threed/texture/canvas-texture.js.map +0 -1
  149. package/dist/threed/texture/text-texture.d.ts +0 -8
  150. package/dist/threed/texture/text-texture.js +0 -79
  151. package/dist/threed/texture/text-texture.js.map +0 -1
  152. package/dist/threed/three-dimensional-container.d.ts +0 -7
  153. package/dist/threed/three-dimensional-container.js +0 -2
  154. package/dist/threed/three-dimensional-container.js.map +0 -1
  155. package/dist/threed/utils/bound-uv-generator.d.ts +0 -16
  156. package/dist/threed/utils/bound-uv-generator.js +0 -42
  157. package/dist/threed/utils/bound-uv-generator.js.map +0 -1
  158. package/dist/threed/utils/dispose.d.ts +0 -2
  159. package/dist/threed/utils/dispose.js +0 -32
  160. package/dist/threed/utils/dispose.js.map +0 -1
  161. package/dist/wall.d.ts +0 -241
  162. package/dist/wall.js +0 -44
  163. package/dist/wall.js.map +0 -1
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -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"]}
@@ -1,6 +0,0 @@
1
- import * as THREE from 'three';
2
- import { RealObject } from './real-object.js';
3
- export declare class RealObjectDummy extends RealObject<THREE.Object3D> {
4
- build(): void;
5
- update(): void;
6
- }
@@ -1,11 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import { RealObject } from './real-object.js';
5
- export class RealObjectDummy extends RealObject {
6
- build() {
7
- super.build();
8
- }
9
- update() { }
10
- }
11
- //# sourceMappingURL=real-object-dummy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-dummy.js","sourceRoot":"","sources":["../../src/threed/real-object-dummy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,OAAO,eAAgB,SAAQ,UAA0B;IAC7D,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;IACf,CAAC;IACD,MAAM,KAAI,CAAC;CACZ","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { RealObject } from './real-object.js'\n\nexport class RealObjectDummy extends RealObject<THREE.Object3D> {\n build() {\n super.build()\n }\n update() {}\n}\n"]}
@@ -1,22 +0,0 @@
1
- import * as THREE from 'three';
2
- import { RealObject } from './real-object.js';
3
- import { BoundUVGenerator } from './utils/bound-uv-generator.js';
4
- export declare class RealObjectExtrude extends RealObject {
5
- _boundUVGenerator?: BoundUVGenerator;
6
- private _mainMesh?;
7
- private _sideMesh?;
8
- clear(): THREE.Object3D<THREE.Object3DEventMap>;
9
- get shape(): any;
10
- get sideShape(): null;
11
- get boundUVGenerator(): BoundUVGenerator;
12
- build(): void;
13
- createGeometry(shape: THREE.Shape): THREE.BufferGeometry;
14
- createMainMaterial(): THREE.MeshStandardMaterial;
15
- createMainMesh(geometry: THREE.BufferGeometry, material: THREE.Material): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material, THREE.Object3DEventMap>;
16
- createSideMesh(geometry: THREE.BufferGeometry, shape: THREE.Shape): THREE.Mesh<THREE.ExtrudeGeometry, THREE.MeshStandardMaterial, THREE.Object3DEventMap>;
17
- createTexture(): THREE.CanvasTexture;
18
- updateAlpha(): void;
19
- updateStrokeStyle(): void;
20
- updateFillStyle(): void;
21
- updateDimension(): void;
22
- }
@@ -1,180 +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
- import { BoundUVGenerator } from './utils/bound-uv-generator.js';
7
- import { createCanvas } from './html/elements.js';
8
- import { applyAlpha } from './common.js';
9
- export class RealObjectExtrude extends RealObject {
10
- clear() {
11
- this._mainMesh = undefined;
12
- this._sideMesh = undefined;
13
- return super.clear();
14
- }
15
- get shape() {
16
- return null;
17
- }
18
- get sideShape() {
19
- return null;
20
- }
21
- get boundUVGenerator() {
22
- if (!this._boundUVGenerator)
23
- this._boundUVGenerator = new BoundUVGenerator();
24
- return this._boundUVGenerator;
25
- }
26
- build() {
27
- super.build();
28
- var { depth = 1 } = this.component.state;
29
- // 다각형 그리기
30
- var shape = this.shape;
31
- if (!shape) {
32
- return;
33
- }
34
- var boundUVGenerator = this.boundUVGenerator;
35
- if (boundUVGenerator) {
36
- boundUVGenerator.setShape({
37
- extrudedShape: shape,
38
- extrudedOptions: {
39
- depth
40
- }
41
- });
42
- }
43
- var geometry = this.createGeometry(shape);
44
- var material = this.createMainMaterial();
45
- this._mainMesh = this.createMainMesh(geometry, material);
46
- this._mainMesh.castShadow = true;
47
- this.object3d.add(this._mainMesh);
48
- this._sideMesh = this.createSideMesh(geometry, shape /* FIXME , extrudeSettings */);
49
- this._sideMesh.castShadow = true;
50
- this.object3d.add(this._sideMesh);
51
- this.updateFillStyle();
52
- this.updateStrokeStyle();
53
- }
54
- createGeometry(shape) {
55
- const { depth = 1 } = this.component.state;
56
- const extrudeSettings = {
57
- steps: 1,
58
- depth,
59
- bevelEnabled: false,
60
- UVGenerator: this.boundUVGenerator
61
- };
62
- var geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings);
63
- geometry.center();
64
- return geometry;
65
- }
66
- createMainMaterial() {
67
- return new THREE.MeshStandardMaterial({
68
- metalness: 0.5,
69
- roughness: 0.5
70
- });
71
- }
72
- createMainMesh(geometry, material) {
73
- var mesh = new THREE.Mesh(geometry, material);
74
- mesh.rotation.x = -Math.PI / 2;
75
- mesh.rotation.y = -Math.PI;
76
- mesh.rotation.z = -Math.PI;
77
- return mesh;
78
- }
79
- createSideMesh(geometry, shape) {
80
- var { depth = 1, lineWidth = 0 } = this.component.state;
81
- var hole = new THREE.Path();
82
- hole.setFromPoints(shape.getPoints());
83
- var sideMaterial = new THREE.MeshStandardMaterial({
84
- metalness: 0.5,
85
- roughness: 0.5,
86
- // prevent overlapped layers flickering
87
- polygonOffset: true,
88
- polygonOffsetFactor: -0.1
89
- });
90
- shape = this.sideShape || shape;
91
- shape.holes.push(hole);
92
- var sideExtrudeSettings = {
93
- steps: 1,
94
- depth: depth + 1,
95
- bevelEnabled: true,
96
- bevelThickness: 0,
97
- bevelSize: lineWidth,
98
- bevelSizeSegments: 5
99
- };
100
- var sideGeometry = new THREE.ExtrudeGeometry(shape, sideExtrudeSettings);
101
- sideGeometry.center();
102
- var sideMesh = new THREE.Mesh(sideGeometry, sideMaterial);
103
- sideMesh.rotation.x = -Math.PI / 2;
104
- sideMesh.rotation.y = -Math.PI;
105
- sideMesh.rotation.z = -Math.PI;
106
- return sideMesh;
107
- }
108
- createTexture() {
109
- function nextPowerOf2(n) {
110
- var count = 0;
111
- if (n && !(n & (n - 1))) {
112
- return n;
113
- }
114
- while (n != 0) {
115
- n >>= 1;
116
- count += 1;
117
- }
118
- return 1 << count;
119
- }
120
- var { width, height } = this.component.bounds;
121
- var poweredWidth = nextPowerOf2(width);
122
- var poweredHeight = nextPowerOf2(height);
123
- let canvas = createCanvas(poweredWidth, poweredHeight);
124
- this.component.render(canvas.getContext('2d'));
125
- var texture = new THREE.CanvasTexture(canvas);
126
- texture.needsUpdate = true;
127
- texture.wrapS = THREE.RepeatWrapping;
128
- texture.wrapT = THREE.RepeatWrapping;
129
- texture.offset.set(0, 1 - height / poweredHeight);
130
- texture.repeat.set(width / poweredWidth, height / poweredHeight);
131
- texture.minFilter = THREE.LinearFilter;
132
- return texture;
133
- }
134
- updateAlpha() {
135
- var { alpha = 1, fillStyle, strokeStyle } = this.component.state;
136
- this._mainMesh && applyAlpha(this._mainMesh.material, alpha, fillStyle);
137
- this._sideMesh && applyAlpha(this._sideMesh.material, alpha, strokeStyle);
138
- }
139
- updateStrokeStyle() {
140
- var _a;
141
- const material = (_a = this._sideMesh) === null || _a === void 0 ? void 0 : _a.material;
142
- if (!material) {
143
- return;
144
- }
145
- var { strokeStyle } = this.component.state;
146
- material.color.set(strokeStyle);
147
- }
148
- updateFillStyle() {
149
- var _a;
150
- var { fillStyle, alpha = 1 } = this.component.state;
151
- var material = (_a = this._mainMesh) === null || _a === void 0 ? void 0 : _a.material;
152
- if (!material) {
153
- return;
154
- }
155
- const texture = RealObject.buildFillStyleTexture(this.component);
156
- if (texture) {
157
- if (material.map)
158
- material.map.dispose();
159
- material.map = texture;
160
- }
161
- else {
162
- material.color.set(fillStyle);
163
- }
164
- }
165
- updateDimension() {
166
- var { width, height, depth } = this.dimension;
167
- if (!this._mainMesh || !this._sideMesh)
168
- return;
169
- this._mainMesh.geometry.computeBoundingBox();
170
- let bbox = this._mainMesh.geometry.boundingBox;
171
- if (bbox) {
172
- let originalWidth = bbox.max.x - bbox.min.x;
173
- let originalHeight = bbox.max.y - bbox.min.y;
174
- let originalDepth = bbox.max.z - bbox.min.z;
175
- this._mainMesh.scale.set(width / originalWidth, height / originalHeight, depth / originalDepth);
176
- this._sideMesh.scale.set(width / originalWidth, height / originalHeight, depth / originalDepth);
177
- }
178
- }
179
- }
180
- //# sourceMappingURL=real-object-extrude.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"real-object-extrude.js","sourceRoot":"","sources":["../../src/threed/real-object-extrude.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport { RealObject } from './real-object.js'\n\nimport { BoundUVGenerator } from './utils/bound-uv-generator.js'\nimport { createCanvas } from './html/elements.js'\nimport { applyAlpha } from './common.js'\n\nexport class RealObjectExtrude extends RealObject {\n _boundUVGenerator?: BoundUVGenerator\n private _mainMesh?: THREE.Mesh\n private _sideMesh?: THREE.Mesh\n\n clear() {\n this._mainMesh = undefined\n this._sideMesh = undefined\n return super.clear()\n }\n\n get shape(): any {\n return null\n }\n\n get sideShape() {\n return null\n }\n\n get boundUVGenerator() {\n if (!this._boundUVGenerator) this._boundUVGenerator = new BoundUVGenerator()\n\n return this._boundUVGenerator\n }\n\n build() {\n super.build()\n\n var { depth = 1 } = this.component.state\n\n // 다각형 그리기\n var shape = this.shape\n if (!shape) {\n return\n }\n\n var boundUVGenerator = this.boundUVGenerator\n\n if (boundUVGenerator) {\n boundUVGenerator.setShape({\n extrudedShape: shape,\n extrudedOptions: {\n depth\n }\n })\n }\n\n var geometry = this.createGeometry(shape)\n\n var material = this.createMainMaterial()\n this._mainMesh = this.createMainMesh(geometry, material as THREE.Material)\n this._mainMesh.castShadow = true\n\n this.object3d.add(this._mainMesh)\n\n this._sideMesh = this.createSideMesh(geometry, shape /* FIXME , extrudeSettings */)\n this._sideMesh.castShadow = true\n\n this.object3d.add(this._sideMesh)\n\n this.updateFillStyle()\n this.updateStrokeStyle()\n }\n\n createGeometry(shape: THREE.Shape): THREE.BufferGeometry {\n const { depth = 1 } = this.component.state\n\n const extrudeSettings = {\n steps: 1,\n depth,\n bevelEnabled: false,\n UVGenerator: this.boundUVGenerator\n } as THREE.ExtrudeGeometryOptions\n\n var geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings)\n geometry.center()\n\n return geometry as any\n }\n\n createMainMaterial() {\n return new THREE.MeshStandardMaterial({\n metalness: 0.5,\n roughness: 0.5\n })\n }\n\n createMainMesh(geometry: THREE.BufferGeometry, material: THREE.Material) {\n var mesh = new THREE.Mesh(geometry, material)\n mesh.rotation.x = -Math.PI / 2\n mesh.rotation.y = -Math.PI\n mesh.rotation.z = -Math.PI\n\n return mesh\n }\n\n createSideMesh(geometry: THREE.BufferGeometry, shape: THREE.Shape) {\n var { depth = 1, lineWidth = 0 } = this.component.state\n\n var hole = new THREE.Path()\n hole.setFromPoints(shape.getPoints())\n\n var sideMaterial = new THREE.MeshStandardMaterial({\n metalness: 0.5,\n roughness: 0.5,\n // prevent overlapped layers flickering\n polygonOffset: true,\n polygonOffsetFactor: -0.1\n })\n\n shape = this.sideShape || shape\n shape.holes.push(hole)\n\n var sideExtrudeSettings = {\n steps: 1,\n depth: depth + 1,\n bevelEnabled: true,\n bevelThickness: 0,\n bevelSize: lineWidth,\n bevelSizeSegments: 5\n }\n\n var sideGeometry = new THREE.ExtrudeGeometry(shape, sideExtrudeSettings)\n sideGeometry.center()\n\n var sideMesh = new THREE.Mesh(sideGeometry, sideMaterial)\n sideMesh.rotation.x = -Math.PI / 2\n sideMesh.rotation.y = -Math.PI\n sideMesh.rotation.z = -Math.PI\n\n return sideMesh\n }\n\n createTexture() {\n function nextPowerOf2(n: number) {\n var count = 0\n\n if (n && !(n & (n - 1))) {\n return n\n }\n\n while (n != 0) {\n n >>= 1\n count += 1\n }\n\n return 1 << count\n }\n\n var { width, height } = this.component.bounds\n\n var poweredWidth = nextPowerOf2(width)\n var poweredHeight = nextPowerOf2(height)\n\n let canvas = createCanvas(poweredWidth, poweredHeight)\n this.component.render(canvas.getContext('2d')!)\n\n var texture = new THREE.CanvasTexture(canvas)\n\n texture.needsUpdate = true\n texture.wrapS = THREE.RepeatWrapping\n texture.wrapT = THREE.RepeatWrapping\n texture.offset.set(0, 1 - height / poweredHeight)\n texture.repeat.set(width / poweredWidth, height / poweredHeight)\n texture.minFilter = THREE.LinearFilter\n\n return texture\n }\n\n updateAlpha() {\n var { alpha = 1, fillStyle, strokeStyle } = this.component.state\n\n this._mainMesh && applyAlpha(this._mainMesh.material, alpha, fillStyle)\n this._sideMesh && applyAlpha(this._sideMesh.material, alpha, strokeStyle)\n }\n\n updateStrokeStyle() {\n const material = this._sideMesh?.material as THREE.MeshStandardMaterial\n if (!material) {\n return\n }\n\n var { strokeStyle } = this.component.state\n\n material.color.set(strokeStyle)\n }\n\n updateFillStyle() {\n var { fillStyle, alpha = 1 } = this.component.state\n\n var material = this._mainMesh?.material as THREE.MeshStandardMaterial\n if (!material) {\n return\n }\n\n const texture = RealObject.buildFillStyleTexture(this.component)\n\n if (texture) {\n if (material.map) material.map.dispose()\n material.map = texture\n } else {\n material.color.set(fillStyle)\n }\n }\n\n updateDimension() {\n var { width, height, depth } = this.dimension\n\n if (!this._mainMesh || !this._sideMesh) return\n\n this._mainMesh.geometry.computeBoundingBox()\n let bbox = this._mainMesh.geometry.boundingBox\n\n if (bbox) {\n let originalWidth = bbox.max.x - bbox.min.x\n let originalHeight = bbox.max.y - bbox.min.y\n let originalDepth = bbox.max.z - bbox.min.z\n\n this._mainMesh.scale.set(width / originalWidth, height / originalHeight, depth / originalDepth)\n this._sideMesh.scale.set(width / originalWidth, height / originalHeight, depth / originalDepth)\n }\n }\n}\n"]}
@@ -1,16 +0,0 @@
1
- import * as THREE from 'three';
2
- import { RealObject } from './real-object.js';
3
- import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
4
- import { Properties } from '@hatiolab/things-scene';
5
- export declare class RealObjectGLTF extends RealObject {
6
- private static _GLTFLoader;
7
- private pivot?;
8
- private objectSize?;
9
- static get GLTFLoader(): GLTFLoader;
10
- build(): void;
11
- private gltfLoaded;
12
- clear(): THREE.Object3D<THREE.Object3DEventMap>;
13
- updateDimension(): void;
14
- updateSource(): void;
15
- onchange(after: Properties, before: Properties): void;
16
- }