@realsee/vreo 2.6.4 → 3.0.0-webgpu.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/lib/PlayController/createHTMLAudioElement.d.ts +1 -0
- package/lib/PlayController/createHTMLAudioElement.d.ts.map +1 -0
- package/lib/PlayController/index.d.ts +14 -24
- package/lib/PlayController/index.d.ts.map +1 -0
- package/lib/PlayController/index.js +74 -220
- package/lib/PlayController/index.js.map +1 -0
- package/lib/Player/App.d.ts +2 -2
- package/lib/Player/App.d.ts.map +1 -0
- package/lib/Player/Controller.d.ts +11 -6
- package/lib/Player/Controller.d.ts.map +1 -0
- package/lib/Player/PlaybackLifecycle.d.ts +1 -0
- package/lib/Player/PlaybackLifecycle.d.ts.map +1 -0
- package/lib/Player/custom/SpatialScenePanel/index.d.ts +2 -2
- package/lib/Player/custom/SpatialScenePanel/index.d.ts.map +1 -0
- package/lib/Player/hooks.d.ts +3 -2
- package/lib/Player/hooks.d.ts.map +1 -0
- package/lib/Player/index.d.ts +3 -2
- package/lib/Player/index.d.ts.map +1 -0
- package/lib/Player/index.js +1770 -437
- package/lib/Player/index.js.map +1 -0
- package/lib/Player/modules/Drawer/index.d.ts +2 -2
- package/lib/Player/modules/Drawer/index.d.ts.map +1 -0
- package/lib/Player/modules/PopUp/index.d.ts +2 -2
- package/lib/Player/modules/PopUp/index.d.ts.map +1 -0
- package/lib/Player/modules/ResizeObserver/index.d.ts +2 -2
- package/lib/Player/modules/ResizeObserver/index.d.ts.map +1 -0
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +5 -2
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts.map +1 -0
- package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +8 -5
- package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts.map +1 -0
- package/lib/Player/modules/VideoAgent/index.d.ts +11 -2
- package/lib/Player/modules/VideoAgent/index.d.ts.map +1 -0
- package/lib/Player/modules/Wave/index.d.ts +2 -2
- package/lib/Player/modules/Wave/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/BgMusic/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/BgMusic/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/CameraMovement/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/CameraMovement/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/InfoPanel/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/InfoPanel/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/ModelVideo/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/ModelVideo/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/PanoEffect/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/PanoEffect/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/PanoEffect/lineAnime.d.ts +3 -2
- package/lib/Player/modules/keyframes/PanoEffect/lineAnime.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/PanoTag/index.d.ts +1 -0
- package/lib/Player/modules/keyframes/PanoTag/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/Prompter/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/Prompter/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts.map +1 -0
- package/lib/Player/modules/keyframes/VideoEffect/index.d.ts +2 -2
- package/lib/Player/modules/keyframes/VideoEffect/index.d.ts.map +1 -0
- package/lib/Player/playback-types.d.ts +1 -0
- package/lib/Player/playback-types.d.ts.map +1 -0
- package/lib/Player/typings.d.ts +2 -1
- package/lib/Player/typings.d.ts.map +1 -0
- package/lib/chunks/index-BgPSzRSs.js +93 -0
- package/lib/chunks/index-BgPSzRSs.js.map +1 -0
- package/lib/chunks/index-CunyJn6H.js +51 -0
- package/lib/chunks/index-CunyJn6H.js.map +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.d.ts +2 -1
- package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.d.ts.map +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.d.ts +5 -6
- package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.d.ts.map +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.d.ts +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.d.ts.map +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts +5 -22
- package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts.map +1 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.d.ts +2 -1
- package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.d.ts.map +1 -0
- package/lib/fivePlugins/CameraMovementPlugin/index.d.ts +2 -1
- package/lib/fivePlugins/CameraMovementPlugin/index.d.ts.map +1 -0
- package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts +2 -1
- package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts.map +1 -0
- package/lib/fivePlugins/ModelTVVideoPlugin/index.d.ts +2 -1
- package/lib/fivePlugins/ModelTVVideoPlugin/index.d.ts.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +12 -1
- package/lib/index.js.map +1 -0
- package/lib/plugins/CSS3DRenderPlugin.js +115 -0
- package/lib/plugins/CSS3DRenderPlugin.js.map +1 -0
- package/lib/plugins/CameraMovementPlugin.js +6 -0
- package/lib/plugins/CameraMovementPlugin.js.map +1 -0
- package/lib/plugins/ModelTVVideoPlugin.js +162 -0
- package/lib/plugins/ModelTVVideoPlugin.js.map +1 -0
- package/lib/react/index.d.ts +5 -4
- package/lib/react/index.d.ts.map +1 -0
- package/lib/react/index.js +39 -226
- package/lib/react/index.js.map +1 -0
- package/lib/shared-utils/Audio.d.ts +3 -1
- package/lib/shared-utils/Audio.d.ts.map +1 -0
- package/lib/shared-utils/AudioLike.d.ts +2 -1
- package/lib/shared-utils/AudioLike.d.ts.map +1 -0
- package/lib/shared-utils/Preloader.d.ts +1 -0
- package/lib/shared-utils/Preloader.d.ts.map +1 -0
- package/lib/shared-utils/addResizeListener.d.ts +2 -1
- package/lib/shared-utils/addResizeListener.d.ts.map +1 -0
- package/lib/shared-utils/animationFrame/BetterTween.d.ts +1 -0
- package/lib/shared-utils/animationFrame/BetterTween.d.ts.map +1 -0
- package/lib/shared-utils/animationFrame/index.d.ts +5 -14
- package/lib/shared-utils/animationFrame/index.d.ts.map +1 -0
- package/lib/shared-utils/animationFrame/tween.d.ts +1 -0
- package/lib/shared-utils/animationFrame/tween.d.ts.map +1 -0
- package/lib/shared-utils/createTransMatrix.d.ts +3 -1
- package/lib/shared-utils/createTransMatrix.d.ts.map +1 -0
- package/lib/shared-utils/getFileExpandedName.d.ts +1 -0
- package/lib/shared-utils/getFileExpandedName.d.ts.map +1 -0
- package/lib/shared-utils/getMediaInfo.d.ts +1 -0
- package/lib/shared-utils/getMediaInfo.d.ts.map +1 -0
- package/lib/shared-utils/setElementDataset.d.ts +1 -0
- package/lib/shared-utils/setElementDataset.d.ts.map +1 -0
- package/lib/timeline/index.d.ts +18 -0
- package/lib/timeline/index.d.ts.map +1 -0
- package/lib/types/index.js +10 -0
- package/lib/types/index.js.map +1 -0
- package/lib/typings/VreoUnit.d.ts +2 -1
- package/lib/typings/VreoUnit.d.ts.map +1 -0
- package/lib/typings/index.d.ts +1 -0
- package/lib/typings/index.d.ts.map +1 -0
- package/package.json +51 -71
- package/lib/PlayController/createHTMLAudioElement.js +0 -34
- package/lib/Player/App.js +0 -52
- package/lib/Player/Controller.js +0 -536
- package/lib/Player/PlaybackLifecycle.js +0 -118
- package/lib/Player/custom/SpatialScenePanel/index.js +0 -240
- package/lib/Player/hooks.js +0 -22
- package/lib/Player/modules/Drawer/index.js +0 -40
- package/lib/Player/modules/PopUp/index.js +0 -23
- package/lib/Player/modules/ResizeObserver/index.js +0 -22
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +0 -456
- package/lib/Player/modules/VideoAgent/VideoAgentScene.js +0 -53
- package/lib/Player/modules/VideoAgent/index.js +0 -72
- package/lib/Player/modules/Wave/index.js +0 -171
- package/lib/Player/modules/keyframes/BgMusic/index.js +0 -65
- package/lib/Player/modules/keyframes/CameraMovement/index.js +0 -75
- package/lib/Player/modules/keyframes/InfoPanel/index.js +0 -170
- package/lib/Player/modules/keyframes/ModelVideo/index.js +0 -128
- package/lib/Player/modules/keyframes/PanoEffect/index.js +0 -99
- package/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +0 -30
- package/lib/Player/modules/keyframes/PanoTag/index.js +0 -110
- package/lib/Player/modules/keyframes/PanoTextLabel/index.js +0 -122
- package/lib/Player/modules/keyframes/Prompter/index.js +0 -56
- package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +0 -98
- package/lib/Player/modules/keyframes/VideoEffect/index.js +0 -154
- package/lib/Player/playback-types.js +0 -1
- package/lib/Player/typings.js +0 -1
- package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.js +0 -4
- package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.js +0 -25
- package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.js +0 -4
- package/lib/fivePlugins/CSS3DRenderPlugin/index.js +0 -226
- package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.js +0 -8
- package/lib/fivePlugins/CameraMovementPlugin/index.js +0 -245
- package/lib/fivePlugins/CameraMovementPlugin/typings.js +0 -15
- package/lib/fivePlugins/ModelTVVideoPlugin/index.js +0 -349
- package/lib/shared-utils/Audio.js +0 -151
- package/lib/shared-utils/AudioLike.js +0 -123
- package/lib/shared-utils/Preloader.js +0 -37
- package/lib/shared-utils/addResizeListener.js +0 -39
- package/lib/shared-utils/animationFrame/BetterTween.js +0 -58
- package/lib/shared-utils/animationFrame/index.js +0 -52
- package/lib/shared-utils/animationFrame/tween.js +0 -58
- package/lib/shared-utils/createTransMatrix.js +0 -12
- package/lib/shared-utils/getFileExpandedName.js +0 -6
- package/lib/shared-utils/getMediaInfo.js +0 -55
- package/lib/shared-utils/setElementDataset.js +0 -16
- package/lib/typings/VreoUnit.js +0 -64
- package/lib/typings/index.js +0 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import * as D from "three/webgpu";
|
|
2
|
+
import { Vector3 as l, Scene as T } from "three/webgpu";
|
|
3
|
+
import { CSS3DObject as W, CSS3DRenderer as L } from "three/addons/renderers/CSS3DRenderer.js";
|
|
4
|
+
function g(s, t) {
|
|
5
|
+
const r = Math.round(s);
|
|
6
|
+
return r % 2 === 0 ? r : r + (t != null && t.smaller ? -1 : 1);
|
|
7
|
+
}
|
|
8
|
+
function j(s, t) {
|
|
9
|
+
return new l((s.x + t.x) / 2, (s.y + t.y) / 2, (s.z + t.z) / 2);
|
|
10
|
+
}
|
|
11
|
+
const H = ({ x: s, y: t, z: r }) => new l(s, t, r);
|
|
12
|
+
function M(s, t) {
|
|
13
|
+
let r = !1;
|
|
14
|
+
if (!t || typeof ResizeObserver > "u")
|
|
15
|
+
return {
|
|
16
|
+
observe() {
|
|
17
|
+
r || (r = !0, window.addEventListener("resize", s));
|
|
18
|
+
},
|
|
19
|
+
unobserve() {
|
|
20
|
+
r && (r = !1, window.removeEventListener("resize", s));
|
|
21
|
+
},
|
|
22
|
+
disconnect() {
|
|
23
|
+
r && (r = !1, window.removeEventListener("resize", s));
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const E = new ResizeObserver(s);
|
|
27
|
+
return {
|
|
28
|
+
observe() {
|
|
29
|
+
r || (r = !0, E.observe(t));
|
|
30
|
+
},
|
|
31
|
+
unobserve() {
|
|
32
|
+
r && (r = !1, E.unobserve(t));
|
|
33
|
+
},
|
|
34
|
+
disconnect() {
|
|
35
|
+
r = !1, E.disconnect();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const q = (s) => {
|
|
40
|
+
const t = { disposers: /* @__PURE__ */ new Set() }, r = (i, p) => {
|
|
41
|
+
const e = new T(), d = new L(), u = () => d.setSize(
|
|
42
|
+
g(p.clientWidth, { smaller: !0 }),
|
|
43
|
+
g(p.clientHeight, { smaller: !0 })
|
|
44
|
+
);
|
|
45
|
+
u();
|
|
46
|
+
const v = M(u, p);
|
|
47
|
+
d.domElement.style.position = "absolute", d.domElement.style.top = "0", d.domElement.style.userSelect = "none", d.domElement.style.pointerEvents = "none", i.appendChild(d.domElement);
|
|
48
|
+
let a = !1, m;
|
|
49
|
+
const f = {
|
|
50
|
+
scene: e,
|
|
51
|
+
renderer: d,
|
|
52
|
+
entries: /* @__PURE__ */ new Set(),
|
|
53
|
+
start() {
|
|
54
|
+
if (a) return;
|
|
55
|
+
a = !0, v.observe();
|
|
56
|
+
const b = () => {
|
|
57
|
+
a && (d.render(e, s.camera), m = requestAnimationFrame(b));
|
|
58
|
+
};
|
|
59
|
+
b();
|
|
60
|
+
},
|
|
61
|
+
stop() {
|
|
62
|
+
a && (a = !1, m !== void 0 && cancelAnimationFrame(m), m = void 0, v.unobserve());
|
|
63
|
+
},
|
|
64
|
+
dispose() {
|
|
65
|
+
f.stop(), v.disconnect(), d.domElement.remove();
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
return f;
|
|
69
|
+
}, E = (...i) => {
|
|
70
|
+
const p = i[0].map((h) => h instanceof l ? h : H(h)), e = i[1];
|
|
71
|
+
if (p.length < 4) return console.error("points must be equal or greater than 4");
|
|
72
|
+
if (!s.model.loaded) return console.error("five.model.loaded is false");
|
|
73
|
+
const d = s.getElement();
|
|
74
|
+
if (!d) return console.error("five.getElement() is empty");
|
|
75
|
+
const u = (e == null ? void 0 : e.ratio) ?? 216e-5;
|
|
76
|
+
u <= 215e-5 && console.warn("if you need click css3DElement on safari, ratio must be greater than 0.00215");
|
|
77
|
+
const v = (e == null ? void 0 : e.dpr) ?? 1, a = (e == null ? void 0 : e.mode) ?? "front", m = (e == null ? void 0 : e.autoRender) ?? !0, f = (e == null ? void 0 : e.container) ?? document.createElement("div");
|
|
78
|
+
f.classList.add("__Dnalogel-plugin--CSS3DRenderPlugin");
|
|
79
|
+
const { css3DObject: b, mesh: n } = O(p, { ratio: u, dpr: v, container: f, mode: a });
|
|
80
|
+
let o = a === "behind" ? t.behind : t.front;
|
|
81
|
+
if (!o) {
|
|
82
|
+
const h = a === "behind" ? (e == null ? void 0 : e.behindFiveContainer) ?? d.parentElement ?? document.body : d.parentElement ?? document.body;
|
|
83
|
+
o = r(h, d), a === "behind" ? t.behind = o : t.front = o;
|
|
84
|
+
}
|
|
85
|
+
const c = {};
|
|
86
|
+
o.entries.add(c);
|
|
87
|
+
let y = !1, z = !1;
|
|
88
|
+
const x = () => {
|
|
89
|
+
z || y || (y = !0, o.scene.add(b), n && s.scene.add(n), o.start());
|
|
90
|
+
}, S = () => {
|
|
91
|
+
z || (z = !0, t.disposers.delete(S), o.entries.delete(c), y && (o.scene.remove(b), n && s.scene.remove(n)), n == null || n.geometry.dispose(), n == null || n.material.dispose(), o.scene.children.length === 0 && o.stop(), o.entries.size === 0 && (o.dispose(), a === "behind" && t.behind === o && (t.behind = void 0), a === "front" && t.front === o && (t.front = void 0)));
|
|
92
|
+
};
|
|
93
|
+
return t.disposers.add(S), m && x(), { container: f, dispose: S, css3DObject: b, render: m ? void 0 : x };
|
|
94
|
+
}, O = (i, p) => {
|
|
95
|
+
const { ratio: e, dpr: d, container: u, mode: v } = p, a = i[0].distanceTo(i[1]), m = i[1].distanceTo(i[2]), f = g(a / e * d), b = g(m / e * d), n = new W(u);
|
|
96
|
+
n.scale.set(e, e, e), u.style.width = f + "px", u.style.height = b + "px", u.style.pointerEvents = "none";
|
|
97
|
+
const o = j(i[0], i[2]), c = i[1].clone().sub(i[0]), y = i[2].clone().sub(i[1]), z = new l(0, 1, 0).angleTo(new l(0, y.y, y.z)), x = new l(1, 0, 0).angleTo(new l(c.x, 0, c.z)), S = c.angleTo(new l(c.x, 0, c.z)), h = (y.z > 0 ? -1 : 1) * z, R = (c.z < 0 ? 1 : -1) * x, A = (c.x > 0 && c.y < 0 || c.x < 0 && c.y > 0 ? -1 : 1) * S;
|
|
98
|
+
n.rotateOnWorldAxis(new l(1, 0, 0), h), n.rotateOnWorldAxis(new l(0, 1, 0), R), n.rotateOnWorldAxis(new l(0, 0, 1), A), n.position.set(o.x, o.y, o.z);
|
|
99
|
+
let w;
|
|
100
|
+
if (v === "behind") {
|
|
101
|
+
const P = new D.MeshBasicNodeMaterial({ opacity: 0, transparent: !1, side: D.DoubleSide }), C = new D.PlaneGeometry(f, b);
|
|
102
|
+
w = new D.Mesh(C, P), w.name = "CSS3DRenderPlugin-mesh", w.position.copy(n.position), w.rotation.copy(n.rotation), w.scale.copy(n.scale);
|
|
103
|
+
}
|
|
104
|
+
return { css3DObject: n, mesh: w };
|
|
105
|
+
};
|
|
106
|
+
return {
|
|
107
|
+
create3DDomContainer: E,
|
|
108
|
+
disposeAll: () => [...t.disposers].forEach((i) => i())
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
export {
|
|
112
|
+
q as CSS3DRenderPlugin,
|
|
113
|
+
q as default
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=CSS3DRenderPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CSS3DRenderPlugin.js","sources":["../../resources/fivePlugins/CSS3DRenderPlugin/evenNumber.ts","../../resources/fivePlugins/CSS3DRenderPlugin/centerPoint.ts","../../resources/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.ts","../../resources/fivePlugins/CSS3DRenderPlugin/createResizeObserver.ts","../../resources/fivePlugins/CSS3DRenderPlugin/index.ts"],"sourcesContent":["export default function evenNumber(num: number, config?: { smaller?: boolean }): number {\n const roundNum = Math.round(num)\n return roundNum % 2 === 0 ? roundNum : roundNum + Number(config?.smaller ? -1 : 1)\n}\n","import { Vector3 } from 'three/webgpu'\n\nexport default function centerPoint(point1: Vector3, point2: Vector3): Vector3 {\n return new Vector3((point1.x + point2.x) / 2, (point1.y + point2.y) / 2, (point1.z + point2.z) / 2)\n}\n","import { Vector3 } from 'three/webgpu'\n\nconst transformPositionToVector3 = ({ x, y, z }: { x: number; y: number; z: number }) => new Vector3(x, y, z)\n\nexport default transformPositionToVector3\n","export default function createResizeObserver(callback: () => void, element?: HTMLElement) {\n let observing = false\n if (!element || typeof ResizeObserver === 'undefined') {\n return {\n observe() {\n if (observing) return\n observing = true\n window.addEventListener('resize', callback)\n },\n unobserve() {\n if (!observing) return\n observing = false\n window.removeEventListener('resize', callback)\n },\n disconnect() {\n if (!observing) return\n observing = false\n window.removeEventListener('resize', callback)\n },\n }\n }\n\n const observer = new ResizeObserver(callback)\n return {\n observe() {\n if (observing) return\n observing = true\n observer.observe(element)\n },\n unobserve() {\n if (!observing) return\n observing = false\n observer.unobserve(element)\n },\n disconnect() {\n observing = false\n observer.disconnect()\n },\n }\n}\n","import { FivePlugin } from '@realsee/five-webgpu'\nimport * as THREE from 'three/webgpu'\nimport { Scene, Vector3 } from 'three/webgpu'\nimport { CSS3DObject, CSS3DRenderer } from 'three/addons/renderers/CSS3DRenderer.js'\nimport evenNumber from './evenNumber'\nimport centerPoint from './centerPoint'\nimport transformPositionToVector3 from './transformPositionToVector3'\nimport createResizeObserver from './createResizeObserver'\n\nexport interface Vector3Position {\n x: number\n y: number\n z: number\n}\n\nexport type CSS3DRenderPluginParameterType = undefined\nexport interface CSS3DRenderPluginExportType {\n create3DDomContainer: (\n points: Vector3[] | Vector3Position[],\n config?: { ratio?: number; dpr?: number; autoRender?: boolean; container?: HTMLElement; [key: string]: any } & (\n | { mode?: 'front' }\n | { mode: 'behind'; behindFiveContainer: HTMLElement }\n ),\n ) => { container: HTMLElement; dispose: () => void; css3DObject: CSS3DObject; render?: () => void } | void\n disposeAll: () => void\n}\n\ntype CreateContainer = CSS3DRenderPluginExportType['create3DDomContainer']\ntype CreateContainerConfig = NonNullable<Parameters<CreateContainer>[1]>\ninterface RenderLayer {\n scene: Scene\n renderer: CSS3DRenderer\n entries: Set<object>\n start: () => void\n stop: () => void\n dispose: () => void\n}\ninterface CSS3DRenderPluginState {\n disposers: Set<() => void>\n front?: RenderLayer\n behind?: RenderLayer\n}\n\n/** Renders DOM overlays in a Five scene. One renderer is shared by each front/behind layer. */\nexport const CSS3DRenderPlugin: FivePlugin<CSS3DRenderPluginParameterType, CSS3DRenderPluginExportType> = (five) => {\n const state: CSS3DRenderPluginState = { disposers: new Set() }\n\n const createLayer = (wrapper: HTMLElement, fiveElement: HTMLElement): RenderLayer => {\n const scene = new Scene()\n const renderer = new CSS3DRenderer()\n const setSize = () => renderer.setSize(\n evenNumber(fiveElement.clientWidth, { smaller: true }),\n evenNumber(fiveElement.clientHeight, { smaller: true }),\n )\n setSize()\n const resize = createResizeObserver(setSize, fiveElement)\n renderer.domElement.style.position = 'absolute'\n renderer.domElement.style.top = '0'\n renderer.domElement.style.userSelect = 'none'\n renderer.domElement.style.pointerEvents = 'none'\n wrapper.appendChild(renderer.domElement)\n\n let running = false\n let frame: number | undefined\n const layer: RenderLayer = {\n scene,\n renderer,\n entries: new Set(),\n start() {\n if (running) return\n running = true\n resize.observe()\n const render = () => {\n if (!running) return\n renderer.render(scene, five.camera)\n frame = requestAnimationFrame(render)\n }\n render()\n },\n stop() {\n if (!running) return\n running = false\n if (frame !== undefined) cancelAnimationFrame(frame)\n frame = undefined\n resize.unobserve()\n },\n dispose() {\n layer.stop()\n resize.disconnect()\n renderer.domElement.remove()\n },\n }\n return layer\n }\n\n const create3DDomContainer = (...params: Parameters<CreateContainer>): ReturnType<CreateContainer> => {\n const points = params[0].map(point => point instanceof Vector3 ? point : transformPositionToVector3(point))\n const config = params[1]\n if (points.length < 4) return console.error('points must be equal or greater than 4')\n if (!five.model.loaded) return console.error('five.model.loaded is false')\n const fiveElement = five.getElement()\n if (!fiveElement) return console.error('five.getElement() is empty')\n\n const ratio = config?.ratio ?? 0.00216\n if (ratio <= 0.00215) console.warn('if you need click css3DElement on safari, ratio must be greater than 0.00215')\n const dpr = config?.dpr ?? 1\n const mode = config?.mode ?? 'front'\n const autoRender = config?.autoRender ?? true\n const container = config?.container ?? document.createElement('div')\n container.classList.add('__Dnalogel-plugin--CSS3DRenderPlugin')\n const { css3DObject, mesh } = createObject(points, { ratio, dpr, container, mode })\n\n let layer = mode === 'behind' ? state.behind : state.front\n if (!layer) {\n const wrapper = mode === 'behind'\n ? config?.behindFiveContainer ?? fiveElement.parentElement ?? document.body\n : fiveElement.parentElement ?? document.body\n layer = createLayer(wrapper, fiveElement)\n if (mode === 'behind') state.behind = layer\n else state.front = layer\n }\n\n const entry = {}\n layer.entries.add(entry)\n let rendered = false\n let disposed = false\n const render = () => {\n if (disposed || rendered) return\n rendered = true\n layer!.scene.add(css3DObject)\n if (mesh) five.scene.add(mesh)\n layer!.start()\n }\n const dispose = () => {\n if (disposed) return\n disposed = true\n state.disposers.delete(dispose)\n layer!.entries.delete(entry)\n if (rendered) {\n layer!.scene.remove(css3DObject)\n if (mesh) five.scene.remove(mesh)\n }\n mesh?.geometry.dispose()\n mesh?.material.dispose()\n if (layer!.scene.children.length === 0) layer!.stop()\n if (layer!.entries.size === 0) {\n layer!.dispose()\n if (mode === 'behind' && state.behind === layer) state.behind = undefined\n if (mode === 'front' && state.front === layer) state.front = undefined\n }\n }\n state.disposers.add(dispose)\n if (autoRender) render()\n return { container, dispose, css3DObject, render: autoRender ? undefined : render }\n }\n\n const createObject = (\n points: Vector3[],\n config: Required<Pick<CreateContainerConfig, 'ratio' | 'dpr' | 'container'>> & Pick<CreateContainerConfig, 'mode'>,\n ) => {\n const { ratio, dpr, container: element, mode } = config\n const planeWidth = points[0].distanceTo(points[1])\n const planeHeight = points[1].distanceTo(points[2])\n const domWidthPx = evenNumber((planeWidth / ratio) * dpr)\n const domHeightPx = evenNumber((planeHeight / ratio) * dpr)\n const css3DObject = new CSS3DObject(element)\n css3DObject.scale.set(ratio, ratio, ratio)\n element.style.width = domWidthPx + 'px'\n element.style.height = domHeightPx + 'px'\n element.style.pointerEvents = 'none'\n\n const centerPosition = centerPoint(points[0], points[2])\n const vector01 = points[1].clone().sub(points[0])\n const vector12 = points[2].clone().sub(points[1])\n const rotateXAngle = new Vector3(0, 1, 0).angleTo(new Vector3(0, vector12.y, vector12.z))\n const rotateYAngle = new Vector3(1, 0, 0).angleTo(new Vector3(vector01.x, 0, vector01.z))\n const rotateZAngle = vector01.angleTo(new Vector3(vector01.x, 0, vector01.z))\n const rotateX = (vector12.z > 0 ? -1 : 1) * rotateXAngle\n const rotateY = (vector01.z < 0 ? 1 : -1) * rotateYAngle\n const rotateZ = ((vector01.x > 0 && vector01.y < 0) || (vector01.x < 0 && vector01.y > 0) ? -1 : 1) * rotateZAngle\n css3DObject.rotateOnWorldAxis(new Vector3(1, 0, 0), rotateX)\n css3DObject.rotateOnWorldAxis(new Vector3(0, 1, 0), rotateY)\n css3DObject.rotateOnWorldAxis(new Vector3(0, 0, 1), rotateZ)\n css3DObject.position.set(centerPosition.x, centerPosition.y, centerPosition.z)\n\n let mesh: THREE.Mesh<THREE.PlaneGeometry, THREE.MeshBasicNodeMaterial> | undefined\n if (mode === 'behind') {\n const material = new THREE.MeshBasicNodeMaterial({ opacity: 0, transparent: false, side: THREE.DoubleSide })\n const geometry = new THREE.PlaneGeometry(domWidthPx, domHeightPx)\n mesh = new THREE.Mesh(geometry, material)\n mesh.name = 'CSS3DRenderPlugin-mesh'\n mesh.position.copy(css3DObject.position)\n mesh.rotation.copy(css3DObject.rotation)\n mesh.scale.copy(css3DObject.scale)\n }\n return { css3DObject, mesh }\n }\n\n return {\n create3DDomContainer,\n disposeAll: () => [...state.disposers].forEach(dispose => dispose()),\n }\n}\n\nexport default CSS3DRenderPlugin\n"],"names":["evenNumber","num","config","roundNum","centerPoint","point1","point2","Vector3","transformPositionToVector3","x","y","z","createResizeObserver","callback","element","observing","observer","CSS3DRenderPlugin","five","state","createLayer","wrapper","fiveElement","scene","Scene","renderer","CSS3DRenderer","setSize","resize","running","frame","layer","render","create3DDomContainer","params","points","point","ratio","dpr","mode","autoRender","container","css3DObject","mesh","createObject","entry","rendered","disposed","dispose","planeWidth","planeHeight","domWidthPx","domHeightPx","CSS3DObject","centerPosition","vector01","vector12","rotateXAngle","rotateYAngle","rotateZAngle","rotateX","rotateY","rotateZ","material","THREE","geometry"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraMovementPlugin.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import * as u from "three/webgpu";
|
|
2
|
+
const j = (c, { videoElement: A, mediaManager: w }) => {
|
|
3
|
+
const E = [], b = (e, n) => (E.push(() => {
|
|
4
|
+
c.off(e, n);
|
|
5
|
+
}), c.on(e, n));
|
|
6
|
+
let f = 0, h = !1;
|
|
7
|
+
const t = {
|
|
8
|
+
videoMeshes: [],
|
|
9
|
+
videoTextureEnabled: !1,
|
|
10
|
+
videoSource: "",
|
|
11
|
+
rectPoints: [],
|
|
12
|
+
enabled: !1,
|
|
13
|
+
videoElement: A
|
|
14
|
+
};
|
|
15
|
+
let T, x, v;
|
|
16
|
+
const L = () => {
|
|
17
|
+
++f, v == null || v(), v = void 0, x && (x.muted = !0, x.pause()), x = void 0, T = void 0, t.enabled = !1, t.videoMeshes.forEach((e) => {
|
|
18
|
+
e.geometry.dispose(), e.material.dispose(), c.scene.remove(e);
|
|
19
|
+
}), t.videoMeshes = [], c.needsRender = !0;
|
|
20
|
+
}, m = w == null ? void 0 : w.createController({ label: "vreo-model-video", onCancel: L }), z = (e, n) => {
|
|
21
|
+
var o;
|
|
22
|
+
const d = (o = t.videoTexture) == null ? void 0 : o.image;
|
|
23
|
+
if (!d) return;
|
|
24
|
+
const r = (m == null ? void 0 : m.begin({ userAction: e, audible: n })) ?? void 0;
|
|
25
|
+
if (!(m && !r))
|
|
26
|
+
return T = r, x = r ? r.bind(d) : d;
|
|
27
|
+
}, p = (e, n = !1) => {
|
|
28
|
+
const d = t.enabled, r = e ? x : z(n, !0);
|
|
29
|
+
if (!r) return;
|
|
30
|
+
r.muted = e, d && !t.enabled && (t.enabled = !0, t.videoMeshes = V(), t.videoMeshes.forEach((i) => c.scene.add(i)));
|
|
31
|
+
const o = T, s = f;
|
|
32
|
+
t.enabled && r.play().catch((i) => {
|
|
33
|
+
s === f && !(o != null && o.signal.aborted) && (g(), console.error(i));
|
|
34
|
+
});
|
|
35
|
+
}, F = () => (x == null ? void 0 : x.muted) ?? !0, R = () => {
|
|
36
|
+
if (h || t.enabled || !t.videoTexture) return;
|
|
37
|
+
const e = z(!1, !1);
|
|
38
|
+
if (!e) return;
|
|
39
|
+
const n = f, d = T, r = t.videoTexture.image, o = () => n === f && !h && t.enabled && !(d != null && d.signal.aborted);
|
|
40
|
+
t.enabled = !0, t.videoMeshes = V(), t.videoMeshes.forEach((l) => c.scene.add(l));
|
|
41
|
+
const s = () => {
|
|
42
|
+
r.removeEventListener("timeupdate", s), o() && (t.videoTextureEnabled = !0, t.videoMeshes.forEach((l) => {
|
|
43
|
+
l.material.map = t.videoTexture;
|
|
44
|
+
}), c.needsRender = !0);
|
|
45
|
+
}, i = () => {
|
|
46
|
+
c.off("modelLoaded", i), o() && (r.addEventListener("timeupdate", s), e.play().catch((l) => {
|
|
47
|
+
o() && (g(), console.error(l));
|
|
48
|
+
}));
|
|
49
|
+
};
|
|
50
|
+
v = () => {
|
|
51
|
+
c.off("modelLoaded", i), r.removeEventListener("timeupdate", s);
|
|
52
|
+
}, c.model.loaded ? i() : c.on("modelLoaded", i);
|
|
53
|
+
}, g = () => {
|
|
54
|
+
m == null || m.cancel(), L();
|
|
55
|
+
}, V = () => t.rectPoints.map((e, n) => {
|
|
56
|
+
const d = new u.BufferGeometry(), r = 128, o = [];
|
|
57
|
+
o.push(e[0].x, e[0].y, e[0].z);
|
|
58
|
+
for (let a = 1; a < r; a++)
|
|
59
|
+
o.push(
|
|
60
|
+
e[0].x + (e[1].x - e[0].x) * a / r,
|
|
61
|
+
e[0].y + (e[1].y - e[0].y) * a / r,
|
|
62
|
+
e[0].z + (e[1].z - e[0].z) * a / r
|
|
63
|
+
);
|
|
64
|
+
o.push(e[1].x, e[1].y, e[1].z), o.push(e[2].x, e[2].y, e[2].z);
|
|
65
|
+
for (let a = 1; a < r; a++)
|
|
66
|
+
o.push(
|
|
67
|
+
e[2].x + (e[3].x - e[2].x) * a / r,
|
|
68
|
+
e[2].y + (e[3].y - e[2].y) * a / r,
|
|
69
|
+
e[2].z + (e[3].z - e[2].z) * a / r
|
|
70
|
+
);
|
|
71
|
+
o.push(e[3].x, e[3].y, e[3].z);
|
|
72
|
+
const s = [];
|
|
73
|
+
s.push(0, 1);
|
|
74
|
+
for (let a = 1; a < r; a++)
|
|
75
|
+
s.push(0, 1 - a / r);
|
|
76
|
+
s.push(0, 0), s.push(1, 0);
|
|
77
|
+
for (let a = 1; a < r; a++)
|
|
78
|
+
s.push(1, a / r);
|
|
79
|
+
s.push(1, 1);
|
|
80
|
+
const i = [];
|
|
81
|
+
for (let a = 0; a < r; a++)
|
|
82
|
+
i.push(a, a + 1, r * 2 - a, a, r * 2 - a, r * 2 + 1 - a);
|
|
83
|
+
d.setAttribute("position", new u.BufferAttribute(new Float32Array(o), 3)), d.setAttribute("uv", new u.BufferAttribute(new Float32Array(s), 2)), d.setIndex(new u.BufferAttribute(new Uint32Array(i), 1));
|
|
84
|
+
const l = new u.MeshBasicNodeMaterial({
|
|
85
|
+
map: t.videoTextureEnabled ? t.videoTexture : t.imageTexture,
|
|
86
|
+
side: u.DoubleSide
|
|
87
|
+
}), y = new u.Mesh(d, l);
|
|
88
|
+
return y.renderOrder = 1, y.name = `video-${n}-${performance.now()}`, y;
|
|
89
|
+
}), O = (e) => {
|
|
90
|
+
const n = new u.TextureLoader().load(e);
|
|
91
|
+
return n.minFilter = u.LinearFilter, n.magFilter = u.LinearFilter, n;
|
|
92
|
+
}, U = (e, n, d = () => !0) => new Promise((r, o) => {
|
|
93
|
+
const s = new XMLHttpRequest();
|
|
94
|
+
s.onreadystatechange = () => {
|
|
95
|
+
if (s.readyState == 4) {
|
|
96
|
+
if (!d()) {
|
|
97
|
+
o(new DOMException("Playback cancelled", "AbortError"));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (s.status == 200) {
|
|
101
|
+
const i = window.URL || window.webkitURL;
|
|
102
|
+
n = n || document.createElement("video"), n.crossOrigin = "anonymous", n.autoplay = !1, n.muted = !0, n.loop = !0, n.playsInline = !0, n.src = i.createObjectURL(s.response);
|
|
103
|
+
const l = new u.VideoTexture(n);
|
|
104
|
+
l.colorSpace = u.SRGBColorSpace, l.minFilter = u.LinearFilter, l.magFilter = u.LinearFilter, r(Object.assign(l, { videoSource: e }));
|
|
105
|
+
} else
|
|
106
|
+
o(new Error("Video download Error: " + s.status));
|
|
107
|
+
}
|
|
108
|
+
}, s.onerror = (i) => o(i), s.open("GET", e), s.responseType = "blob", s.send();
|
|
109
|
+
}), M = async (e, n) => {
|
|
110
|
+
const d = ++f, { video_src: r, video_poster_src: o, points: s } = e;
|
|
111
|
+
t.videoSource = r, t.rectPoints = s.map((l) => l.map(({ x: y, y: a, z: P }) => new u.Vector3(y, a, P))), t.imageTexture = O(o), n && (t.videoElement = n);
|
|
112
|
+
const i = await U(t.videoSource, t.videoElement, () => !h && d === f);
|
|
113
|
+
if (h || d !== f) {
|
|
114
|
+
i.image.muted = !0, i.image.pause(), URL.revokeObjectURL(i.image.src), i.dispose();
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
t.videoTexture && (t.videoTexture.image.pause(), URL.revokeObjectURL(t.videoTexture.image.src), t.videoTexture.dispose()), t.videoTexture = i, e.enable && R();
|
|
118
|
+
};
|
|
119
|
+
return b("modeChange", () => p(!0)), b("wantsTapGesture", (e) => {
|
|
120
|
+
if (!t.enabled) return;
|
|
121
|
+
const [n] = e.intersectObjects(c.scene.children, !0);
|
|
122
|
+
if (n && /^video/.test(n.object.name))
|
|
123
|
+
return t.videoTexture && p(!t.videoTexture.image.muted, !0), !1;
|
|
124
|
+
}), b("panoArrived", () => {
|
|
125
|
+
if (!t.enabled || F()) return;
|
|
126
|
+
const e = c.camera.position;
|
|
127
|
+
t.rectPoints.find((d) => {
|
|
128
|
+
const r = d.reduce(
|
|
129
|
+
(o, s) => new u.Vector3(
|
|
130
|
+
o.x + s.x / d.length,
|
|
131
|
+
o.y + s.y / d.length,
|
|
132
|
+
o.z + s.z / d.length
|
|
133
|
+
),
|
|
134
|
+
new u.Vector3()
|
|
135
|
+
);
|
|
136
|
+
return d.map(
|
|
137
|
+
(o) => new u.Vector3(
|
|
138
|
+
(o.x + r.x) / 2,
|
|
139
|
+
(o.y + r.y) / 2,
|
|
140
|
+
(o.z + r.z) / 2
|
|
141
|
+
)
|
|
142
|
+
).filter((o) => {
|
|
143
|
+
o = o.clone().sub(e).normalize();
|
|
144
|
+
const s = new u.Raycaster(e, o), [i] = s.intersectObjects(c.scene.children, !0);
|
|
145
|
+
return !!i && /^video/.test(i.object.name);
|
|
146
|
+
}).length >= 2;
|
|
147
|
+
}) || p(!0);
|
|
148
|
+
}), b("renderFrame", () => {
|
|
149
|
+
t.videoMeshes.forEach((e) => {
|
|
150
|
+
e && (e.needsRender = !0);
|
|
151
|
+
});
|
|
152
|
+
}), b("load", (e) => {
|
|
153
|
+
e.modelTVVideoData && M(e.modelTVVideoData);
|
|
154
|
+
}), { enable: R, disable: g, load: M, dispose: () => {
|
|
155
|
+
var e;
|
|
156
|
+
h = !0, ++f, g(), m == null || m.dispose(), E.splice(0).forEach((n) => n()), (e = t.imageTexture) == null || e.dispose(), t.videoTexture && (URL.revokeObjectURL(t.videoTexture.image.src), t.videoTexture.dispose());
|
|
157
|
+
} };
|
|
158
|
+
};
|
|
159
|
+
export {
|
|
160
|
+
j as ModelTVVideoPlugin
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=ModelTVVideoPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelTVVideoPlugin.js","sources":["../../resources/fivePlugins/ModelTVVideoPlugin/index.ts"],"sourcesContent":["import * as THREE from 'three/webgpu'\nimport type { FivePlugin } from '@realsee/five-webgpu'\nimport type { PlaybackManager, PlaybackSession, MediaOperations } from '../../Player/playback-types'\n\nexport interface ModelTVVideoPluginData {\n enable?: boolean\n video_src: string\n video_poster_src: string\n points: { x: number; y: number; z: number }[][]\n}\n\nexport interface ModelTVVideoPluginParameterType {\n videoElement?: HTMLVideoElement\n mediaManager?: PlaybackManager\n}\nexport interface ModelTVVideoPluginExportType {\n enable: () => void\n disable: () => void\n dispose: () => void\n load: (data: ModelTVVideoPluginData, videoElement?: HTMLVideoElement) => Promise<void>\n}\n\ntype ModelTVVideoPluginPoints = THREE.Vector3[][]\n\ntype ModelTVVideoPluginState = {\n videoMeshes: THREE.Mesh<THREE.BufferGeometry, THREE.MeshBasicNodeMaterial>[]\n videoTextureEnabled: boolean\n videoSource: string\n rectPoints: ModelTVVideoPluginPoints\n enabled: boolean\n imageTexture?: THREE.Texture\n videoTexture?: THREE.VideoTexture\n videoElement?: HTMLVideoElement\n}\n\nexport const ModelTVVideoPlugin: FivePlugin<ModelTVVideoPluginParameterType, ModelTVVideoPluginExportType> = (\n five,\n { videoElement, mediaManager },\n) => {\n const listeners: (() => void)[] = []\n const on: typeof five.on = (name, callback) => {\n listeners.push(() => { five.off(name, callback) })\n return five.on(name, callback)\n }\n let generation = 0\n let disposed = false\n const state: ModelTVVideoPluginState = {\n videoMeshes: [],\n videoTextureEnabled: false,\n videoSource: '',\n rectPoints: [],\n enabled: false,\n videoElement: videoElement,\n }\n\n let session: PlaybackSession | undefined\n let output: MediaOperations | undefined\n let removeReady: (() => void) | undefined\n const stop = () => {\n ++generation\n removeReady?.()\n removeReady = undefined\n if (output) { output.muted = true; output.pause() }\n output = undefined\n session = undefined\n state.enabled = false\n state.videoMeshes.forEach(mesh => {\n mesh.geometry.dispose()\n mesh.material.dispose()\n five.scene.remove(mesh)\n })\n state.videoMeshes = []\n five.needsRender = true\n }\n const controller = mediaManager?.createController({ label: 'vreo-model-video', onCancel: stop })\n const bind = (userAction: boolean, audible: boolean) => {\n const element = state.videoTexture?.image as HTMLVideoElement | undefined\n if (!element) return undefined\n const next = controller?.begin({ userAction, audible }) ?? undefined\n if (controller && !next) return undefined\n session = next\n return output = next ? next.bind(element) : element\n }\n const setMuted = (muted: boolean, userAction = false) => {\n const wasEnabled = state.enabled\n const media = !muted ? bind(userAction, true) : output\n if (!media) return\n media.muted = muted\n if (wasEnabled && !state.enabled) {\n state.enabled = true\n state.videoMeshes = createPanoVideoMeshes()\n state.videoMeshes.forEach(mesh => five.scene.add(mesh))\n }\n const run = session\n const current = generation\n if (state.enabled) void media.play().catch(error => { if (current === generation && !run?.signal.aborted) { disable(); console.error(error) } })\n }\n const getMuted = () => output?.muted ?? true\n const enable = () => {\n if (disposed || state.enabled || !state.videoTexture) return\n const media = bind(false, false)\n if (!media) return\n const current = generation\n const run = session\n const element = state.videoTexture.image as HTMLVideoElement\n const valid = () => current === generation && !disposed && state.enabled && !run?.signal.aborted\n state.enabled = true\n state.videoMeshes = createPanoVideoMeshes()\n state.videoMeshes.forEach(mesh => five.scene.add(mesh))\n const timeupdate = () => {\n element.removeEventListener('timeupdate', timeupdate)\n if (!valid()) return\n state.videoTextureEnabled = true\n state.videoMeshes.forEach(mesh => { mesh.material.map = state.videoTexture! })\n five.needsRender = true\n }\n const play = () => {\n five.off('modelLoaded', play)\n if (!valid()) return\n element.addEventListener('timeupdate', timeupdate)\n void media.play().catch(error => { if (valid()) { disable(); console.error(error) } })\n }\n removeReady = () => { five.off('modelLoaded', play); element.removeEventListener('timeupdate', timeupdate) }\n if (five.model.loaded) play()\n else five.on('modelLoaded', play)\n }\n const disable = () => { controller?.cancel(); stop() }\n\n const createPanoVideoMeshes = () => {\n return state.rectPoints.map((points, index) => {\n const geometry = new THREE.BufferGeometry()\n const segments = 128\n\n const verticesArray: number[] = []\n verticesArray.push(points[0].x, points[0].y, points[0].z)\n for (let i = 1; i < segments; i++) {\n verticesArray.push(\n points[0].x + ((points[1].x - points[0].x) * i) / segments,\n points[0].y + ((points[1].y - points[0].y) * i) / segments,\n points[0].z + ((points[1].z - points[0].z) * i) / segments,\n )\n }\n verticesArray.push(points[1].x, points[1].y, points[1].z)\n verticesArray.push(points[2].x, points[2].y, points[2].z)\n for (let i = 1; i < segments; i++) {\n verticesArray.push(\n points[2].x + ((points[3].x - points[2].x) * i) / segments,\n points[2].y + ((points[3].y - points[2].y) * i) / segments,\n points[2].z + ((points[3].z - points[2].z) * i) / segments,\n )\n }\n verticesArray.push(points[3].x, points[3].y, points[3].z)\n\n const uvArray: number[] = []\n uvArray.push(0, 1)\n for (let i = 1; i < segments; i++) {\n uvArray.push(0, 1 - i / segments)\n }\n uvArray.push(0, 0)\n uvArray.push(1, 0)\n for (let i = 1; i < segments; i++) {\n uvArray.push(1, i / segments)\n }\n uvArray.push(1, 1)\n\n const indicesArray: number[] = []\n for (let i = 0; i < segments; i++) {\n indicesArray.push(i, i + 1, segments * 2 - i, i, segments * 2 - i, segments * 2 + 1 - i)\n }\n geometry.setAttribute('position', new THREE.BufferAttribute(new Float32Array(verticesArray), 3))\n geometry.setAttribute('uv', new THREE.BufferAttribute(new Float32Array(uvArray), 2))\n geometry.setIndex(new THREE.BufferAttribute(new Uint32Array(indicesArray), 1))\n const material = new THREE.MeshBasicNodeMaterial({\n map: state.videoTextureEnabled ? state.videoTexture : state.imageTexture,\n side: THREE.DoubleSide,\n })\n const mesh = new THREE.Mesh(geometry, material)\n mesh.renderOrder = 1\n mesh.name = `video-${index}-${performance.now()}`\n return mesh\n })\n }\n\n const getImageTexture = (source: string) => {\n const texture = new THREE.TextureLoader().load(source)\n texture.minFilter = THREE.LinearFilter\n texture.magFilter = THREE.LinearFilter\n return texture\n }\n\n const getVideoTexture = (\n source: string,\n video?: HTMLVideoElement,\n valid = () => true,\n ): Promise<THREE.VideoTexture & { videoSource: string }> => {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.onreadystatechange = () => {\n if (xhr.readyState == 4) {\n if (!valid()) { reject(new DOMException('Playback cancelled', 'AbortError')); return }\n if (xhr.status == 200) {\n const url = window.URL || window.webkitURL\n video = video || document.createElement('video')\n video.crossOrigin = 'anonymous'\n video.autoplay = false\n video.muted = true\n video.loop = true\n video.playsInline = true\n video.src = url.createObjectURL(xhr.response)\n const texture = new THREE.VideoTexture(video)\n texture.colorSpace = THREE.SRGBColorSpace\n texture.minFilter = THREE.LinearFilter\n texture.magFilter = THREE.LinearFilter\n resolve(Object.assign(texture, { videoSource: source }))\n } else {\n reject(new Error('Video download Error: ' + xhr.status))\n }\n }\n }\n xhr.onerror = (error) => reject(error)\n xhr.open('GET', source)\n xhr.responseType = 'blob'\n xhr.send()\n })\n }\n\n const load = async (data: ModelTVVideoPluginData, videoElement?: HTMLVideoElement) => {\n const current = ++generation\n const { video_src, video_poster_src, points } = data\n state.videoSource = video_src\n state.rectPoints = points.map((items) => items.map(({ x, y, z }) => new THREE.Vector3(x, y, z)))\n state.imageTexture = getImageTexture(video_poster_src)\n\n if (videoElement) {\n state.videoElement = videoElement\n }\n\n const texture = await getVideoTexture(state.videoSource, state.videoElement, () => !disposed && current === generation)\n if (disposed || current !== generation) {\n texture.image.muted = true\n texture.image.pause()\n URL.revokeObjectURL(texture.image.src)\n texture.dispose()\n return\n }\n if (state.videoTexture) {\n state.videoTexture.image.pause()\n URL.revokeObjectURL(state.videoTexture.image.src)\n state.videoTexture.dispose()\n }\n state.videoTexture = texture\n\n if (data.enable) enable()\n }\n\n on('modeChange', () => setMuted(true))\n\n on('wantsTapGesture', (raycaster) => {\n if (!state.enabled) return\n const [intersect] = raycaster.intersectObjects(five.scene.children, true)\n if (!!intersect && /^video/.test(intersect.object.name)) {\n if (state.videoTexture) setMuted(!state.videoTexture.image.muted, true)\n return false\n }\n })\n\n on('panoArrived', () => {\n if (!state.enabled) return\n if (getMuted()) return\n const cameraPosition = five.camera.position\n\n const visible = state.rectPoints.find((points) => {\n const centerVector = points.reduce(\n (total, curr) =>\n new THREE.Vector3(\n total.x + curr.x / points.length,\n total.y + curr.y / points.length,\n total.z + curr.z / points.length,\n ),\n new THREE.Vector3(),\n )\n\n return (\n points\n .map(\n (point) =>\n new THREE.Vector3(\n (point.x + centerVector.x) / 2,\n (point.y + centerVector.y) / 2,\n (point.z + centerVector.z) / 2,\n ),\n )\n .filter((vector) => {\n vector = vector.clone().sub(cameraPosition).normalize()\n const raycaster = new THREE.Raycaster(cameraPosition, vector)\n const [intersect] = raycaster.intersectObjects(five.scene.children, true)\n return !!intersect && /^video/.test(intersect.object.name)\n }).length >= 2\n )\n })\n if (!visible) setMuted(true)\n })\n\n on('renderFrame', () => {\n state.videoMeshes.forEach((meshes) => {\n if (meshes)\n //@ts-ignore\n meshes.needsRender = true\n })\n })\n\n on('load', (input) => {\n if (input.modelTVVideoData) {\n load(input.modelTVVideoData)\n }\n })\n\n const dispose = () => {\n disposed = true\n ++generation\n disable()\n controller?.dispose()\n listeners.splice(0).forEach(remove => remove())\n state.imageTexture?.dispose()\n if (state.videoTexture) {\n URL.revokeObjectURL(state.videoTexture.image.src)\n state.videoTexture.dispose()\n }\n }\n return { enable, disable, load, dispose }\n}\n"],"names":["ModelTVVideoPlugin","five","videoElement","mediaManager","listeners","on","name","callback","generation","disposed","state","session","output","removeReady","stop","mesh","controller","bind","userAction","audible","element","_a","next","setMuted","muted","wasEnabled","media","createPanoVideoMeshes","run","current","error","disable","getMuted","enable","valid","timeupdate","play","points","index","geometry","THREE","segments","verticesArray","i","uvArray","indicesArray","material","getImageTexture","source","texture","getVideoTexture","video","resolve","reject","xhr","url","load","data","video_src","video_poster_src","items","x","y","z","raycaster","intersect","cameraPosition","centerVector","total","curr","point","vector","meshes","input","remove"],"mappings":"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"}
|
package/lib/react/index.d.ts
CHANGED
|
@@ -40,11 +40,11 @@ export interface VreoActionCallbacks {
|
|
|
40
40
|
* @param preload 是否开启预载
|
|
41
41
|
* @param force 是否强制载入
|
|
42
42
|
*/
|
|
43
|
-
load: (vreoUnit: VreoUnit, currentTime?: number, preload?: boolean, force?: boolean) => Promise<boolean>;
|
|
43
|
+
load: (vreoUnit: VreoUnit, currentTime?: number, preload?: boolean, force?: boolean, userAction?: boolean) => Promise<boolean>;
|
|
44
44
|
/**
|
|
45
45
|
* 播放。
|
|
46
46
|
*/
|
|
47
|
-
play: (currentTime?: number) =>
|
|
47
|
+
play: (currentTime?: number, userAction?: boolean) => boolean;
|
|
48
48
|
/**
|
|
49
49
|
* 暂停。
|
|
50
50
|
*/
|
|
@@ -92,10 +92,10 @@ export interface VreoActionCallbacks {
|
|
|
92
92
|
* ```
|
|
93
93
|
*/
|
|
94
94
|
export declare function useVreoAction(): {
|
|
95
|
-
load: (vreoUnit: VreoUnit, currentTime?: number) => Promise<boolean>;
|
|
95
|
+
load: (vreoUnit: VreoUnit, currentTime?: number, preload?: boolean, force?: boolean, userAction?: boolean) => Promise<boolean>;
|
|
96
96
|
pause: () => void;
|
|
97
97
|
show: () => void;
|
|
98
|
-
play: (currentTime?: number) => boolean;
|
|
98
|
+
play: (currentTime?: number, userAction?: boolean) => boolean;
|
|
99
99
|
hide: () => void;
|
|
100
100
|
dispose: () => void;
|
|
101
101
|
};
|
|
@@ -160,3 +160,4 @@ export declare function useVreoEventCallback<T extends keyof VreoKeyframeEvent>(
|
|
|
160
160
|
* ```
|
|
161
161
|
*/
|
|
162
162
|
export declare function useVreoPausedState(): boolean;
|
|
163
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../resources/react/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAIjE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc;IACd,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAChC,UAAU;IACV,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAoBpD,CAAA;AAiCD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9H;;OAEG;IACH,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;IAC7D;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa;qBAId,QAAQ,gBAAgB,MAAM,YAAY,OAAO,UAAU,OAAO,eAAe,OAAO;;;yBAKvD,MAAM,eAAe,OAAO;;;EAO3E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACpE,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC9B,IAAI,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG,SAAS,QAexC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,YAQjC"}
|