three-base 1.129.15 → 2.0.1

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 (91) hide show
  1. package/README.md +1 -0
  2. package/index.js +1 -37
  3. package/index.ts +1 -61
  4. package/package.json +3 -4
  5. package/lib/ApngTexture.d.ts +0 -13
  6. package/lib/ApngTexture.js +0 -61
  7. package/lib/ApngTexture.ts +0 -91
  8. package/lib/ApngTextureManage.d.ts +0 -18
  9. package/lib/ApngTextureManage.js +0 -87
  10. package/lib/ApngTextureManage.ts +0 -130
  11. package/lib/EventMesh.d.ts +0 -18
  12. package/lib/EventMesh.js +0 -59
  13. package/lib/EventMesh.ts +0 -79
  14. package/lib/ExtrudeMesh.d.ts +0 -111
  15. package/lib/ExtrudeMesh.js +0 -363
  16. package/lib/ExtrudeMesh.ts +0 -571
  17. package/lib/FPScontrol.d.ts +0 -44
  18. package/lib/FPScontrol.js +0 -170
  19. package/lib/FPScontrol.ts +0 -209
  20. package/lib/InstancedGroupMesh.d.ts +0 -10
  21. package/lib/InstancedGroupMesh.js +0 -63
  22. package/lib/InstancedGroupMesh.ts +0 -80
  23. package/lib/KeyFrameAnimation.d.ts +0 -25
  24. package/lib/KeyFrameAnimation.js +0 -78
  25. package/lib/KeyFrameAnimation.ts +0 -122
  26. package/lib/PlaneText.d.ts +0 -37
  27. package/lib/PlaneText.js +0 -30
  28. package/lib/PlaneText.ts +0 -58
  29. package/lib/PlaneWithHtml.d.ts +0 -11
  30. package/lib/PlaneWithHtml.js +0 -67
  31. package/lib/PlaneWithHtml.ts +0 -84
  32. package/lib/PointLight/PointLight.d.ts +0 -13
  33. package/lib/PointLight/PointLight.js +0 -63
  34. package/lib/PointLight/PointLight.ts +0 -74
  35. package/lib/PointLight/pointLight_map.png +0 -0
  36. package/lib/Sky/Sky.d.ts +0 -13
  37. package/lib/Sky/Sky.js +0 -28
  38. package/lib/Sky/Sky.ts +0 -36
  39. package/lib/Sky/bluesky.jpg +0 -0
  40. package/lib/SpriteText.d.ts +0 -45
  41. package/lib/SpriteText.js +0 -162
  42. package/lib/SpriteText.ts +0 -189
  43. package/lib/SpriteText2.d.ts +0 -47
  44. package/lib/SpriteText2.js +0 -197
  45. package/lib/SpriteText2.ts +0 -236
  46. package/lib/Text3D/Text3D.d.ts +0 -20
  47. package/lib/Text3D/Text3D.js +0 -61
  48. package/lib/Text3D/Text3D.ts +0 -92
  49. package/lib/Text3D/fontController.d.ts +0 -59
  50. package/lib/Text3D/fontController.js +0 -200
  51. package/lib/Text3D/fontController.ts +0 -285
  52. package/lib/Text3D/gentilis.json +0 -811
  53. package/lib/ThreeBase.d.ts +0 -59
  54. package/lib/ThreeBase.js +0 -395
  55. package/lib/ThreeBase.ts +0 -475
  56. package/lib/ThreeMouse.d.ts +0 -39
  57. package/lib/ThreeMouse.js +0 -357
  58. package/lib/ThreeMouse.ts +0 -464
  59. package/lib/Transition.d.ts +0 -43
  60. package/lib/Transition.js +0 -196
  61. package/lib/Transition.ts +0 -268
  62. package/lib/index.d.ts +0 -22
  63. package/lib/keyContorls.d.ts +0 -25
  64. package/lib/keyContorls.js +0 -98
  65. package/lib/keyContorls.ts +0 -127
  66. package/lib/planeModal1/PlaneModal1.d.ts +0 -31
  67. package/lib/planeModal1/PlaneModal1.js +0 -104
  68. package/lib/planeModal1/PlaneModal1.ts +0 -150
  69. package/lib/planeModal1/planeModal.png +0 -0
  70. package/lib/shaders.d.ts +0 -17
  71. package/lib/shaders.js +0 -245
  72. package/lib/shaders.ts +0 -264
  73. package/lib/spriteModal1/SpriteModal1.d.ts +0 -30
  74. package/lib/spriteModal1/SpriteModal1.js +0 -109
  75. package/lib/spriteModal1/SpriteModal1.ts +0 -159
  76. package/lib/spriteModal1/spriteModal1.png +0 -0
  77. package/lib/stroke_pass/FullScreenQuad.d.ts +0 -7
  78. package/lib/stroke_pass/FullScreenQuad.js +0 -25
  79. package/lib/stroke_pass/FullScreenQuad.ts +0 -33
  80. package/lib/stroke_pass/stroke_pass.d.ts +0 -2
  81. package/lib/stroke_pass/stroke_pass.js +0 -190
  82. package/lib/stroke_pass/stroke_pass.ts +0 -211
  83. package/lib/threeLoader.d.ts +0 -20
  84. package/lib/threeLoader.js +0 -110
  85. package/lib/threeLoader.ts +0 -136
  86. package/lib/threeUtils.d.ts +0 -41
  87. package/lib/threeUtils.js +0 -179
  88. package/lib/threeUtils.ts +0 -212
  89. package/lib/type.d.ts +0 -0
  90. package/lib/type.js +0 -10
  91. package/lib/type.ts +0 -13
package/lib/ThreeBase.ts DELETED
@@ -1,475 +0,0 @@
1
- /*
2
- * @Author: xiaosihan
3
- * @Date: 2021-12-20 13:38:22
4
- * @Last Modified by: xiaosihan
5
- * @Last Modified time: 2023-05-09 01:11:17
6
- */
7
-
8
- import { round } from "lodash";
9
- import { AxesHelper, BufferGeometry, Camera, EventDispatcher, GridHelper, LinearFilter, Mesh, MeshBasicMaterial, MOUSE, NoBlending, NormalBlending, Object3D, PerspectiveCamera, RGBAFormat, Scene, Texture, TOUCH, Vector2, Vector3, WebGLRenderer, WebGLRenderTarget } from "three";
10
- import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
11
- import { generateUUID } from "three/src/math/MathUtils";
12
- import { clearShader, coptyShader, fullScreenMesh, gaussBlurShader, strokeShader } from "./shaders";
13
- import threeLoader from "./threeLoader";
14
- import ThreeMouse from "./ThreeMouse";
15
- import threeUtils from "./threeUtils";
16
- import Transition from "./Transition";
17
- import stroke_pass from "./stroke_pass/stroke_pass";
18
-
19
- // three.js 的基础对象
20
- export default class ThreeBase extends EventDispatcher {
21
-
22
- constructor() {
23
- super();
24
- this.init();
25
- }
26
-
27
- // 公用渲染目标1
28
- renderTarget = new WebGLRenderTarget(128, 128, { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat });
29
-
30
- // 渲染目标2
31
- renderTarget2 = new WebGLRenderTarget(128, 128, { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat });
32
-
33
- // 公用二维向量
34
- tempVector2 = new Vector2();
35
-
36
- // 公用的三维向量
37
- tempVector3 = new Vector3();
38
-
39
- //渲染器的尺寸
40
- size = new Vector2(0, 0);
41
-
42
- // 渲染器对象
43
- renderer = (() => {
44
- const renderer = new WebGLRenderer({
45
- alpha: true,// 透明背景
46
- antialias: true, // 阴影抗锯齿
47
- precision: "highp", //precision:highp/mediump/lowp着色精度选择
48
- logarithmicDepthBuffer: true, // 对数深度缓冲区 避免当2个面完全重合时闪烁
49
- preserveDrawingBuffer: false, // 是否保存绘图缓冲
50
- stencil: false, // 模版
51
- });
52
-
53
- renderer.domElement.id = generateUUID();
54
- renderer.localClippingEnabled = true;
55
- renderer.setPixelRatio(window.devicePixelRatio);
56
- renderer.autoClear = false;
57
- threeLoader.setAnisotropy(renderer.capabilities.getMaxAnisotropy());
58
- return renderer;
59
- })();
60
-
61
- //透视相机
62
- camera: Camera = new PerspectiveCamera(45, 1, 0.0001, 10000);
63
-
64
- // 场景对象
65
- scene = new Scene();
66
-
67
- ///鼠标事件对象
68
- threeMouse = new ThreeMouse(this.renderer, this.camera, this.scene);
69
-
70
- // 轨道控制器
71
- controls = (() => {
72
- const controls = new OrbitControls(this.camera, this.renderer.domElement);
73
- controls.addEventListener("change", () => {
74
- this.needRender = true;
75
- });
76
- controls.rotateSpeed = 0.2;
77
- controls.maxPolarAngle = Math.PI;
78
- controls.enableDamping = true;
79
- controls.dampingFactor = 0.1;
80
- controls.screenSpacePanning = true;
81
- return controls;
82
- })();
83
-
84
- // 上下文是否被销毁了
85
- isRendererContextLost = false;
86
-
87
- // 设置 dom 容器
88
- async setContainer(div: HTMLDivElement | null) {
89
- if (div) {
90
- div.style.overflow = "hidden";
91
- div.innerHTML = "";
92
- div.append(this.renderer.domElement);
93
-
94
- // 如果上下文被销毁了, 就恢复上下文
95
- if (this.isRendererContextLost) {
96
- //@ts-ignore
97
- this.renderer['forceContextRestore']();
98
- await new Promise(resolve => requestAnimationFrame(resolve));
99
- await new Promise(resolve => requestAnimationFrame(resolve));
100
- this.renderer.domElement.style.opacity = "1";
101
- }
102
-
103
- this.setsize(div.clientWidth, div.clientHeight);
104
-
105
- // 开启时时渲染
106
- threeUtils.removeEventListener("requestAnimationFrame", this.renderBindThis);
107
- threeUtils.addEventListener("requestAnimationFrame", this.renderBindThis);
108
- }
109
- }
110
-
111
- // 修改尺寸
112
- setsize(width: number, height: number) {
113
- if (this.camera instanceof PerspectiveCamera) {
114
- this.camera.aspect = width / height;
115
- this.camera.updateProjectionMatrix();
116
- }
117
-
118
- this.renderer.setPixelRatio(window.devicePixelRatio);
119
- this.renderer.setSize(width, height);
120
- this.size.set(width, height);
121
- // 渲染场景
122
- this.renderer.clear();
123
- this.renderer.render(this.scene, this.camera);
124
- }
125
-
126
- // 控制器的位置缓动的计算的顶点对象
127
- controlsPosition = (() => {
128
- const controlsPosition = new Transition({ x: 100, y: 100, z: 100 });
129
- controlsPosition.setDuration(1000);
130
- controlsPosition.onChange(({ x, y, z }) => {
131
- this.camera.position.set(x, y, z);
132
- this.camera.lookAt(this.controls.target);
133
- this.needRender = true;
134
- });
135
- return controlsPosition;
136
- })();
137
-
138
- // 控制器的 朝向带缓动的计算的顶点对象
139
- controlsCenter = (() => {
140
- const controlsCenter = new Transition({ x: 0, y: 0, z: 0 });
141
- controlsCenter.setDuration(1000);
142
- controlsCenter.onChange(({ x, y, z }) => {
143
- this.controls.target.set(x, y, z);
144
- this.camera.lookAt(this.controls.target);
145
- this.needRender = true;
146
- });
147
- return controlsCenter;
148
- })();
149
-
150
- init() {
151
- // 非开发模式添加网格辅助线
152
- if (threeUtils.isDev) {
153
- const gridHelper = new GridHelper(1000, 100, 0x303030, 0x303030);
154
- gridHelper.position.set(0, -0.001, 0);
155
- this.scene.add(gridHelper);
156
- const axesHelper = new AxesHelper(10000);
157
- this.scene.add(axesHelper);
158
- }
159
-
160
- // 资源加载进度有更新时, 需要渲染
161
- threeLoader.addEventListener("progress", () => {
162
- this.needRender = true;
163
- });
164
-
165
- }
166
-
167
- // 重置控制器的位置
168
- resetLookAt({ position, center, }: { position?: Vector3, center?: Vector3, }) {
169
-
170
- // 停止控制器的惯性
171
- this.controls.enableDamping = false;
172
- this.controls.saveState();
173
- this.controls.update();
174
- this.controls.reset();
175
- this.controls.enableDamping = true;
176
-
177
- position && this.controlsPosition.reset({ x: position.x, y: position.y, z: position.z });
178
- center && this.controlsCenter.reset({ x: center.x, y: center.y, z: center.z });
179
- this.needRender = true;
180
- }
181
-
182
- // 设置控制器的位置 以动画的方式移动控制器
183
- async setLookAt({ position, center, duration = 1000 }: { position?: Vector3, center?: Vector3, duration?: number }) {
184
-
185
- // 停止控制器的惯性
186
- this.controls.enableDamping = false;
187
- this.controls.saveState();
188
- this.controls.update();
189
- this.controls.reset();
190
- this.controls.enableDamping = true;
191
-
192
- let currentPosition = this.camera.position.clone();
193
- let currentCenter = this.controls.target.clone();
194
-
195
- // 等待动画执行完成
196
- await Promise.all([
197
- new Promise<void>(async (resolve, reject) => {
198
- if (position) {
199
- this.controlsPosition.setDuration(duration).reset({ x: currentPosition.x, y: currentPosition.y, z: currentPosition.z });
200
- await this.controlsPosition.set({ x: position.x, y: position.y, z: position.z });
201
- }
202
- resolve();
203
- }),
204
- new Promise<void>(async (resolve, reject) => {
205
- if (center) {
206
- this.controlsCenter.setDuration(duration).reset({ x: currentCenter.x, y: currentCenter.y, z: currentCenter.z });
207
- await this.controlsCenter.set({ x: center.x, y: center.y, z: center.z });
208
- }
209
- resolve();
210
- }),
211
-
212
- ]);
213
-
214
- }
215
-
216
- // 获取控制的位置和朝向 保留3位小数
217
- getLookAt() {
218
- const position = this.camera.position.toArray().map(v => round(v, 3));
219
- const center = this.controls.target.toArray().map(v => round(v, 3));
220
- return {
221
- center: new Vector3(...center),
222
- position: new Vector3(...position),
223
- centerPosition: `center: new Vector3(${center.join(",")}),position: new Vector3(${position.join(",")})`
224
- }
225
- }
226
-
227
- // 三维向量转化成屏幕上的2维向量
228
- v3tov2(v3: Vector3) {
229
- v3.project(this.camera);
230
- const v2 = new Vector2((v3.x + 1) * this.size.x * 0.5, (-v3.y + 1) * this.size.y * 0.5);
231
- return v2;
232
- }
233
-
234
- // 控制器类型
235
- controlType: "OrbitControls" | "MapControls" = "OrbitControls";
236
-
237
- // 记录一下空间平移方式 在切换控制器的时候保留一下平移方式
238
- originScreenSpacePanning = false;
239
-
240
- //改变控制器的类型
241
- setControlType(controlType: "OrbitControls" | "MapControls") {
242
-
243
- if (controlType === "OrbitControls") {
244
- this.controls.screenSpacePanning = this.originScreenSpacePanning;
245
- this.controls.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };
246
- this.controls.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };
247
- } else if (controlType === "MapControls") {
248
- this.originScreenSpacePanning = this.controls.screenSpacePanning;
249
- // pan orthogonal to world-space direction camera.up
250
- this.controls.screenSpacePanning = false;
251
- this.controls.mouseButtons.LEFT = MOUSE.PAN;
252
- this.controls.mouseButtons.RIGHT = MOUSE.ROTATE;
253
- this.controls.touches.ONE = TOUCH.PAN;
254
- this.controls.touches.TWO = TOUCH.DOLLY_ROTATE;
255
- }
256
-
257
- }
258
-
259
- // 是否自动渲染
260
- autoRender = true;
261
-
262
- //是否需要渲染, 当autoRender=false的时候就需要 手动触发渲染
263
- needRender = false;
264
-
265
- // 停止渲染
266
- stopRender() {
267
- threeUtils.removeEventListener("requestAnimationFrame", this.renderBindThis);
268
- this.renderer.forceContextLoss();
269
- // 标记上下文被销毁了
270
- this.isRendererContextLost = true;
271
- this.setsize(100, 100);
272
- this.renderer.domElement.style.opacity = "0";
273
- }
274
-
275
- // 渲染场景
276
- render() {
277
-
278
- // 控制器在移动时鼠标不能操作
279
- this.controls.enabled = (this.controlsPosition.isDone() || this.controlsCenter.isDone());
280
-
281
- // canvas 没有在页面上面的话 就跳过渲染
282
- if (!threeUtils.inDocument(this.renderer.domElement)) {
283
- this.stopRender();
284
- return;
285
- }
286
-
287
- //判断尺寸发生改变时重置尺寸
288
- const parentNode = this.renderer.domElement.parentNode as HTMLDivElement;
289
- if (parentNode.clientWidth !== this.size.x || parentNode.clientHeight !== this.size.y) {
290
- this.setsize(parentNode.clientWidth, parentNode.clientHeight);
291
- }
292
-
293
- // 分发鼠标事件
294
- this.threeMouse.dispatchEvent();
295
-
296
- // 在不自动渲染时, needRender=false 就跳过渲染
297
- if (!this.autoRender && !this.needRender) {
298
- return;
299
- }
300
- this.needRender = false;
301
-
302
- if (this.controls.enabled) {
303
- this.controls.update();
304
- }
305
-
306
- this.renderer.clear();
307
-
308
- // 渲染场景
309
- this.dispatchEvent({ type: "beforeRender" });
310
- this.renderer.render(this.scene, this.camera);
311
-
312
- // 查找需要绘制描边的对象,并且绘制描边
313
- this.scene.traverse(obj => {
314
- if (obj.userData.stroke_enable) {
315
- stroke_pass(this.renderer, this.camera, obj);
316
- }
317
- });
318
-
319
- this.dispatchEvent({ type: "afterRender" });
320
- }
321
-
322
- private renderBindThis = this.render.bind(this);
323
-
324
- // 下载渲染图
325
- download(fileName: string = "download") {
326
- this.render();
327
- const base64 = this.renderer.domElement.toDataURL('image/png');
328
- let saveLink = document.createElement("a");
329
- saveLink.download = `${fileName}.png`;
330
- saveLink.href = base64;
331
- document.body.append(saveLink);
332
- saveLink.click();
333
- }
334
-
335
- private _preMesh = new Mesh();
336
- private _preRT = new WebGLRenderTarget(128, 128, { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat });
337
-
338
- //预加载纹理图片
339
- async preloadTexture(src: string) {
340
- const texture = threeLoader.getTexture(src);
341
- while (texture && !texture.image || !(texture.image as HTMLImageElement).complete) {
342
- await new Promise(resolve => setTimeout(resolve, 50));
343
- }
344
-
345
- // 添加到计划任务中去
346
- threeUtils.addWork(() => {
347
- const originRenderTarget = this.renderer.getRenderTarget();
348
- this.renderer.setRenderTarget(this._preRT);
349
- (this._preMesh.material as MeshBasicMaterial).map = texture;
350
- this.renderer.render(this._preMesh, this.camera);
351
- this.renderer.setRenderTarget(originRenderTarget);
352
- });
353
- }
354
-
355
- //预加载网格
356
- async preloadGeometry(geometry: BufferGeometry) {
357
-
358
- // 添加到计划任务中去
359
- threeUtils.addWork(() => {
360
- const originRenderTarget = this.renderer.getRenderTarget();
361
- this.renderer.setRenderTarget(this._preRT);
362
- this._preMesh.geometry = geometry;
363
- this.renderer.render(this._preMesh, this.camera);
364
- this.renderer.setRenderTarget(originRenderTarget);
365
- });
366
- }
367
-
368
- // 清理渲染目标
369
- clearRendererTargte(rendererTarget: WebGLRenderTarget | null) {
370
- const originTarget = this.renderer.getRenderTarget();
371
- this.renderer.setRenderTarget(rendererTarget);
372
- fullScreenMesh.material = clearShader;
373
- fullScreenMesh.render(this.renderer);
374
- this.renderer.clearDepth();
375
- this.renderer.setRenderTarget(originTarget);
376
- }
377
-
378
- // 拷贝纹理到渲染目标
379
- copyTextureToRenderTarget(texture: Texture, rendererTarget: WebGLRenderTarget | null, alpha: boolean = false, opactity: number = 1) {
380
- const originTarget = this.renderer.getRenderTarget();
381
- if (rendererTarget) {
382
- this.renderer.getSize(this.tempVector2);
383
- rendererTarget.setSize(this.tempVector2.x, this.tempVector2.y);
384
- }
385
- this.renderer.setRenderTarget(rendererTarget);
386
- fullScreenMesh.material = coptyShader;
387
- coptyShader.uniforms.map.value = texture;
388
- coptyShader.uniforms.opacity.value = opactity;
389
- coptyShader.blending = alpha ? NoBlending : NormalBlending;
390
- fullScreenMesh.render(this.renderer);
391
- this.renderer.setRenderTarget(originTarget);
392
- }
393
-
394
- // 把对象绘制到渲染目标中
395
- object3dToRendererTarget(obj: Object3D, rendererTarget: WebGLRenderTarget) {
396
- this.clearRendererTargte(rendererTarget);
397
- const originTarget = this.renderer.getRenderTarget();
398
- this.renderer.setRenderTarget(rendererTarget);
399
- this.renderer.getSize(this.tempVector2);
400
- rendererTarget.setSize(this.tempVector2.x, this.tempVector2.y);
401
- this.renderer.render(obj, this.camera);
402
- this.renderer.setRenderTarget(originTarget);
403
- }
404
-
405
- // 给渲染目标的内容加描边
406
- rendererTagetAddStroke(rendererTarget: WebGLRenderTarget, strockWidth: number, color: string, opacity: number) {
407
- const originTarget = this.renderer.getRenderTarget();
408
- this.clearRendererTargte(this.renderTarget2);
409
- this.renderer.setRenderTarget(this.renderTarget2);
410
- this.renderer.getSize(this.tempVector2);
411
- this.renderTarget2.setSize(this.tempVector2.x, this.tempVector2.y);
412
-
413
- fullScreenMesh.material = strokeShader;
414
- strokeShader.uniforms.map.value = rendererTarget.texture;
415
- strokeShader.uniforms.resolution.value.set(this.tempVector2.x, this.tempVector2.y);
416
- strokeShader.uniforms.strokeWidth.value = strockWidth;
417
- strokeShader.uniforms.strokeColor.value.set(color);
418
- strokeShader.uniforms.opacity.value = opacity;
419
- fullScreenMesh.render(this.renderer);
420
-
421
- this.copyTextureToRenderTarget(this.renderTarget2.texture, rendererTarget, true);
422
-
423
- this.renderer.setRenderTarget(originTarget);
424
- }
425
-
426
- // 渲染对象的描边
427
- renderObject3dStroke(obj: Object3D, strockWidth: number, color: string, opacity: number) {
428
- this.object3dToRendererTarget(obj, this.renderTarget);
429
- this.rendererTagetAddStroke(this.renderTarget, strockWidth, color, opacity);
430
- this.copyTextureToRenderTarget(this.renderTarget.texture, null);
431
- }
432
-
433
- //给渲染目标加上高斯模糊计算
434
- renderTargetgaussBlur(rendererTarget: WebGLRenderTarget, radius: number, opacity: number) {
435
- const originTarget = this.renderer.getRenderTarget();
436
-
437
- this.clearRendererTargte(this.renderTarget2);
438
- this.renderer.setRenderTarget(this.renderTarget2);
439
- this.renderer.getSize(this.tempVector2);
440
- this.renderTarget2.setSize(this.tempVector2.x, this.tempVector2.y);
441
-
442
- fullScreenMesh.material = gaussBlurShader;
443
- gaussBlurShader.uniforms.map.value = rendererTarget.texture;
444
- gaussBlurShader.uniforms.radius.value = radius;
445
- gaussBlurShader.uniforms.opacity.value = opacity;
446
- gaussBlurShader.uniforms.resolution.value.set(this.tempVector2.x, this.tempVector2.y);
447
- fullScreenMesh.render(this.renderer);
448
-
449
- this.copyTextureToRenderTarget(this.renderTarget2.texture, rendererTarget, true);
450
-
451
- this.renderer.setRenderTarget(originTarget);
452
- }
453
-
454
- // 渲染目标上的纹理添加辉光效果
455
- renderTargetAddGlow(renderTarget: WebGLRenderTarget, width: number, color: string) {
456
-
457
- this.rendererTagetAddStroke(renderTarget, 1 * width, color, 0.3);
458
- this.rendererTagetAddStroke(renderTarget, 2 * width, color, 0.2);
459
- this.rendererTagetAddStroke(renderTarget, 3 * width, color, 0.05);
460
-
461
- this.renderTargetgaussBlur(renderTarget, 1, 1);
462
- this.renderTargetgaussBlur(renderTarget, 1, 1);
463
- this.renderTargetgaussBlur(renderTarget, 1, 1);
464
- }
465
-
466
- // 渲染 渲染目标
467
- renderRendererTarget(renderTarget: WebGLRenderTarget, alpha: boolean = false) {
468
- coptyShader.uniforms.map.value = renderTarget.texture;
469
- coptyShader.uniforms.opacity.value = 1.0;
470
- fullScreenMesh.material = coptyShader;
471
- coptyShader.blending = alpha ? NoBlending : NormalBlending;
472
- fullScreenMesh.render(this.renderer);
473
- }
474
-
475
- }
@@ -1,39 +0,0 @@
1
- import * as THREE from "three";
2
- import { Object3D, Scene } from "three";
3
- import type { Intersection } from "three";
4
- export interface ThreeMouseEvent extends Intersection {
5
- renderer: THREE.Renderer;
6
- camera: THREE.Camera;
7
- type: string;
8
- offsetX: number;
9
- offsetY: number;
10
- x: number;
11
- y: number;
12
- }
13
- /**
14
- * harp.gl 专用的鼠标拾取模型对象
15
- */
16
- export default class ThreeMouse {
17
- constructor(renderer: THREE.WebGLRenderer, camera: THREE.Camera, scene: THREE.Scene);
18
- _renderer: THREE.WebGLRenderer;
19
- _camera: THREE.Camera;
20
- _scene: Scene;
21
- _mosePosition: THREE.Vector2;
22
- _mouseDownPosition: THREE.Vector2;
23
- _mesh_on?: Object3D;
24
- _mesh_Down?: Object3D;
25
- _raycaster: THREE.Raycaster;
26
- _frame: number;
27
- _mouseInRenderer: boolean;
28
- _mousemoveEvent?: MouseEvent;
29
- _object3ds: Object3D[];
30
- _click_num: number;
31
- _getSelected(object3ds: Object3D[]): Intersection | undefined;
32
- hasEvent(object?: Object3D, types?: Array<"leftclick" | "rightclick" | "click" | "dbclick" | "mouseenter" | "mouseleave" | "mousemove" | "mousedown" | "mouseup">): boolean;
33
- hasCursor(object?: Object3D): boolean;
34
- dispatchEvent(): void;
35
- _mouseleave: (e: MouseEvent) => void;
36
- _mousemove: (e: MouseEvent) => void;
37
- _mousedown: (e: MouseEvent) => void;
38
- _mouseup: import("lodash").DebouncedFunc<(e: PointerEvent) => Promise<void>>;
39
- }