@anov/3d 0.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 ADDED
@@ -0,0 +1,3 @@
1
+ # anov-3d
2
+
3
+ anov 3d 核心包
@@ -0,0 +1,5 @@
1
+ export declare enum ModelType {
2
+ GLTF = "gltf",
3
+ GLB = "glb",
4
+ FBX = "fbx"
5
+ }
@@ -0,0 +1,6 @@
1
+ export var ModelType;
2
+ (function (ModelType) {
3
+ ModelType["GLTF"] = "gltf";
4
+ ModelType["GLB"] = "glb";
5
+ ModelType["FBX"] = "fbx";
6
+ })(ModelType || (ModelType = {}));
@@ -0,0 +1,5 @@
1
+ import { PerspectiveCamera } from 'three';
2
+ declare class Anov3DPerspectiveCamera extends PerspectiveCamera {
3
+ constructor(fov: number | undefined, aspect: number | undefined, near: 0.1, far?: number);
4
+ }
5
+ export { Anov3DPerspectiveCamera };
@@ -0,0 +1,64 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ 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); } }
6
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
8
+ 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); }
9
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10
+ 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); }
11
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12
+ 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); }; }
13
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
14
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
15
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
16
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
17
+ import { PerspectiveCamera } from 'three';
18
+
19
+ /**
20
+ * 向目标物体推进
21
+ * @param targetObject3D
22
+ * @param distance
23
+ * @param animationMethod
24
+ * @param duration
25
+ */
26
+ var promote = function promote(targetObject3D, distance, animationMethod, duration) {};
27
+
28
+ /**
29
+ * 向目标物体后退
30
+ * @param targetObject3D
31
+ * @param distance
32
+ * @param animationMethod
33
+ * @param duration
34
+ */
35
+ var demote = function demote(targetObject3D, distance, animationMethod, duration) {};
36
+
37
+ /**
38
+ * 相机围绕目标物体旋转
39
+ * @param targetObject3D
40
+ * @param radius
41
+ * @param toward
42
+ */
43
+ var surround = function surround(targetObject3D, radius, toward) {};
44
+ var Anov3DPerspectiveCamera = /*#__PURE__*/function (_PerspectiveCamera) {
45
+ _inherits(Anov3DPerspectiveCamera, _PerspectiveCamera);
46
+ var _super = _createSuper(Anov3DPerspectiveCamera);
47
+ function Anov3DPerspectiveCamera() {
48
+ var fov = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 50;
49
+ var aspect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
50
+ var near = arguments.length > 2 ? arguments[2] : undefined;
51
+ var far = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 2000;
52
+ _classCallCheck(this, Anov3DPerspectiveCamera);
53
+ return _super.call(this, fov, aspect, near, far);
54
+ }
55
+ return _createClass(Anov3DPerspectiveCamera);
56
+ }(PerspectiveCamera);
57
+ Anov3DPerspectiveCamera.prototype.promote = _objectSpread(_objectSpread({}, Anov3DPerspectiveCamera.prototype), {}, {
58
+ promote: promote,
59
+ demote: demote,
60
+ surround: surround
61
+ });
62
+ var a = new Anov3DPerspectiveCamera(50, 1, 0.1, 2000);
63
+ console.log(a);
64
+ export { Anov3DPerspectiveCamera };
@@ -0,0 +1,8 @@
1
+ import { Group } from 'three';
2
+ declare class Anov3DGroup extends Group {
3
+ constructor();
4
+ }
5
+ /**
6
+ *
7
+ */
8
+ export default Anov3DGroup;
@@ -0,0 +1,27 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ 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); } }
3
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
4
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
5
+ 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); }
6
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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); }
8
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
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); }; }
10
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
11
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
12
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
13
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
14
+ import { Group } from 'three';
15
+ var Anov3DGroup = /*#__PURE__*/function (_Group) {
16
+ _inherits(Anov3DGroup, _Group);
17
+ var _super = _createSuper(Anov3DGroup);
18
+ function Anov3DGroup() {
19
+ _classCallCheck(this, Anov3DGroup);
20
+ return _super.call(this);
21
+ }
22
+ return _createClass(Anov3DGroup);
23
+ }(Group);
24
+ /**
25
+ *
26
+ */
27
+ export default Anov3DGroup;
@@ -0,0 +1,44 @@
1
+ import type { Intersection, Raycaster } from 'three';
2
+ import { Mesh } from 'three';
3
+ import type { CubeEventType, EventHandleFn } from '../type';
4
+ declare class Anov3DMesh extends Mesh {
5
+ private natureEventMap;
6
+ private isMove;
7
+ constructor(geometry?: ConstructorParameters<typeof Mesh>[0], material?: ConstructorParameters<typeof Mesh>[1]);
8
+ /**
9
+ * addNatureEventListener
10
+ * @param type
11
+ * @param handlefn
12
+ */
13
+ addNatureEventListener<T extends CubeEventType>(type: T, handlefn: EventHandleFn<T>): void;
14
+ /**
15
+ * removeNatureEventListener
16
+ * @param type
17
+ * @param handlefn
18
+ */
19
+ removeNatureEventListener<T extends CubeEventType>(type: T, handlefn: EventHandleFn<T>): void;
20
+ /**
21
+ * removeAllNatureEventListener
22
+ */
23
+ removeAllNatureEventListener(): void;
24
+ /**
25
+ * handle intersect event
26
+ * @param intersects
27
+ * @param eventType
28
+ */
29
+ private eventHandle;
30
+ private debounceEventHandle;
31
+ /**
32
+ * handle pointerleave event
33
+ * @param intersects
34
+ * @param natureEvent
35
+ */
36
+ private handlePointerleave;
37
+ /**
38
+ * handle mesh raycaster
39
+ * @param raycaster
40
+ * @param intersects
41
+ */
42
+ raycast(raycaster: Raycaster, intersects: Intersection[]): void;
43
+ }
44
+ export default Anov3DMesh;
@@ -0,0 +1,145 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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
+ 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; }
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); }
8
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
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); }; }
10
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
11
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
12
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
13
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
14
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
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
+ import { Mesh } from 'three';
18
+ import { debounce } from 'lodash';
19
+ import { emitter } from "../utils";
20
+ var Anov3DMesh = /*#__PURE__*/function (_Mesh) {
21
+ _inherits(Anov3DMesh, _Mesh);
22
+ var _super = _createSuper(Anov3DMesh);
23
+ function Anov3DMesh(geometry, material) {
24
+ var _this;
25
+ _classCallCheck(this, Anov3DMesh);
26
+ _this = _super.call(this, geometry, material);
27
+ _defineProperty(_assertThisInitialized(_this), "natureEventMap", new Map());
28
+ _defineProperty(_assertThisInitialized(_this), "isMove", false);
29
+ _defineProperty(_assertThisInitialized(_this), "debounceEventHandle", debounce(_this.eventHandle, 50));
30
+ return _this;
31
+ }
32
+
33
+ /**
34
+ * addNatureEventListener
35
+ * @param type
36
+ * @param handlefn
37
+ */
38
+ _createClass(Anov3DMesh, [{
39
+ key: "addNatureEventListener",
40
+ value: function addNatureEventListener(type, handlefn) {
41
+ if (!this.natureEventMap.has(type)) this.natureEventMap.set(type, []);
42
+ this.natureEventMap.get(type).push(handlefn);
43
+ }
44
+
45
+ /**
46
+ * removeNatureEventListener
47
+ * @param type
48
+ * @param handlefn
49
+ */
50
+ }, {
51
+ key: "removeNatureEventListener",
52
+ value: function removeNatureEventListener(type, handlefn) {
53
+ if (!this.natureEventMap.has(type)) return;
54
+ var handlefns = this.natureEventMap.get(type);
55
+ var index = handlefns.findIndex(function (fn) {
56
+ return fn === handlefn;
57
+ });
58
+ if (index > -1) handlefns.splice(index, 1);
59
+ }
60
+
61
+ /**
62
+ * removeAllNatureEventListener
63
+ */
64
+ }, {
65
+ key: "removeAllNatureEventListener",
66
+ value: function removeAllNatureEventListener() {
67
+ this.natureEventMap.clear();
68
+ }
69
+
70
+ /**
71
+ * handle intersect event
72
+ * @param intersects
73
+ * @param eventType
74
+ */
75
+ }, {
76
+ key: "eventHandle",
77
+ value: function eventHandle(intersects, natureEvent) {
78
+ var intersect = intersects[0];
79
+ var object = intersect.object;
80
+ if (object === this) {
81
+ // get nature event
82
+ console.log(intersect.object);
83
+ natureEvent.forEach(function (handlefn) {
84
+ handlefn(object);
85
+ });
86
+ }
87
+ }
88
+ }, {
89
+ key: "handlePointerleave",
90
+ value:
91
+ /**
92
+ * handle pointerleave event
93
+ * @param intersects
94
+ * @param natureEvent
95
+ */
96
+ function handlePointerleave(intersects, natureEvent) {
97
+ var _this2 = this;
98
+ if (this.isMove) {
99
+ this.isMove = false;
100
+ natureEvent.forEach(function (handlefn) {
101
+ handlefn(_this2);
102
+ });
103
+ }
104
+ }
105
+
106
+ /**
107
+ * handle mesh raycaster
108
+ * @param raycaster
109
+ * @param intersects
110
+ */
111
+ }, {
112
+ key: "raycast",
113
+ value: function raycast(raycaster, intersects) {
114
+ var _this3 = this;
115
+ if (this.natureEventMap.size === 0) return;
116
+ _get(_getPrototypeOf(Anov3DMesh.prototype), "raycast", this).call(this, raycaster, intersects);
117
+ var pointerupCallback = this.natureEventMap.get('pointerup');
118
+ var pointerdownCallback = this.natureEventMap.get('pointerdown');
119
+ var pointermoveCallback = this.natureEventMap.get('pointermove');
120
+ var pointerleaveCallback = this.natureEventMap.get('pointerleave');
121
+ console.log(intersects);
122
+ if (intersects.length > 0) {
123
+ emitter.on('pointerup', function () {
124
+ return pointerupCallback && pointerupCallback.length > 0 && _this3.debounceEventHandle(intersects, pointerupCallback);
125
+ });
126
+ emitter.on('pointerdown', function () {
127
+ return pointerdownCallback && pointerdownCallback.length > 0 && _this3.debounceEventHandle(intersects, pointerdownCallback);
128
+ });
129
+ emitter.on('pointermove', function () {
130
+ if (pointermoveCallback && pointermoveCallback.length > 0) {
131
+ _this3.isMove = true;
132
+ _this3.eventHandle(intersects, pointermoveCallback);
133
+ }
134
+ });
135
+ } else {
136
+ console.log('pointerleave');
137
+ emitter.on('pointerleave', function () {
138
+ if (pointerleaveCallback && pointerleaveCallback.length > 0 && _this3.isMove) _this3.handlePointerleave(intersects, pointerleaveCallback);
139
+ });
140
+ }
141
+ }
142
+ }]);
143
+ return Anov3DMesh;
144
+ }(Mesh);
145
+ export default Anov3DMesh;
@@ -0,0 +1,21 @@
1
+ import type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';
2
+ declare class Anov3DModelLoader {
3
+ /**
4
+ * load gltf model
5
+ * @param url
6
+ * @param onLoad
7
+ * @param onProgress
8
+ * @param onError
9
+ * @returns
10
+ */
11
+ loadGLTF(url: string, onLoad?: (result: GLTF) => GLTF, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Promise<unknown>;
12
+ /**
13
+ * fbx model loader
14
+ * @param url
15
+ * @param onLoad
16
+ * @param onProgress
17
+ * @param onError
18
+ */
19
+ loadFbx(url: string, onLoad?: (result: GLTF) => GLTF, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void;
20
+ }
21
+ export default Anov3DModelLoader;
@@ -0,0 +1,58 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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
+ 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 _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
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
+ import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader';
8
+ import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
9
+ var Anov3DModelLoader = /*#__PURE__*/function () {
10
+ function Anov3DModelLoader() {
11
+ _classCallCheck(this, Anov3DModelLoader);
12
+ }
13
+ _createClass(Anov3DModelLoader, [{
14
+ key: "loadGLTF",
15
+ value:
16
+ /**
17
+ * load gltf model
18
+ * @param url
19
+ * @param onLoad
20
+ * @param onProgress
21
+ * @param onError
22
+ * @returns
23
+ */
24
+ function loadGLTF(url, onLoad, onProgress, onError) {
25
+ var loader = new GLTFLoader();
26
+ var dracoLoader = new DRACOLoader();
27
+ dracoLoader.setDecoderPath('./draco/');
28
+ dracoLoader.setDecoderConfig({
29
+ type: 'js'
30
+ });
31
+ dracoLoader.preload();
32
+ loader.setDRACOLoader(dracoLoader);
33
+ return new Promise(function (resolve, reject) {
34
+ loader.load(url, function (gltf) {
35
+ onLoad ? resolve(onLoad(gltf)) : resolve(gltf);
36
+ }, function (xhr) {
37
+ onProgress && onProgress(xhr);
38
+ }, function (err) {
39
+ onError && onError(err);
40
+ reject(err);
41
+ });
42
+ });
43
+ }
44
+
45
+ /**
46
+ * fbx model loader
47
+ * @param url
48
+ * @param onLoad
49
+ * @param onProgress
50
+ * @param onError
51
+ */
52
+ }, {
53
+ key: "loadFbx",
54
+ value: function loadFbx(url, onLoad, onProgress, onError) {}
55
+ }]);
56
+ return Anov3DModelLoader;
57
+ }();
58
+ export default Anov3DModelLoader;
@@ -0,0 +1,116 @@
1
+ import type { Color, Object3D } from 'three';
2
+ import { PerspectiveCamera, Raycaster, Scene, Vector3, WebGLRenderer } from 'three';
3
+ import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
4
+ interface Anov3DSceneOptions {
5
+ /**
6
+ * renderer options
7
+ */
8
+ rendererOps?: {
9
+ antialias?: boolean;
10
+ logarithmicDepthBuffer?: boolean;
11
+ };
12
+ /**
13
+ * default camera options
14
+ */
15
+ defCameraOps?: {
16
+ position?: Vector3;
17
+ fov?: number;
18
+ aspect?: number;
19
+ near?: number;
20
+ far?: number;
21
+ };
22
+ /**
23
+ * default ambient light options
24
+ */
25
+ defAmbientLightOps?: {
26
+ position?: Vector3;
27
+ color?: Color;
28
+ intensity?: number;
29
+ };
30
+ /**
31
+ * Controls
32
+ */
33
+ orbitControls?: boolean;
34
+ /**
35
+ * if need ambient light
36
+ */
37
+ ambientLight?: boolean;
38
+ /**
39
+ * on demand render scene, 按需渲染
40
+ */
41
+ onDemand?: boolean;
42
+ }
43
+ declare class Anov3DScene {
44
+ private opts;
45
+ private pointer;
46
+ scene: Scene | null;
47
+ raycaster: Raycaster | null;
48
+ camera: PerspectiveCamera | null;
49
+ renderer: WebGLRenderer | null;
50
+ controls: OrbitControls | null;
51
+ constructor(opts: Anov3DSceneOptions);
52
+ /**
53
+ * init scene
54
+ * @param camera
55
+ * @param renderer
56
+ */
57
+ resetScene(camera: PerspectiveCamera, renderer: WebGLRenderer): void;
58
+ /**
59
+ * init renderer
60
+ */
61
+ private initRenderer;
62
+ /**
63
+ * init default camera
64
+ */
65
+ private initDefaultPerspectiveCamera;
66
+ /**
67
+ * init ambient light
68
+ * @param position
69
+ * @param color
70
+ * @param intensity
71
+ * @returns
72
+ */
73
+ private initAmbientLight;
74
+ /**
75
+ * frame render
76
+ */
77
+ startFrameAnimate(frameAnimate?: (renderer: WebGLRenderer) => void): void;
78
+ /**
79
+ * scene add object3d
80
+ * @param object3d
81
+ */
82
+ add(object3d: Object3D): void;
83
+ /**
84
+ * update raycaster
85
+ */
86
+ private updateRaycaster;
87
+ private getPointerPosition;
88
+ /**
89
+ * handle pointerup event
90
+ * @param event
91
+ */
92
+ private onPointerPointerup;
93
+ /**
94
+ * handle pointerdown event
95
+ * @param event
96
+ */
97
+ private onPointerDown;
98
+ /**
99
+ * handle pointermove event
100
+ * @param event
101
+ */
102
+ private onPointerMove;
103
+ /**
104
+ * handle pointerleave event
105
+ * @param event
106
+ */
107
+ private onPointerLeave;
108
+ /**
109
+ * handle event register
110
+ * @param target
111
+ */
112
+ private registerEvent;
113
+ render(target: HTMLElement): void;
114
+ destroy(): void;
115
+ }
116
+ export default Anov3DScene;
@@ -0,0 +1,235 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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
+ 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 _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
+ 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); }
8
+ import { ACESFilmicToneMapping, AmbientLight, PerspectiveCamera, Raycaster, Scene, Vector2, Vector3, WebGLRenderer } from 'three';
9
+ import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
10
+ import { emitter } from "../utils";
11
+ var Anov3DScene = /*#__PURE__*/function () {
12
+ function Anov3DScene(opts) {
13
+ _classCallCheck(this, Anov3DScene);
14
+ _defineProperty(this, "opts", {});
15
+ _defineProperty(this, "pointer", new Vector2());
16
+ _defineProperty(this, "scene", null);
17
+ _defineProperty(this, "raycaster", null);
18
+ _defineProperty(this, "camera", null);
19
+ _defineProperty(this, "renderer", null);
20
+ _defineProperty(this, "controls", null);
21
+ this.opts = opts !== null && opts !== void 0 ? opts : {};
22
+ this.scene = new Scene();
23
+ this.raycaster = new Raycaster();
24
+ }
25
+
26
+ /**
27
+ * init scene
28
+ * @param camera
29
+ * @param renderer
30
+ */
31
+ _createClass(Anov3DScene, [{
32
+ key: "resetScene",
33
+ value: function resetScene(camera, renderer) {
34
+ camera.aspect = window.innerWidth / window.innerHeight;
35
+ camera.updateProjectionMatrix();
36
+ renderer.setSize(window.innerWidth, window.innerHeight);
37
+ renderer.setPixelRatio(window.devicePixelRatio);
38
+ }
39
+
40
+ /**
41
+ * init renderer
42
+ */
43
+ }, {
44
+ key: "initRenderer",
45
+ value: function initRenderer() {
46
+ var _rendererOps$antialia, _rendererOps$logarith;
47
+ var rendererOps = this.opts.rendererOps || {};
48
+ var renderer = new WebGLRenderer({
49
+ antialias: (_rendererOps$antialia = rendererOps.antialias) !== null && _rendererOps$antialia !== void 0 ? _rendererOps$antialia : true,
50
+ logarithmicDepthBuffer: (_rendererOps$logarith = rendererOps.logarithmicDepthBuffer) !== null && _rendererOps$logarith !== void 0 ? _rendererOps$logarith : true
51
+ });
52
+ renderer.setSize(window.innerWidth, window.innerHeight);
53
+ renderer.shadowMap.enabled = true;
54
+ renderer.toneMapping = ACESFilmicToneMapping;
55
+ renderer.toneMappingExposure = 0.3;
56
+ renderer.setPixelRatio(window.devicePixelRatio);
57
+ this.renderer = renderer;
58
+ return renderer;
59
+ }
60
+
61
+ /**
62
+ * init default camera
63
+ */
64
+ }, {
65
+ key: "initDefaultPerspectiveCamera",
66
+ value: function initDefaultPerspectiveCamera() {
67
+ var rendererOps = this.opts.defCameraOps || {};
68
+ var camera = new PerspectiveCamera(rendererOps.fov || 90, window.innerWidth / window.innerHeight, rendererOps.near || 0.1, rendererOps.far || 1000);
69
+ var position = rendererOps.position || new Vector3(0, 3, 10);
70
+ camera.position.set(position.x, position.y, position.z);
71
+ this.camera = camera;
72
+ this.scene.add(camera);
73
+ return camera;
74
+ }
75
+
76
+ /**
77
+ * init ambient light
78
+ * @param position
79
+ * @param color
80
+ * @param intensity
81
+ * @returns
82
+ */
83
+ }, {
84
+ key: "initAmbientLight",
85
+ value: function initAmbientLight() {
86
+ var defConfigOps = this.opts.defAmbientLightOps || {};
87
+ var position = defConfigOps.position || new Vector3(0, 3, 10);
88
+ var ambientLight = new AmbientLight(defConfigOps.color || 0xFFFFFF, defConfigOps.intensity || 1);
89
+ ambientLight.position.set(position.x, position.y, position.z);
90
+ return ambientLight;
91
+ }
92
+
93
+ /**
94
+ * frame render
95
+ */
96
+ }, {
97
+ key: "startFrameAnimate",
98
+ value: function startFrameAnimate(frameAnimate) {
99
+ var _this = this;
100
+ if (!this.renderer || !this.scene || !this.camera) throw new Error('scene or camera or renderer is not init');
101
+ if (frameAnimate) {
102
+ frameAnimate(this.renderer);
103
+ } else {
104
+ this.controls && this.controls.update();
105
+ this.renderer.render(this.scene, this.camera);
106
+ }
107
+ requestAnimationFrame(function () {
108
+ return _this.startFrameAnimate(frameAnimate);
109
+ });
110
+ }
111
+
112
+ /**
113
+ * scene add object3d
114
+ * @param object3d
115
+ */
116
+ }, {
117
+ key: "add",
118
+ value: function add(object3d) {
119
+ this.scene.add(object3d);
120
+ }
121
+
122
+ /**
123
+ * update raycaster
124
+ */
125
+ }, {
126
+ key: "updateRaycaster",
127
+ value: function updateRaycaster() {
128
+ this.raycaster.setFromCamera(this.pointer, this.camera);
129
+ this.raycaster.intersectObjects(this.scene.children);
130
+ }
131
+ }, {
132
+ key: "getPointerPosition",
133
+ value: function getPointerPosition(event) {
134
+ this.pointer.setX(event.clientX / window.innerWidth * 2 - 1);
135
+ this.pointer.setY(-(event.clientY / window.innerHeight) * 2 + 1);
136
+ }
137
+
138
+ /**
139
+ * handle pointerup event
140
+ * @param event
141
+ */
142
+ }, {
143
+ key: "onPointerPointerup",
144
+ value: function onPointerPointerup(event) {
145
+ this.getPointerPosition(event);
146
+ emitter.emit('pointerup');
147
+ this.updateRaycaster();
148
+ }
149
+
150
+ /**
151
+ * handle pointerdown event
152
+ * @param event
153
+ */
154
+ }, {
155
+ key: "onPointerDown",
156
+ value: function onPointerDown(event) {
157
+ this.getPointerPosition(event);
158
+ emitter.emit('pointerdown');
159
+ this.updateRaycaster();
160
+ }
161
+
162
+ /**
163
+ * handle pointermove event
164
+ * @param event
165
+ */
166
+ }, {
167
+ key: "onPointerMove",
168
+ value: function onPointerMove(event) {
169
+ this.getPointerPosition(event);
170
+ emitter.emit('pointermove');
171
+ this.updateRaycaster();
172
+ }
173
+
174
+ /**
175
+ * handle pointerleave event
176
+ * @param event
177
+ */
178
+ }, {
179
+ key: "onPointerLeave",
180
+ value: function onPointerLeave(event) {
181
+ this.getPointerPosition(event);
182
+ emitter.emit('pointerleave');
183
+ this.updateRaycaster();
184
+ }
185
+
186
+ /**
187
+ * handle event register
188
+ * @param target
189
+ */
190
+ }, {
191
+ key: "registerEvent",
192
+ value: function registerEvent(target) {
193
+ var _this2 = this;
194
+ target.addEventListener('pointerup', function (e) {
195
+ return _this2.onPointerPointerup(e);
196
+ });
197
+ target.addEventListener('pointerdown', function (e) {
198
+ return _this2.onPointerDown(e);
199
+ });
200
+ target.addEventListener('pointermove', function (e) {
201
+ return _this2.onPointerMove(e);
202
+ });
203
+ target.addEventListener('pointerleave', function (e) {
204
+ return _this2.onPointerLeave(e);
205
+ });
206
+ }
207
+ }, {
208
+ key: "render",
209
+ value: function render(target) {
210
+ var _this3 = this;
211
+ var camera = this.initDefaultPerspectiveCamera();
212
+ var renderer = this.initRenderer();
213
+ if (this.opts.orbitControls) this.controls = new OrbitControls(camera, renderer.domElement);
214
+ if (this.opts.ambientLight) {
215
+ var ambientLight = this.initAmbientLight();
216
+ this.scene.add(ambientLight);
217
+ }
218
+ target.appendChild(renderer.domElement);
219
+ this.registerEvent(renderer.domElement);
220
+ target.addEventListener('resize', function () {
221
+ return _this3.resetScene(camera, renderer);
222
+ });
223
+ }
224
+ }, {
225
+ key: "destroy",
226
+ value: function destroy() {
227
+ var _this4 = this;
228
+ window.removeEventListener('resize', function () {
229
+ return _this4.resetScene(_this4.camera, _this4.renderer);
230
+ });
231
+ }
232
+ }]);
233
+ return Anov3DScene;
234
+ }();
235
+ export default Anov3DScene;
@@ -0,0 +1,6 @@
1
+ import Anove3DScene from './core/scene';
2
+ import Anov3DMesh from './core/mesh';
3
+ import { Anov3DPerspectiveCamera } from './core/camera';
4
+ import Anov3DModelLoader from './core/model';
5
+ import { ModelType } from './commonEnu';
6
+ export { Anove3DScene, Anov3DMesh, Anov3DPerspectiveCamera, Anov3DModelLoader, ModelType, };
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ import Anove3DScene from "./core/scene";
2
+ import Anov3DMesh from "./core/mesh";
3
+ import { Anov3DPerspectiveCamera } from "./core/camera";
4
+ import Anov3DModelLoader from "./core/model";
5
+ import { ModelType } from "./commonEnu";
6
+ export { Anove3DScene, Anov3DMesh, Anov3DPerspectiveCamera, Anov3DModelLoader, ModelType };
package/dist/type.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type TwinsThreeMesh from './core/mesh';
2
+ export declare type CubeEventType = 'pointerup' | 'pointerdown' | 'pointermove' | 'pointerleave';
3
+ export declare type EventHandleFn<T> = (event: TwinsThreeMesh) => void;
package/dist/type.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ export declare const emitter: {
2
+ on: {
3
+ <Key extends import("mitt").EventType>(type: Key, handler: import("mitt").Handler<Record<import("mitt").EventType, unknown>[Key]>): void;
4
+ (type: "*", handler: import("mitt").WildcardHandler<Record<import("mitt").EventType, unknown>>): void;
5
+ };
6
+ off: {
7
+ <Key_1 extends import("mitt").EventType>(type: Key_1, handler?: import("mitt").Handler<Record<import("mitt").EventType, unknown>[Key_1]> | undefined): void;
8
+ (type: "*", handler: import("mitt").WildcardHandler<Record<import("mitt").EventType, unknown>>): void;
9
+ };
10
+ emit: {
11
+ <Key_2 extends import("mitt").EventType>(type: Key_2, event: Record<import("mitt").EventType, unknown>[Key_2]): void;
12
+ <Key_3 extends import("mitt").EventType>(type: undefined extends Record<import("mitt").EventType, unknown>[Key_3] ? Key_3 : never): void;
13
+ };
14
+ all: import("mitt").EventHandlerMap<Record<import("mitt").EventType, unknown>>;
15
+ };
@@ -0,0 +1,8 @@
1
+ import mitt from 'mitt';
2
+ var emitterHandle = mitt();
3
+ export var emitter = {
4
+ on: emitterHandle.on,
5
+ off: emitterHandle.off,
6
+ emit: emitterHandle.emit,
7
+ all: emitterHandle.all
8
+ };
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@anov/3d",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "author": "",
6
+ "license": "MIT",
7
+ "keywords": [],
8
+ "module": "dist/index.js",
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "readme.md",
15
+ "package.json"
16
+ ],
17
+ "peerDependencies": {
18
+ "three": "^0.155.0"
19
+ },
20
+ "devDependencies": {
21
+ "@types/lodash": "^4.14.196",
22
+ "@types/three": "^0.155.0",
23
+ "three": "^0.155.0"
24
+ },
25
+ "dependencies": {
26
+ "lodash": "^4.17.21",
27
+ "mitt": "^3.0.1"
28
+ },
29
+ "scripts": {
30
+ "build": "father build",
31
+ "build:deps": "father prebundle",
32
+ "test": "jest --maxWorkers 2"
33
+ }
34
+ }