@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
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Mask 标签的 Shader 代码
3
+ * 参考 itemMask 插件实现
4
+ */
5
+ /**
6
+ * Vertex Shader
7
+ */
8
+ export declare const maskVertexShader = "\nvarying vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n";
9
+ /** 多 style:mergedTexture 中每组 3 像素为 color(id)/tolerance+highlight/opacity,用 color 作 id 匹配 */
10
+ export declare const maskFragmentShaderMulti = "\n#define RESOLUTION 2048.0\n#define MAX_GROUPS 64\n#define STRICT_MATCH 0.5/255.0\n\nvarying vec2 vUv;\nuniform sampler2D map;\nuniform sampler2D mergedTexture;\nuniform float groupCount;\nuniform float textureWidth;\nuniform float pixelsPerGroup;\n\nfloat colorGap(vec3 a, vec3 b) {\n return abs(a.r - b.r) + abs(a.g - b.g) + abs(a.b - b.b);\n}\n\nvec4 readStyleColor(float groupIndex) {\n float px = groupIndex * pixelsPerGroup;\n float texX = (px + 0.5) / textureWidth;\n return texture2D(mergedTexture, vec2(texX, 0.5));\n}\n\nvec4 readStyleToleranceHighlight(float groupIndex) {\n float px = groupIndex * pixelsPerGroup + 1.0;\n float texX = (px + 0.5) / textureWidth;\n return texture2D(mergedTexture, vec2(texX, 0.5));\n}\n\nfloat readStyleOpacity(float groupIndex) {\n float px = groupIndex * pixelsPerGroup + 2.0;\n float texX = (px + 0.5) / textureWidth;\n return texture2D(mergedTexture, vec2(texX, 0.5)).r;\n}\n\nfloat detectEdge(sampler2D map, vec2 uv, vec3 matchColor, float tolerance) {\n vec4 centerColor = texture2D(map, uv);\n if (colorGap(centerColor.rgb, matchColor) >= tolerance) return 0.0;\n float step = 1.0 / RESOLUTION;\n vec4 u = texture2D(map, uv + vec2(0.0, -step));\n vec4 l = texture2D(map, uv + vec2(-step, 0.0));\n vec4 r = texture2D(map, uv + vec2(step, 0.0));\n vec4 d = texture2D(map, uv + vec2(0.0, step));\n bool edge = colorGap(u.rgb, matchColor) >= tolerance || colorGap(l.rgb, matchColor) >= tolerance\n || colorGap(r.rgb, matchColor) >= tolerance || colorGap(d.rgb, matchColor) >= tolerance;\n return edge ? 1.0 : 0.0;\n}\n\nvoid main() {\n vec4 image = texture2D(map, vUv);\n if (image.r == 0.0 && image.g == 0.0 && image.b == 0.0) discard;\n\n // WebGL 1.0 \u8981\u6C42\u5FAA\u73AF\u7EC8\u6B62\u6761\u4EF6\u5FC5\u987B\u662F\u7F16\u8BD1\u65F6\u5E38\u91CF\uFF0C\u6240\u4EE5\u7528 MAX_GROUPS\uFF0C\u5FAA\u73AF\u5185\u68C0\u67E5 groupCount\n for (float i = 0.0; i < float(MAX_GROUPS); i += 1.0) {\n if (i < groupCount) {\n vec4 styleColor = readStyleColor(i);\n vec3 colorRgb = styleColor.rgb;\n float tol = readStyleToleranceHighlight(i).r * 3.0;\n vec3 highlight = readStyleToleranceHighlight(i).gba;\n float opacity = readStyleOpacity(i);\n \n if (opacity > 0.0) {\n float gap = colorGap(image.rgb, colorRgb);\n if (gap > STRICT_MATCH) continue;\n float smoothRange = 0.01;\n float matchFactor = 1.0 - smoothstep(tol - smoothRange, tol + smoothRange, gap);\n if (matchFactor > 0.0) {\n float isEdge = detectEdge(map, vUv, colorRgb, tol);\n float alpha = mix(opacity, 1.0, isEdge);\n alpha *= max(matchFactor, 0.9);\n gl_FragColor = vec4(highlight, alpha);\n return;\n }\n }\n }\n }\n discard;\n}\n";
@@ -0,0 +1,94 @@
1
+ const e = (
2
+ /* glsl */
3
+ `
4
+ varying vec2 vUv;
5
+ void main() {
6
+ vUv = uv;
7
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
8
+ }
9
+ `
10
+ ), t = (
11
+ /* glsl */
12
+ `
13
+ #define RESOLUTION 2048.0
14
+ #define MAX_GROUPS 64
15
+ #define STRICT_MATCH 0.5/255.0
16
+
17
+ varying vec2 vUv;
18
+ uniform sampler2D map;
19
+ uniform sampler2D mergedTexture;
20
+ uniform float groupCount;
21
+ uniform float textureWidth;
22
+ uniform float pixelsPerGroup;
23
+
24
+ float colorGap(vec3 a, vec3 b) {
25
+ return abs(a.r - b.r) + abs(a.g - b.g) + abs(a.b - b.b);
26
+ }
27
+
28
+ vec4 readStyleColor(float groupIndex) {
29
+ float px = groupIndex * pixelsPerGroup;
30
+ float texX = (px + 0.5) / textureWidth;
31
+ return texture2D(mergedTexture, vec2(texX, 0.5));
32
+ }
33
+
34
+ vec4 readStyleToleranceHighlight(float groupIndex) {
35
+ float px = groupIndex * pixelsPerGroup + 1.0;
36
+ float texX = (px + 0.5) / textureWidth;
37
+ return texture2D(mergedTexture, vec2(texX, 0.5));
38
+ }
39
+
40
+ float readStyleOpacity(float groupIndex) {
41
+ float px = groupIndex * pixelsPerGroup + 2.0;
42
+ float texX = (px + 0.5) / textureWidth;
43
+ return texture2D(mergedTexture, vec2(texX, 0.5)).r;
44
+ }
45
+
46
+ float detectEdge(sampler2D map, vec2 uv, vec3 matchColor, float tolerance) {
47
+ vec4 centerColor = texture2D(map, uv);
48
+ if (colorGap(centerColor.rgb, matchColor) >= tolerance) return 0.0;
49
+ float step = 1.0 / RESOLUTION;
50
+ vec4 u = texture2D(map, uv + vec2(0.0, -step));
51
+ vec4 l = texture2D(map, uv + vec2(-step, 0.0));
52
+ vec4 r = texture2D(map, uv + vec2(step, 0.0));
53
+ vec4 d = texture2D(map, uv + vec2(0.0, step));
54
+ bool edge = colorGap(u.rgb, matchColor) >= tolerance || colorGap(l.rgb, matchColor) >= tolerance
55
+ || colorGap(r.rgb, matchColor) >= tolerance || colorGap(d.rgb, matchColor) >= tolerance;
56
+ return edge ? 1.0 : 0.0;
57
+ }
58
+
59
+ void main() {
60
+ vec4 image = texture2D(map, vUv);
61
+ if (image.r == 0.0 && image.g == 0.0 && image.b == 0.0) discard;
62
+
63
+ // WebGL 1.0 要求循环终止条件必须是编译时常量,所以用 MAX_GROUPS,循环内检查 groupCount
64
+ for (float i = 0.0; i < float(MAX_GROUPS); i += 1.0) {
65
+ if (i < groupCount) {
66
+ vec4 styleColor = readStyleColor(i);
67
+ vec3 colorRgb = styleColor.rgb;
68
+ float tol = readStyleToleranceHighlight(i).r * 3.0;
69
+ vec3 highlight = readStyleToleranceHighlight(i).gba;
70
+ float opacity = readStyleOpacity(i);
71
+
72
+ if (opacity > 0.0) {
73
+ float gap = colorGap(image.rgb, colorRgb);
74
+ if (gap > STRICT_MATCH) continue;
75
+ float smoothRange = 0.01;
76
+ float matchFactor = 1.0 - smoothstep(tol - smoothRange, tol + smoothRange, gap);
77
+ if (matchFactor > 0.0) {
78
+ float isEdge = detectEdge(map, vUv, colorRgb, tol);
79
+ float alpha = mix(opacity, 1.0, isEdge);
80
+ alpha *= max(matchFactor, 0.9);
81
+ gl_FragColor = vec4(highlight, alpha);
82
+ return;
83
+ }
84
+ }
85
+ }
86
+ }
87
+ discard;
88
+ }
89
+ `
90
+ );
91
+ export {
92
+ t as maskFragmentShaderMulti,
93
+ e as maskVertexShader
94
+ };
@@ -0,0 +1,112 @@
1
+ import type PanoTagPluginController from '..';
2
+ import type { TagContentType, Tag as TagData, TagInstance, ArrayPosition, TagClickParams } from '../..';
3
+ import { BaseTag } from './BaseTag';
4
+ import * as THREE from 'three';
5
+ import type { PartialObjectDeep } from '../../../typings/typings';
6
+ import type { Tag } from '../..';
7
+ import { Polygon } from '../../../Sculpt/Objects/Polygon';
8
+ export type PolygonTagInterface<C extends TagContentType = TagContentType> = TagInstance<C, 'Polygon'>;
9
+ /**
10
+ * Polygon 类型的标签
11
+ * 使用 Sculpt Polygon 进行渲染
12
+ */
13
+ export declare class PolygonTag<C extends TagContentType = TagContentType> extends BaseTag<C, 'Polygon'> {
14
+ polygonShape?: Polygon;
15
+ private tagStyle?;
16
+ private clickEventDispose?;
17
+ private domClickDispose?;
18
+ screenPosition: {
19
+ leftPx: number;
20
+ topPx: number;
21
+ scale: number;
22
+ } | null;
23
+ constructor(plugin: PanoTagPluginController, tagData: TagData);
24
+ /**
25
+ * 获取 Polygon 样式配置(合并用户配置和默认值)
26
+ */
27
+ private getPolygonStyle;
28
+ /**
29
+ * 更新 Polygon 样式
30
+ */
31
+ private updatePolygonStyle;
32
+ /**
33
+ * 更新标签数据
34
+ */
35
+ set(tag: PartialObjectDeep<Tag<C, 'Polygon'>>, deepMerge?: boolean): void;
36
+ /**
37
+ * 获取多边形的所有角点(世界坐标)
38
+ */
39
+ getCorners(): THREE.Vector3[];
40
+ getCenter(): ArrayPosition;
41
+ /**
42
+ * 计算多边形的法向量
43
+ * 使用前三个点来计算平面的法向量
44
+ */
45
+ computeNormal(): THREE.Vector3 | undefined;
46
+ /**
47
+ * 初始化 Sculpt Polygon
48
+ */
49
+ private initializeSculptPolygon;
50
+ /**
51
+ * 设置点击事件
52
+ */
53
+ private setupClickEvents;
54
+ /**
55
+ * 清理点击事件
56
+ */
57
+ private cleanupClickEvents;
58
+ /**
59
+ * 更新 Sculpt Polygon 的数据
60
+ */
61
+ private updateSculptPolygon;
62
+ /**
63
+ * 启用编辑器
64
+ * 用于编辑已存在的 Polygon
65
+ */
66
+ editorEnable(): Promise<void>;
67
+ /**
68
+ * 禁用编辑器
69
+ */
70
+ editorDisable(): void;
71
+ /**
72
+ * 同步 Sculpt Polygon 的数据到 PolygonPosition
73
+ */
74
+ private syncPolygonPositionFromSculpt;
75
+ /**
76
+ * @description 点击事件处理
77
+ */
78
+ onClick(params: Pick<TagClickParams, 'target'>): void;
79
+ /**
80
+ * @description 展开自己,收起其他标签
81
+ */
82
+ unfoldAndFoldOthers(): void;
83
+ /**
84
+ * 展开标签详情
85
+ */
86
+ unfold(): void;
87
+ /**
88
+ * 折叠标签详情
89
+ */
90
+ fold(): void;
91
+ /**
92
+ * 设置展开/折叠状态
93
+ */
94
+ setUnfold(unfolded: boolean): void;
95
+ /**
96
+ * 获取多边形的中心点
97
+ */
98
+ private getPolygonCenter;
99
+ /**
100
+ * 更新屏幕位置(用于在 2D UI 中显示内容)
101
+ * 显示在 Polygon 最右侧的顶点位置
102
+ */
103
+ updateScreenPosition(): void;
104
+ /**
105
+ * 应用可见性变化
106
+ */
107
+ applyVisible(): void;
108
+ /**
109
+ * 销毁标签
110
+ */
111
+ dispose(): void;
112
+ }