@realsee/dnalogel 3.77.5 → 3.77.7

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 (145) hide show
  1. package/CHANGELOG.md +17 -11
  2. package/dist/PanoTagPlugin/controller/Tag/BaseTag.d.ts +5 -1
  3. package/dist/PanoTagPlugin/controller/Tag/BoxTag.d.ts +119 -0
  4. package/dist/PanoTagPlugin/controller/Tag/MaskTag.d.ts +257 -0
  5. package/dist/PanoTagPlugin/controller/Tag/MaskTag.shaders.d.ts +10 -0
  6. package/dist/PanoTagPlugin/controller/Tag/PolygonTag.d.ts +112 -0
  7. package/dist/PanoTagPlugin/controller/TagRender.d.ts +1 -1
  8. package/dist/PanoTagPlugin/controller/index.d.ts +55 -2
  9. package/dist/PanoTagPlugin/typings/controller.d.ts +10 -0
  10. package/dist/PanoTagPlugin/typings/tag/Tag.d.ts +8 -3
  11. package/dist/PanoTagPlugin/typings/tag/Utils.d.ts +50 -1
  12. package/dist/PanoTagPlugin/utils/sculptDataToBoxPosition.d.ts +6 -0
  13. package/dist/PanoTagPlugin/utils/tag/tagCheck.d.ts +6 -0
  14. package/dist/PanoTagPlugin/utils/tagPosition.d.ts +12 -3
  15. package/dist/Sculpt/Meshes/Line.d.ts +4 -0
  16. package/dist/index.cjs.js +178 -95
  17. package/dist/index.js +11378 -9801
  18. package/dist/index.umd.js +173 -90
  19. package/dist/shared-utils/five/getFiveFromParentChain.d.ts +7 -0
  20. package/libs/AreaMakerPlugin/Controller.js +3 -2
  21. package/libs/AreaMakerPlugin/index.js +3 -2
  22. package/libs/AreaMakerPlugin/utils/Item.js +3 -2
  23. package/libs/CSS3DRenderPlugin/Controller.js +3 -2
  24. package/libs/CSS3DRenderPlugin/index.js +6 -5
  25. package/libs/CSS3DRenderPlugin/utils/three/CSS3DObject.js +39 -38
  26. package/libs/CSS3DRenderPlugin/utils/three/CSS3DRender.js +10 -9
  27. package/libs/CruisePlugin/BaseController.js +5 -4
  28. package/libs/CruisePlugin/Move.js +8 -2
  29. package/libs/CruisePlugin/Work.js +8 -2
  30. package/libs/CruisePlugin/index.js +12 -6
  31. package/libs/CurrentPanoImagePlugin/Controller.js +15 -14
  32. package/libs/CurrentPanoImagePlugin/index.js +4 -3
  33. package/libs/GuideLinePlugin/Controller.js +10 -4
  34. package/libs/GuideLinePlugin/GuideLineItem.js +8 -2
  35. package/libs/GuideLinePlugin/GuideLineModeItem.js +8 -2
  36. package/libs/GuideLinePlugin/index.js +12 -6
  37. package/libs/MeasurePlugin/Controller.js +11 -10
  38. package/libs/MeasurePlugin/index.js +5 -4
  39. package/libs/MeasurePlugin/utils/MeasureMesh.js +3 -2
  40. package/libs/ModelChassisCompassPlugin/Plugin.js +4 -3
  41. package/libs/ModelChassisCompassPlugin/index.js +1 -0
  42. package/libs/ModelEntryDoorGuidePlugin/Plugin.js +6 -5
  43. package/libs/ModelEntryDoorGuidePlugin/index.js +1 -0
  44. package/libs/ModelMakerPlugin/Controller.js +3 -2
  45. package/libs/ModelMakerPlugin/index.js +3 -2
  46. package/libs/ModelMakerPlugin/item/baseItem.js +3 -2
  47. package/libs/ModelMakerPlugin/item/boxItem.js +3 -2
  48. package/libs/ModelMakerPlugin/item/polygonItem.js +3 -2
  49. package/libs/ModelMakerPlugin/item/prismItem.js +3 -2
  50. package/libs/ModelTVVideoPlugin/Plugin.js +4 -3
  51. package/libs/ModelTVVideoPlugin/index.js +3 -2
  52. package/libs/ModelViewPlugin/Plugin.js +20 -19
  53. package/libs/ModelViewPlugin/index.js +1 -0
  54. package/libs/Object3DHelperPlugin/Controller.js +3 -2
  55. package/libs/Object3DHelperPlugin/index.js +6 -5
  56. package/libs/PanoCompassPlugin/Controller.js +3 -2
  57. package/libs/PanoCompassPlugin/index.js +4 -3
  58. package/libs/PanoDoorLabelPlugin/Controller.js +24 -23
  59. package/libs/PanoDoorLabelPlugin/index.js +4 -3
  60. package/libs/PanoMeasurePlugin/Components/Controller0.js +3 -2
  61. package/libs/PanoMeasurePlugin/Components/Controller1.js +3 -2
  62. package/libs/PanoMeasurePlugin/Controller/EditController.js +3 -2
  63. package/libs/PanoMeasurePlugin/Controller/WatchController.js +3 -2
  64. package/libs/PanoMeasurePlugin/Controller/index.js +3 -2
  65. package/libs/PanoMeasurePlugin/Model/area.js +3 -2
  66. package/libs/PanoMeasurePlugin/Modules/Magnifier.js +1 -0
  67. package/libs/PanoMeasurePlugin/Modules/UIController/index.js +16 -15
  68. package/libs/PanoMeasurePlugin/index.js +14 -13
  69. package/libs/PanoMeasurePlugin/utils/dom/areaDom.js +3 -2
  70. package/libs/PanoRulerProPlugin/Controller.js +3 -2
  71. package/libs/PanoRulerProPlugin/RulerItems.js +42 -41
  72. package/libs/PanoRulerProPlugin/index.js +4 -3
  73. package/libs/PanoSpatialTagPlugin/Plugin.js +34 -33
  74. package/libs/PanoSpatialTagPlugin/index.js +1 -0
  75. package/libs/PanoTagPlugin/Components/Common/TagPoint.js +3 -2
  76. package/libs/PanoTagPlugin/Components/Common/TagPopover/PopoverContent.js +3 -2
  77. package/libs/PanoTagPlugin/Components/Common/TagPopover/TagPopoverToolBar.js +3 -2
  78. package/libs/PanoTagPlugin/Components/Common/TagPopover/index.js +3 -2
  79. package/libs/PanoTagPlugin/Components/Tag/MarketingTag.js +3 -2
  80. package/libs/PanoTagPlugin/Components/Tag/index.js +3 -2
  81. package/libs/PanoTagPlugin/Components/TagContainer.js +3 -2
  82. package/libs/PanoTagPlugin/Components/TagItem.js +125 -124
  83. package/libs/PanoTagPlugin/controller/Tag/BaseTag.d.ts +5 -1
  84. package/libs/PanoTagPlugin/controller/Tag/BaseTag.js +321 -289
  85. package/libs/PanoTagPlugin/controller/Tag/BoxTag.d.ts +119 -0
  86. package/libs/PanoTagPlugin/controller/Tag/BoxTag.js +516 -0
  87. package/libs/PanoTagPlugin/controller/Tag/MaskTag.d.ts +257 -0
  88. package/libs/PanoTagPlugin/controller/Tag/MaskTag.js +816 -0
  89. package/libs/PanoTagPlugin/controller/Tag/MaskTag.shaders.d.ts +10 -0
  90. package/libs/PanoTagPlugin/controller/Tag/MaskTag.shaders.js +94 -0
  91. package/libs/PanoTagPlugin/controller/Tag/ModelTag.js +3 -2
  92. package/libs/PanoTagPlugin/controller/Tag/PlaneTag.js +3 -2
  93. package/libs/PanoTagPlugin/controller/Tag/PointTag.js +3 -2
  94. package/libs/PanoTagPlugin/controller/Tag/PolygonTag.d.ts +112 -0
  95. package/libs/PanoTagPlugin/controller/Tag/PolygonTag.js +479 -0
  96. package/libs/PanoTagPlugin/controller/TagRender.d.ts +1 -1
  97. package/libs/PanoTagPlugin/controller/TagRender.js +3 -2
  98. package/libs/PanoTagPlugin/controller/TagUtil.js +22 -19
  99. package/libs/PanoTagPlugin/controller/index.d.ts +55 -2
  100. package/libs/PanoTagPlugin/controller/index.js +243 -129
  101. package/libs/PanoTagPlugin/index.js +17 -11
  102. package/libs/PanoTagPlugin/typings/controller.d.ts +10 -0
  103. package/libs/PanoTagPlugin/typings/tag/Tag.d.ts +8 -3
  104. package/libs/PanoTagPlugin/typings/tag/Utils.d.ts +50 -1
  105. package/libs/PanoTagPlugin/utils/addDebugPoints.js +27 -13
  106. package/libs/PanoTagPlugin/utils/index.js +29 -26
  107. package/libs/PanoTagPlugin/utils/sculptDataToBoxPosition.d.ts +6 -0
  108. package/libs/PanoTagPlugin/utils/sculptDataToBoxPosition.js +18 -0
  109. package/libs/PanoTagPlugin/utils/tag/calculateTagConfig.js +3 -2
  110. package/libs/PanoTagPlugin/utils/tag/format.js +3 -2
  111. package/libs/PanoTagPlugin/utils/tag/tagCheck.d.ts +6 -0
  112. package/libs/PanoTagPlugin/utils/tag/tagCheck.js +26 -14
  113. package/libs/PanoTagPlugin/utils/tagPosition.d.ts +12 -3
  114. package/libs/PanoTagPlugin/utils/tagPosition.js +49 -16
  115. package/libs/PanoVideoPlugin/Controller.js +9 -8
  116. package/libs/PanoVideoPlugin/VideoMeshController.js +3 -2
  117. package/libs/PanoVideoPlugin/index.js +6 -5
  118. package/libs/PipelinePlugin/Controller.js +3 -2
  119. package/libs/PipelinePlugin/index.js +4 -3
  120. package/libs/PipelinePlugin/utils/Objects/FlowPipe.js +3 -2
  121. package/libs/PipelinePlugin/utils/Objects/HighlightPipe.js +3 -2
  122. package/libs/PipelinePlugin/utils/Objects/Pipe.js +1 -0
  123. package/libs/Sculpt/Meshes/Line.d.ts +4 -0
  124. package/libs/Sculpt/Meshes/Line.js +85 -76
  125. package/libs/Sculpt/Meshes/Point.js +28 -28
  126. package/libs/Sculpt/Meshes/Polygon.js +43 -43
  127. package/libs/Sculpt/index.js +1 -1
  128. package/libs/Sculpt/utils/Modules/Cursor.js +7 -7
  129. package/libs/base/BasePlugin.js +1 -1
  130. package/libs/floorplan/FloorplanGuidePlugin/Controller.js +3 -2
  131. package/libs/floorplan/FloorplanGuidePlugin/index.js +4 -3
  132. package/libs/floorplan/MapviewFloorplanPlugin/Controller.js +3 -2
  133. package/libs/floorplan/MapviewFloorplanPlugin/index.js +4 -3
  134. package/libs/floorplan/ModelFloorplanPlugin/Controller.js +3 -2
  135. package/libs/floorplan/ModelFloorplanPlugin/index.js +4 -3
  136. package/libs/floorplan/PanoFloorplanRadarPlugin/Controller.js +3 -2
  137. package/libs/floorplan/PanoFloorplanRadarPlugin/index.js +4 -3
  138. package/libs/floorplan/TopviewFloorplanPlugin/Controller.js +3 -2
  139. package/libs/floorplan/TopviewFloorplanPlugin/index.js +4 -3
  140. package/libs/index.js +164 -158
  141. package/libs/shared-utils/five/getFiveFromParentChain.d.ts +7 -0
  142. package/libs/shared-utils/five/getFiveFromParentChain.js +15 -0
  143. package/libs/shared-utils/logger.js +1 -1
  144. package/libs/shared-utils/three/PointSelector/utils/PointHelper2.js +1 -0
  145. package/package.json +1 -1
@@ -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 Si } from "./controller/index.js";
3
+ import { defaultGlobalConfig as Vi } from "./typings/tag/TagConfig.js";
4
+ import { ContentType as Xi, DimensionType as Yi, PointType as Zi } from "./Archive/deprecated.js";
5
5
  import "three";
6
6
  import "../vendor/object-assign-deep/objectAssignDeep.js";
7
7
  import "../shared-utils/positionToVector3.js";
@@ -58,6 +58,7 @@ import "../Sculpt/typings/style.js";
58
58
  import "../shared-utils/three/IObject3D.js";
59
59
  import "../Sculpt/utils/Meshes/getLengthHTML.js";
60
60
  import "../shared-utils/three/applyObjectMatrixWorld.js";
61
+ import "../shared-utils/five/getFiveFromParentChain.js";
61
62
  import "../shared-utils/three/core/LineGeometry.js";
62
63
  import "../shared-utils/three/core/LineMaterial.js";
63
64
  import "../shared-utils/three/core/Line2.js";
@@ -285,6 +286,11 @@ import "../Sculpt/Meshes/Box.js";
285
286
  import "../shared-utils/forReverseEach.js";
286
287
  import "../Sculpt/Objects/Line/index.js";
287
288
  import "../shared-utils/five/getFloorMesh.js";
289
+ import "./controller/Tag/BoxTag.js";
290
+ import "./utils/sculptDataToBoxPosition.js";
291
+ import "./controller/Tag/PolygonTag.js";
292
+ import "./controller/Tag/MaskTag.js";
293
+ import "./controller/Tag/MaskTag.shaders.js";
288
294
  import "./Components/TagContainer.js";
289
295
  import "./Components/TagItem.js";
290
296
  import "./Components/Common/TagPoint.js";
@@ -303,14 +309,14 @@ import "./Components/Common/TagPopover/ArrowRightIcon.js";
303
309
  import "./Components/Common/TagPopover/ShareIcon.js";
304
310
  import "./utils/popoverContainer.js";
305
311
  import "../shared-utils/animationFrame/BetterTween.js";
306
- const Ii = (o, t) => new r(o, t);
312
+ const Oi = (o, t) => new r(o, t);
307
313
  export {
308
- Qi as ContentType,
309
- Ri as DimensionType,
310
- Ii as PanoTagPlugin,
314
+ Xi as ContentType,
315
+ Yi as DimensionType,
316
+ Oi as PanoTagPlugin,
311
317
  r as PanoTagPluginController,
312
- Si as PointType,
313
- Ii as default,
314
- Ni as defaultGlobalConfig,
315
- Li as pluginFlag
318
+ Zi as PointType,
319
+ Oi as default,
320
+ Vi as defaultGlobalConfig,
321
+ Si as pluginFlag
316
322
  };
@@ -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
+ };
@@ -65,6 +65,7 @@ import "../../../shared-utils/three/IObject3D.js";
65
65
  import "../../../Sculpt/utils/Meshes/getLengthHTML.js";
66
66
  import "../../../shared-utils/three/applyObjectMatrixWorld.js";
67
67
  import "../../../shared-utils/util.js";
68
+ import "../../../shared-utils/five/getFiveFromParentChain.js";
68
69
  import "../../../shared-utils/three/core/LineGeometry.js";
69
70
  import "../../../shared-utils/three/core/LineMaterial.js";
70
71
  import "../../../shared-utils/three/core/Line2.js";
@@ -81,7 +82,7 @@ import "../../../vendor/animejs/lib/anime.es.js";
81
82
  import "../../../CSS3DRenderPlugin/utils/three/CSS3DScene.js";
82
83
  import "../../../CSS3DRenderPlugin/utils/getAllCSS3DObject.js";
83
84
  import "../../../CSS3DRenderPlugin/utils/three/CSS3DGroup.js";
84
- function di(o, i, t) {
85
+ function yi(o, i, t) {
85
86
  var v, b, j, C, A;
86
87
  const D = (v = t == null ? void 0 : t.useCache) != null ? v : !0;
87
88
  if (!o)
@@ -127,5 +128,5 @@ function di(o, i, t) {
127
128
  return P(T), Object.values(f).forEach((e) => P(e)), T._isMerged = !0, T;
128
129
  }
129
130
  export {
130
- di as calculateTagConfig
131
+ yi as calculateTagConfig
131
132
  };
@@ -48,6 +48,7 @@ import "../../../shared-utils/three/IObject3D.js";
48
48
  import "../../../Sculpt/utils/Meshes/getLengthHTML.js";
49
49
  import "../../../shared-utils/three/applyObjectMatrixWorld.js";
50
50
  import "../../../shared-utils/util.js";
51
+ import "../../../shared-utils/five/getFiveFromParentChain.js";
51
52
  import "../../../shared-utils/three/core/LineGeometry.js";
52
53
  import "../../../shared-utils/three/core/LineMaterial.js";
53
54
  import "../../../shared-utils/three/core/Line2.js";
@@ -68,7 +69,7 @@ import "@realsee/five";
68
69
  function n(i) {
69
70
  return i.stickType ? i.stickType : i.pointType === "PointTag" && i.dimensionType === "3D" ? "3DPoint" : i.pointType === "PlaneTag" ? "Plane" : "2DPoint";
70
71
  }
71
- function Li(i) {
72
+ function _i(i) {
72
73
  var r, o, p, m;
73
74
  if (i.stickType || (i.stickType = n(i)), i.contentType === "VRLink" || i.contentType === "PanoLink" || i.contentType === "Link") {
74
75
  const t = i;
@@ -82,6 +83,6 @@ function Li(i) {
82
83
  }), i;
83
84
  }
84
85
  export {
85
- Li as default,
86
+ _i as default,
86
87
  n as getTagStickType
87
88
  };
@@ -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
  };
@@ -1,17 +1,17 @@
1
1
  var u = Object.defineProperty, g = Object.defineProperties;
2
2
  var b = Object.getOwnPropertyDescriptors;
3
- var h = Object.getOwnPropertySymbols;
3
+ var m = Object.getOwnPropertySymbols;
4
4
  var M = Object.prototype.hasOwnProperty, W = Object.prototype.propertyIsEnumerable;
5
5
  var l = (e, i, r) => i in e ? u(e, i, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[i] = r, p = (e, i) => {
6
6
  for (var r in i || (i = {}))
7
7
  M.call(i, r) && l(e, r, i[r]);
8
- if (h)
9
- for (var r of h(i))
8
+ if (m)
9
+ for (var r of m(i))
10
10
  W.call(i, r) && l(e, r, i[r]);
11
11
  return e;
12
12
  }, a = (e, i) => g(e, b(i));
13
13
  var s = (e, i, r) => (l(e, typeof i != "symbol" ? i + "" : i, r), r);
14
- import { VideoMeshController as m } from "./VideoMeshController.js";
14
+ import { VideoMeshController as h } from "./VideoMeshController.js";
15
15
  import { Controller as _ } from "../base/BasePlugin.js";
16
16
  import "./utils/shader.js";
17
17
  import "../shared-utils/tag.js";
@@ -65,6 +65,7 @@ import "../Sculpt/typings/style.js";
65
65
  import "../shared-utils/three/IObject3D.js";
66
66
  import "../Sculpt/utils/Meshes/getLengthHTML.js";
67
67
  import "../shared-utils/three/applyObjectMatrixWorld.js";
68
+ import "../shared-utils/five/getFiveFromParentChain.js";
68
69
  import "../shared-utils/three/core/LineGeometry.js";
69
70
  import "../shared-utils/three/core/LineMaterial.js";
70
71
  import "../shared-utils/three/core/Line2.js";
@@ -83,7 +84,7 @@ import "../Sculpt/utils/three/rayOnLine.js";
83
84
  import "../shared-utils/animationFrame/index.js";
84
85
  import "./utils/index.js";
85
86
  import "../shared-utils/url/defaultUrls.js";
86
- class qr extends _ {
87
+ class zr extends _ {
87
88
  constructor(r) {
88
89
  super(r);
89
90
  s(this, "controllerMap", /* @__PURE__ */ new Map());
@@ -111,7 +112,7 @@ class qr extends _ {
111
112
  n.video_list.forEach((d) => {
112
113
  this.controllerMap.set(
113
114
  d.render_id,
114
- new m(this.five, a(p({}, d), {
115
+ new h(this.five, a(p({}, d), {
115
116
  fiveUtil: this.fiveUtil,
116
117
  panoIndex: c,
117
118
  renderID: f,
@@ -190,7 +191,7 @@ class qr extends _ {
190
191
  const n = o.render_id;
191
192
  this.controllerMap.set(
192
193
  o.render_id,
193
- new m(this.five, a(p({}, o), {
194
+ new h(this.five, a(p({}, o), {
194
195
  fiveUtil: this.fiveUtil,
195
196
  panoIndex: r,
196
197
  renderID: n,
@@ -228,5 +229,5 @@ class qr extends _ {
228
229
  }
229
230
  }
230
231
  export {
231
- qr as PanoVideoPluginController
232
+ zr as PanoVideoPluginController
232
233
  };
@@ -54,6 +54,7 @@ import "../shared-utils/three/IObject3D.js";
54
54
  import "../Sculpt/utils/Meshes/getLengthHTML.js";
55
55
  import "../shared-utils/three/applyObjectMatrixWorld.js";
56
56
  import "../shared-utils/util.js";
57
+ import "../shared-utils/five/getFiveFromParentChain.js";
57
58
  import "../shared-utils/three/core/LineGeometry.js";
58
59
  import "../shared-utils/three/core/LineMaterial.js";
59
60
  import "../shared-utils/three/core/Line2.js";
@@ -70,7 +71,7 @@ import "../CSS3DRenderPlugin/utils/three/CSS3DScene.js";
70
71
  import "../CSS3DRenderPlugin/utils/getAllCSS3DObject.js";
71
72
  import "../CSS3DRenderPlugin/utils/three/CSS3DGroup.js";
72
73
  import "@realsee/five";
73
- class Qi {
74
+ class $i {
74
75
  /** 初始化视频、模型以及相关事件监听。 */
75
76
  constructor(i, e) {
76
77
  t(this, "video");
@@ -345,5 +346,5 @@ class Qi {
345
346
  }
346
347
  }
347
348
  export {
348
- Qi as VideoMeshController
349
+ $i as VideoMeshController
349
350
  };
@@ -1,5 +1,5 @@
1
1
  import { PanoVideoPluginController as r } from "./Controller.js";
2
- import { typings as jo } from "./typings/index.js";
2
+ import { typings as ko } from "./typings/index.js";
3
3
  import "./VideoMeshController.js";
4
4
  import "./utils/shader.js";
5
5
  import "../shared-utils/tag.js";
@@ -53,6 +53,7 @@ import "../Sculpt/typings/style.js";
53
53
  import "../shared-utils/three/IObject3D.js";
54
54
  import "../Sculpt/utils/Meshes/getLengthHTML.js";
55
55
  import "../shared-utils/three/applyObjectMatrixWorld.js";
56
+ import "../shared-utils/five/getFiveFromParentChain.js";
56
57
  import "../shared-utils/three/core/LineGeometry.js";
57
58
  import "../shared-utils/three/core/LineMaterial.js";
58
59
  import "../shared-utils/three/core/Line2.js";
@@ -72,9 +73,9 @@ import "../shared-utils/animationFrame/index.js";
72
73
  import "./utils/index.js";
73
74
  import "../base/BasePlugin.js";
74
75
  import "../shared-utils/url/defaultUrls.js";
75
- const To = (o) => new r(o);
76
+ const bo = (o) => new r(o);
76
77
  export {
77
- To as PanoVideoPlugin,
78
- jo as PanoVideoPluginType,
79
- To as default
78
+ bo as PanoVideoPlugin,
79
+ ko as PanoVideoPluginType,
80
+ bo as default
80
81
  };