@realsee/dnalogel 3.77.4 → 3.77.6
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/CHANGELOG.md +20 -11
- package/dist/DigitalPerformancePlugin/controller/index.d.ts +224 -0
- package/dist/DigitalPerformancePlugin/core/DigitalHuman.d.ts +55 -0
- package/dist/DigitalPerformancePlugin/core/DigitalPlayground.d.ts +40 -0
- package/dist/DigitalPerformancePlugin/core/DigitalStateMachine.d.ts +150 -0
- package/dist/DigitalPerformancePlugin/core/Trace.d.ts +9 -0
- package/dist/DigitalPerformancePlugin/index.d.ts +11 -0
- package/dist/DigitalPerformancePlugin/mock.d.ts +76 -0
- package/dist/DigitalPerformancePlugin/typings/index.d.ts +79 -0
- package/dist/PanoTagPlugin/controller/Tag/BaseTag.d.ts +5 -1
- package/dist/PanoTagPlugin/controller/Tag/BoxTag.d.ts +119 -0
- package/dist/PanoTagPlugin/controller/Tag/MaskTag.d.ts +257 -0
- package/dist/PanoTagPlugin/controller/Tag/MaskTag.shaders.d.ts +10 -0
- package/dist/PanoTagPlugin/controller/Tag/PolygonTag.d.ts +112 -0
- package/dist/PanoTagPlugin/controller/TagRender.d.ts +1 -1
- package/dist/PanoTagPlugin/controller/index.d.ts +55 -2
- package/dist/PanoTagPlugin/typings/controller.d.ts +10 -0
- package/dist/PanoTagPlugin/typings/tag/Tag.d.ts +8 -3
- package/dist/PanoTagPlugin/typings/tag/Utils.d.ts +50 -1
- package/dist/PanoTagPlugin/utils/sculptDataToBoxPosition.d.ts +6 -0
- package/dist/PanoTagPlugin/utils/tag/tagCheck.d.ts +6 -0
- package/dist/PanoTagPlugin/utils/tagPosition.d.ts +12 -3
- package/dist/index.cjs.js +188 -92
- package/dist/index.d.ts +1 -0
- package/dist/index.js +17508 -14249
- package/dist/index.umd.js +184 -88
- package/libs/CruisePlugin/Move.js +7 -2
- package/libs/CruisePlugin/Work.js +7 -2
- package/libs/CruisePlugin/index.js +11 -6
- package/libs/DigitalPerformancePlugin/controller/index.d.ts +2 -2
- package/libs/DigitalPerformancePlugin/controller/index.js +164 -173
- package/libs/DigitalPerformancePlugin/core/DigitalHuman.d.ts +16 -6
- package/libs/DigitalPerformancePlugin/core/DigitalHuman.js +128 -102
- package/libs/DigitalPerformancePlugin/core/DigitalPlayground.d.ts +11 -5
- package/libs/DigitalPerformancePlugin/core/DigitalPlayground.js +84 -74
- package/libs/DigitalPerformancePlugin/core/DigitalStateMachine.d.ts +7 -0
- package/libs/DigitalPerformancePlugin/mock.d.ts +6 -0
- package/libs/DigitalPerformancePlugin/mock.js +272 -274
- package/libs/GuideLinePlugin/Controller.js +9 -4
- package/libs/GuideLinePlugin/GuideLineItem.js +7 -2
- package/libs/GuideLinePlugin/GuideLineModeItem.js +7 -2
- package/libs/GuideLinePlugin/index.js +11 -6
- package/libs/PanoTagPlugin/Components/TagItem.js +122 -122
- package/libs/PanoTagPlugin/controller/Tag/BaseTag.d.ts +5 -1
- package/libs/PanoTagPlugin/controller/Tag/BaseTag.js +320 -289
- package/libs/PanoTagPlugin/controller/Tag/BoxTag.d.ts +119 -0
- package/libs/PanoTagPlugin/controller/Tag/BoxTag.js +515 -0
- package/libs/PanoTagPlugin/controller/Tag/MaskTag.d.ts +257 -0
- package/libs/PanoTagPlugin/controller/Tag/MaskTag.js +815 -0
- package/libs/PanoTagPlugin/controller/Tag/MaskTag.shaders.d.ts +10 -0
- package/libs/PanoTagPlugin/controller/Tag/MaskTag.shaders.js +94 -0
- package/libs/PanoTagPlugin/controller/Tag/PolygonTag.d.ts +112 -0
- package/libs/PanoTagPlugin/controller/Tag/PolygonTag.js +478 -0
- package/libs/PanoTagPlugin/controller/TagRender.d.ts +1 -1
- package/libs/PanoTagPlugin/controller/TagUtil.js +19 -17
- package/libs/PanoTagPlugin/controller/index.d.ts +55 -2
- package/libs/PanoTagPlugin/controller/index.js +261 -148
- package/libs/PanoTagPlugin/index.js +16 -11
- package/libs/PanoTagPlugin/typings/controller.d.ts +10 -0
- package/libs/PanoTagPlugin/typings/tag/Tag.d.ts +8 -3
- package/libs/PanoTagPlugin/typings/tag/Utils.d.ts +50 -1
- package/libs/PanoTagPlugin/utils/addDebugPoints.js +27 -13
- package/libs/PanoTagPlugin/utils/index.js +29 -26
- package/libs/PanoTagPlugin/utils/sculptDataToBoxPosition.d.ts +6 -0
- package/libs/PanoTagPlugin/utils/sculptDataToBoxPosition.js +18 -0
- package/libs/PanoTagPlugin/utils/tag/tagCheck.d.ts +6 -0
- package/libs/PanoTagPlugin/utils/tag/tagCheck.js +26 -14
- package/libs/PanoTagPlugin/utils/tagPosition.d.ts +12 -3
- package/libs/PanoTagPlugin/utils/tagPosition.js +49 -16
- package/libs/base/BasePlugin.js +1 -1
- package/libs/index.d.ts +1 -0
- package/libs/index.js +166 -150
- package/libs/shared-utils/logger.js +1 -1
- package/package.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import r from "./controller/index.js";
|
|
2
|
-
import { pluginFlag as
|
|
3
|
-
import { defaultGlobalConfig as
|
|
4
|
-
import { ContentType as
|
|
2
|
+
import { pluginFlag as Ri } from "./controller/index.js";
|
|
3
|
+
import { defaultGlobalConfig as Ui } from "./typings/tag/TagConfig.js";
|
|
4
|
+
import { ContentType as Wi, DimensionType as Xi, PointType as Yi } from "./Archive/deprecated.js";
|
|
5
5
|
import "three";
|
|
6
6
|
import "../vendor/object-assign-deep/objectAssignDeep.js";
|
|
7
7
|
import "../shared-utils/positionToVector3.js";
|
|
@@ -285,6 +285,11 @@ import "../Sculpt/Meshes/Box.js";
|
|
|
285
285
|
import "../shared-utils/forReverseEach.js";
|
|
286
286
|
import "../Sculpt/Objects/Line/index.js";
|
|
287
287
|
import "../shared-utils/five/getFloorMesh.js";
|
|
288
|
+
import "./controller/Tag/BoxTag.js";
|
|
289
|
+
import "./utils/sculptDataToBoxPosition.js";
|
|
290
|
+
import "./controller/Tag/PolygonTag.js";
|
|
291
|
+
import "./controller/Tag/MaskTag.js";
|
|
292
|
+
import "./controller/Tag/MaskTag.shaders.js";
|
|
288
293
|
import "./Components/TagContainer.js";
|
|
289
294
|
import "./Components/TagItem.js";
|
|
290
295
|
import "./Components/Common/TagPoint.js";
|
|
@@ -303,14 +308,14 @@ import "./Components/Common/TagPopover/ArrowRightIcon.js";
|
|
|
303
308
|
import "./Components/Common/TagPopover/ShareIcon.js";
|
|
304
309
|
import "./utils/popoverContainer.js";
|
|
305
310
|
import "../shared-utils/animationFrame/BetterTween.js";
|
|
306
|
-
const
|
|
311
|
+
const Ni = (o, t) => new r(o, t);
|
|
307
312
|
export {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
313
|
+
Wi as ContentType,
|
|
314
|
+
Xi as DimensionType,
|
|
315
|
+
Ni as PanoTagPlugin,
|
|
311
316
|
r as PanoTagPluginController,
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
317
|
+
Yi as PointType,
|
|
318
|
+
Ni as default,
|
|
319
|
+
Ui as defaultGlobalConfig,
|
|
320
|
+
Ri as pluginFlag
|
|
316
321
|
};
|
|
@@ -33,6 +33,15 @@ export type TagClickParams = {
|
|
|
33
33
|
} | {
|
|
34
34
|
target: 'TagPopoverContent';
|
|
35
35
|
tag: TagInstance;
|
|
36
|
+
} | {
|
|
37
|
+
target: 'TagBoxModel';
|
|
38
|
+
tag: TagInstance;
|
|
39
|
+
} | {
|
|
40
|
+
target: 'TagPolygonModel';
|
|
41
|
+
tag: TagInstance;
|
|
42
|
+
} | {
|
|
43
|
+
target: 'TagMaskModel';
|
|
44
|
+
tag: TagInstance;
|
|
36
45
|
});
|
|
37
46
|
export interface PluginEventMap extends BasePlugin.EventMap<State> {
|
|
38
47
|
loaded: () => void;
|
|
@@ -79,6 +88,7 @@ export type TagEvents<C extends TagContentType = TagContentType> = {
|
|
|
79
88
|
}) => void;
|
|
80
89
|
showPopover: () => void;
|
|
81
90
|
hidePopover: () => void;
|
|
91
|
+
positionChanged: (position: TagInstance<C>['position']) => void;
|
|
82
92
|
};
|
|
83
93
|
export interface TagCacheInterface {
|
|
84
94
|
visible?: boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { State as FiveState } from '@realsee/five';
|
|
2
2
|
import type { TagConfig } from './TagConfig';
|
|
3
3
|
import type { ContentTypeMap, TagContentType } from './TagData';
|
|
4
|
-
import type { Position, TagId, StickType, TagStyle, ElementRenderer, TagConfigByKey, ContentTypeConfigKey } from './Utils';
|
|
4
|
+
import type { Position, TagId, StickType, TagStyle, ElementRenderer, TagConfigByKey, ContentTypeConfigKey, BoxPosition, PolygonPosition, MaskPosition } from './Utils';
|
|
5
5
|
import type { DeprecatedTagProperty } from '../../Archive/deprecated';
|
|
6
6
|
import type { LiteralUnion } from 'type-fest';
|
|
7
7
|
export interface Tags {
|
|
@@ -33,7 +33,7 @@ export type Tag<C extends TagContentType = TagContentType, S extends StickType =
|
|
|
33
33
|
*/
|
|
34
34
|
contentType: LiteralUnion<C, string>;
|
|
35
35
|
/** 点 */
|
|
36
|
-
position: S extends 'Plane' ? [Position, Position, Position, Position] : S extends '2DPoint' | '3DPoint' | 'Model' ? Position : Position | [Position, Position, Position, Position];
|
|
36
|
+
position: S extends 'Plane' ? [Position, Position, Position, Position] : S extends '2DPoint' | '3DPoint' | 'Model' ? Position : S extends '3DBox' ? BoxPosition : S extends 'Polygon' ? PolygonPosition : S extends 'Mask' ? MaskPosition : Position | [Position, Position, Position, Position];
|
|
37
37
|
/** 法向量 */
|
|
38
38
|
normal?: Position;
|
|
39
39
|
/** 自定义标签内容 */
|
|
@@ -52,8 +52,13 @@ export type Tag<C extends TagContentType = TagContentType, S extends StickType =
|
|
|
52
52
|
hoverEnabled?: boolean;
|
|
53
53
|
} & (S extends '3DPoint' ? {
|
|
54
54
|
normal: Position;
|
|
55
|
-
} : unknown) &
|
|
55
|
+
} : unknown) & // 三维标签需要法向量
|
|
56
|
+
(S extends 'Model' ? {
|
|
56
57
|
matrix: number[];
|
|
58
|
+
} : unknown) & // 模型标签需要模型
|
|
59
|
+
(S extends 'Mask' ? {
|
|
60
|
+
mask: string | HTMLCanvasElement;
|
|
61
|
+
color: [number, number, number] | number | string;
|
|
57
62
|
} : unknown) & {
|
|
58
63
|
[key: string]: any;
|
|
59
64
|
};
|
|
@@ -15,7 +15,34 @@ export interface MinMax {
|
|
|
15
15
|
min?: number;
|
|
16
16
|
max?: number;
|
|
17
17
|
}
|
|
18
|
-
export type StickType = '2DPoint' | '3DPoint' | 'Plane' | 'Model';
|
|
18
|
+
export type StickType = '2DPoint' | '3DPoint' | 'Plane' | 'Model' | '3DBox' | 'Polygon' | 'Mask';
|
|
19
|
+
/**
|
|
20
|
+
* 3DBox 位置定义
|
|
21
|
+
*/
|
|
22
|
+
export interface BoxPosition {
|
|
23
|
+
/** 起始点坐标 [x, y, z] */
|
|
24
|
+
start: ArrayPosition;
|
|
25
|
+
/** 结束点坐标 [x, y, z] */
|
|
26
|
+
end: ArrayPosition;
|
|
27
|
+
/** 旋转角度 [x, y, z](欧拉角) */
|
|
28
|
+
rotation: ArrayPosition;
|
|
29
|
+
}
|
|
30
|
+
/** 3DBox 标签 */
|
|
31
|
+
export type BoxTag<C extends TagContentType = TagContentType> = TagInstance<C, '3DBox'>;
|
|
32
|
+
/**
|
|
33
|
+
* Polygon 位置定义
|
|
34
|
+
* 多边形由多个点组成,至少需要 3 个点
|
|
35
|
+
*/
|
|
36
|
+
export type PolygonPosition = ArrayPosition[];
|
|
37
|
+
/** Polygon 标签 */
|
|
38
|
+
export type PolygonTag<C extends TagContentType = TagContentType> = TagInstance<C, 'Polygon'>;
|
|
39
|
+
/**
|
|
40
|
+
* Mask 位置定义
|
|
41
|
+
* Mask 标签的 position 由 mask 图和 color 计算得出,类型为普通的 Position
|
|
42
|
+
*/
|
|
43
|
+
export type MaskPosition = Position;
|
|
44
|
+
/** Mask 标签 */
|
|
45
|
+
export type MaskTag<C extends TagContentType = TagContentType> = TagInstance<C, 'Mask'>;
|
|
19
46
|
/**
|
|
20
47
|
* @description 标签 icon 动画配置
|
|
21
48
|
*/
|
|
@@ -67,6 +94,28 @@ export interface TagStyle {
|
|
|
67
94
|
*/
|
|
68
95
|
size?: 'S' | 'M' | 'L' | 'XL' | number;
|
|
69
96
|
} & TagIconUrl;
|
|
97
|
+
/** 3D Box 和Polygon样式 */
|
|
98
|
+
boxOrpolygon?: {
|
|
99
|
+
/** 填充颜色(十六进制) */
|
|
100
|
+
color?: number;
|
|
101
|
+
/** 填充透明度 0-1 */
|
|
102
|
+
opacity?: number;
|
|
103
|
+
/** 线条颜色(十六进制) */
|
|
104
|
+
lineColor?: number;
|
|
105
|
+
/** 线条宽度 */
|
|
106
|
+
lineWidth?: number;
|
|
107
|
+
};
|
|
108
|
+
/** Mask 标签样式 */
|
|
109
|
+
mask?: {
|
|
110
|
+
/** 高亮颜色(支持 RGB 数组、十六进制数字、#FFFFFF 格式字符串) */
|
|
111
|
+
color?: [number, number, number] | number | string;
|
|
112
|
+
/** 透明度 0-1,用于填充区域;描边区域始终完全不透明 */
|
|
113
|
+
opacity?: number;
|
|
114
|
+
/** 颜色匹配容差(归一化值 0-1,默认 0.001) */
|
|
115
|
+
tolerance?: number;
|
|
116
|
+
/** @deprecated 使用 color 代替 */
|
|
117
|
+
highlightColor?: [number, number, number] | number;
|
|
118
|
+
};
|
|
70
119
|
}
|
|
71
120
|
export type TagGLTFObject = GLTFObject & {
|
|
72
121
|
customID: number | string;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as o from "three";
|
|
2
|
-
import { arrayPositionToVector3 as
|
|
3
|
-
function M(
|
|
4
|
-
|
|
5
|
-
const
|
|
2
|
+
import { arrayPositionToVector3 as p } from "../../shared-utils/positionToVector3.js";
|
|
3
|
+
function M(l, y) {
|
|
4
|
+
y.forEach((s) => {
|
|
5
|
+
const c = new o.SphereGeometry(0.02, 16, 16), r = [], n = [
|
|
6
6
|
new o.MeshBasicMaterial({ color: 16776960 }),
|
|
7
7
|
// 黄
|
|
8
8
|
new o.MeshBasicMaterial({ color: 16711935 }),
|
|
@@ -12,17 +12,31 @@ function M(h, p) {
|
|
|
12
12
|
new o.MeshBasicMaterial({ color: 65535 })
|
|
13
13
|
// 蓝
|
|
14
14
|
];
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
if (s.stickType === "3DBox") {
|
|
16
|
+
const e = s.position;
|
|
17
|
+
if (e != null && e.start && (e != null && e.end)) {
|
|
18
|
+
const i = new o.Mesh(c, n[0]);
|
|
19
|
+
i.position.copy(p(e.start)), r.push(i);
|
|
20
|
+
const t = new o.Mesh(c, n[1]);
|
|
21
|
+
t.position.copy(p(e.end)), r.push(t);
|
|
22
|
+
}
|
|
23
|
+
} else if (s.stickType === "Polygon") {
|
|
24
|
+
const e = s.position;
|
|
25
|
+
Array.isArray(e) && e.length > 0 && e.forEach((i, t) => {
|
|
26
|
+
const a = n[t % n.length], h = new o.Mesh(c, a);
|
|
27
|
+
h.position.copy(p(i)), r.push(h);
|
|
19
28
|
});
|
|
20
|
-
else
|
|
21
|
-
|
|
22
|
-
|
|
29
|
+
} else if (Array.isArray(s.position) && s.position.length === 4)
|
|
30
|
+
s.position.forEach((e, i) => {
|
|
31
|
+
const t = n[i], a = new o.Mesh(c, t);
|
|
32
|
+
a.position.copy(p(e)), r.push(a);
|
|
33
|
+
});
|
|
34
|
+
else if (Array.isArray(s.position)) {
|
|
35
|
+
const e = n[0], i = new o.Mesh(c, e);
|
|
36
|
+
i.position.copy(p(s.position)), r.push(i);
|
|
23
37
|
}
|
|
24
|
-
|
|
25
|
-
e.material.depthTest = !1,
|
|
38
|
+
r.forEach((e) => {
|
|
39
|
+
e.material.depthTest = !1, l.scene.add(e);
|
|
26
40
|
});
|
|
27
41
|
});
|
|
28
42
|
}
|
|
@@ -1,34 +1,37 @@
|
|
|
1
|
-
import { addDebugPoints as
|
|
2
|
-
import { noTypecheck as
|
|
1
|
+
import { addDebugPoints as p } from "./addDebugPoints.js";
|
|
2
|
+
import { noTypecheck as s } from "./noTypecheck.js";
|
|
3
3
|
import { planeNormal as f } from "./planeNormal.js";
|
|
4
|
-
import {
|
|
5
|
-
import { checkRange as
|
|
6
|
-
import { normalPositionToPositions as
|
|
7
|
-
import { debounce as
|
|
8
|
-
import { throttle as
|
|
9
|
-
import { binarySearchFirstBig as
|
|
10
|
-
import { formatVideo as
|
|
4
|
+
import { applyMatrixToPoints as l, getBoxCorners as u, getTagCenterPosition as T, getTagPosition as c } from "./tagPosition.js";
|
|
5
|
+
import { checkRange as b } from "./checkRange.js";
|
|
6
|
+
import { normalPositionToPositions as P } from "./normalPositionToPositions.js";
|
|
7
|
+
import { debounce as y, debounceByKey as B } from "./debounce.js";
|
|
8
|
+
import { throttle as C } from "./throttle.js";
|
|
9
|
+
import { binarySearchFirstBig as I, searchFirstValueSmallThanLastValue as S } from "./search.js";
|
|
10
|
+
import { formatVideo as D, getVideoThumbnail as K, getVimeoId as L, getYouTubeId as M, isVimeo as N, isYouTube as R } from "./videoHelper.js";
|
|
11
11
|
import "three";
|
|
12
12
|
import "../../shared-utils/positionToVector3.js";
|
|
13
13
|
import "../../shared-utils/three/centerPoint.js";
|
|
14
14
|
import "./tag/tagCheck.js";
|
|
15
|
+
import "../../shared-utils/five/transformPosition.js";
|
|
15
16
|
export {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
17
|
+
p as addDebugPoints,
|
|
18
|
+
l as applyMatrixToPoints,
|
|
19
|
+
I as binarySearchFirstBig,
|
|
20
|
+
b as checkRange,
|
|
21
|
+
y as debounce,
|
|
22
|
+
B as debounceByKey,
|
|
23
|
+
D as formatVideo,
|
|
24
|
+
u as getBoxCorners,
|
|
25
|
+
T as getTagCenterPosition,
|
|
26
|
+
c as getTagPosition,
|
|
27
|
+
K as getVideoThumbnail,
|
|
28
|
+
L as getVimeoId,
|
|
29
|
+
M as getYouTubeId,
|
|
30
|
+
N as isVimeo,
|
|
31
|
+
R as isYouTube,
|
|
32
|
+
s as noTypecheck,
|
|
33
|
+
P as normalPositionToPositions,
|
|
31
34
|
f as planeNormal,
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
S as searchFirstValueSmallThanLastValue,
|
|
36
|
+
C as throttle
|
|
34
37
|
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as t from "three";
|
|
2
|
+
function E(r, p) {
|
|
3
|
+
const s = new t.Vector3().subVectors(p, r[0]), y = r.map((n) => n.clone().add(s)), i = [...r, ...y], e = new t.Vector3();
|
|
4
|
+
i.forEach((n) => e.add(n)), e.divideScalar(8);
|
|
5
|
+
const x = new t.Vector3().subVectors(r[1], r[0]).clone().normalize(), l = s.clone().normalize(), V = new t.Vector3().crossVectors(x, l).normalize(), h = new t.Matrix4().makeBasis(x, l, V), m = new t.Quaternion().setFromRotationMatrix(h), a = new t.Euler().setFromQuaternion(m), w = m.clone().inverse(), c = i.map((n) => n.clone().sub(e).applyQuaternion(w)), u = c.map((n) => n.x), z = c.map((n) => n.y), d = c.map((n) => n.z), o = new t.Vector3(
|
|
6
|
+
(Math.max(...u) - Math.min(...u)) / 2,
|
|
7
|
+
(Math.max(...z) - Math.min(...z)) / 2,
|
|
8
|
+
(Math.max(...d) - Math.min(...d)) / 2
|
|
9
|
+
), M = new t.Vector3(e.x - o.x, e.y - o.y, e.z - o.z), A = new t.Vector3(e.x + o.x, e.y + o.y, e.z + o.z);
|
|
10
|
+
return {
|
|
11
|
+
start: M.toArray(),
|
|
12
|
+
end: A.toArray(),
|
|
13
|
+
rotation: [a.x, a.y, a.z]
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
E as sculptDataToBoxPosition
|
|
18
|
+
};
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { TagContentType, TagInstance } from '../../typings';
|
|
2
2
|
import type { ModelTagInterface } from '../../controller/Tag/ModelTag';
|
|
3
3
|
import type { PlaneTagInterface } from '../../controller/Tag/PlaneTag';
|
|
4
|
+
import type { PolygonTagInterface } from '../../controller/Tag/PolygonTag';
|
|
5
|
+
import type { BoxTagInterface } from '../../controller/Tag/BoxTag';
|
|
6
|
+
import type { MaskTagInterface } from '../../controller/Tag/MaskTag';
|
|
4
7
|
export declare function isPlaneTag<T extends TagContentType>(tag: TagInstance<T>): tag is PlaneTagInterface<T>;
|
|
5
8
|
export declare function isPoint3DTag<T extends TagContentType>(tag: TagInstance<T>): tag is TagInstance<T, '3DPoint'>;
|
|
6
9
|
export declare function is3DTag<T extends TagContentType>(tag: TagInstance): tag is TagInstance<T, '3DPoint'> | TagInstance<T, 'Plane'>;
|
|
7
10
|
export declare function isMediaModelTag(tag: TagInstance): tag is ModelTagInterface<'MediaModel'>;
|
|
8
11
|
export declare function isModelTag(tag: TagInstance): tag is ModelTagInterface<'Model'>;
|
|
9
12
|
export declare function isMediaPlaneTag(tag: TagInstance): tag is PlaneTagInterface<'MediaModel'>;
|
|
13
|
+
export declare function isPolygonTag(tag: TagInstance): tag is PolygonTagInterface;
|
|
14
|
+
export declare function is3DBoxTag(tag: TagInstance): tag is BoxTagInterface;
|
|
15
|
+
export declare function isMaskTag(tag: TagInstance): tag is MaskTagInterface;
|
|
@@ -1,26 +1,38 @@
|
|
|
1
|
-
function n
|
|
2
|
-
return
|
|
1
|
+
function e(n) {
|
|
2
|
+
return n.stickType === "Plane";
|
|
3
3
|
}
|
|
4
|
-
function i(
|
|
5
|
-
return
|
|
4
|
+
function i(n) {
|
|
5
|
+
return n.stickType === "3DPoint";
|
|
6
6
|
}
|
|
7
|
-
function t(
|
|
8
|
-
return
|
|
7
|
+
function t(n) {
|
|
8
|
+
return n.stickType === "3DPoint" || n.stickType === "Plane";
|
|
9
9
|
}
|
|
10
|
-
function o(
|
|
11
|
-
return
|
|
10
|
+
function o(n) {
|
|
11
|
+
return n.stickType === "Model" && n.contentType === "MediaModel";
|
|
12
12
|
}
|
|
13
|
-
function c(
|
|
14
|
-
return
|
|
13
|
+
function c(n) {
|
|
14
|
+
return n.stickType === "Model" && n.contentType === "Model";
|
|
15
15
|
}
|
|
16
|
-
function T(
|
|
17
|
-
return
|
|
16
|
+
function T(n) {
|
|
17
|
+
return n.stickType === "Plane" && n.contentType === "MediaPlane";
|
|
18
|
+
}
|
|
19
|
+
function s(n) {
|
|
20
|
+
return n.stickType === "Polygon";
|
|
21
|
+
}
|
|
22
|
+
function r(n) {
|
|
23
|
+
return n.stickType === "3DBox";
|
|
24
|
+
}
|
|
25
|
+
function u(n) {
|
|
26
|
+
return n.stickType === "Mask";
|
|
18
27
|
}
|
|
19
28
|
export {
|
|
29
|
+
r as is3DBoxTag,
|
|
20
30
|
t as is3DTag,
|
|
31
|
+
u as isMaskTag,
|
|
21
32
|
o as isMediaModelTag,
|
|
22
33
|
T as isMediaPlaneTag,
|
|
23
34
|
c as isModelTag,
|
|
24
|
-
|
|
25
|
-
i as isPoint3DTag
|
|
35
|
+
e as isPlaneTag,
|
|
36
|
+
i as isPoint3DTag,
|
|
37
|
+
s as isPolygonTag
|
|
26
38
|
};
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import { Vector3 } from 'three';
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import type { Vector3 } from 'three';
|
|
2
|
+
import { Matrix4 } from 'three';
|
|
3
|
+
import type { TagInstance, BoxPosition } from '../typings';
|
|
4
|
+
/**
|
|
5
|
+
* 计算 BoxPosition 的8个角点
|
|
6
|
+
*/
|
|
7
|
+
export declare function getBoxCorners(boxPosition: BoxPosition, transform: Matrix4): Vector3[];
|
|
8
|
+
/**
|
|
9
|
+
* 应用 matrix 变换到点数组
|
|
10
|
+
*/
|
|
11
|
+
export declare function applyMatrixToPoints(points: Vector3[], matrix?: number[]): Vector3[];
|
|
12
|
+
export declare function getTagPosition(tag: TagInstance): Vector3 | [Vector3, Vector3, Vector3, Vector3] | Vector3[];
|
|
4
13
|
export declare function getTagCenterPosition(tag: TagInstance): Vector3;
|
|
@@ -1,22 +1,55 @@
|
|
|
1
|
-
import { Matrix4 as
|
|
2
|
-
import { centerPoint as
|
|
3
|
-
import { isMediaModelTag as
|
|
4
|
-
import { anyPositionToVector3 as
|
|
5
|
-
|
|
1
|
+
import { Euler as y, Vector3 as t, Matrix4 as p } from "three";
|
|
2
|
+
import { centerPoint as x } from "../../shared-utils/three/centerPoint.js";
|
|
3
|
+
import { is3DBoxTag as M, isPolygonTag as d, isMediaModelTag as P, isMaskTag as T } from "./tag/tagCheck.js";
|
|
4
|
+
import { anyPositionToVector3 as a, vector3Position as z } from "../../shared-utils/positionToVector3.js";
|
|
5
|
+
import { transformPosition as A } from "../../shared-utils/five/transformPosition.js";
|
|
6
|
+
function h(o, i) {
|
|
7
|
+
const n = a(o.start), r = a(o.end), e = new y().fromArray(o.rotation), s = A(new t((n.x + r.x) / 2, (n.y + r.y) / 2, (n.z + r.z) / 2), i), m = new t(Math.abs(r.x - n.x) / 2, Math.abs(r.y - n.y) / 2, Math.abs(r.z - n.z) / 2), u = new p().makeRotationFromEuler(e), f = [
|
|
8
|
+
// 底面4个点 (y = -0.5)
|
|
9
|
+
new t(-0.5, -0.5, -0.5),
|
|
10
|
+
new t(0.5, -0.5, -0.5),
|
|
11
|
+
new t(0.5, -0.5, 0.5),
|
|
12
|
+
new t(-0.5, -0.5, 0.5),
|
|
13
|
+
// 顶面4个点 (y = 0.5)
|
|
14
|
+
new t(-0.5, 0.5, -0.5),
|
|
15
|
+
new t(0.5, 0.5, -0.5),
|
|
16
|
+
new t(0.5, 0.5, 0.5),
|
|
17
|
+
new t(-0.5, 0.5, 0.5)
|
|
18
|
+
], l = m.clone().multiplyScalar(2);
|
|
19
|
+
return f.map((w) => w.clone().multiply(l).applyMatrix4(u).add(s));
|
|
20
|
+
}
|
|
21
|
+
function c(o, i) {
|
|
22
|
+
if (!i)
|
|
23
|
+
return o;
|
|
24
|
+
const n = new p().fromArray(i);
|
|
25
|
+
return o.map((r) => r.clone().applyMatrix4(n));
|
|
26
|
+
}
|
|
27
|
+
function k(o) {
|
|
6
28
|
const i = (() => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
29
|
+
var n, r;
|
|
30
|
+
if (M(o) && o.position) {
|
|
31
|
+
const e = h(o.position, (r = (n = o.plugin) == null ? void 0 : n.workUtil) == null ? void 0 : r.transform);
|
|
32
|
+
return c(e, o.matrix);
|
|
33
|
+
}
|
|
34
|
+
if (d(o) && o.position) {
|
|
35
|
+
const e = o.position.map((s) => a(s));
|
|
36
|
+
return c(e, o.matrix);
|
|
37
|
+
}
|
|
38
|
+
if (P(o) && o.matrix) {
|
|
39
|
+
const e = o.data.mediaPosition.map((s) => a(s));
|
|
40
|
+
return c(e, o.matrix);
|
|
41
|
+
}
|
|
42
|
+
return T(o) ? o.position && Array.isArray(o.position) ? a(o.position) : (console.warn("[getTagPosition] Mask tag without position, tag id:", o.id), new t(0, 0, 0)) : o.position;
|
|
12
43
|
})();
|
|
13
|
-
return
|
|
44
|
+
return z(i);
|
|
14
45
|
}
|
|
15
|
-
function
|
|
16
|
-
const i =
|
|
17
|
-
return
|
|
46
|
+
function v(o) {
|
|
47
|
+
const i = k(o);
|
|
48
|
+
return x(...Array.isArray(i) ? i : [i]);
|
|
18
49
|
}
|
|
19
50
|
export {
|
|
20
|
-
|
|
21
|
-
|
|
51
|
+
c as applyMatrixToPoints,
|
|
52
|
+
h as getBoxCorners,
|
|
53
|
+
v as getTagCenterPosition,
|
|
54
|
+
k as getTagPosition
|
|
22
55
|
};
|
package/libs/base/BasePlugin.js
CHANGED
package/libs/index.d.ts
CHANGED