@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.
Files changed (74) hide show
  1. package/CHANGELOG.md +20 -11
  2. package/dist/DigitalPerformancePlugin/controller/index.d.ts +224 -0
  3. package/dist/DigitalPerformancePlugin/core/DigitalHuman.d.ts +55 -0
  4. package/dist/DigitalPerformancePlugin/core/DigitalPlayground.d.ts +40 -0
  5. package/dist/DigitalPerformancePlugin/core/DigitalStateMachine.d.ts +150 -0
  6. package/dist/DigitalPerformancePlugin/core/Trace.d.ts +9 -0
  7. package/dist/DigitalPerformancePlugin/index.d.ts +11 -0
  8. package/dist/DigitalPerformancePlugin/mock.d.ts +76 -0
  9. package/dist/DigitalPerformancePlugin/typings/index.d.ts +79 -0
  10. package/dist/PanoTagPlugin/controller/Tag/BaseTag.d.ts +5 -1
  11. package/dist/PanoTagPlugin/controller/Tag/BoxTag.d.ts +119 -0
  12. package/dist/PanoTagPlugin/controller/Tag/MaskTag.d.ts +257 -0
  13. package/dist/PanoTagPlugin/controller/Tag/MaskTag.shaders.d.ts +10 -0
  14. package/dist/PanoTagPlugin/controller/Tag/PolygonTag.d.ts +112 -0
  15. package/dist/PanoTagPlugin/controller/TagRender.d.ts +1 -1
  16. package/dist/PanoTagPlugin/controller/index.d.ts +55 -2
  17. package/dist/PanoTagPlugin/typings/controller.d.ts +10 -0
  18. package/dist/PanoTagPlugin/typings/tag/Tag.d.ts +8 -3
  19. package/dist/PanoTagPlugin/typings/tag/Utils.d.ts +50 -1
  20. package/dist/PanoTagPlugin/utils/sculptDataToBoxPosition.d.ts +6 -0
  21. package/dist/PanoTagPlugin/utils/tag/tagCheck.d.ts +6 -0
  22. package/dist/PanoTagPlugin/utils/tagPosition.d.ts +12 -3
  23. package/dist/index.cjs.js +188 -92
  24. package/dist/index.d.ts +1 -0
  25. package/dist/index.js +17508 -14249
  26. package/dist/index.umd.js +184 -88
  27. package/libs/CruisePlugin/Move.js +7 -2
  28. package/libs/CruisePlugin/Work.js +7 -2
  29. package/libs/CruisePlugin/index.js +11 -6
  30. package/libs/DigitalPerformancePlugin/controller/index.d.ts +2 -2
  31. package/libs/DigitalPerformancePlugin/controller/index.js +164 -173
  32. package/libs/DigitalPerformancePlugin/core/DigitalHuman.d.ts +16 -6
  33. package/libs/DigitalPerformancePlugin/core/DigitalHuman.js +128 -102
  34. package/libs/DigitalPerformancePlugin/core/DigitalPlayground.d.ts +11 -5
  35. package/libs/DigitalPerformancePlugin/core/DigitalPlayground.js +84 -74
  36. package/libs/DigitalPerformancePlugin/core/DigitalStateMachine.d.ts +7 -0
  37. package/libs/DigitalPerformancePlugin/mock.d.ts +6 -0
  38. package/libs/DigitalPerformancePlugin/mock.js +272 -274
  39. package/libs/GuideLinePlugin/Controller.js +9 -4
  40. package/libs/GuideLinePlugin/GuideLineItem.js +7 -2
  41. package/libs/GuideLinePlugin/GuideLineModeItem.js +7 -2
  42. package/libs/GuideLinePlugin/index.js +11 -6
  43. package/libs/PanoTagPlugin/Components/TagItem.js +122 -122
  44. package/libs/PanoTagPlugin/controller/Tag/BaseTag.d.ts +5 -1
  45. package/libs/PanoTagPlugin/controller/Tag/BaseTag.js +320 -289
  46. package/libs/PanoTagPlugin/controller/Tag/BoxTag.d.ts +119 -0
  47. package/libs/PanoTagPlugin/controller/Tag/BoxTag.js +515 -0
  48. package/libs/PanoTagPlugin/controller/Tag/MaskTag.d.ts +257 -0
  49. package/libs/PanoTagPlugin/controller/Tag/MaskTag.js +815 -0
  50. package/libs/PanoTagPlugin/controller/Tag/MaskTag.shaders.d.ts +10 -0
  51. package/libs/PanoTagPlugin/controller/Tag/MaskTag.shaders.js +94 -0
  52. package/libs/PanoTagPlugin/controller/Tag/PolygonTag.d.ts +112 -0
  53. package/libs/PanoTagPlugin/controller/Tag/PolygonTag.js +478 -0
  54. package/libs/PanoTagPlugin/controller/TagRender.d.ts +1 -1
  55. package/libs/PanoTagPlugin/controller/TagUtil.js +19 -17
  56. package/libs/PanoTagPlugin/controller/index.d.ts +55 -2
  57. package/libs/PanoTagPlugin/controller/index.js +261 -148
  58. package/libs/PanoTagPlugin/index.js +16 -11
  59. package/libs/PanoTagPlugin/typings/controller.d.ts +10 -0
  60. package/libs/PanoTagPlugin/typings/tag/Tag.d.ts +8 -3
  61. package/libs/PanoTagPlugin/typings/tag/Utils.d.ts +50 -1
  62. package/libs/PanoTagPlugin/utils/addDebugPoints.js +27 -13
  63. package/libs/PanoTagPlugin/utils/index.js +29 -26
  64. package/libs/PanoTagPlugin/utils/sculptDataToBoxPosition.d.ts +6 -0
  65. package/libs/PanoTagPlugin/utils/sculptDataToBoxPosition.js +18 -0
  66. package/libs/PanoTagPlugin/utils/tag/tagCheck.d.ts +6 -0
  67. package/libs/PanoTagPlugin/utils/tag/tagCheck.js +26 -14
  68. package/libs/PanoTagPlugin/utils/tagPosition.d.ts +12 -3
  69. package/libs/PanoTagPlugin/utils/tagPosition.js +49 -16
  70. package/libs/base/BasePlugin.js +1 -1
  71. package/libs/index.d.ts +1 -0
  72. package/libs/index.js +166 -150
  73. package/libs/shared-utils/logger.js +1 -1
  74. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  import r from "./controller/index.js";
2
- import { pluginFlag as Li } from "./controller/index.js";
3
- import { defaultGlobalConfig as Ni } from "./typings/tag/TagConfig.js";
4
- import { ContentType as Qi, DimensionType as Ri, PointType as Si } from "./Archive/deprecated.js";
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 Ii = (o, t) => new r(o, t);
311
+ const Ni = (o, t) => new r(o, t);
307
312
  export {
308
- Qi as ContentType,
309
- Ri as DimensionType,
310
- Ii as PanoTagPlugin,
313
+ Wi as ContentType,
314
+ Xi as DimensionType,
315
+ Ni as PanoTagPlugin,
311
316
  r as PanoTagPluginController,
312
- Si as PointType,
313
- Ii as default,
314
- Ni as defaultGlobalConfig,
315
- Li as pluginFlag
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) & (S extends 'Model' ? {
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 c } from "../../shared-utils/positionToVector3.js";
3
- function M(h, p) {
4
- p.forEach((t) => {
5
- const r = new o.SphereGeometry(0.02, 16, 16), i = [], a = [
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 (t.position.length === 4)
16
- t.position.forEach((e, s) => {
17
- const l = a[s], n = new o.Mesh(r, l);
18
- n.position.copy(c(e)), i.push(n);
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
- const e = a[0], s = new o.Mesh(r, e);
22
- s.position.copy(c(t.position)), i.push(s);
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
- i.forEach((e) => {
25
- e.material.depthTest = !1, h.scene.add(e);
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 a } from "./addDebugPoints.js";
2
- import { noTypecheck as n } from "./noTypecheck.js";
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 { getTagCenterPosition as u, getTagPosition as x } from "./tagPosition.js";
5
- import { checkRange as c } from "./checkRange.js";
6
- import { normalPositionToPositions as T } from "./normalPositionToPositions.js";
7
- import { debounce as h, debounceByKey as V } from "./debounce.js";
8
- import { throttle as y } from "./throttle.js";
9
- import { binarySearchFirstBig as B, searchFirstValueSmallThanLastValue as F } from "./search.js";
10
- import { formatVideo as S, getVideoThumbnail as Y, getVimeoId as C, getYouTubeId as D, isVimeo as K, isYouTube as L } from "./videoHelper.js";
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
- a as addDebugPoints,
17
- B as binarySearchFirstBig,
18
- c as checkRange,
19
- h as debounce,
20
- V as debounceByKey,
21
- S as formatVideo,
22
- u as getTagCenterPosition,
23
- x as getTagPosition,
24
- Y as getVideoThumbnail,
25
- C as getVimeoId,
26
- D as getYouTubeId,
27
- K as isVimeo,
28
- L as isYouTube,
29
- n as noTypecheck,
30
- T as normalPositionToPositions,
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
- F as searchFirstValueSmallThanLastValue,
33
- y as throttle
35
+ S as searchFirstValueSmallThanLastValue,
36
+ C as throttle
34
37
  };
@@ -0,0 +1,6 @@
1
+ import * as THREE from 'three';
2
+ import type { BoxPosition } from '../typings';
3
+ /**
4
+ * 将 Sculpt 数据转换为 BoxPosition
5
+ */
6
+ export declare function sculptDataToBoxPosition(bottomPoints: THREE.Vector3[], heightPoint: THREE.Vector3): BoxPosition;
@@ -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(e) {
2
- return e.stickType === "Plane";
1
+ function e(n) {
2
+ return n.stickType === "Plane";
3
3
  }
4
- function i(e) {
5
- return e.stickType === "3DPoint";
4
+ function i(n) {
5
+ return n.stickType === "3DPoint";
6
6
  }
7
- function t(e) {
8
- return e.stickType === "3DPoint" || e.stickType === "Plane";
7
+ function t(n) {
8
+ return n.stickType === "3DPoint" || n.stickType === "Plane";
9
9
  }
10
- function o(e) {
11
- return e.stickType === "Model" && e.contentType === "MediaModel";
10
+ function o(n) {
11
+ return n.stickType === "Model" && n.contentType === "MediaModel";
12
12
  }
13
- function c(e) {
14
- return e.stickType === "Model" && e.contentType === "Model";
13
+ function c(n) {
14
+ return n.stickType === "Model" && n.contentType === "Model";
15
15
  }
16
- function T(e) {
17
- return e.stickType === "Plane" && e.contentType === "MediaPlane";
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
- n as isPlaneTag,
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 type { TagInstance } from '../typings';
3
- export declare function getTagPosition(tag: TagInstance): Vector3 | [Vector3, Vector3, Vector3, Vector3];
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 n } from "three";
2
- import { centerPoint as e } from "../../shared-utils/three/centerPoint.js";
3
- import { isMediaModelTag as a } from "./tag/tagCheck.js";
4
- import { anyPositionToVector3 as m, vector3Position as s } from "../../shared-utils/positionToVector3.js";
5
- function p(o) {
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
- if (a(o) && o.matrix) {
8
- const r = new n().fromArray(o.matrix);
9
- return o.data.mediaPosition.map((t) => m(t).clone().applyMatrix4(r));
10
- } else
11
- return o.position;
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 s(i);
44
+ return z(i);
14
45
  }
15
- function x(o) {
16
- const i = p(o);
17
- return e(...Array.isArray(i) ? i : [i]);
46
+ function v(o) {
47
+ const i = k(o);
48
+ return x(...Array.isArray(i) ? i : [i]);
18
49
  }
19
50
  export {
20
- x as getTagCenterPosition,
21
- p as getTagPosition
51
+ c as applyMatrixToPoints,
52
+ h as getBoxCorners,
53
+ v as getTagCenterPosition,
54
+ k as getTagPosition
22
55
  };
@@ -23,7 +23,7 @@ let I = class {
23
23
  /**
24
24
  * @realsee/dnalogel 版本号
25
25
  */
26
- r(this, "VERSION", "3.77.4");
26
+ r(this, "VERSION", "3.77.6");
27
27
  r(this, "NAME");
28
28
  r(this, "five");
29
29
  r(this, "workUtil");
package/libs/index.d.ts CHANGED
@@ -27,4 +27,5 @@ export * from './AreaMakerPlugin';
27
27
  export * from './CurrentPanoImagePlugin';
28
28
  export * from './Sculpt';
29
29
  export * from './ModelMakerPlugin';
30
+ export * from './DigitalPerformancePlugin';
30
31
  export * as Util from './shared-utils/exports';