@ridp/threejs 1.0.9 → 1.0.11

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.
@@ -0,0 +1,15 @@
1
+ "use strict";const c=require("./ImageLoader-DwvBWW6h.cjs");function s(o,t=[.3,.3,.3]){const e=document.querySelector(`#${o}`);if(!e){console.log(" 获取 infoPlane 元素失败 (id) =====> :",o);return}const n=e.cloneNode(!0);n.style.display="block";const r=new c.CSS3DSprite(n);return r.visible=!1,r.scale.set(...t),r}function i(o,t){const e=u(o);e.style.display="block";const n=new c.CSS3DSprite(e);return n.visible=!1,n.scale.set(t,t,t),n}const u=o=>{const t=document.createElement("div");t.style.cssText=`
2
+ border-radius: 50px;
3
+ border: 2px solid rgba(255, 255, 255, 0.5);
4
+ background-color: rgba(15, 20, 22, 0.562);
5
+ justify-content: flex-start;
6
+ align-items: center;
7
+ padding: 20px 30px;
8
+ display: flex;
9
+ transform-origin: center 0;`;const e=document.createElement("span");return e.style.cssText=`
10
+ font-size: 40px;
11
+ line-height: 1;
12
+ white-space: nowrap;
13
+ color: #fff;
14
+ font-weight: 700;
15
+ `,e.innerText=o,t.appendChild(e),t},p=(o,t)=>{const e={};o.forEach(a=>{let l=a.parent;for(;l;)e[l.uuid]?e[l.uuid]++:e[l.uuid]=1,l=l.parent});let n=null,r=0;for(const a in e)e[a]>r&&(r=e[a],n=t.getObjectByProperty("uuid",a));return n};exports.createInfoPlane=s;exports.createTagPlane=i;exports.getCommonParent=p;
@@ -0,0 +1,54 @@
1
+ import { l as a } from "./ImageLoader-xzOH4Owt.js";
2
+ function u(o, t = [0.3, 0.3, 0.3]) {
3
+ const e = document.querySelector(`#${o}`);
4
+ if (!e) {
5
+ console.log(" 获取 infoPlane 元素失败 (id) =====> :", o);
6
+ return;
7
+ }
8
+ const n = e.cloneNode(!0);
9
+ n.style.display = "block";
10
+ const r = new a(n);
11
+ return r.visible = !1, r.scale.set(...t), r;
12
+ }
13
+ function p(o, t) {
14
+ const e = c(o);
15
+ e.style.display = "block";
16
+ const n = new a(e);
17
+ return n.visible = !1, n.scale.set(t, t, t), n;
18
+ }
19
+ const c = (o) => {
20
+ const t = document.createElement("div");
21
+ t.style.cssText = `
22
+ border-radius: 50px;
23
+ border: 2px solid rgba(255, 255, 255, 0.5);
24
+ background-color: rgba(15, 20, 22, 0.562);
25
+ justify-content: flex-start;
26
+ align-items: center;
27
+ padding: 20px 30px;
28
+ display: flex;
29
+ transform-origin: center 0;`;
30
+ const e = document.createElement("span");
31
+ return e.style.cssText = `
32
+ font-size: 40px;
33
+ line-height: 1;
34
+ white-space: nowrap;
35
+ color: #fff;
36
+ font-weight: 700;
37
+ `, e.innerText = o, t.appendChild(e), t;
38
+ }, d = (o, t) => {
39
+ const e = {};
40
+ o.forEach((s) => {
41
+ let l = s.parent;
42
+ for (; l; )
43
+ e[l.uuid] ? e[l.uuid]++ : e[l.uuid] = 1, l = l.parent;
44
+ });
45
+ let n = null, r = 0;
46
+ for (const s in e)
47
+ e[s] > r && (r = e[s], n = t.getObjectByProperty("uuid", s));
48
+ return n;
49
+ };
50
+ export {
51
+ p as a,
52
+ u as c,
53
+ d as g
54
+ };
package/dist/hooks.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./useGLTFLoader-BiveFkS6.cjs");exports.intersectColor=e.intersectColor;exports.obbObjects=e.obbObjects;exports.useGLTFLoader=e.useGLTFLoader;exports.useObb=e.useObb;exports.useRaycaster=e.useRaycaster;exports.useThreeJs=e.useThreeJs;
package/dist/hooks.js ADDED
@@ -0,0 +1,9 @@
1
+ import { i as a, o, c as r, b, a as t, u } from "./useGLTFLoader-IrwFnR2e.js";
2
+ export {
3
+ a as intersectColor,
4
+ o as obbObjects,
5
+ r as useGLTFLoader,
6
+ b as useObb,
7
+ t as useRaycaster,
8
+ u as useThreeJs
9
+ };
@@ -0,0 +1 @@
1
+ "use strict";var b=Object.defineProperty;var O=(d,e,t)=>e in d?b(d,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):d[e]=t;var s=(d,e,t)=>O(d,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./useGLTFLoader-BiveFkS6.cjs"),r=require("./ImageLoader-DwvBWW6h.cjs"),f=require("./common-BHi3qsZW.cjs"),o=require("three"),m=require("vue"),L={enableDamping:!0,dampingFactor:.25,screenSpacePanning:!1,minDistance:.1,maxDistance:1e3,maxPolarAngle:o.MathUtils.degToRad(60)};class p{constructor(e,t){s(this,"isReady",m.ref(!1));s(this,"scene",null);s(this,"camera",null);s(this,"renderer",null);s(this,"control",null);s(this,"css3dRenderer",null);s(this,"el",null);s(this,"renderRequested",!1);s(this,"selector",null);s(this,"eventsListener",{});s(this,"stats",null);s(this,"isDispose",!1);s(this,"initOpt",{css3d:!1,stats:!1,renderType:"change",initListener:"True",control:{init:!0,options:{}}});s(this,"onContextLost",e=>{e.preventDefault(),cancelAnimationFrame(this.animate)});s(this,"onContextRestored",e=>{e.preventDefault(),this.dispose(),m.nextTick(()=>{this.setup(this.selector)})});s(this,"initListener",()=>{window&&window.addEventListener("resize",()=>this.onResize(),!1),this.renderer.domElement.addEventListener("webglcontextlost",this.onContextLost,!1),this.renderer.domElement.addEventListener("webglcontextrestored",this.onContextRestored,!1)});s(this,"animate",()=>{this.initOpt.renderType==="loop"&&this.onRender(),requestAnimationFrame(this.animate)});s(this,"onRender",()=>{this.isDispose||(this.renderRequested=!1,this.stats&&this.stats.update(),this.control&&this.control.update(),this.renderer.render(this.scene,this.camera),this.css3dRenderer&&this.css3dRenderer.render(this.scene,this.camera))});s(this,"requestRenderIfNotRequested",()=>{this.renderRequested||(this.renderRequested=!0,requestAnimationFrame(()=>{this.onRender()}))});this.isReady.value=!1,t&&(this.initOpt=Object.assign(this.initOpt,t)),e&&this.setup(e)}setup(e){this.isDispose=!1,this.selector=e,this.el=document.querySelector(e),this.scene=new o.Scene({}),this.camera=new o.PerspectiveCamera(50,1,.1,2e3),this.renderer=new o.WebGLRenderer({antialias:!0,alpha:!0,precision:"mediump",logarithmicDepthBuffer:!0});const t=Math.tan(Math.PI/180*this.camera.fov/2),[i,c]=this.getTargetSize();if(this.camera.aspect=i/c,this.camera.position.set(47,39,100),this.camera.fov=360/Math.PI*Math.atan(t*(c/i)),this.camera.lookAt(0,0,0),this.camera.updateProjectionMatrix(),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.setSize(i,c),this.el.appendChild(this.renderer.domElement),this.initOpt.control&&this.initOpt.control.init){this.control=r.createOrbitControl(this.camera,this.renderer.domElement);const h=Object.assign(L,this.initOpt.control.options||{});Object.keys(h).forEach(n=>{this.control[n]=h[n]})}m.nextTick(()=>this.isReady.value=!0),this.initOpt.stats&&this.initStats(),this.initOpt.css3d&&this.initCss3dRenderer(),this.initOpt.renderType==="loop"?requestAnimationFrame(this.animate):this.initOpt.renderType==="change"&&this.control&&this.control.addEventListener("change",this.requestRenderIfNotRequested),this.initOpt.initListener=="True"&&this.initListener()}removeListener(){window&&window.removeEventListener("resize",this.onResize,!1),this.renderer.domElement.removeEventListener("webglcontextlost",this.onContextLost.bind(p),!1),this.renderer.domElement.removeEventListener("webglcontextrestored",this.onContextRestored.bind(p),!1)}initStats(){const e=new Stats;e.dom.style.cssText="position:absolute;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",this.el.appendChild(e.dom)}initCss3dRenderer(){this.css3dRenderer=new r.CSS3DRenderer;const[e,t]=this.getTargetSize();this.css3dRenderer.setSize(e,t),this.css3dRenderer.domElement.style.position="absolute",this.css3dRenderer.domElement.style.pointerEvents="none",this.css3dRenderer.domElement.style.top=0,this.css3dRenderer.domElement.style.left=0,this.el.appendChild(this.css3dRenderer.domElement)}getTargetSize(){const e=document.querySelector(this.selector);return e?[e.clientWidth,e.clientHeight]:[0,0]}onResize(){m.nextTick(()=>{const e=Math.tan(Math.PI/180*this.camera.fov/2),[t,i]=this.getTargetSize();this.camera.aspect=t/i,this.camera.fov=360/Math.PI*Math.atan(e*(i/t)),this.camera.updateProjectionMatrix(),this.camera.lookAt(this.scene.position),this.renderer.setSize(t,i),this.css3dRenderer&&this.css3dRenderer.setSize(t,i),this.onRender()})}frameArea(e,t,i){const c=new o.Box3().setFromObject(e),h=c.getSize(new o.Vector3).length(),n=c.getCenter(new o.Vector3);i&&n.add(i);const R=h*t*.5,g=o.MathUtils.degToRad(this.camera.fov*.5),x=R/Math.tan(g),u=new o.Vector3().subVectors(this.camera.position,n).multiply(new o.Vector3(1,1,1)).normalize().multiplyScalar(x).add(n),l={x:u.x,y:u.y,z:u.z,lookAt_x:n.x,lookAt_y:n.y,lookAt_z:n.z};return this.camera.position.set(l.x,l.y,l.z),this.camera.lookAt(l.lookAt_x,l.lookAt_y,l.lookAt_z),this.camera.updateProjectionMatrix(),this.control.target.copy(n),this.control.update(),h}on(e,t){!e||!t||(this.eventsListener[e]||(this.eventsListener[e]=[]),this.eventsListener[e].push(t))}off(e){e||(this.eventsListener={}),this.eventsListener[e]&&(this.eventsListener[e]=[])}dispose(){this.isDispose=!0,this.removeListener(),r.disposeThreeObject(this.scene),this.renderer.dispose(),this.renderer.domElement.remove(),this.el=null,this.renderer=null,this.camera=null,this.scene=null,this.control=null,this.css3dRenderer=null}}exports.IDBCache=a.IDBCache;exports.intersectColor=a.intersectColor;exports.obbObjects=a.obbObjects;exports.useGLTFLoader=a.useGLTFLoader;exports.useObb=a.useObb;exports.useRaycaster=a.useRaycaster;exports.useThreeJs=a.useThreeJs;exports.ImageLoader=r.ImageLoader;exports.createArrowHelper=r.createArrowHelper;exports.createAxesHelper=r.createAxesHelper;exports.createBox3Helper=r.createBox3Helper;exports.createCameraHelper=r.createCameraHelper;exports.createGridHelper=r.createGridHelper;exports.createMapControls=r.createMapControls;exports.createOrbitControl=r.createOrbitControl;exports.createRaycaster=r.createRaycaster;exports.createStats=r.createStats;exports.disposeThreeObject=r.disposeThreeObject;exports.initEnvImage=r.initEnvImage;exports.createInfoPlane=f.createInfoPlane;exports.createTagPlane=f.createTagPlane;exports.getCommonParent=f.getCommonParent;exports.ThreeIns=p;
@@ -0,0 +1,184 @@
1
+ var g = Object.defineProperty;
2
+ var x = (a, e, t) => e in a ? g(a, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : a[e] = t;
3
+ var s = (a, e, t) => x(a, typeof e != "symbol" ? e + "" : e, t);
4
+ import { I, i as j, o as k, c as H, b as W, a as B, u as V } from "./useGLTFLoader-IrwFnR2e.js";
5
+ import { d as v, C as O, j as L } from "./ImageLoader-xzOH4Owt.js";
6
+ import { I as G, h as N, g as J, b as U, c as Y, a as K, e as Q, f as X, i as Z, k as $ } from "./ImageLoader-xzOH4Owt.js";
7
+ import { c as te, a as se, g as ie } from "./common-POkqA27v.js";
8
+ import { MathUtils as p, Scene as b, PerspectiveCamera as y, WebGLRenderer as z, Box3 as w, Vector3 as c } from "three";
9
+ import { ref as S, nextTick as l } from "vue";
10
+ const C = {
11
+ enableDamping: !0,
12
+ dampingFactor: 0.25,
13
+ screenSpacePanning: !1,
14
+ minDistance: 0.1,
15
+ maxDistance: 1e3,
16
+ maxPolarAngle: p.degToRad(60)
17
+ };
18
+ class m {
19
+ constructor(e, t) {
20
+ s(this, "isReady", S(!1));
21
+ s(this, "scene", null);
22
+ s(this, "camera", null);
23
+ s(this, "renderer", null);
24
+ s(this, "control", null);
25
+ s(this, "css3dRenderer", null);
26
+ s(this, "el", null);
27
+ s(this, "renderRequested", !1);
28
+ s(this, "selector", null);
29
+ s(this, "eventsListener", {});
30
+ s(this, "stats", null);
31
+ s(this, "isDispose", !1);
32
+ s(this, "initOpt", {
33
+ css3d: !1,
34
+ stats: !1,
35
+ renderType: "change",
36
+ initListener: "True",
37
+ control: {
38
+ init: !0,
39
+ options: {}
40
+ }
41
+ });
42
+ s(this, "onContextLost", (e) => {
43
+ e.preventDefault(), cancelAnimationFrame(this.animate);
44
+ });
45
+ s(this, "onContextRestored", (e) => {
46
+ e.preventDefault(), this.dispose(), l(() => {
47
+ this.setup(this.selector);
48
+ });
49
+ });
50
+ s(this, "initListener", () => {
51
+ window && window.addEventListener("resize", () => this.onResize(), !1), this.renderer.domElement.addEventListener(
52
+ "webglcontextlost",
53
+ this.onContextLost,
54
+ !1
55
+ ), this.renderer.domElement.addEventListener(
56
+ "webglcontextrestored",
57
+ this.onContextRestored,
58
+ !1
59
+ );
60
+ });
61
+ s(this, "animate", () => {
62
+ this.initOpt.renderType === "loop" && this.onRender(), requestAnimationFrame(this.animate);
63
+ });
64
+ s(this, "onRender", () => {
65
+ this.isDispose || (this.renderRequested = !1, this.stats && this.stats.update(), this.control && this.control.update(), this.renderer.render(this.scene, this.camera), this.css3dRenderer && this.css3dRenderer.render(this.scene, this.camera));
66
+ });
67
+ s(this, "requestRenderIfNotRequested", () => {
68
+ this.renderRequested || (this.renderRequested = !0, requestAnimationFrame(() => {
69
+ this.onRender();
70
+ }));
71
+ });
72
+ this.isReady.value = !1, t && (this.initOpt = Object.assign(this.initOpt, t)), e && this.setup(e);
73
+ }
74
+ setup(e) {
75
+ this.isDispose = !1, this.selector = e, this.el = document.querySelector(e), this.scene = new b({}), this.camera = new y(50, 1, 0.1, 2e3), this.renderer = new z({
76
+ antialias: !0,
77
+ alpha: !0,
78
+ precision: "mediump",
79
+ logarithmicDepthBuffer: !0
80
+ });
81
+ const t = Math.tan(Math.PI / 180 * this.camera.fov / 2), [i, r] = this.getTargetSize();
82
+ if (this.camera.aspect = i / r, this.camera.position.set(47, 39, 100), this.camera.fov = 360 / Math.PI * Math.atan(t * (r / i)), this.camera.lookAt(0, 0, 0), this.camera.updateProjectionMatrix(), this.renderer.setPixelRatio(window.devicePixelRatio), this.renderer.setSize(i, r), this.el.appendChild(this.renderer.domElement), this.initOpt.control && this.initOpt.control.init) {
83
+ this.control = v(this.camera, this.renderer.domElement);
84
+ const d = Object.assign(
85
+ C,
86
+ this.initOpt.control.options || {}
87
+ );
88
+ Object.keys(d).forEach((n) => {
89
+ this.control[n] = d[n];
90
+ });
91
+ }
92
+ l(() => this.isReady.value = !0), this.initOpt.stats && this.initStats(), this.initOpt.css3d && this.initCss3dRenderer(), this.initOpt.renderType === "loop" ? requestAnimationFrame(this.animate) : this.initOpt.renderType === "change" && this.control && this.control.addEventListener(
93
+ "change",
94
+ this.requestRenderIfNotRequested
95
+ ), this.initOpt.initListener == "True" && this.initListener();
96
+ }
97
+ removeListener() {
98
+ window && window.removeEventListener("resize", this.onResize, !1), this.renderer.domElement.removeEventListener(
99
+ "webglcontextlost",
100
+ this.onContextLost.bind(m),
101
+ !1
102
+ ), this.renderer.domElement.removeEventListener(
103
+ "webglcontextrestored",
104
+ this.onContextRestored.bind(m),
105
+ !1
106
+ );
107
+ }
108
+ initStats() {
109
+ const e = new Stats();
110
+ e.dom.style.cssText = "position:absolute;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000", this.el.appendChild(e.dom);
111
+ }
112
+ initCss3dRenderer() {
113
+ this.css3dRenderer = new O();
114
+ const [e, t] = this.getTargetSize();
115
+ this.css3dRenderer.setSize(e, t), this.css3dRenderer.domElement.style.position = "absolute", this.css3dRenderer.domElement.style.pointerEvents = "none", this.css3dRenderer.domElement.style.top = 0, this.css3dRenderer.domElement.style.left = 0, this.el.appendChild(this.css3dRenderer.domElement);
116
+ }
117
+ getTargetSize() {
118
+ const e = document.querySelector(this.selector);
119
+ return e ? [e.clientWidth, e.clientHeight] : [0, 0];
120
+ }
121
+ onResize() {
122
+ l(() => {
123
+ const e = Math.tan(Math.PI / 180 * this.camera.fov / 2), [t, i] = this.getTargetSize();
124
+ this.camera.aspect = t / i, this.camera.fov = 360 / Math.PI * Math.atan(e * (i / t)), this.camera.updateProjectionMatrix(), this.camera.lookAt(this.scene.position), this.renderer.setSize(t, i), this.css3dRenderer && this.css3dRenderer.setSize(t, i), this.onRender();
125
+ });
126
+ }
127
+ /**物体视窗自动适应
128
+ *
129
+ * @param {Object3D} model
130
+ * @param {Number} scale
131
+ * @param {Vector3} offset
132
+ */
133
+ frameArea(e, t, i) {
134
+ const r = new w().setFromObject(e), d = r.getSize(new c()).length(), n = r.getCenter(new c());
135
+ i && n.add(i);
136
+ const u = d * t * 0.5, f = p.degToRad(this.camera.fov * 0.5), R = u / Math.tan(f), h = new c().subVectors(this.camera.position, n).multiply(new c(1, 1, 1)).normalize().multiplyScalar(R).add(n), o = {
137
+ x: h.x,
138
+ y: h.y,
139
+ z: h.z,
140
+ lookAt_x: n.x,
141
+ lookAt_y: n.y,
142
+ lookAt_z: n.z
143
+ };
144
+ return this.camera.position.set(o.x, o.y, o.z), this.camera.lookAt(
145
+ o.lookAt_x,
146
+ o.lookAt_y,
147
+ o.lookAt_z
148
+ ), this.camera.updateProjectionMatrix(), this.control.target.copy(n), this.control.update(), d;
149
+ }
150
+ on(e, t) {
151
+ !e || !t || (this.eventsListener[e] || (this.eventsListener[e] = []), this.eventsListener[e].push(t));
152
+ }
153
+ off(e) {
154
+ e || (this.eventsListener = {}), this.eventsListener[e] && (this.eventsListener[e] = []);
155
+ }
156
+ dispose() {
157
+ this.isDispose = !0, this.removeListener(), L(this.scene), this.renderer.dispose(), this.renderer.domElement.remove(), this.el = null, this.renderer = null, this.camera = null, this.scene = null, this.control = null, this.css3dRenderer = null;
158
+ }
159
+ }
160
+ export {
161
+ I as IDBCache,
162
+ G as ImageLoader,
163
+ m as ThreeIns,
164
+ N as createArrowHelper,
165
+ J as createAxesHelper,
166
+ U as createBox3Helper,
167
+ Y as createCameraHelper,
168
+ K as createGridHelper,
169
+ te as createInfoPlane,
170
+ Q as createMapControls,
171
+ v as createOrbitControl,
172
+ X as createRaycaster,
173
+ Z as createStats,
174
+ se as createTagPlane,
175
+ L as disposeThreeObject,
176
+ ie as getCommonParent,
177
+ $ as initEnvImage,
178
+ j as intersectColor,
179
+ k as obbObjects,
180
+ H as useGLTFLoader,
181
+ W as useObb,
182
+ B as useRaycaster,
183
+ V as useThreeJs
184
+ };