@hatiolab/things-scene 9.0.0-beta.9 → 9.0.1
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/README.md +76 -11
- package/package.json +32 -16
- package/things-scene-min.js +74 -2
- package/things-scene-min.js.map +1 -0
- package/things-scene.d.ts +49 -7
- package/things-scene.mjs +61 -31
- package/things-scene.mjs.map +1 -0
- package/.prettierrc +0 -21
- package/assets/icon-audio.png +0 -0
- package/assets/icon-gif-viewer.png +0 -0
- package/assets/images/spinner.png +0 -0
- package/babel.config.js +0 -22
- package/db.sqlite +0 -0
- package/dist/animation/animate.d.ts +0 -4
- package/dist/animation/animations/animation.d.ts +0 -14
- package/dist/animation/animations/fade.d.ts +0 -4
- package/dist/animation/animations/heartbeat.d.ts +0 -4
- package/dist/animation/animations/moving.d.ts +0 -4
- package/dist/animation/animations/outline.d.ts +0 -10
- package/dist/animation/animations/rotation.d.ts +0 -4
- package/dist/animation/animations/vibration.d.ts +0 -4
- package/dist/animation/compile.d.ts +0 -1
- package/dist/animation/delta.d.ts +0 -19
- package/dist/animation/index.d.ts +0 -1
- package/dist/command/command-change.d.ts +0 -7
- package/dist/command/command-migrate.d.ts +0 -4
- package/dist/command/command-migrate.js +0 -85
- package/dist/command/command-migrate.js.map +0 -1
- package/dist/command/command.d.ts +0 -5
- package/dist/command/snapshot-commander.d.ts +0 -15
- package/dist/components/anchor/anchor.d.ts +0 -128
- package/dist/components/anchor/ellipse-anchors.d.ts +0 -2
- package/dist/components/anchor/ellipse-anchors.js +0 -38
- package/dist/components/anchor/ellipse-anchors.js.map +0 -1
- package/dist/components/anchor/rect-anchors.d.ts +0 -10
- package/dist/components/audio.d.ts +0 -25
- package/dist/components/audio.js +0 -141
- package/dist/components/audio.js.map +0 -1
- package/dist/components/cloud.d.ts +0 -13
- package/dist/components/cloud.js +0 -31
- package/dist/components/cloud.js.map +0 -1
- package/dist/components/component.d.ts +0 -227
- package/dist/components/component.js +0 -912
- package/dist/components/component.js.map +0 -1
- package/dist/components/container-abstract.d.ts +0 -51
- package/dist/components/container-abstract.js +0 -372
- package/dist/components/container-abstract.js.map +0 -1
- package/dist/components/container.d.ts +0 -38
- package/dist/components/container.js +0 -75
- package/dist/components/container.js.map +0 -1
- package/dist/components/data/data-mapping.d.ts +0 -16
- package/dist/components/data/data.d.ts +0 -8
- package/dist/components/data/evaluator.d.ts +0 -1
- package/dist/components/donut.d.ts +0 -15
- package/dist/components/donut.js +0 -74
- package/dist/components/donut.js.map +0 -1
- package/dist/components/drawer/draw-image-pendable.d.ts +0 -1
- package/dist/components/drawer/effect.d.ts +0 -1
- package/dist/components/drawer/fill.d.ts +0 -14
- package/dist/components/drawer/format.d.ts +0 -1
- package/dist/components/drawer/line.d.ts +0 -3
- package/dist/components/drawer/stroke.d.ts +0 -1
- package/dist/components/drawer/text-wrapper.d.ts +0 -10
- package/dist/components/drawer/text.d.ts +0 -3
- package/dist/components/ellipse.d.ts +0 -35
- package/dist/components/ellipse.js +0 -99
- package/dist/components/ellipse.js.map +0 -1
- package/dist/components/file/ondropfile.d.ts +0 -1
- package/dist/components/fit/fit.d.ts +0 -15
- package/dist/components/geometry/transcoord.d.ts +0 -41
- package/dist/components/geometry/union.d.ts +0 -6
- package/dist/components/gif-view.d.ts +0 -18
- package/dist/components/gif-view.js +0 -116
- package/dist/components/gif-view.js.map +0 -1
- package/dist/components/global-ref.d.ts +0 -36
- package/dist/components/global-ref.js +0 -128
- package/dist/components/global-ref.js.map +0 -1
- package/dist/components/group.d.ts +0 -15
- package/dist/components/group.js +0 -145
- package/dist/components/group.js.map +0 -1
- package/dist/components/html/elements.d.ts +0 -2
- package/dist/components/html/fill.d.ts +0 -1
- package/dist/components/html/reposition.d.ts +0 -1
- package/dist/components/html/shadow.d.ts +0 -1
- package/dist/components/html-overlay-container.d.ts +0 -27
- package/dist/components/html-overlay-container.js +0 -14
- package/dist/components/html-overlay-container.js.map +0 -1
- package/dist/components/html-overlay-element.d.ts +0 -25
- package/dist/components/html-overlay-element.js +0 -9
- package/dist/components/html-overlay-element.js.map +0 -1
- package/dist/components/image-view.d.ts +0 -19
- package/dist/components/image-view.js +0 -180
- package/dist/components/image-view.js.map +0 -1
- package/dist/components/index.d.ts +0 -32
- package/dist/components/index.js +0 -39
- package/dist/components/index.js.map +0 -1
- package/dist/components/info-window.d.ts +0 -41
- package/dist/components/info-window.js +0 -425
- package/dist/components/info-window.js.map +0 -1
- package/dist/components/line.d.ts +0 -91
- package/dist/components/line.js +0 -303
- package/dist/components/line.js.map +0 -1
- package/dist/components/local-ref.d.ts +0 -47
- package/dist/components/local-ref.js +0 -103
- package/dist/components/local-ref.js.map +0 -1
- package/dist/components/mixins/connectable.d.ts +0 -45
- package/dist/components/mixins/data-source.d.ts +0 -9
- package/dist/components/mixins/html-element.d.ts +0 -24
- package/dist/components/mixins/move-handle.d.ts +0 -11
- package/dist/components/mixins/rect-path.d.ts +0 -13
- package/dist/components/mixins/value-holder.d.ts +0 -18
- package/dist/components/mutater/bounds.d.ts +0 -10
- package/dist/components/mutater/path.d.ts +0 -5
- package/dist/components/ortholine.d.ts +0 -21
- package/dist/components/ortholine.js +0 -814
- package/dist/components/ortholine.js.map +0 -1
- package/dist/components/outline/ellipse-outline.d.ts +0 -4
- package/dist/components/outline/ellipse-outline.js +0 -11
- package/dist/components/outline/ellipse-outline.js.map +0 -1
- package/dist/components/outline/path-outline.d.ts +0 -1
- package/dist/components/path.d.ts +0 -5
- package/dist/components/path.js +0 -40
- package/dist/components/path.js.map +0 -1
- package/dist/components/polygon.d.ts +0 -40
- package/dist/components/polygon.js +0 -157
- package/dist/components/polygon.js.map +0 -1
- package/dist/components/polyline.d.ts +0 -18
- package/dist/components/polyline.js +0 -102
- package/dist/components/polyline.js.map +0 -1
- package/dist/components/popup.d.ts +0 -48
- package/dist/components/popup.js +0 -138
- package/dist/components/popup.js.map +0 -1
- package/dist/components/rect.d.ts +0 -26
- package/dist/components/rect.js +0 -91
- package/dist/components/rect.js.map +0 -1
- package/dist/components/retention/retention-manager.d.ts +0 -8
- package/dist/components/root-container.d.ts +0 -90
- package/dist/components/root-container.js +0 -478
- package/dist/components/root-container.js.map +0 -1
- package/dist/components/ruler.d.ts +0 -16
- package/dist/components/ruler.js +0 -77
- package/dist/components/ruler.js.map +0 -1
- package/dist/components/shape.d.ts +0 -25
- package/dist/components/shape.js +0 -80
- package/dist/components/shape.js.map +0 -1
- package/dist/components/star.d.ts +0 -13
- package/dist/components/star.js +0 -80
- package/dist/components/star.js.map +0 -1
- package/dist/components/text/substitutor.d.ts +0 -3
- package/dist/components/text.d.ts +0 -8
- package/dist/components/text.js +0 -15
- package/dist/components/text.js.map +0 -1
- package/dist/components/three-container.d.ts +0 -60
- package/dist/components/three-container.js +0 -515
- package/dist/components/three-container.js.map +0 -1
- package/dist/components/triangle.d.ts +0 -15
- package/dist/components/triangle.js +0 -76
- package/dist/components/triangle.js.map +0 -1
- package/dist/const.d.ts +0 -39
- package/dist/core/collection.d.ts +0 -8
- package/dist/core/debug.d.ts +0 -1
- package/dist/core/deep-equals.d.ts +0 -1
- package/dist/core/dom-to-image.d.ts +0 -127
- package/dist/core/event.d.ts +0 -92
- package/dist/core/index.d.ts +0 -2
- package/dist/core/list.d.ts +0 -32
- package/dist/core/logger.d.ts +0 -3
- package/dist/core/memoize.d.ts +0 -6
- package/dist/core/mixin.d.ts +0 -1
- package/dist/core/obj-accessor.d.ts +0 -1
- package/dist/core/reference-map.d.ts +0 -14
- package/dist/core/round-rect.d.ts +0 -19
- package/dist/core/script-loader.d.ts +0 -3
- package/dist/core/snapshot-taker.d.ts +0 -12
- package/dist/core/stack.d.ts +0 -2
- package/dist/core/timecapsule.d.ts +0 -18
- package/dist/core/utils.d.ts +0 -9
- package/dist/decorator/anchors-decorator.d.ts +0 -31
- package/dist/decorator/data-spread-decorator.d.ts +0 -1
- package/dist/decorator/decotag-decorator.d.ts +0 -1
- package/dist/decorator/index.d.ts +0 -2
- package/dist/decorator/link-decorator.d.ts +0 -1
- package/dist/effect/gradation.d.ts +0 -1
- package/dist/effect/index.d.ts +0 -1
- package/dist/effect/shadow.d.ts +0 -2
- package/dist/effect/turn.d.ts +0 -1
- package/dist/event/event-engine.d.ts +0 -12
- package/dist/event/event-pump.d.ts +0 -11
- package/dist/event/event-tracker.d.ts +0 -21
- package/dist/event/index.d.ts +0 -2
- package/dist/event/ua-event-handler.d.ts +0 -32
- package/dist/event-map/event-map.d.ts +0 -9
- package/dist/event-map/index.d.ts +0 -1
- package/dist/event-map/move-handler.d.ts +0 -1
- package/dist/event-map/text-editor-lite.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
- package/dist/layer/action/emphasize.d.ts +0 -2
- package/dist/layer/action/popup.d.ts +0 -5
- package/dist/layer/action/pressed.d.ts +0 -2
- package/dist/layer/add-layer.d.ts +0 -42
- package/dist/layer/add-layer.js +0 -142
- package/dist/layer/add-layer.js.map +0 -1
- package/dist/layer/decotag-layer.d.ts +0 -27
- package/dist/layer/decotag-layer.js +0 -105
- package/dist/layer/decotag-layer.js.map +0 -1
- package/dist/layer/guide-layer.d.ts +0 -44
- package/dist/layer/guide-layer.js +0 -261
- package/dist/layer/guide-layer.js.map +0 -1
- package/dist/layer/index.d.ts +0 -7
- package/dist/layer/index.js +0 -11
- package/dist/layer/index.js.map +0 -1
- package/dist/layer/layer.d.ts +0 -32
- package/dist/layer/layer.js +0 -155
- package/dist/layer/layer.js.map +0 -1
- package/dist/layer/model-layer.d.ts +0 -46
- package/dist/layer/model-layer.js +0 -402
- package/dist/layer/model-layer.js.map +0 -1
- package/dist/layer/modeler/anchor-handler.d.ts +0 -36
- package/dist/layer/modeler/control-handler.d.ts +0 -18
- package/dist/layer/modeler/focus-outline.d.ts +0 -5
- package/dist/layer/modeler/group-outline.d.ts +0 -5
- package/dist/layer/modeler/index.d.ts +0 -7
- package/dist/layer/modeler/path-handler.d.ts +0 -22
- package/dist/layer/modeler/resizer.d.ts +0 -13
- package/dist/layer/modeler/rotator.d.ts +0 -15
- package/dist/layer/modeler/rotator.js +0 -120
- package/dist/layer/modeler/rotator.js.map +0 -1
- package/dist/layer/modeling-layer.d.ts +0 -66
- package/dist/layer/modeling-layer.js +0 -451
- package/dist/layer/modeling-layer.js.map +0 -1
- package/dist/layer/selection/selected-finder.d.ts +0 -1
- package/dist/layer/selection-layer.d.ts +0 -42
- package/dist/layer/selection-layer.js +0 -307
- package/dist/layer/selection-layer.js.map +0 -1
- package/dist/layer/shift-layer.d.ts +0 -18
- package/dist/layer/shift-layer.js +0 -61
- package/dist/layer/shift-layer.js.map +0 -1
- package/dist/layout/absolute.d.ts +0 -8
- package/dist/layout/card.d.ts +0 -7
- package/dist/layout/html-absolute.d.ts +0 -8
- package/dist/layout/index.d.ts +0 -8
- package/dist/layout/index.js +0 -12
- package/dist/layout/index.js.map +0 -1
- package/dist/layout/layout.d.ts +0 -11
- package/dist/layout/linear-horizontal.d.ts +0 -7
- package/dist/layout/linear-vertical.d.ts +0 -7
- package/dist/layout/table.d.ts +0 -9
- package/dist/layout/three.d.ts +0 -8
- package/dist/layout/three.js +0 -20
- package/dist/layout/three.js.map +0 -1
- package/dist/license/license.d.ts +0 -18
- package/dist/model/compile.d.ts +0 -1
- package/dist/model/compile.js +0 -28
- package/dist/model/compile.js.map +0 -1
- package/dist/model/duplicate.d.ts +0 -1
- package/dist/model/index.d.ts +0 -3
- package/dist/model/selector.d.ts +0 -2
- package/dist/style/compile.d.ts +0 -1
- package/dist/style/index.d.ts +0 -1
- package/dist/things-scene/api/add-start.d.ts +0 -1
- package/dist/things-scene/api/add.d.ts +0 -5
- package/dist/things-scene/api/align.d.ts +0 -1
- package/dist/things-scene/api/change.d.ts +0 -2
- package/dist/things-scene/api/clipboard.d.ts +0 -3
- package/dist/things-scene/api/distribute.d.ts +0 -1
- package/dist/things-scene/api/duplicate.d.ts +0 -4
- package/dist/things-scene/api/fullscreen.d.ts +0 -1
- package/dist/things-scene/api/group.d.ts +0 -8
- package/dist/things-scene/api/group.js +0 -78
- package/dist/things-scene/api/group.js.map +0 -1
- package/dist/things-scene/api/ids.d.ts +0 -4
- package/dist/things-scene/api/index.d.ts +0 -15
- package/dist/things-scene/api/listener.d.ts +0 -3
- package/dist/things-scene/api/remove.d.ts +0 -4
- package/dist/things-scene/api/symmetry.d.ts +0 -2
- package/dist/things-scene/api/symmetry.js +0 -39
- package/dist/things-scene/api/symmetry.js.map +0 -1
- package/dist/things-scene/api/to-data-url.d.ts +0 -1
- package/dist/things-scene/api/to-data-url.js +0 -69
- package/dist/things-scene/api/to-data-url.js.map +0 -1
- package/dist/things-scene/api/zorder.d.ts +0 -2
- package/dist/things-scene/application-context.d.ts +0 -40
- package/dist/things-scene/config.d.ts +0 -4
- package/dist/things-scene/create.d.ts +0 -20
- package/dist/things-scene/fps.d.ts +0 -1
- package/dist/things-scene/index.d.ts +0 -17
- package/dist/things-scene/index.js +0 -23
- package/dist/things-scene/index.js.map +0 -1
- package/dist/things-scene/polyfill.d.ts +0 -2
- package/dist/things-scene/scene.d.ts +0 -155
- package/dist/things-scene/version.d.ts +0 -2
- package/dist/threed/common.d.ts +0 -22
- package/dist/threed/control/three-controls.d.ts +0 -11
- package/dist/threed/control/three-controls.js +0 -620
- package/dist/threed/control/three-controls.js.map +0 -1
- package/dist/threed/html/elements.d.ts +0 -2
- 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 -20
- package/dist/threed/real-object-dom-element.js +0 -78
- 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 -19
- package/dist/threed/real-object-extrude.js +0 -171
- package/dist/threed/real-object-extrude.js.map +0 -1
- package/dist/threed/real-object-gltf.d.ts +0 -15
- package/dist/threed/real-object-gltf.js +0 -97
- 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 -11
- package/dist/threed/real-object-mesh.js +0 -55
- package/dist/threed/real-object-mesh.js.map +0 -1
- package/dist/threed/real-object-plane.d.ts +0 -6
- package/dist/threed/real-object-plane.js +0 -23
- package/dist/threed/real-object-plane.js.map +0 -1
- package/dist/threed/real-object-scene.d.ts +0 -21
- package/dist/threed/real-object-scene.js +0 -89
- package/dist/threed/real-object-scene.js.map +0 -1
- package/dist/threed/real-object-sprite.d.ts +0 -12
- package/dist/threed/real-object-sprite.js +0 -35
- package/dist/threed/real-object-sprite.js.map +0 -1
- package/dist/threed/real-object-text.d.ts +0 -16
- package/dist/threed/real-object-text.js +0 -70
- package/dist/threed/real-object-text.js.map +0 -1
- package/dist/threed/real-object.d.ts +0 -48
- package/dist/threed/real-object.js +0 -199
- package/dist/threed/real-object.js.map +0 -1
- package/dist/threed/texture/text-texture.d.ts +0 -8
- 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/types.d.ts +0 -53
- package/dist/types.js +0 -368
- package/dist/types.js.map +0 -1
- package/rollup.config.js +0 -40
- package/schema.graphql +0 -4557
- package/src/index.js +0 -5
- package/things-board.js +0 -9
- package/things-scene-ie.js +0 -2
- package/things-scene-ie.js.LICENSE.txt +0 -15
- package/things-scene-min.js.LICENSE.txt +0 -15
- package/tsconfig.json +0 -9
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
import RealObject from './real-object';
|
|
6
|
-
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
7
|
-
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader';
|
|
8
|
-
import { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader';
|
|
9
|
-
/* @ts-ignore */
|
|
10
|
-
import { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js';
|
|
11
|
-
import { error } from '../core/logger';
|
|
12
|
-
export default class RealObjectGLTF extends RealObject {
|
|
13
|
-
constructor() {
|
|
14
|
-
super(...arguments);
|
|
15
|
-
this.objectSize = new THREE.Vector3();
|
|
16
|
-
}
|
|
17
|
-
static get GLTFLoader() {
|
|
18
|
-
return RealObjectGLTF._GLTFLoader;
|
|
19
|
-
}
|
|
20
|
-
build() {
|
|
21
|
-
super.build();
|
|
22
|
-
var { src } = this.component.state;
|
|
23
|
-
if (!src) {
|
|
24
|
-
this.clear();
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
let gltfLoader = new GLTFLoader();
|
|
28
|
-
// Optional: Provide a DRACOLoader instance to decode compressed mesh data
|
|
29
|
-
const dracoLoader = new DRACOLoader();
|
|
30
|
-
dracoLoader.setDecoderPath('/node_modules/three/examples/jsm/libs/draco/');
|
|
31
|
-
gltfLoader.setDRACOLoader(dracoLoader);
|
|
32
|
-
const ktx2Loader = new KTX2Loader();
|
|
33
|
-
ktx2Loader.setTranscoderPath(`/node_modules/three/examples/jsm/libs/basis/`);
|
|
34
|
-
ktx2Loader.detectSupport(this.threeContainer.renderer3d);
|
|
35
|
-
gltfLoader.setKTX2Loader(ktx2Loader);
|
|
36
|
-
gltfLoader.setMeshoptDecoder(MeshoptDecoder);
|
|
37
|
-
var fullSrc = this.component.app.url(src);
|
|
38
|
-
gltfLoader.setCrossOrigin('use-credentials');
|
|
39
|
-
gltfLoader.load(fullSrc, gltf => {
|
|
40
|
-
this.gltfLoaded(gltf);
|
|
41
|
-
}, xhr => {
|
|
42
|
-
console.log(Math.round((xhr.loaded / xhr.total) * 100) + '% loaded');
|
|
43
|
-
}, err => {
|
|
44
|
-
error('GLTFLoader.load', err);
|
|
45
|
-
this.clear();
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
gltfLoaded(gltf) {
|
|
49
|
-
let scene = gltf.scene;
|
|
50
|
-
var animations = gltf.animations;
|
|
51
|
-
var object = scene.clone();
|
|
52
|
-
object.traverse((child) => {
|
|
53
|
-
if (child.isMesh) {
|
|
54
|
-
child.castShadow = true;
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
var boundingBox = new THREE.Box3().setFromObject(object);
|
|
58
|
-
var center = boundingBox.getCenter(object.position);
|
|
59
|
-
this.objectSize = boundingBox.getSize(this.objectSize);
|
|
60
|
-
center.multiplyScalar(-1);
|
|
61
|
-
// 오브젝트 공백을 최소로 하기위해서 clear() 를 최대한 pending함.
|
|
62
|
-
this.clear();
|
|
63
|
-
this.pivot = new THREE.Object3D();
|
|
64
|
-
this.object3d.add(this.pivot);
|
|
65
|
-
this.pivot.add(object);
|
|
66
|
-
this._rescale();
|
|
67
|
-
if (animations && animations.length) {
|
|
68
|
-
for (var i = 0; i < animations.length; i++) {
|
|
69
|
-
var animation = animations[i];
|
|
70
|
-
var action = this.threeContainer.mixer.clipAction(animation);
|
|
71
|
-
action.play();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
console.log('no animations..');
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
clear() {
|
|
79
|
-
// TODO gltf object 리소스 해제가 필요하면, 여기에 추가.
|
|
80
|
-
// 반복적으로 로딩하면 WebGL 리소스 부족으로 오류 발생.
|
|
81
|
-
return super.clear();
|
|
82
|
-
}
|
|
83
|
-
_rescale() {
|
|
84
|
-
var { width = 1, height = 1, depth = 1 } = this.component.state;
|
|
85
|
-
var { x = 1, y = 1, z = 1 } = this.objectSize || {};
|
|
86
|
-
this.pivot && this.pivot.scale.set(width / x, depth / y, height / z);
|
|
87
|
-
this.component.invalidate();
|
|
88
|
-
}
|
|
89
|
-
updateDimension() {
|
|
90
|
-
this._rescale();
|
|
91
|
-
}
|
|
92
|
-
get rebuildingProperties() {
|
|
93
|
-
return ['fillStyle', 'lineStyle', 'text'];
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
RealObjectGLTF._GLTFLoader = new GLTFLoader();
|
|
97
|
-
//# sourceMappingURL=real-object-gltf.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-gltf.js","sourceRoot":"","sources":["../../src/threed/real-object-gltf.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'\n\nimport { GLTF, GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'\nimport { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'\nimport { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader'\n/* @ts-ignore */\nimport { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js'\nimport { error } from '../core/logger'\n\nexport default class RealObjectGLTF extends RealObject {\n private static _GLTFLoader = new GLTFLoader()\n\n private pivot?: THREE.Object3D\n private objectSize?: THREE.Vector3 = new THREE.Vector3()\n\n static get GLTFLoader() {\n return RealObjectGLTF._GLTFLoader\n }\n\n build() {\n super.build()\n\n var { src } = this.component.state\n\n if (!src) {\n this.clear()\n return\n }\n\n let gltfLoader = new GLTFLoader()\n\n // Optional: Provide a DRACOLoader instance to decode compressed mesh data\n const dracoLoader = new DRACOLoader()\n dracoLoader.setDecoderPath('/node_modules/three/examples/jsm/libs/draco/')\n gltfLoader.setDRACOLoader(dracoLoader)\n\n const ktx2Loader = new KTX2Loader()\n ktx2Loader.setTranscoderPath(`/node_modules/three/examples/jsm/libs/basis/`)\n ktx2Loader.detectSupport(this.threeContainer!.renderer3d!)\n gltfLoader.setKTX2Loader(ktx2Loader)\n\n gltfLoader.setMeshoptDecoder(MeshoptDecoder)\n\n var fullSrc = this.component.app.url(src)\n gltfLoader.setCrossOrigin('use-credentials')\n\n gltfLoader.load(\n fullSrc,\n gltf => {\n this.gltfLoaded(gltf)\n },\n xhr => {\n console.log(Math.round((xhr.loaded / xhr.total) * 100) + '% loaded')\n },\n err => {\n error('GLTFLoader.load', err)\n this.clear()\n }\n )\n }\n\n private gltfLoaded(gltf: GLTF) {\n let scene = gltf.scene\n\n var animations = gltf.animations\n var object = scene.clone()\n\n object.traverse((child: THREE.Object3D) => {\n if ((child as any).isMesh) {\n child.castShadow = true\n }\n })\n\n var boundingBox = new THREE.Box3().setFromObject(object)\n var center = boundingBox.getCenter(object.position)\n this.objectSize = boundingBox.getSize(this.objectSize!)\n\n center.multiplyScalar(-1)\n\n // 오브젝트 공백을 최소로 하기위해서 clear() 를 최대한 pending함.\n this.clear()\n\n this.pivot = new THREE.Object3D()\n this.object3d.add(this.pivot)\n this.pivot.add(object)\n\n this._rescale()\n\n if (animations && animations.length) {\n for (var i = 0; i < animations.length; i++) {\n var animation = animations[i]\n var action = this.threeContainer!.mixer!.clipAction(animation)\n action.play()\n }\n } else {\n console.log('no animations..')\n }\n }\n\n clear() {\n // TODO gltf object 리소스 해제가 필요하면, 여기에 추가.\n // 반복적으로 로딩하면 WebGL 리소스 부족으로 오류 발생.\n\n return super.clear()\n }\n\n _rescale() {\n var { width = 1, height = 1, depth = 1 } = this.component.state\n\n var { x = 1, y = 1, z = 1 } = this.objectSize || {}\n\n this.pivot && this.pivot.scale.set(width / x, depth / y, height / z)\n\n this.component.invalidate()\n }\n\n updateDimension() {\n this._rescale()\n }\n\n get rebuildingProperties(): string[] {\n return ['fillStyle', 'lineStyle', 'text']\n }\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
import RealObject from './real-object';
|
|
6
|
-
export default class RealObjectGroup extends RealObject {
|
|
7
|
-
getObject3dInstance() {
|
|
8
|
-
return new THREE.Group();
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=real-object-group.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-group.js","sourceRoot":"","sources":["../../src/threed/real-object-group.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,UAAU,MAAM,eAAe,CAAA;AAEtC,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAuB;IACxD,mBAAmB;QAC3B,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;CAyBF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport * as THREE from 'three'\nimport RealObject from './real-object'\n\nexport default class RealObjectGroup extends RealObject<THREE.Group> {\n protected getObject3dInstance() {\n return new THREE.Group()\n }\n\n // build() {\n // super.build()\n\n // var { left = 0, top = 0, width = 0, height = 0 } = this.component.bounds\n\n // let cx = left + width / 2 - canvasSize.width / 2\n // let cy = top + height / 2 - canvasSize.height / 2\n // // let cz = this.state.rx\n\n // this.object3d.position.x = cx\n // this.object3d.position.z = cy\n // }\n\n // createChildrenObject() {\n // var { components } = this._model\n\n // components.forEach((component: Model) => {\n // var item = component.realObject\n // if (item) {\n // this.object3d.add(item.object3d)\n // }\n // })\n // }\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import RealObject from './real-object';
|
|
3
|
-
export default abstract class RealObjectMesh extends RealObject<THREE.Mesh> {
|
|
4
|
-
protected getObject3dInstance(): THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>;
|
|
5
|
-
build(): void;
|
|
6
|
-
updateAlpha(): void;
|
|
7
|
-
updateHidden(): void;
|
|
8
|
-
protected abstract buildGeometry(): THREE.BufferGeometry;
|
|
9
|
-
buildMaterial(): THREE.Material;
|
|
10
|
-
clear(): THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>;
|
|
11
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
import { error } from '../core/logger';
|
|
6
|
-
import { applyAlpha } from './common';
|
|
7
|
-
import RealObject from './real-object';
|
|
8
|
-
export default class RealObjectMesh extends RealObject {
|
|
9
|
-
getObject3dInstance() {
|
|
10
|
-
return new THREE.Mesh();
|
|
11
|
-
}
|
|
12
|
-
build() {
|
|
13
|
-
super.build();
|
|
14
|
-
this.object3d.geometry = this.buildGeometry();
|
|
15
|
-
this.object3d.material = this.buildMaterial();
|
|
16
|
-
}
|
|
17
|
-
/* overide */
|
|
18
|
-
updateAlpha() {
|
|
19
|
-
var { alpha = 1, fillStyle } = this.component.state;
|
|
20
|
-
applyAlpha(this.object3d.material, alpha, fillStyle);
|
|
21
|
-
}
|
|
22
|
-
updateHidden() {
|
|
23
|
-
this.object3d.visible = !this.component.state.hidden;
|
|
24
|
-
}
|
|
25
|
-
buildMaterial() {
|
|
26
|
-
var { fillStyle } = this.component.state;
|
|
27
|
-
var params = {};
|
|
28
|
-
if (typeof fillStyle == 'object') {
|
|
29
|
-
params = {
|
|
30
|
-
map: new THREE.TextureLoader(THREE.DefaultLoadingManager).load(fillStyle.image, () => {
|
|
31
|
-
this.component.invalidate();
|
|
32
|
-
}, e => {
|
|
33
|
-
error(e);
|
|
34
|
-
})
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
params = {
|
|
39
|
-
color: fillStyle || '#FFF'
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
const material = new THREE.MeshLambertMaterial(params);
|
|
43
|
-
return material;
|
|
44
|
-
}
|
|
45
|
-
clear() {
|
|
46
|
-
this.object3d.traverse((mesh) => {
|
|
47
|
-
if (mesh.isMesh) {
|
|
48
|
-
mesh.geometry.dispose();
|
|
49
|
-
(mesh.material.length ? mesh.material : [mesh.material]).forEach((m) => m.dispose && m.dispose());
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
return super.clear();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=real-object-mesh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-mesh.js","sourceRoot":"","sources":["../../src/threed/real-object-mesh.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEtC,OAAO,EAAE,UAAU,EAA2C,MAAM,UAAU,CAAA;AAC9E,OAAO,UAAU,MAAM,eAAe,CAAA;AAEtC,MAAM,CAAC,OAAO,OAAgB,cAAe,SAAQ,UAAsB;IAC/D,mBAAmB;QAC3B,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAA;IACzB,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;IAC/C,CAAC;IAED,aAAa;IAEb,WAAW;QACT,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAEnD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACtD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAA;IACtD,CAAC;IAID,aAAa;QACX,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAExC,IAAI,MAAM,GAAQ,EAAE,CAAA;QAEpB,IAAI,OAAO,SAAS,IAAI,QAAQ,EAAE;YAChC,MAAM,GAAG;gBACP,GAAG,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAC5D,SAAS,CAAC,KAAK,EACf,GAAG,EAAE;oBACH,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;gBAC7B,CAAC,EACD,CAAC,CAAC,EAAE;oBACF,KAAK,CAAC,CAAC,CAAC,CAAA;gBACV,CAAC,CACF;aACF,CAAA;SACF;aAAM;YACL,MAAM,GAAG;gBACP,KAAK,EAAE,SAAS,IAAI,MAAM;aAC3B,CAAA;SACF;QAED,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAEtD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAS,EAAE,EAAE;YACnC,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CACtB;gBAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;aACxG;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { error } from '../core/logger'\n\nimport { applyAlpha, UNIT_ROTATE, UNIT_SCALE, UNIT_TRANSLATE } from './common'\nimport RealObject from './real-object'\n\nexport default abstract class RealObjectMesh extends RealObject<THREE.Mesh> {\n protected getObject3dInstance() {\n return new THREE.Mesh()\n }\n\n build() {\n super.build()\n\n this.object3d.geometry = this.buildGeometry()\n this.object3d.material = this.buildMaterial()\n }\n\n /* overide */\n\n updateAlpha() {\n var { alpha = 1, fillStyle } = this.component.state\n\n applyAlpha(this.object3d.material, alpha, fillStyle)\n }\n\n updateHidden() {\n this.object3d.visible = !this.component.state.hidden\n }\n\n protected abstract buildGeometry(): THREE.BufferGeometry\n\n buildMaterial(): THREE.Material /* : THREE.MeshMaterialType | THREE.MeshMaterialType[] */ {\n var { fillStyle } = this.component.state\n\n var params: any = {}\n\n if (typeof fillStyle == 'object') {\n params = {\n map: new THREE.TextureLoader(THREE.DefaultLoadingManager).load(\n fillStyle.image,\n () => {\n this.component.invalidate()\n },\n e => {\n error(e)\n }\n )\n }\n } else {\n params = {\n color: fillStyle || '#FFF'\n }\n }\n\n const material = new THREE.MeshLambertMaterial(params)\n\n return material\n }\n\n clear() {\n this.object3d.traverse((mesh: any) => {\n if (mesh.isMesh) {\n mesh.geometry.dispose()\n ;(mesh.material.length ? mesh.material : [mesh.material]).forEach((m: any) => m.dispose && m.dispose())\n }\n })\n\n return super.clear()\n }\n}\n"]}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
/*
|
|
5
|
-
Inspired by http://learningthreejs.com/blog/2013/04/30/closing-the-gap-between-html-and-webgl/
|
|
6
|
-
*/
|
|
7
|
-
import * as THREE from 'three';
|
|
8
|
-
import RealObjectMesh from './real-object-mesh';
|
|
9
|
-
export default class RealObjectPlane extends RealObjectMesh {
|
|
10
|
-
buildGeometry() {
|
|
11
|
-
var { width, height } = this.component.state.dimension;
|
|
12
|
-
return new THREE.PlaneGeometry(width, height);
|
|
13
|
-
}
|
|
14
|
-
buildMaterial() {
|
|
15
|
-
var material = new THREE.MeshBasicMaterial();
|
|
16
|
-
material.color.set('black');
|
|
17
|
-
material.opacity = 0;
|
|
18
|
-
material.side = THREE.DoubleSide;
|
|
19
|
-
material.blending = THREE.NoBlending;
|
|
20
|
-
return material;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=real-object-plane.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-plane.js","sourceRoot":"","sources":["../../src/threed/real-object-plane.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;EAEE;AAEF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,cAAc,MAAM,oBAAoB,CAAA;AAE/C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,cAAc;IACzD,aAAa;QACX,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAA;QAEtD,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAED,aAAa;QACX,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;QAE5C,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC3B,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAA;QACpB,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAA;QAChC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAA;QAEpC,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\n/* \n Inspired by http://learningthreejs.com/blog/2013/04/30/closing-the-gap-between-html-and-webgl/\n*/\n\nimport * as THREE from 'three'\n\nimport RealObjectMesh from './real-object-mesh'\n\nexport default class RealObjectPlane extends RealObjectMesh {\n buildGeometry() {\n var { width, height } = this.component.state.dimension\n\n return new THREE.PlaneGeometry(width, height)\n }\n\n buildMaterial() /* : THREE.MeshMaterialType | THREE.MeshMaterialType[] */ {\n var material = new THREE.MeshBasicMaterial()\n\n material.color.set('black')\n material.opacity = 0\n material.side = THREE.DoubleSide\n material.blending = THREE.NoBlending\n\n return material\n }\n}\n"]}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import RealObject from './real-object';
|
|
3
|
-
export default class RealObjectScene extends RealObject<THREE.Scene> {
|
|
4
|
-
private _floor?;
|
|
5
|
-
private _animationMixer?;
|
|
6
|
-
protected getObject3dInstance(): THREE.Scene;
|
|
7
|
-
dispose(): void;
|
|
8
|
-
clear(): THREE.Scene;
|
|
9
|
-
get floor(): THREE.Mesh;
|
|
10
|
-
set floor(floor: THREE.Mesh);
|
|
11
|
-
build(): void;
|
|
12
|
-
updateTransform(): void;
|
|
13
|
-
updateTransformReverse(): void;
|
|
14
|
-
updateDimension(): void;
|
|
15
|
-
updatePosition(): void;
|
|
16
|
-
updateRotate(): void;
|
|
17
|
-
updateScale(): void;
|
|
18
|
-
updateAlpha(): void;
|
|
19
|
-
updateHidden(): void;
|
|
20
|
-
get animationMixer(): THREE.AnimationMixer;
|
|
21
|
-
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
import { error } from '../core/logger';
|
|
6
|
-
import RealObject from './real-object';
|
|
7
|
-
export default class RealObjectScene extends RealObject {
|
|
8
|
-
getObject3dInstance() {
|
|
9
|
-
return new THREE.Scene();
|
|
10
|
-
}
|
|
11
|
-
dispose() {
|
|
12
|
-
this.object3d.children.forEach(child => {
|
|
13
|
-
;
|
|
14
|
-
child['dispose'] && child['dispose']();
|
|
15
|
-
this.object3d.remove(child);
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
clear() {
|
|
19
|
-
if (this._floor) {
|
|
20
|
-
this.object3d.remove(this._floor);
|
|
21
|
-
if (this._floor.material instanceof Array) {
|
|
22
|
-
;
|
|
23
|
-
this._floor.material.forEach(material => material.dispose());
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
this._floor.material.dispose();
|
|
27
|
-
}
|
|
28
|
-
this._floor.geometry.dispose();
|
|
29
|
-
delete this._floor;
|
|
30
|
-
}
|
|
31
|
-
return super.clear();
|
|
32
|
-
}
|
|
33
|
-
get floor() {
|
|
34
|
-
return this._floor;
|
|
35
|
-
}
|
|
36
|
-
set floor(floor) {
|
|
37
|
-
var { width, height } = this.component.state;
|
|
38
|
-
floor.scale.set(width, height, 1);
|
|
39
|
-
floor.rotation.x = -Math.PI / 2;
|
|
40
|
-
floor.position.y = 0;
|
|
41
|
-
floor.name = 'floor';
|
|
42
|
-
floor.receiveShadow = true;
|
|
43
|
-
this.object3d.add(floor);
|
|
44
|
-
this._floor = floor;
|
|
45
|
-
this.component.invalidate();
|
|
46
|
-
}
|
|
47
|
-
build() {
|
|
48
|
-
super.build();
|
|
49
|
-
var { fillStyle } = this.component.state;
|
|
50
|
-
if (!fillStyle || fillStyle == 'none') {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
var floorGeometry = new THREE.PlaneGeometry();
|
|
54
|
-
var floorMaterial;
|
|
55
|
-
var side = THREE.DoubleSide;
|
|
56
|
-
if (typeof fillStyle == 'object' && fillStyle.type == 'pattern' && fillStyle.image) {
|
|
57
|
-
floorMaterial = new THREE.MeshBasicMaterial({
|
|
58
|
-
map: new THREE.TextureLoader(THREE.DefaultLoadingManager).load(fillStyle.image, () => {
|
|
59
|
-
this.component.invalidate();
|
|
60
|
-
}, e => {
|
|
61
|
-
error(e);
|
|
62
|
-
}),
|
|
63
|
-
side
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
else if (typeof fillStyle == 'string') {
|
|
67
|
-
floorMaterial = new THREE.MeshBasicMaterial({
|
|
68
|
-
color: fillStyle,
|
|
69
|
-
side
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
this.floor = new THREE.Mesh(floorGeometry, floorMaterial);
|
|
73
|
-
}
|
|
74
|
-
updateTransform() { }
|
|
75
|
-
updateTransformReverse() { }
|
|
76
|
-
updateDimension() { }
|
|
77
|
-
updatePosition() { }
|
|
78
|
-
updateRotate() { }
|
|
79
|
-
updateScale() { }
|
|
80
|
-
updateAlpha() { }
|
|
81
|
-
updateHidden() { }
|
|
82
|
-
get animationMixer() {
|
|
83
|
-
if (!this._animationMixer) {
|
|
84
|
-
this._animationMixer = new THREE.AnimationMixer(this.object3d);
|
|
85
|
-
}
|
|
86
|
-
return this._animationMixer;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=real-object-scene.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-scene.js","sourceRoot":"","sources":["../../src/threed/real-object-scene.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { error } from '../core/logger'\n\nimport RealObject from './real-object'\n\nexport default class RealObjectScene extends RealObject<THREE.Scene> {\n private _floor?: THREE.Mesh\n private _animationMixer?: THREE.AnimationMixer\n\n protected getObject3dInstance() {\n return new THREE.Scene()\n }\n\n dispose() {\n this.object3d.children.forEach(child => {\n ;(child as any)['dispose'] && (child as any)['dispose']()\n\n this.object3d.remove(child)\n })\n }\n\n clear() {\n if (this._floor) {\n this.object3d.remove(this._floor)\n\n if (this._floor.material instanceof Array) {\n ;(this._floor.material as THREE.Material[]).forEach(material => material.dispose())\n } else {\n this._floor.material.dispose()\n }\n this._floor.geometry.dispose()\n\n delete this._floor\n }\n\n return super.clear()\n }\n\n get floor(): THREE.Mesh {\n return this._floor!\n }\n\n set floor(floor: THREE.Mesh) {\n var { width, height } = this.component.state\n\n floor.scale.set(width, height, 1)\n floor.rotation.x = -Math.PI / 2\n floor.position.y = 0\n\n floor.name = 'floor'\n\n floor.receiveShadow = true\n\n this.object3d.add(floor)\n\n this._floor = floor\n\n this.component.invalidate()\n }\n\n build() {\n super.build()\n\n var { fillStyle } = this.component.state\n\n if (!fillStyle || fillStyle == 'none') {\n return\n }\n\n var floorGeometry = new THREE.PlaneGeometry()\n var floorMaterial\n var side = THREE.DoubleSide\n\n if (typeof fillStyle == 'object' && fillStyle.type == 'pattern' && fillStyle.image) {\n floorMaterial = new THREE.MeshBasicMaterial({\n map: new THREE.TextureLoader(THREE.DefaultLoadingManager).load(\n fillStyle.image,\n () => {\n this.component.invalidate()\n },\n e => {\n error(e)\n }\n ),\n side\n })\n } else if (typeof fillStyle == 'string') {\n floorMaterial = new THREE.MeshBasicMaterial({\n color: fillStyle,\n side\n })\n }\n\n this.floor = new THREE.Mesh(floorGeometry, floorMaterial)\n }\n\n updateTransform() {}\n updateTransformReverse() {}\n updateDimension() {}\n updatePosition() {}\n updateRotate() {}\n updateScale() {}\n updateAlpha() {}\n updateHidden() {}\n\n get animationMixer(): THREE.AnimationMixer {\n if (!this._animationMixer) {\n this._animationMixer = new THREE.AnimationMixer(this.object3d)\n }\n\n return this._animationMixer\n }\n}\n"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import RealObject from './real-object';
|
|
3
|
-
export default abstract class RealObjectSprite extends RealObject<THREE.Sprite> {
|
|
4
|
-
protected getObject3dInstance(): THREE.Sprite;
|
|
5
|
-
build(): void;
|
|
6
|
-
dispose(): void;
|
|
7
|
-
updateDimension(): void;
|
|
8
|
-
updateAlpha(): void;
|
|
9
|
-
updateHidden(): void;
|
|
10
|
-
abstract buildMaterial(): THREE.Material;
|
|
11
|
-
clear(): THREE.Sprite;
|
|
12
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
import { applyAlpha } from './common';
|
|
6
|
-
import RealObject from './real-object';
|
|
7
|
-
export default class RealObjectSprite extends RealObject {
|
|
8
|
-
getObject3dInstance() {
|
|
9
|
-
return new THREE.Sprite();
|
|
10
|
-
}
|
|
11
|
-
build() {
|
|
12
|
-
super.build();
|
|
13
|
-
this.object3d.material = this.buildMaterial();
|
|
14
|
-
}
|
|
15
|
-
dispose() {
|
|
16
|
-
this.clear();
|
|
17
|
-
}
|
|
18
|
-
/* overide */
|
|
19
|
-
updateDimension() {
|
|
20
|
-
this.update();
|
|
21
|
-
}
|
|
22
|
-
updateAlpha() {
|
|
23
|
-
var { alpha = 1, fillStyle } = this.component.state;
|
|
24
|
-
applyAlpha(this.object3d.material, alpha, fillStyle);
|
|
25
|
-
}
|
|
26
|
-
updateHidden() {
|
|
27
|
-
this.object3d.visible = !this.component.state.hidden;
|
|
28
|
-
}
|
|
29
|
-
clear() {
|
|
30
|
-
this.object3d.material.dispose();
|
|
31
|
-
this.geometry.dispose();
|
|
32
|
-
return super.clear();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=real-object-sprite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-sprite.js","sourceRoot":"","sources":["../../src/threed/real-object-sprite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,UAAU,MAAM,eAAe,CAAA;AAEtC,MAAM,CAAC,OAAO,OAAgB,gBAAiB,SAAQ,UAAwB;IACnE,mBAAmB;QAC3B,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAA0B,CAAA;IACvE,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,aAAa;IACb,eAAe;QACb,IAAI,CAAC,MAAM,EAAE,CAAA;IACf,CAAC;IAED,WAAW;QACT,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAEnD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACtD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAA;IACtD,CAAC;IAID,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAC/B;QAAC,IAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;QAEjC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport { applyAlpha } from './common'\nimport RealObject from './real-object'\n\nexport default abstract class RealObjectSprite extends RealObject<THREE.Sprite> {\n protected getObject3dInstance() {\n return new THREE.Sprite()\n }\n\n build() {\n super.build()\n\n this.object3d.material = this.buildMaterial() as THREE.SpriteMaterial\n }\n\n dispose() {\n this.clear()\n }\n\n /* overide */\n updateDimension() {\n this.update()\n }\n\n updateAlpha() {\n var { alpha = 1, fillStyle } = this.component.state\n\n applyAlpha(this.object3d.material, alpha, fillStyle)\n }\n\n updateHidden() {\n this.object3d.visible = !this.component.state.hidden\n }\n\n abstract buildMaterial(): THREE.Material\n\n clear() {\n this.object3d.material.dispose()\n ;(this as any).geometry.dispose()\n\n return super.clear()\n }\n}\n"]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import RealObjectMesh from './real-object-mesh';
|
|
2
|
-
import * as THREE from 'three';
|
|
3
|
-
/**
|
|
4
|
-
* RealObjectText
|
|
5
|
-
*/
|
|
6
|
-
export default class RealObjectText extends RealObjectMesh {
|
|
7
|
-
buildGeometry(): THREE.PlaneGeometry;
|
|
8
|
-
buildMaterial(): THREE.MeshBasicMaterial;
|
|
9
|
-
updateDimension(): void;
|
|
10
|
-
get rotation(): {
|
|
11
|
-
x: number;
|
|
12
|
-
y: any;
|
|
13
|
-
z: any;
|
|
14
|
-
};
|
|
15
|
-
updateAlpha(): void;
|
|
16
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import RealObjectMesh from './real-object-mesh';
|
|
5
|
-
import * as THREE from 'three';
|
|
6
|
-
import { textTexture, textBounds } from './texture/text-texture';
|
|
7
|
-
/**
|
|
8
|
-
* RealObjectText
|
|
9
|
-
*/
|
|
10
|
-
export default class RealObjectText extends RealObjectMesh {
|
|
11
|
-
buildGeometry() {
|
|
12
|
-
// TODO component.text의 heavy한 로직을 반복적으로 실행하지 않도록, 캐싱하자.
|
|
13
|
-
var { bold = false, italic = false, fontFamily = 'Serif', fontSize = 10, fontColor = 'black' } = this.component.state;
|
|
14
|
-
var text = this.component.text;
|
|
15
|
-
let { width, height } = textBounds(text, {
|
|
16
|
-
bold,
|
|
17
|
-
italic,
|
|
18
|
-
fontFamily,
|
|
19
|
-
fontSize,
|
|
20
|
-
fontColor
|
|
21
|
-
});
|
|
22
|
-
// FIXME
|
|
23
|
-
// ;(this.component as any).dimension = {
|
|
24
|
-
// width,
|
|
25
|
-
// height,
|
|
26
|
-
// depth: 1
|
|
27
|
-
// }
|
|
28
|
-
this.component.setState({
|
|
29
|
-
width,
|
|
30
|
-
depth: 1,
|
|
31
|
-
height
|
|
32
|
-
});
|
|
33
|
-
return new THREE.PlaneGeometry(width, height);
|
|
34
|
-
}
|
|
35
|
-
buildMaterial() {
|
|
36
|
-
var { width, height, bold = false, italic = false, fontFamily = 'Serif', fontSize = 10, fontColor = 'black' } = this.component.state;
|
|
37
|
-
// TODO component.text의 heavy한 로직을 반복적으로 실행하지 않도록, 캐싱하자.
|
|
38
|
-
var text = this.component.text;
|
|
39
|
-
return new THREE.MeshBasicMaterial({
|
|
40
|
-
map: textTexture(text, width, height, {
|
|
41
|
-
bold,
|
|
42
|
-
italic,
|
|
43
|
-
fontFamily,
|
|
44
|
-
fontSize,
|
|
45
|
-
fontColor
|
|
46
|
-
}),
|
|
47
|
-
transparent: true,
|
|
48
|
-
alphaTest: 0.2,
|
|
49
|
-
side: THREE.DoubleSide
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
/* overide */
|
|
53
|
-
updateDimension() {
|
|
54
|
-
// Intentionally do nothing
|
|
55
|
-
}
|
|
56
|
-
get rotation() {
|
|
57
|
-
const { rotationX = 0, rotationY = 0, rotation = 0 } = this.component.state;
|
|
58
|
-
return {
|
|
59
|
-
x: rotationX - Math.PI / 2,
|
|
60
|
-
y: rotationY,
|
|
61
|
-
z: rotation
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
updateAlpha() {
|
|
65
|
-
// material의 transparency는 항상 true으로 유지되어야 한다.
|
|
66
|
-
super.updateAlpha();
|
|
67
|
-
this.object3d.material.transparent = true;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=real-object-text.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-text.js","sourceRoot":"","sources":["../../src/threed/real-object-text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,cAAc,MAAM,oBAAoB,CAAA;AAE/C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEhE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,cAAc;IACxD,aAAa;QACX,wDAAwD;QACxD,IAAI,EACF,IAAI,GAAG,KAAK,EACZ,MAAM,GAAG,KAAK,EACd,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,EAAE,EACb,SAAS,GAAG,OAAO,EACpB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAExB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;QAC9B,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE;YACvC,IAAI;YACJ,MAAM;YACN,UAAU;YACV,QAAQ;YACR,SAAS;SACV,CAAC,CAAA;QAEF,QAAQ;QACR,yCAAyC;QACzC,WAAW;QACX,YAAY;QACZ,aAAa;QACb,IAAI;QACJ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YACtB,KAAK;YACL,KAAK,EAAE,CAAC;YACR,MAAM;SACP,CAAC,CAAA;QAEF,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAED,aAAa;QACX,IAAI,EACF,KAAK,EACL,MAAM,EACN,IAAI,GAAG,KAAK,EACZ,MAAM,GAAG,KAAK,EACd,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,EAAE,EACb,SAAS,GAAG,OAAO,EACpB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAExB,wDAAwD;QACxD,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;QAE9B,OAAO,IAAI,KAAK,CAAC,iBAAiB,CAAC;YACjC,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;gBACpC,IAAI;gBACJ,MAAM;gBACN,UAAU;gBACV,QAAQ;gBACR,SAAS;aACV,CAAC;YACF,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,GAAG;YACd,IAAI,EAAE,KAAK,CAAC,UAAU;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,aAAa;IACb,eAAe;QACb,2BAA2B;IAC7B,CAAC;IAED,IAAI,QAAQ;QACV,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE3E,OAAO;YACL,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;YAC1B,CAAC,EAAE,SAAS;YACZ,CAAC,EAAE,QAAQ;SACZ,CAAA;IACH,CAAC;IAED,WAAW;QACT,8CAA8C;QAC9C,KAAK,CAAC,WAAW,EAAE,CAClB;QAAC,IAAI,CAAC,QAAQ,CAAC,QAAgB,CAAC,WAAW,GAAG,IAAI,CAAA;IACrD,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport RealObjectMesh from './real-object-mesh'\n\nimport * as THREE from 'three'\n\nimport { textTexture, textBounds } from './texture/text-texture'\n\n/**\n * RealObjectText\n */\nexport default class RealObjectText extends RealObjectMesh {\n buildGeometry() {\n // TODO component.text의 heavy한 로직을 반복적으로 실행하지 않도록, 캐싱하자.\n var {\n bold = false,\n italic = false,\n fontFamily = 'Serif',\n fontSize = 10,\n fontColor = 'black'\n } = this.component.state\n\n var text = this.component.text\n let { width, height } = textBounds(text, {\n bold,\n italic,\n fontFamily,\n fontSize,\n fontColor\n })\n\n // FIXME\n // ;(this.component as any).dimension = {\n // width,\n // height,\n // depth: 1\n // }\n this.component.setState({\n width,\n depth: 1,\n height\n })\n\n return new THREE.PlaneGeometry(width, height)\n }\n\n buildMaterial() {\n var {\n width,\n height,\n bold = false,\n italic = false,\n fontFamily = 'Serif',\n fontSize = 10,\n fontColor = 'black'\n } = this.component.state\n\n // TODO component.text의 heavy한 로직을 반복적으로 실행하지 않도록, 캐싱하자.\n var text = this.component.text\n\n return new THREE.MeshBasicMaterial({\n map: textTexture(text, width, height, {\n bold,\n italic,\n fontFamily,\n fontSize,\n fontColor\n }),\n transparent: true,\n alphaTest: 0.2,\n side: THREE.DoubleSide\n })\n }\n\n /* overide */\n updateDimension() {\n // Intentionally do nothing\n }\n\n get rotation() {\n const { rotationX = 0, rotationY = 0, rotation = 0 } = this.component.state\n\n return {\n x: rotationX - Math.PI / 2,\n y: rotationY,\n z: rotation\n }\n }\n\n updateAlpha() {\n // material의 transparency는 항상 true으로 유지되어야 한다.\n super.updateAlpha()\n ;(this.object3d.material as any).transparent = true\n }\n}\n"]}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { Component, Properties } from '@hatiolab/things-scene';
|
|
2
|
-
import * as THREE from 'three';
|
|
3
|
-
import { ThreeDimensionalContainer } from './three-dimensional-container';
|
|
4
|
-
export default abstract class RealObject<T extends THREE.Object3D = THREE.Object3D> {
|
|
5
|
-
protected _component: Component;
|
|
6
|
-
object3d: T;
|
|
7
|
-
constructor(component: Component);
|
|
8
|
-
update(): void;
|
|
9
|
-
protected getObject3dInstance(): T;
|
|
10
|
-
build(): void;
|
|
11
|
-
get component(): Component;
|
|
12
|
-
get threeContainer(): ThreeDimensionalContainer | undefined;
|
|
13
|
-
dispose(): void;
|
|
14
|
-
clear(): T;
|
|
15
|
-
/**
|
|
16
|
-
* Component의 상태값의 변화를 Object3D에 반영 - translate, rotation, scale
|
|
17
|
-
*/
|
|
18
|
-
updateTransform(): void;
|
|
19
|
-
get position(): {
|
|
20
|
-
x: number;
|
|
21
|
-
y: any;
|
|
22
|
-
z: number;
|
|
23
|
-
};
|
|
24
|
-
get rotation(): {
|
|
25
|
-
x: any;
|
|
26
|
-
y: any;
|
|
27
|
-
z: any;
|
|
28
|
-
};
|
|
29
|
-
get scale(): {
|
|
30
|
-
x: any;
|
|
31
|
-
y: any;
|
|
32
|
-
z: any;
|
|
33
|
-
};
|
|
34
|
-
get cx(): number;
|
|
35
|
-
get cy(): number;
|
|
36
|
-
get cz(): any;
|
|
37
|
-
/**
|
|
38
|
-
* Object3D 모델의 변화를 Component의 모델값에 반영
|
|
39
|
-
*/
|
|
40
|
-
updatePosition(): void;
|
|
41
|
-
updateRotate(): void;
|
|
42
|
-
updateScale(): void;
|
|
43
|
-
updateDimension(): void;
|
|
44
|
-
updateAlpha(): void;
|
|
45
|
-
updateHidden(): void;
|
|
46
|
-
onchange(after: Properties, before: Properties): void;
|
|
47
|
-
get rebuildingProperties(): string[];
|
|
48
|
-
}
|