@anov/3d 0.0.1-alpha.9 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/global/global.d.ts +3 -0
- package/dist/core/global/global.js +8 -0
- package/dist/core/group.d.ts +12 -5
- package/dist/core/group.js +23 -16
- package/dist/core/line.js +23 -1
- package/dist/core/mesh.d.ts +0 -4
- package/dist/core/mesh.js +0 -18
- package/dist/core/model.d.ts +9 -1
- package/dist/core/model.js +26 -1
- package/dist/core/scene.d.ts +58 -27
- package/dist/core/scene.js +97 -13
- package/dist/core/use/useScene.d.ts +10 -0
- package/dist/core/use/useScene.js +14 -0
- package/dist/export.d.ts +9 -2
- package/dist/export.js +6 -2
- package/dist/utils/move.d.ts +6 -1
- package/dist/utils/move.js +7 -2
- package/lib/3d.min.js +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import type { Scene } from 'three';
|
|
|
2
2
|
import type { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
|
|
3
3
|
import type { TransformControls } from '../control/transformControls';
|
|
4
4
|
import type { PerspectiveCamera } from '../camera';
|
|
5
|
+
import type Group from '../group';
|
|
5
6
|
declare class GlobalObjectManage {
|
|
6
7
|
scene: Scene | null;
|
|
7
8
|
triggerClick: boolean;
|
|
@@ -10,6 +11,7 @@ declare class GlobalObjectManage {
|
|
|
10
11
|
orbitControls: OrbitControls | null;
|
|
11
12
|
transformControls: TransformControls[];
|
|
12
13
|
frameCallbacks: Set<() => void>;
|
|
14
|
+
groupCatch: Group[];
|
|
13
15
|
constructor();
|
|
14
16
|
addScene(object3d: Scene): void;
|
|
15
17
|
setCamera(camera: PerspectiveCamera): void;
|
|
@@ -19,6 +21,7 @@ declare class GlobalObjectManage {
|
|
|
19
21
|
setTriggerClickState(state: boolean): void;
|
|
20
22
|
addFrameCallback(cb: () => void): void;
|
|
21
23
|
removeFrameCallback(cb: () => void): void;
|
|
24
|
+
addCatch(group: Group): void;
|
|
22
25
|
}
|
|
23
26
|
declare const _default: GlobalObjectManage;
|
|
24
27
|
export default _default;
|
|
@@ -8,6 +8,8 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
8
8
|
var GlobalObjectManage = /*#__PURE__*/function () {
|
|
9
9
|
// hooks callback
|
|
10
10
|
|
|
11
|
+
// instance
|
|
12
|
+
|
|
11
13
|
function GlobalObjectManage() {
|
|
12
14
|
_classCallCheck(this, GlobalObjectManage);
|
|
13
15
|
_defineProperty(this, "scene", null);
|
|
@@ -17,6 +19,7 @@ var GlobalObjectManage = /*#__PURE__*/function () {
|
|
|
17
19
|
_defineProperty(this, "orbitControls", null);
|
|
18
20
|
_defineProperty(this, "transformControls", []);
|
|
19
21
|
_defineProperty(this, "frameCallbacks", new Set());
|
|
22
|
+
_defineProperty(this, "groupCatch", []);
|
|
20
23
|
}
|
|
21
24
|
_createClass(GlobalObjectManage, [{
|
|
22
25
|
key: "addScene",
|
|
@@ -58,6 +61,11 @@ var GlobalObjectManage = /*#__PURE__*/function () {
|
|
|
58
61
|
value: function removeFrameCallback(cb) {
|
|
59
62
|
this.frameCallbacks.delete(cb);
|
|
60
63
|
}
|
|
64
|
+
}, {
|
|
65
|
+
key: "addCatch",
|
|
66
|
+
value: function addCatch(group) {
|
|
67
|
+
this.groupCatch.push(group);
|
|
68
|
+
}
|
|
61
69
|
}]);
|
|
62
70
|
return GlobalObjectManage;
|
|
63
71
|
}();
|
package/dist/core/group.d.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
import type { Intersection, Object3D } from 'three';
|
|
1
2
|
import { Group as TGroup } from 'three';
|
|
2
3
|
import type { CubeEventType, EventHandleFn } from '../type';
|
|
3
4
|
declare class Group extends TGroup {
|
|
4
5
|
private natureEventMap;
|
|
6
|
+
private object3d;
|
|
5
7
|
constructor();
|
|
8
|
+
/**
|
|
9
|
+
* add model
|
|
10
|
+
* @param object
|
|
11
|
+
*/
|
|
12
|
+
addModel(object: Object3D): void;
|
|
6
13
|
/**
|
|
7
14
|
* addNatureEventListener
|
|
8
15
|
* @param type
|
|
@@ -20,10 +27,10 @@ declare class Group extends TGroup {
|
|
|
20
27
|
*/
|
|
21
28
|
removeAllNatureEventListener(): void;
|
|
22
29
|
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
* handle intersect event
|
|
31
|
+
* @param intersects
|
|
32
|
+
* @param eventType
|
|
33
|
+
*/
|
|
27
34
|
private handleClick;
|
|
28
35
|
/**
|
|
29
36
|
* handle pointermove event
|
|
@@ -41,6 +48,6 @@ declare class Group extends TGroup {
|
|
|
41
48
|
* raycastGroup
|
|
42
49
|
* handle intersect event
|
|
43
50
|
*/
|
|
44
|
-
raycastGroup(): void;
|
|
51
|
+
raycastGroup(intersets: Intersection<Object3D<Event>>[]): void;
|
|
45
52
|
}
|
|
46
53
|
export default Group;
|
package/dist/core/group.js
CHANGED
|
@@ -2,6 +2,8 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
|
|
|
2
2
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
3
3
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
4
4
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
5
|
+
function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
|
|
6
|
+
function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
|
|
5
7
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
6
8
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
7
9
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
@@ -22,15 +24,28 @@ var Group = /*#__PURE__*/function (_TGroup) {
|
|
|
22
24
|
_classCallCheck(this, Group);
|
|
23
25
|
_this = _super.call(this);
|
|
24
26
|
_defineProperty(_assertThisInitialized(_this), "natureEventMap", new Map());
|
|
27
|
+
_defineProperty(_assertThisInitialized(_this), "object3d", []);
|
|
28
|
+
globalObjectManage.addCatch(_assertThisInitialized(_this));
|
|
25
29
|
return _this;
|
|
26
30
|
}
|
|
27
31
|
|
|
28
32
|
/**
|
|
29
|
-
*
|
|
30
|
-
* @param
|
|
31
|
-
* @param handlefn
|
|
33
|
+
* add model
|
|
34
|
+
* @param object
|
|
32
35
|
*/
|
|
33
36
|
_createClass(Group, [{
|
|
37
|
+
key: "addModel",
|
|
38
|
+
value: function addModel(object) {
|
|
39
|
+
_get(_getPrototypeOf(Group.prototype), "add", this).call(this, object);
|
|
40
|
+
this.object3d.push(object);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* addNatureEventListener
|
|
45
|
+
* @param type
|
|
46
|
+
* @param handlefn
|
|
47
|
+
*/
|
|
48
|
+
}, {
|
|
34
49
|
key: "addNatureEventListener",
|
|
35
50
|
value: function addNatureEventListener(type, handlefn) {
|
|
36
51
|
if (!this.natureEventMap.has(type)) this.natureEventMap.set(type, []);
|
|
@@ -63,9 +78,9 @@ var Group = /*#__PURE__*/function (_TGroup) {
|
|
|
63
78
|
}
|
|
64
79
|
|
|
65
80
|
/**
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
81
|
+
* handle intersect event
|
|
82
|
+
* @param intersects
|
|
83
|
+
* @param eventType
|
|
69
84
|
*/
|
|
70
85
|
}, {
|
|
71
86
|
key: "handleClick",
|
|
@@ -111,16 +126,8 @@ var Group = /*#__PURE__*/function (_TGroup) {
|
|
|
111
126
|
*/
|
|
112
127
|
}, {
|
|
113
128
|
key: "raycastGroup",
|
|
114
|
-
value: function raycastGroup() {
|
|
115
|
-
|
|
116
|
-
// const pointerupCallback = this.natureEventMap.get('pointerup')
|
|
117
|
-
// const pointerdownCallback = this.natureEventMap.get('pointerdown')
|
|
118
|
-
// const pointermoveCallback = this.natureEventMap.get('pointermove')
|
|
119
|
-
|
|
120
|
-
// clickCallback && clickCallback.length > 0 && this.handleClick(clickCallback)
|
|
121
|
-
// pointerupCallback && pointerupCallback.length > 0 && this.handleClick(pointerupCallback)
|
|
122
|
-
// pointerdownCallback && pointerdownCallback.length > 0 && this.handleClick(pointerdownCallback)
|
|
123
|
-
// pointermoveCallback && pointermoveCallback.length > 0 && this.handlePointerMove(pointermoveCallback)
|
|
129
|
+
value: function raycastGroup(intersets) {
|
|
130
|
+
console.log('raycastGroup', intersets);
|
|
124
131
|
}
|
|
125
132
|
}]);
|
|
126
133
|
return Group;
|
package/dist/core/line.js
CHANGED
|
@@ -2,6 +2,16 @@ import { BoxGeometry, BufferAttribute, BufferGeometry, CatmullRomCurve3, Line, L
|
|
|
2
2
|
import Mesh from "./mesh";
|
|
3
3
|
import globalObjectManage from "./global/global";
|
|
4
4
|
var point = new Vector3(0, 0, 0);
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* create control mesh
|
|
8
|
+
* @param position
|
|
9
|
+
* @param transformControl
|
|
10
|
+
* @param width
|
|
11
|
+
* @param height
|
|
12
|
+
* @param depth
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
5
15
|
var createSplineControlObject3d = function createSplineControlObject3d(position, transformControl) {
|
|
6
16
|
var width = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
7
17
|
var height = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
|
|
@@ -18,9 +28,16 @@ var createSplineControlObject3d = function createSplineControlObject3d(position,
|
|
|
18
28
|
globalObjectManage.scene.add(object);
|
|
19
29
|
return object;
|
|
20
30
|
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* create line
|
|
34
|
+
* @param positions
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
21
37
|
var createCatmullRomCurve3 = function createCatmullRomCurve3(positions) {
|
|
22
38
|
var geometry = new BufferGeometry();
|
|
23
|
-
|
|
39
|
+
var attr = new BufferAttribute(new Float32Array(200 * 3), 3);
|
|
40
|
+
geometry.setAttribute('position', attr);
|
|
24
41
|
var curve = new CatmullRomCurve3(positions);
|
|
25
42
|
curve.mesh = new Line(geometry.clone(), new LineBasicMaterial({
|
|
26
43
|
color: 'red',
|
|
@@ -28,6 +45,11 @@ var createCatmullRomCurve3 = function createCatmullRomCurve3(positions) {
|
|
|
28
45
|
}));
|
|
29
46
|
return curve;
|
|
30
47
|
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* uodate line
|
|
51
|
+
* @param curve
|
|
52
|
+
*/
|
|
31
53
|
var updateCatmullRomCurve3 = function updateCatmullRomCurve3(curve) {
|
|
32
54
|
var splineMesh = curve.mesh;
|
|
33
55
|
var position = splineMesh.geometry.attributes.position;
|
package/dist/core/mesh.d.ts
CHANGED
package/dist/core/mesh.js
CHANGED
|
@@ -15,8 +15,6 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
15
15
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
16
16
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
17
17
|
import { Mesh as TMesh } from 'three';
|
|
18
|
-
import { getObject3dAncestorsNodes } from "../utils";
|
|
19
|
-
import Group from "./group";
|
|
20
18
|
import globalObjectManage from "./global/global";
|
|
21
19
|
var Mesh = /*#__PURE__*/function (_TMesh) {
|
|
22
20
|
_inherits(Mesh, _TMesh);
|
|
@@ -113,18 +111,6 @@ var Mesh = /*#__PURE__*/function (_TMesh) {
|
|
|
113
111
|
});
|
|
114
112
|
}
|
|
115
113
|
|
|
116
|
-
/**
|
|
117
|
-
* bubbling
|
|
118
|
-
*/
|
|
119
|
-
}, {
|
|
120
|
-
key: "bubbling",
|
|
121
|
-
value: function bubbling() {
|
|
122
|
-
var ancestorsNodes = getObject3dAncestorsNodes(this);
|
|
123
|
-
ancestorsNodes.forEach(function (node) {
|
|
124
|
-
if (node instanceof Group) node.raycastGroup();
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
|
|
128
114
|
/**
|
|
129
115
|
* handle mesh raycaster
|
|
130
116
|
* @param raycaster
|
|
@@ -143,10 +129,6 @@ var Mesh = /*#__PURE__*/function (_TMesh) {
|
|
|
143
129
|
var object = intersect && intersect.object;
|
|
144
130
|
if (object === this) {
|
|
145
131
|
this.entered = true;
|
|
146
|
-
|
|
147
|
-
// bubbling
|
|
148
|
-
// this.bubbling()
|
|
149
|
-
|
|
150
132
|
clickCallback && clickCallback.length > 0 && this.handleClick(clickCallback, intersect);
|
|
151
133
|
pointerupCallback && pointerupCallback.length > 0 && this.handleClick(pointerupCallback, intersect);
|
|
152
134
|
pointerdownCallback && pointerdownCallback.length > 0 && this.handleClick(pointerdownCallback, intersect);
|
package/dist/core/model.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Group } from 'three';
|
|
1
2
|
import type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';
|
|
2
3
|
declare class ModelLoader {
|
|
3
4
|
/**
|
|
@@ -16,6 +17,13 @@ declare class ModelLoader {
|
|
|
16
17
|
* @param onProgress
|
|
17
18
|
* @param onError
|
|
18
19
|
*/
|
|
19
|
-
loadFbx(url: string, onLoad?: (result:
|
|
20
|
+
loadFbx(url: string, onLoad?: (result: Group) => Group, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Promise<unknown>;
|
|
21
|
+
/**
|
|
22
|
+
* parse fbx buffer
|
|
23
|
+
* @param buffer
|
|
24
|
+
* @param path
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
parseFbxBuffer(buffer: ArrayBuffer | string, path: string): Group;
|
|
20
28
|
}
|
|
21
29
|
export default ModelLoader;
|
package/dist/core/model.js
CHANGED
|
@@ -6,6 +6,7 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty
|
|
|
6
6
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
7
|
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader';
|
|
8
8
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
|
|
9
|
+
import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader';
|
|
9
10
|
var ModelLoader = /*#__PURE__*/function () {
|
|
10
11
|
function ModelLoader() {
|
|
11
12
|
_classCallCheck(this, ModelLoader);
|
|
@@ -53,7 +54,31 @@ var ModelLoader = /*#__PURE__*/function () {
|
|
|
53
54
|
*/
|
|
54
55
|
}, {
|
|
55
56
|
key: "loadFbx",
|
|
56
|
-
value: function loadFbx(url, onLoad, onProgress, onError) {
|
|
57
|
+
value: function loadFbx(url, onLoad, onProgress, onError) {
|
|
58
|
+
var fbxLoader = new FBXLoader();
|
|
59
|
+
return new Promise(function (resolve, reject) {
|
|
60
|
+
fbxLoader.load(url, function (fbx) {
|
|
61
|
+
onLoad ? resolve(onLoad(fbx)) : resolve(fbx);
|
|
62
|
+
}, function (xhr) {
|
|
63
|
+
onProgress && onProgress(xhr);
|
|
64
|
+
}, function (err) {
|
|
65
|
+
onError && onError(err);
|
|
66
|
+
reject(err);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* parse fbx buffer
|
|
73
|
+
* @param buffer
|
|
74
|
+
* @param path
|
|
75
|
+
* @returns
|
|
76
|
+
*/
|
|
77
|
+
}, {
|
|
78
|
+
key: "parseFbxBuffer",
|
|
79
|
+
value: function parseFbxBuffer(buffer, path) {
|
|
80
|
+
return new FBXLoader().parse(buffer, path);
|
|
81
|
+
}
|
|
57
82
|
}]);
|
|
58
83
|
return ModelLoader;
|
|
59
84
|
}();
|
package/dist/core/scene.d.ts
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
import type { Color, Object3D } from 'three';
|
|
1
|
+
import type { Color, ColorRepresentation, Object3D, ToneMapping } from 'three';
|
|
2
2
|
import { AmbientLight, Raycaster, Scene as TScene, Vector3, WebGLRenderer } from 'three';
|
|
3
3
|
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
|
|
4
4
|
import Cssrenderer from './cssRenderer';
|
|
5
5
|
import { PerspectiveCamera } from './camera';
|
|
6
|
-
interface
|
|
7
|
-
/**
|
|
8
|
-
* renderer options
|
|
9
|
-
*/
|
|
6
|
+
interface SceneOptions {
|
|
7
|
+
/** renderer options */
|
|
10
8
|
rendererOps?: {
|
|
11
9
|
antialias?: boolean;
|
|
12
10
|
logarithmicDepthBuffer?: boolean;
|
|
13
11
|
alpha?: boolean;
|
|
12
|
+
shadowMap?: boolean;
|
|
13
|
+
toneMapping?: ToneMapping;
|
|
14
|
+
toneMappingExposure?: number;
|
|
15
|
+
size?: {
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
updateStyle?: boolean;
|
|
19
|
+
};
|
|
14
20
|
};
|
|
15
|
-
/**
|
|
16
|
-
* default camera options
|
|
17
|
-
*/
|
|
21
|
+
/** default camera options */
|
|
18
22
|
defCameraOps?: {
|
|
19
23
|
position?: Vector3;
|
|
20
24
|
fov?: number;
|
|
@@ -22,43 +26,45 @@ interface Anov3DSceneOptions {
|
|
|
22
26
|
near?: number;
|
|
23
27
|
far?: number;
|
|
24
28
|
};
|
|
25
|
-
/**
|
|
26
|
-
* default ambient light options
|
|
27
|
-
*/
|
|
29
|
+
/** default ambient light options */
|
|
28
30
|
defAmbientLightOps?: {
|
|
29
31
|
position?: Vector3;
|
|
30
32
|
color?: Color;
|
|
31
33
|
intensity?: number;
|
|
32
34
|
};
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
/** 默认射线检测配置 */
|
|
36
|
+
defRaycasterOps?: {
|
|
37
|
+
recursive?: boolean;
|
|
38
|
+
};
|
|
39
|
+
/** controls */
|
|
36
40
|
orbitControls?: boolean;
|
|
37
|
-
/**
|
|
38
|
-
* 是否需要默认环境光
|
|
39
|
-
*/
|
|
41
|
+
/** 是否需要默认环境光 */
|
|
40
42
|
ambientLight?: boolean;
|
|
41
|
-
/**
|
|
42
|
-
* on demand render scene, 按需渲染
|
|
43
|
-
*/
|
|
43
|
+
/** on demand render scene, 按需渲染 */
|
|
44
44
|
onDemand?: boolean;
|
|
45
|
-
/**
|
|
46
|
-
* 是否开启css2d渲染
|
|
47
|
-
*/
|
|
45
|
+
/** 是否开启css2d渲染 */
|
|
48
46
|
css2DRenderer?: boolean;
|
|
49
|
-
/**
|
|
50
|
-
* 是否开启css3d渲染
|
|
51
|
-
*/
|
|
47
|
+
/** 是否开启css3d渲染 */
|
|
52
48
|
css3DRenderer?: boolean;
|
|
49
|
+
/** 是否开启裁剪 */
|
|
50
|
+
cutout?: boolean;
|
|
51
|
+
/** 场景背景相关 */
|
|
53
52
|
background?: {
|
|
54
53
|
imgs?: Tuple<string>;
|
|
55
54
|
color?: Color;
|
|
56
55
|
panorama?: string;
|
|
56
|
+
alpha?: number;
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
59
|
declare type Tuple<TItem> = [TItem, ...TItem[]] & {
|
|
60
60
|
length: 6;
|
|
61
61
|
};
|
|
62
|
+
interface CutoutAreaType {
|
|
63
|
+
x: number;
|
|
64
|
+
y: number;
|
|
65
|
+
width: number;
|
|
66
|
+
height: number;
|
|
67
|
+
}
|
|
62
68
|
declare class Scene {
|
|
63
69
|
private opts;
|
|
64
70
|
private pointer;
|
|
@@ -69,7 +75,13 @@ declare class Scene {
|
|
|
69
75
|
renderer: WebGLRenderer | null;
|
|
70
76
|
cssRenderer: Cssrenderer | null;
|
|
71
77
|
controls: OrbitControls | null;
|
|
72
|
-
|
|
78
|
+
domElement: HTMLElement | null;
|
|
79
|
+
/** 裁剪相关 */
|
|
80
|
+
cutoutCamera: PerspectiveCamera | null;
|
|
81
|
+
cutoutBackground: ColorRepresentation | null;
|
|
82
|
+
cutoutBackgroundAlpha: number;
|
|
83
|
+
cutoutArea: CutoutAreaType;
|
|
84
|
+
constructor(opts?: SceneOptions);
|
|
73
85
|
/**
|
|
74
86
|
* init default scene components
|
|
75
87
|
*/
|
|
@@ -84,7 +96,21 @@ declare class Scene {
|
|
|
84
96
|
* init renderer
|
|
85
97
|
*/
|
|
86
98
|
private initRenderer;
|
|
99
|
+
/**
|
|
100
|
+
* main view cut
|
|
101
|
+
* @param renderer
|
|
102
|
+
*/
|
|
103
|
+
private cutMain;
|
|
104
|
+
/**
|
|
105
|
+
* mini view cut
|
|
106
|
+
* @param renderer
|
|
107
|
+
*/
|
|
108
|
+
private cutSub;
|
|
87
109
|
private initCssRenderer;
|
|
110
|
+
/**
|
|
111
|
+
* init skybox
|
|
112
|
+
* @param imgs
|
|
113
|
+
*/
|
|
88
114
|
private initSkyBox;
|
|
89
115
|
/**
|
|
90
116
|
* init default camera
|
|
@@ -138,7 +164,12 @@ declare class Scene {
|
|
|
138
164
|
* @param target
|
|
139
165
|
*/
|
|
140
166
|
private registerEvent;
|
|
167
|
+
/**
|
|
168
|
+
* render scene
|
|
169
|
+
* @param target
|
|
170
|
+
*/
|
|
141
171
|
render(target: HTMLElement): void;
|
|
172
|
+
private updateRenderForCut;
|
|
142
173
|
destroy(): void;
|
|
143
174
|
}
|
|
144
175
|
export default Scene;
|
package/dist/core/scene.js
CHANGED
|
@@ -15,6 +15,8 @@ import globalControl from "./global/globalControl";
|
|
|
15
15
|
import globalObjectManage from "./global/global";
|
|
16
16
|
import { PerspectiveCamera } from "./camera";
|
|
17
17
|
var Scene = /*#__PURE__*/function () {
|
|
18
|
+
/** 裁剪相关 */
|
|
19
|
+
|
|
18
20
|
function Scene(opts) {
|
|
19
21
|
_classCallCheck(this, Scene);
|
|
20
22
|
_defineProperty(this, "opts", {});
|
|
@@ -26,6 +28,16 @@ var Scene = /*#__PURE__*/function () {
|
|
|
26
28
|
_defineProperty(this, "renderer", null);
|
|
27
29
|
_defineProperty(this, "cssRenderer", null);
|
|
28
30
|
_defineProperty(this, "controls", null);
|
|
31
|
+
_defineProperty(this, "domElement", null);
|
|
32
|
+
_defineProperty(this, "cutoutCamera", null);
|
|
33
|
+
_defineProperty(this, "cutoutBackground", null);
|
|
34
|
+
_defineProperty(this, "cutoutBackgroundAlpha", 1);
|
|
35
|
+
_defineProperty(this, "cutoutArea", {
|
|
36
|
+
x: 0,
|
|
37
|
+
y: 0,
|
|
38
|
+
width: 0,
|
|
39
|
+
height: 0
|
|
40
|
+
});
|
|
29
41
|
this.opts = opts !== null && opts !== void 0 ? opts : {};
|
|
30
42
|
this.scene = new TScene();
|
|
31
43
|
this.raycaster = new Raycaster();
|
|
@@ -44,8 +56,6 @@ var Scene = /*#__PURE__*/function () {
|
|
|
44
56
|
this.camera = camera;
|
|
45
57
|
globalObjectManage.setCamera(camera);
|
|
46
58
|
this.scene.add(camera);
|
|
47
|
-
var renderer = this.initRenderer();
|
|
48
|
-
this.renderer = renderer;
|
|
49
59
|
if (this.opts.css2DRenderer) {
|
|
50
60
|
var cssRenderer = this.initCssRenderer();
|
|
51
61
|
this.cssRenderer = cssRenderer;
|
|
@@ -78,27 +88,72 @@ var Scene = /*#__PURE__*/function () {
|
|
|
78
88
|
}, {
|
|
79
89
|
key: "initRenderer",
|
|
80
90
|
value: function initRenderer() {
|
|
81
|
-
var _rendererOps$antialia, _rendererOps$logarith, _rendererOps$alpha;
|
|
91
|
+
var _rendererOps$antialia, _rendererOps$logarith, _rendererOps$alpha, _rendererOps$shadowMa, _rendererOps$toneMapp, _rendererOps$toneMapp2;
|
|
82
92
|
var rendererOps = this.opts.rendererOps || {};
|
|
83
93
|
var renderer = new WebGLRenderer({
|
|
84
94
|
antialias: (_rendererOps$antialia = rendererOps.antialias) !== null && _rendererOps$antialia !== void 0 ? _rendererOps$antialia : true,
|
|
85
95
|
logarithmicDepthBuffer: (_rendererOps$logarith = rendererOps.logarithmicDepthBuffer) !== null && _rendererOps$logarith !== void 0 ? _rendererOps$logarith : true,
|
|
86
96
|
alpha: (_rendererOps$alpha = rendererOps.alpha) !== null && _rendererOps$alpha !== void 0 ? _rendererOps$alpha : false
|
|
87
97
|
});
|
|
88
|
-
|
|
89
|
-
renderer.shadowMap.enabled = true;
|
|
90
|
-
renderer.toneMapping = ACESFilmicToneMapping;
|
|
91
|
-
renderer.toneMappingExposure = 0.3;
|
|
98
|
+
this.cutMain(renderer);
|
|
99
|
+
renderer.shadowMap.enabled = (_rendererOps$shadowMa = rendererOps.shadowMap) !== null && _rendererOps$shadowMa !== void 0 ? _rendererOps$shadowMa : true;
|
|
100
|
+
renderer.toneMapping = (_rendererOps$toneMapp = rendererOps.toneMapping) !== null && _rendererOps$toneMapp !== void 0 ? _rendererOps$toneMapp : ACESFilmicToneMapping;
|
|
101
|
+
renderer.toneMappingExposure = (_rendererOps$toneMapp2 = rendererOps.toneMappingExposure) !== null && _rendererOps$toneMapp2 !== void 0 ? _rendererOps$toneMapp2 : 0.3;
|
|
92
102
|
renderer.setPixelRatio(window.devicePixelRatio);
|
|
93
103
|
return renderer;
|
|
94
104
|
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* main view cut
|
|
108
|
+
* @param renderer
|
|
109
|
+
*/
|
|
110
|
+
}, {
|
|
111
|
+
key: "cutMain",
|
|
112
|
+
value: function cutMain(renderer) {
|
|
113
|
+
var _rendererOps$size$wid, _rendererOps$size, _rendererOps$size$hei, _rendererOps$size2, _this$opts$background3, _this$opts$background4;
|
|
114
|
+
var rendererOps = this.opts.rendererOps || {};
|
|
115
|
+
var w = (_rendererOps$size$wid = (_rendererOps$size = rendererOps.size) === null || _rendererOps$size === void 0 ? void 0 : _rendererOps$size.width) !== null && _rendererOps$size$wid !== void 0 ? _rendererOps$size$wid : window.innerWidth;
|
|
116
|
+
var h = (_rendererOps$size$hei = (_rendererOps$size2 = rendererOps.size) === null || _rendererOps$size2 === void 0 ? void 0 : _rendererOps$size2.height) !== null && _rendererOps$size$hei !== void 0 ? _rendererOps$size$hei : window.innerHeight;
|
|
117
|
+
renderer.setClearColor(((_this$opts$background3 = this.opts.background) === null || _this$opts$background3 === void 0 ? void 0 : _this$opts$background3.color) || 0x000000, ((_this$opts$background4 = this.opts.background) === null || _this$opts$background4 === void 0 ? void 0 : _this$opts$background4.alpha) || 1);
|
|
118
|
+
renderer.setSize(w, h);
|
|
119
|
+
renderer.setScissor(0, 0, w, h);
|
|
120
|
+
renderer.render(this.scene, this.camera);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* mini view cut
|
|
125
|
+
* @param renderer
|
|
126
|
+
*/
|
|
127
|
+
}, {
|
|
128
|
+
key: "cutSub",
|
|
129
|
+
value: function cutSub(renderer) {
|
|
130
|
+
var _rendererOps$size$wid2, _rendererOps$size3, _this$cutoutBackgroun;
|
|
131
|
+
var rendererOps = this.opts.rendererOps || {};
|
|
132
|
+
var w = (_rendererOps$size$wid2 = (_rendererOps$size3 = rendererOps.size) === null || _rendererOps$size3 === void 0 ? void 0 : _rendererOps$size3.width) !== null && _rendererOps$size$wid2 !== void 0 ? _rendererOps$size$wid2 : window.innerWidth;
|
|
133
|
+
// const h = rendererOps.size?.height ?? window.innerHeight
|
|
134
|
+
|
|
135
|
+
// 位置 目前默认右上角
|
|
136
|
+
renderer.setClearColor((_this$cutoutBackgroun = this.cutoutBackground) !== null && _this$cutoutBackgroun !== void 0 ? _this$cutoutBackgroun : 0x000000, this.cutoutBackgroundAlpha);
|
|
137
|
+
renderer.setScissor(w - this.cutoutArea.width, 0, this.cutoutArea.width, this.cutoutArea.height);
|
|
138
|
+
renderer.setViewport(w - this.cutoutArea.width, 0, this.cutoutArea.width, this.cutoutArea.height);
|
|
139
|
+
renderer.render(this.scene, this.cutoutCamera);
|
|
140
|
+
}
|
|
95
141
|
}, {
|
|
96
142
|
key: "initCssRenderer",
|
|
97
143
|
value: function initCssRenderer() {
|
|
144
|
+
var _rendererOps$size$wid3, _rendererOps$size4, _rendererOps$size$hei2, _rendererOps$size5;
|
|
145
|
+
var rendererOps = this.opts.rendererOps || {};
|
|
146
|
+
var w = (_rendererOps$size$wid3 = (_rendererOps$size4 = rendererOps.size) === null || _rendererOps$size4 === void 0 ? void 0 : _rendererOps$size4.width) !== null && _rendererOps$size$wid3 !== void 0 ? _rendererOps$size$wid3 : window.innerWidth;
|
|
147
|
+
var h = (_rendererOps$size$hei2 = (_rendererOps$size5 = rendererOps.size) === null || _rendererOps$size5 === void 0 ? void 0 : _rendererOps$size5.height) !== null && _rendererOps$size$hei2 !== void 0 ? _rendererOps$size$hei2 : window.innerHeight;
|
|
98
148
|
var cssRenderer = new Cssrenderer('base');
|
|
99
|
-
cssRenderer.setSize(
|
|
149
|
+
cssRenderer.setSize(w, h);
|
|
100
150
|
return cssRenderer;
|
|
101
151
|
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* init skybox
|
|
155
|
+
* @param imgs
|
|
156
|
+
*/
|
|
102
157
|
}, {
|
|
103
158
|
key: "initSkyBox",
|
|
104
159
|
value: function initSkyBox(imgs) {
|
|
@@ -116,7 +171,8 @@ var Scene = /*#__PURE__*/function () {
|
|
|
116
171
|
key: "initDefaultPerspectiveCamera",
|
|
117
172
|
value: function initDefaultPerspectiveCamera() {
|
|
118
173
|
var rendererOps = this.opts.defCameraOps || {};
|
|
119
|
-
var
|
|
174
|
+
var aspect = rendererOps.aspect || window.innerWidth / window.innerHeight;
|
|
175
|
+
var camera = new PerspectiveCamera(rendererOps.fov || 90, aspect, rendererOps.near || 0.1, rendererOps.far || 5000);
|
|
120
176
|
var position = rendererOps.position || new Vector3(0, 10, 10);
|
|
121
177
|
camera.position.set(position.x, position.y, position.z);
|
|
122
178
|
return camera;
|
|
@@ -154,7 +210,9 @@ var Scene = /*#__PURE__*/function () {
|
|
|
154
210
|
});
|
|
155
211
|
globalControl.update();
|
|
156
212
|
TWEEN.update();
|
|
157
|
-
|
|
213
|
+
|
|
214
|
+
// if need cutout
|
|
215
|
+
if (this.opts.cutout) this.updateRenderForCut();else this.renderer.render(this.scene, this.camera);
|
|
158
216
|
this.cssRenderer && this.cssRenderer.render(this.scene, this.camera);
|
|
159
217
|
this.controls && this.controls.update();
|
|
160
218
|
requestAnimationFrame(function () {
|
|
@@ -178,19 +236,30 @@ var Scene = /*#__PURE__*/function () {
|
|
|
178
236
|
}, {
|
|
179
237
|
key: "updateRaycaster",
|
|
180
238
|
value: function updateRaycaster() {
|
|
239
|
+
var _raycasterOps$recursi;
|
|
240
|
+
var raycasterOps = this.opts.defRaycasterOps || {};
|
|
181
241
|
this.raycaster.setFromCamera(this.pointer, this.camera);
|
|
182
242
|
|
|
183
243
|
// need expand
|
|
184
244
|
var object3ds = this.scene.children.filter(function (item) {
|
|
185
245
|
return item instanceof Mesh;
|
|
186
246
|
});
|
|
187
|
-
this.raycaster.intersectObjects(object3ds);
|
|
247
|
+
this.raycaster.intersectObjects(object3ds, (_raycasterOps$recursi = raycasterOps.recursive) !== null && _raycasterOps$recursi !== void 0 ? _raycasterOps$recursi : false);
|
|
248
|
+
|
|
249
|
+
// group的拾取,构建一个mesh?
|
|
250
|
+
|
|
251
|
+
// const intersects = this.raycaster!.intersectObjects(this.scene!.children, false)
|
|
252
|
+
// globalObjectManage.groupCatch.forEach((group) => {
|
|
253
|
+
// if (intersects.length > 0)
|
|
254
|
+
// group.raycastGroup(intersects as Intersection<Object3D<Event>>[])
|
|
255
|
+
// })
|
|
188
256
|
}
|
|
189
257
|
}, {
|
|
190
258
|
key: "getPointerPosition",
|
|
191
259
|
value: function getPointerPosition(event) {
|
|
192
|
-
|
|
193
|
-
this.pointer.
|
|
260
|
+
var container = this.domElement;
|
|
261
|
+
this.pointer.setX((event.clientX - container.getBoundingClientRect().left) / container.getBoundingClientRect().width * 2 - 1);
|
|
262
|
+
this.pointer.setY(-((event.clientY - container.getBoundingClientRect().top) / container.getBoundingClientRect().height) * 2 + 1);
|
|
194
263
|
}
|
|
195
264
|
|
|
196
265
|
/**
|
|
@@ -266,13 +335,21 @@ var Scene = /*#__PURE__*/function () {
|
|
|
266
335
|
return _this3.onPointerLeave(e);
|
|
267
336
|
});
|
|
268
337
|
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* render scene
|
|
341
|
+
* @param target
|
|
342
|
+
*/
|
|
269
343
|
}, {
|
|
270
344
|
key: "render",
|
|
271
345
|
value: function render(target) {
|
|
272
346
|
var _this4 = this;
|
|
273
347
|
emitter.emit('before-render');
|
|
348
|
+
var renderer = this.initRenderer();
|
|
349
|
+
this.renderer = renderer;
|
|
274
350
|
var currentControlDom = null;
|
|
275
351
|
var domElement = this.renderer.domElement;
|
|
352
|
+
this.domElement = domElement;
|
|
276
353
|
if (this.cssRenderer) {
|
|
277
354
|
currentControlDom = this.cssRenderer.cssRenderer.domElement;
|
|
278
355
|
target.appendChild(currentControlDom);
|
|
@@ -291,6 +368,13 @@ var Scene = /*#__PURE__*/function () {
|
|
|
291
368
|
});
|
|
292
369
|
emitter.emit('after-render');
|
|
293
370
|
}
|
|
371
|
+
}, {
|
|
372
|
+
key: "updateRenderForCut",
|
|
373
|
+
value: function updateRenderForCut() {
|
|
374
|
+
this.renderer.setScissorTest(true);
|
|
375
|
+
this.cutMain(this.renderer);
|
|
376
|
+
this.cutSub(this.renderer);
|
|
377
|
+
}
|
|
294
378
|
}, {
|
|
295
379
|
key: "destroy",
|
|
296
380
|
value: function destroy() {
|