bplinejs 0.0.101-beta.10 → 0.0.102
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/lib/Camera/index.d.ts +324 -24
- package/lib/Camera/index.js +303 -57
- package/lib/Camera/index.js.map +1 -1
- package/lib/Color/index.d.ts +71 -5
- package/lib/Color/index.js +123 -16
- package/lib/Color/index.js.map +1 -1
- package/lib/Control/CameraControl/index.d.ts +288 -0
- package/lib/Control/CameraControl/index.js +602 -0
- package/lib/Control/CameraControl/index.js.map +1 -0
- package/lib/Control/index.d.ts +2 -0
- package/lib/Control/index.js +2 -0
- package/lib/Geometry/Geo.d.ts +112 -9
- package/lib/Geometry/Geo.js +139 -58
- package/lib/Geometry/Geo.js.map +1 -1
- package/lib/Geometry/NGon2D.d.ts +158 -0
- package/lib/Geometry/NGon2D.js +259 -0
- package/lib/Geometry/NGon2D.js.map +1 -0
- package/lib/Geometry/Poly2D.d.ts +49 -7
- package/lib/Geometry/Poly2D.js +78 -21
- package/lib/Geometry/Poly2D.js.map +1 -1
- package/lib/Geometry/{Rect2d.d.ts → Rect2D.d.ts} +28 -6
- package/lib/Geometry/Rect2D.js +163 -0
- package/lib/Geometry/Rect2D.js.map +1 -0
- package/lib/Geometry/index.d.ts +4 -2
- package/lib/Geometry/index.js +3 -2
- package/lib/Group/index.d.ts +48 -0
- package/lib/Group/index.js +44 -27
- package/lib/Group/index.js.map +1 -1
- package/lib/ID.d.ts +2 -0
- package/lib/ID.js +2 -0
- package/lib/ID.js.map +1 -1
- package/lib/IMesh/index.d.ts +131 -17
- package/lib/IMesh/index.js +197 -60
- package/lib/IMesh/index.js.map +1 -1
- package/lib/Material/Material.d.ts +243 -22
- package/lib/Material/Material.js +269 -60
- package/lib/Material/Material.js.map +1 -1
- package/lib/Material/baseMaterial.d.ts +8 -2
- package/lib/Material/baseMaterial.js +16 -6
- package/lib/Material/baseMaterial.js.map +1 -1
- package/lib/Material/index.d.ts +1 -1
- package/lib/Material/wgsls/base/ngon/fragment.js +6 -0
- package/lib/Material/wgsls/base/ngon/vertex.js +6 -0
- package/lib/Material/{shaders → wgsls}/base/poly/fragment.js +1 -1
- package/lib/Material/{shaders → wgsls}/base/poly/vertex.js +1 -1
- package/lib/Material/{shaders → wgsls}/base/rect/fragment.js +1 -1
- package/lib/Material/{shaders → wgsls}/base/rect/vertex.js +1 -1
- package/lib/Material/{shaders → wgsls}/line/fragment.js +1 -1
- package/lib/Material/wgsls/line/fragment.js.map +1 -0
- package/lib/Material/{shaders → wgsls}/line/vertex.js +1 -1
- package/lib/Material/wgsls/line/vertex.js.map +1 -0
- package/lib/Mesh/index.d.ts +126 -12
- package/lib/Mesh/index.js +138 -40
- package/lib/Mesh/index.js.map +1 -1
- package/lib/Object/index.d.ts +180 -22
- package/lib/Object/index.js +197 -67
- package/lib/Object/index.js.map +1 -1
- package/lib/Raws/index.d.ts +158 -22
- package/lib/Raws/index.js +192 -54
- package/lib/Raws/index.js.map +1 -1
- package/lib/Render/BufferManager.d.ts +33 -0
- package/lib/Render/BufferManager.js +146 -94
- package/lib/Render/BufferManager.js.map +1 -1
- package/lib/Render/DepthManager.d.ts +12 -1
- package/lib/Render/DepthManager.js +77 -62
- package/lib/Render/DepthManager.js.map +1 -1
- package/lib/Render/DestroyManager.d.ts +61 -0
- package/lib/Render/DestroyManager.js +48 -13
- package/lib/Render/DestroyManager.js.map +1 -1
- package/lib/Render/DevelopmentValidator.d.ts +42 -0
- package/lib/Render/DevelopmentValidator.js +67 -35
- package/lib/Render/DevelopmentValidator.js.map +1 -1
- package/lib/Render/DrawCallManager.d.ts +29 -0
- package/lib/Render/DrawCallManager.js +221 -189
- package/lib/Render/DrawCallManager.js.map +1 -1
- package/lib/Render/PipelineManager.d.ts +23 -0
- package/lib/Render/PipelineManager.js +119 -80
- package/lib/Render/PipelineManager.js.map +1 -1
- package/lib/Render/SamplerManager.d.ts +13 -0
- package/lib/Render/SamplerManager.js +20 -12
- package/lib/Render/SamplerManager.js.map +1 -1
- package/lib/Render/SceneUpdate.d.ts +21 -3
- package/lib/Render/SceneUpdate.js +21 -3
- package/lib/Render/SceneUpdate.js.map +1 -1
- package/lib/Render/TextureManager.d.ts +40 -3
- package/lib/Render/TextureManager.js +91 -51
- package/lib/Render/TextureManager.js.map +1 -1
- package/lib/Render/index.d.ts +51 -0
- package/lib/Render/index.js +127 -59
- package/lib/Render/index.js.map +1 -1
- package/lib/Render/types.d.ts +120 -0
- package/lib/Scene/index.d.ts +92 -1
- package/lib/Scene/index.js +168 -36
- package/lib/Scene/index.js.map +1 -1
- package/lib/Style/EdgeStyle.d.ts +58 -9
- package/lib/Style/EdgeStyle.js +74 -21
- package/lib/Style/EdgeStyle.js.map +1 -1
- package/lib/Style/JoinStyle.d.ts +53 -8
- package/lib/Style/JoinStyle.js +61 -14
- package/lib/Style/JoinStyle.js.map +1 -1
- package/lib/Style/PartStyle.d.ts +74 -10
- package/lib/Style/PartStyle.js +90 -23
- package/lib/Style/PartStyle.js.map +1 -1
- package/lib/Style/PointsStyle.d.ts +97 -15
- package/lib/Style/PointsStyle.js +125 -36
- package/lib/Style/PointsStyle.js.map +1 -1
- package/lib/Style/SolidStyle.d.ts +67 -10
- package/lib/Style/SolidStyle.js +87 -26
- package/lib/Style/SolidStyle.js.map +1 -1
- package/lib/Style/TexturedStyle.d.ts +48 -7
- package/lib/Style/TexturedStyle.js +62 -18
- package/lib/Style/TexturedStyle.js.map +1 -1
- package/lib/Style/WireframeStyle.d.ts +6 -1
- package/lib/Style/WireframeStyle.js +6 -1
- package/lib/Style/WireframeStyle.js.map +1 -1
- package/lib/Style/WriteStyleData.d.ts +3 -0
- package/lib/Style/WriteStyleData.js +10 -1
- package/lib/Style/WriteStyleData.js.map +1 -1
- package/lib/Style/index.d.ts +63 -10
- package/lib/Style/index.js +62 -9
- package/lib/Style/index.js.map +1 -1
- package/lib/Style/types.d.ts +15 -0
- package/lib/Texture/Layers.d.ts +28 -4
- package/lib/Texture/Layers.js +43 -9
- package/lib/Texture/Layers.js.map +1 -1
- package/lib/Texture/index.d.ts +119 -12
- package/lib/Texture/index.js +146 -31
- package/lib/Texture/index.js.map +1 -1
- package/lib/global-types.d.ts +3 -2
- package/lib/index.d.ts +9 -5
- package/lib/index.js +4 -2
- package/package.json +15 -5
- package/releases/0.0.102.md +36 -0
- package/README.md +0 -215
- package/docs/API.md +0 -471
- package/lib/Geometry/Rect2d.js +0 -128
- package/lib/Geometry/Rect2d.js.map +0 -1
- /package/lib/Material/{shaders/base/poly → wgsls/base/ngon}/fragment.js.map +0 -0
- /package/lib/Material/{shaders/base/poly → wgsls/base/ngon}/vertex.js.map +0 -0
- /package/lib/Material/{shaders/base/rect → wgsls/base/poly}/fragment.js.map +0 -0
- /package/lib/Material/{shaders/base/rect → wgsls/base/poly}/vertex.js.map +0 -0
- /package/lib/Material/{shaders/line → wgsls/base/rect}/fragment.js.map +0 -0
- /package/lib/Material/{shaders/line → wgsls/base/rect}/vertex.js.map +0 -0
package/lib/Camera/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import ObjectNode from "../Object";
|
|
2
2
|
import type { ObjectNodeLike } from "../Object";
|
|
3
3
|
import { Mat3 } from "bpmatrixjs/Math/Mat3";
|
|
4
|
-
import type
|
|
4
|
+
import { Vec2, type VersionedMath } from "bpmatrixjs/Math";
|
|
5
|
+
import type { RenderLike } from "../Render";
|
|
5
6
|
interface CameraBuffersLike {
|
|
6
7
|
uniform?: number;
|
|
7
8
|
}
|
|
@@ -16,11 +17,113 @@ interface CameraLike extends ObjectNodeLike {
|
|
|
16
17
|
readonly left: number;
|
|
17
18
|
readonly bottom: number;
|
|
18
19
|
readonly right: number;
|
|
20
|
+
/**
|
|
21
|
+
* 同时更新相机视口宽高,通知投影矩阵在下一次使用前更新。
|
|
22
|
+
* @param width 新视口宽度
|
|
23
|
+
* @param height 新视口高度
|
|
24
|
+
* @example
|
|
25
|
+
* camera.setViewport(width, height);
|
|
26
|
+
* @returns 无返回值。
|
|
27
|
+
*/
|
|
19
28
|
setViewport(width: number, height: number): void;
|
|
29
|
+
/**
|
|
30
|
+
* 在渲染前更新版本落后的矩阵;支持相机挂在 Group/Mesh 内以及独立相机。
|
|
31
|
+
* @example
|
|
32
|
+
* camera.ensureCameraMatrix();
|
|
33
|
+
* @returns 无返回值。
|
|
34
|
+
*/
|
|
20
35
|
ensureCameraMatrix(): void;
|
|
36
|
+
/**
|
|
37
|
+
* 强制计算投影矩阵,保持 Y 正方向向上。
|
|
38
|
+
* @example
|
|
39
|
+
* camera.updateOrthogonalMatrix();
|
|
40
|
+
* @returns 计算得到的 Mat3 结果。
|
|
41
|
+
*/
|
|
21
42
|
updateOrthogonalMatrix(): Mat3;
|
|
43
|
+
/**
|
|
44
|
+
* 先确保父级与自身世界矩阵有效,再计算逆矩阵。
|
|
45
|
+
* @example
|
|
46
|
+
* camera.updateViewMatrix();
|
|
47
|
+
* @returns 计算得到的 Mat3 结果。
|
|
48
|
+
*/
|
|
22
49
|
updateViewMatrix(): Mat3;
|
|
50
|
+
/**
|
|
51
|
+
* 强制更新投影矩阵和视图矩阵。
|
|
52
|
+
* @example
|
|
53
|
+
* camera.updateCameraMatrix();
|
|
54
|
+
* @returns 无返回值。
|
|
55
|
+
*/
|
|
23
56
|
updateCameraMatrix(): void;
|
|
57
|
+
/**
|
|
58
|
+
* 世界坐标转归一化NDC坐标。
|
|
59
|
+
* @param position 世界坐标。
|
|
60
|
+
* @example
|
|
61
|
+
* camera.worldToNdc(position);
|
|
62
|
+
* @returns 归一化NDC坐标。
|
|
63
|
+
*/
|
|
64
|
+
worldToNdc(position: Vec2): Vec2;
|
|
65
|
+
/**
|
|
66
|
+
* 归一化ndc坐标转世界坐标
|
|
67
|
+
* @param position 归一化NDC坐标。
|
|
68
|
+
* @example
|
|
69
|
+
* camera.ndcToWorld(position);
|
|
70
|
+
* @returns 世界坐标。
|
|
71
|
+
*/
|
|
72
|
+
ndcToWorld(position: Vec2): Vec2;
|
|
73
|
+
/**
|
|
74
|
+
* 归一化NDC坐标转画布坐标。
|
|
75
|
+
* @param position 归一化NDC坐标。
|
|
76
|
+
* @param render 可选渲染器,按画布实际 CSS 尺寸换算;省略时使用相机宽高 / DPR
|
|
77
|
+
* @example
|
|
78
|
+
* camera.ndcToScreen(position, render);
|
|
79
|
+
* @returns 相对画布左上角的 CSS 像素坐标。
|
|
80
|
+
*/
|
|
81
|
+
ndcToScreen(position: Vec2, render?: RenderLike): Vec2;
|
|
82
|
+
/**
|
|
83
|
+
* 画布坐标转归一化NDC坐标。
|
|
84
|
+
* @param position 相对画布左上角的 CSS 像素坐标
|
|
85
|
+
* @param render 可选渲染器,省略时使用相机宽高 / DPR
|
|
86
|
+
* @example
|
|
87
|
+
* camera.screenToNdc(position, render);
|
|
88
|
+
* @returns 归一化NDC坐标。
|
|
89
|
+
*/
|
|
90
|
+
screenToNdc(position: Vec2, render?: RenderLike): Vec2;
|
|
91
|
+
/**
|
|
92
|
+
* 世界坐标转画布坐标。
|
|
93
|
+
* @param position 世界坐标。
|
|
94
|
+
* @param render 可选渲染器,支持 resize 延迟期间的 CSS 拉伸
|
|
95
|
+
* @example
|
|
96
|
+
* camera.worldToScreen(position, render);
|
|
97
|
+
* @returns 相对画布左上角的 CSS 像素坐标。
|
|
98
|
+
*/
|
|
99
|
+
worldToScreen(position: Vec2, render?: RenderLike): Vec2;
|
|
100
|
+
/**
|
|
101
|
+
* 画布坐标转世界坐标
|
|
102
|
+
* @param position 相对画布左上角的 CSS 像素坐标
|
|
103
|
+
* @param render 可选渲染器,按画布实际 CSS 尺寸换算
|
|
104
|
+
* @example
|
|
105
|
+
* camera.screenToWorld(position, render);
|
|
106
|
+
* @returns 世界坐标。
|
|
107
|
+
*/
|
|
108
|
+
screenToWorld(position: Vec2, render?: RenderLike): Vec2;
|
|
109
|
+
/**
|
|
110
|
+
* 世界坐标转浏览器视口坐标,适用于 DOM 定位;支持 CSS 平移/轴向缩放,不含旋转/倾斜。
|
|
111
|
+
* @param position 世界坐标。
|
|
112
|
+
* @param render 提供实际画布位置和尺寸的渲染器
|
|
113
|
+
* @example
|
|
114
|
+
* camera.worldToWindow(position, render);
|
|
115
|
+
* @returns clientX/clientY 坐标,不含页面滚动偏移。
|
|
116
|
+
*/
|
|
117
|
+
worldToWindow(position: Vec2, render: RenderLike): Vec2;
|
|
118
|
+
/**
|
|
119
|
+
* 浏览器视口坐标转世界坐标。
|
|
120
|
+
* @param position MouseEvent.clientX/clientY,不是 pageX/pageY
|
|
121
|
+
* @param render 提供实际画布位置和尺寸的渲染器
|
|
122
|
+
* @example
|
|
123
|
+
* camera.windowToWorld(position, render);
|
|
124
|
+
* @returns 世界坐标。
|
|
125
|
+
*/
|
|
126
|
+
windowToWorld(position: Vec2, render: RenderLike): Vec2;
|
|
24
127
|
}
|
|
25
128
|
/** 正交相机:输入沿用节点单一版本,矩阵与每个 Render 独立保存处理快照。 */
|
|
26
129
|
declare class Camera extends ObjectNode implements CameraLike {
|
|
@@ -37,52 +140,249 @@ declare class Camera extends ObjectNode implements CameraLike {
|
|
|
37
140
|
private _writingCamera;
|
|
38
141
|
/** 保留的缓冲描述;实际 GPUBuffer 仍由 Render 持有。 */
|
|
39
142
|
buffers: CameraBuffersLike;
|
|
40
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* 创建对象并建立初始状态及依赖关联。
|
|
145
|
+
* @param width 视口宽度
|
|
146
|
+
* @param height 视口高度
|
|
147
|
+
* @param zoom 缩放值
|
|
148
|
+
* @example
|
|
149
|
+
* const camera = new Camera(width, height, zoom);
|
|
150
|
+
* @returns 创建的 Camera 对象。
|
|
151
|
+
*/
|
|
41
152
|
constructor(width?: number, height?: number, zoom?: number);
|
|
42
|
-
/**
|
|
153
|
+
/**
|
|
154
|
+
* 视口宽度。
|
|
155
|
+
* @example
|
|
156
|
+
* const value = camera.width;
|
|
157
|
+
* @returns 视口宽度。
|
|
158
|
+
*/
|
|
43
159
|
get width(): number;
|
|
44
|
-
/**
|
|
160
|
+
/**
|
|
161
|
+
* 视口宽度。
|
|
162
|
+
* @param value 新宽度
|
|
163
|
+
* @example
|
|
164
|
+
* camera.width = value;
|
|
165
|
+
* @returns 无返回值。
|
|
166
|
+
*/
|
|
45
167
|
set width(value: number);
|
|
46
|
-
/**
|
|
168
|
+
/**
|
|
169
|
+
* 视口高度。
|
|
170
|
+
* @example
|
|
171
|
+
* const value = camera.height;
|
|
172
|
+
* @returns 视口高度。
|
|
173
|
+
*/
|
|
47
174
|
get height(): number;
|
|
48
|
-
/**
|
|
175
|
+
/**
|
|
176
|
+
* 视口高度。
|
|
177
|
+
* @param value 新高度
|
|
178
|
+
* @example
|
|
179
|
+
* camera.height = value;
|
|
180
|
+
* @returns 无返回值。
|
|
181
|
+
*/
|
|
49
182
|
set height(value: number);
|
|
50
|
-
/**
|
|
183
|
+
/**
|
|
184
|
+
* 相机缩放。
|
|
185
|
+
* @example
|
|
186
|
+
* const value = camera.zoom;
|
|
187
|
+
* @returns 相机缩放。
|
|
188
|
+
*/
|
|
51
189
|
get zoom(): number;
|
|
52
|
-
/**
|
|
190
|
+
/**
|
|
191
|
+
* 相机缩放。
|
|
192
|
+
* @param value 新缩放
|
|
193
|
+
* @example
|
|
194
|
+
* camera.zoom = value;
|
|
195
|
+
* @returns 无返回值。
|
|
196
|
+
*/
|
|
53
197
|
set zoom(value: number);
|
|
54
|
-
/**
|
|
198
|
+
/**
|
|
199
|
+
* 正交视口上边界。
|
|
200
|
+
* @example
|
|
201
|
+
* const value = camera.top;
|
|
202
|
+
* @returns 正交视口上边界。
|
|
203
|
+
*/
|
|
55
204
|
get top(): number;
|
|
56
|
-
/**
|
|
205
|
+
/**
|
|
206
|
+
* 正交视口下边界。
|
|
207
|
+
* @example
|
|
208
|
+
* const value = camera.bottom;
|
|
209
|
+
* @returns 正交视口下边界。
|
|
210
|
+
*/
|
|
57
211
|
get bottom(): number;
|
|
58
|
-
/**
|
|
212
|
+
/**
|
|
213
|
+
* 正交视口左边界。
|
|
214
|
+
* @example
|
|
215
|
+
* const value = camera.left;
|
|
216
|
+
* @returns 正交视口左边界。
|
|
217
|
+
*/
|
|
59
218
|
get left(): number;
|
|
60
|
-
/**
|
|
219
|
+
/**
|
|
220
|
+
* 正交视口右边界。
|
|
221
|
+
* @example
|
|
222
|
+
* const value = camera.right;
|
|
223
|
+
* @returns 正交视口右边界。
|
|
224
|
+
*/
|
|
61
225
|
get right(): number;
|
|
62
|
-
/**
|
|
226
|
+
/**
|
|
227
|
+
* 投影矩阵,GPU 上传比较矩阵版本。
|
|
228
|
+
* @example
|
|
229
|
+
* const value = camera.orthogonalMatrix;
|
|
230
|
+
* @returns 投影矩阵,GPU 上传比较矩阵版本。
|
|
231
|
+
*/
|
|
63
232
|
get orthogonalMatrix(): Mat3;
|
|
64
|
-
/**
|
|
233
|
+
/**
|
|
234
|
+
* 投影矩阵,GPU 上传比较矩阵版本。
|
|
235
|
+
* @param value 新投影矩阵,替换引用也使 Render 缓存失效
|
|
236
|
+
* @example
|
|
237
|
+
* camera.orthogonalMatrix = value;
|
|
238
|
+
* @returns 无返回值。
|
|
239
|
+
*/
|
|
65
240
|
set orthogonalMatrix(value: Mat3);
|
|
66
|
-
/**
|
|
241
|
+
/**
|
|
242
|
+
* 视图矩阵,通常为世界矩阵的逆。
|
|
243
|
+
* @example
|
|
244
|
+
* const value = camera.viewMatrix;
|
|
245
|
+
* @returns 视图矩阵,通常为世界矩阵的逆。
|
|
246
|
+
*/
|
|
67
247
|
get viewMatrix(): Mat3;
|
|
68
|
-
/**
|
|
248
|
+
/**
|
|
249
|
+
* 视图矩阵,通常为世界矩阵的逆。
|
|
250
|
+
* @param value 新视图矩阵
|
|
251
|
+
* @example
|
|
252
|
+
* camera.viewMatrix = value;
|
|
253
|
+
* @returns 无返回值。
|
|
254
|
+
*/
|
|
69
255
|
set viewMatrix(value: Mat3);
|
|
70
|
-
/**
|
|
256
|
+
/**
|
|
257
|
+
* 接收数学对象的变化通知,更新对应字段的消费者版本。
|
|
258
|
+
* @param source 数学对象
|
|
259
|
+
* @param field 关联字段
|
|
260
|
+
* @example
|
|
261
|
+
* camera.onMathChange(source, field);
|
|
262
|
+
* @returns 无返回值。
|
|
263
|
+
*/
|
|
71
264
|
onMathChange(source: VersionedMath, field: string): void;
|
|
72
|
-
/**
|
|
265
|
+
/**
|
|
266
|
+
* 同时更新相机视口宽高,通知投影矩阵在下一次使用前更新。
|
|
267
|
+
* @param width 新视口宽度
|
|
268
|
+
* @param height 新视口高度
|
|
269
|
+
* @example
|
|
270
|
+
* camera.setViewport(width, height);
|
|
271
|
+
* @returns 无返回值。
|
|
272
|
+
*/
|
|
73
273
|
setViewport(width?: number, height?: number): void;
|
|
74
|
-
/**
|
|
274
|
+
/**
|
|
275
|
+
* 相机不提供子节点容器。
|
|
276
|
+
* @example
|
|
277
|
+
* camera.add();
|
|
278
|
+
* @returns 无返回值。
|
|
279
|
+
*/
|
|
75
280
|
add(): void;
|
|
76
|
-
/**
|
|
281
|
+
/**
|
|
282
|
+
* 在渲染前更新版本落后的矩阵;支持相机挂在 Group/Mesh 内以及独立相机。
|
|
283
|
+
* @example
|
|
284
|
+
* camera.ensureCameraMatrix();
|
|
285
|
+
* @returns 无返回值。
|
|
286
|
+
*/
|
|
77
287
|
ensureCameraMatrix(): void;
|
|
78
|
-
/**
|
|
288
|
+
/**
|
|
289
|
+
* 强制计算投影矩阵,保持 Y 正方向向上。
|
|
290
|
+
* @example
|
|
291
|
+
* camera.updateOrthogonalMatrix();
|
|
292
|
+
* @returns 计算得到的 Mat3 结果。
|
|
293
|
+
*/
|
|
79
294
|
updateOrthogonalMatrix(): Mat3;
|
|
80
|
-
/**
|
|
295
|
+
/**
|
|
296
|
+
* 先确保父级与自身世界矩阵有效,再计算逆矩阵。
|
|
297
|
+
* @example
|
|
298
|
+
* camera.updateViewMatrix();
|
|
299
|
+
* @returns 计算得到的 Mat3 结果。
|
|
300
|
+
*/
|
|
81
301
|
updateViewMatrix(): Mat3;
|
|
82
|
-
/**
|
|
302
|
+
/**
|
|
303
|
+
* 强制更新投影矩阵和视图矩阵。
|
|
304
|
+
* @example
|
|
305
|
+
* camera.updateCameraMatrix();
|
|
306
|
+
* @returns 无返回值。
|
|
307
|
+
*/
|
|
83
308
|
updateCameraMatrix(): void;
|
|
84
|
-
/**
|
|
309
|
+
/**
|
|
310
|
+
* 最终释放相机对所有数学对象的订阅,不销毁共享矩阵。
|
|
311
|
+
* @example
|
|
312
|
+
* camera.dispose();
|
|
313
|
+
* @returns 无返回值。
|
|
314
|
+
*/
|
|
85
315
|
dispose(): void;
|
|
316
|
+
/**
|
|
317
|
+
* 世界坐标转归一化NDC坐标。
|
|
318
|
+
* @param position 世界坐标。
|
|
319
|
+
* @example
|
|
320
|
+
* camera.worldToNdc(position);
|
|
321
|
+
* @returns 归一化NDC坐标。
|
|
322
|
+
*/
|
|
323
|
+
worldToNdc(position: Vec2): Vec2;
|
|
324
|
+
/**
|
|
325
|
+
* 归一化NDC坐标转画布坐标。
|
|
326
|
+
* @param position 归一化NDC坐标。
|
|
327
|
+
* @param render 可选渲染器,按画布实际 CSS 尺寸换算;省略时使用相机宽高 / DPR
|
|
328
|
+
* @example
|
|
329
|
+
* camera.ndcToScreen(position, render);
|
|
330
|
+
* @returns 相对画布左上角的 CSS 像素坐标。
|
|
331
|
+
*/
|
|
332
|
+
ndcToScreen(position: Vec2, render?: RenderLike): Vec2;
|
|
333
|
+
/**
|
|
334
|
+
* 世界坐标转画布坐标。
|
|
335
|
+
* @param position 世界坐标。
|
|
336
|
+
* @param render 可选渲染器,支持 resize 延迟期间的 CSS 拉伸
|
|
337
|
+
* @example
|
|
338
|
+
* camera.worldToScreen(position, render);
|
|
339
|
+
* @returns 相对画布左上角的 CSS 像素坐标。
|
|
340
|
+
*/
|
|
341
|
+
worldToScreen(position: Vec2, render?: RenderLike): Vec2;
|
|
342
|
+
/**
|
|
343
|
+
* 画布坐标转归一化NDC坐标。
|
|
344
|
+
* @param position 相对画布左上角的 CSS 像素坐标
|
|
345
|
+
* @param render 可选渲染器,省略时使用相机宽高 / DPR
|
|
346
|
+
* @example
|
|
347
|
+
* camera.screenToNdc(position, render);
|
|
348
|
+
* @returns 归一化NDC坐标。
|
|
349
|
+
*/
|
|
350
|
+
screenToNdc(position: Vec2, render?: RenderLike): Vec2;
|
|
351
|
+
/**
|
|
352
|
+
* 归一化ndc坐标转世界坐标
|
|
353
|
+
* @param position 归一化NDC坐标。
|
|
354
|
+
* @example
|
|
355
|
+
* camera.ndcToWorld(position);
|
|
356
|
+
* @returns 世界坐标。
|
|
357
|
+
*/
|
|
358
|
+
ndcToWorld(position: Vec2): Vec2;
|
|
359
|
+
/**
|
|
360
|
+
* 画布坐标转世界坐标
|
|
361
|
+
* @param position 相对画布左上角的 CSS 像素坐标
|
|
362
|
+
* @param render 可选渲染器,按画布实际 CSS 尺寸换算
|
|
363
|
+
* @example
|
|
364
|
+
* camera.screenToWorld(position, render);
|
|
365
|
+
* @returns 世界坐标。
|
|
366
|
+
*/
|
|
367
|
+
screenToWorld(position: Vec2, render?: RenderLike): Vec2;
|
|
368
|
+
/**
|
|
369
|
+
* 世界坐标转浏览器视口坐标,适用于 DOM 定位;支持 CSS 平移/轴向缩放,不含旋转/倾斜。
|
|
370
|
+
* @param position 世界坐标。
|
|
371
|
+
* @param render 提供实际画布位置和尺寸的渲染器
|
|
372
|
+
* @example
|
|
373
|
+
* camera.worldToWindow(position, render);
|
|
374
|
+
* @returns clientX/clientY 坐标,不含页面滚动偏移。
|
|
375
|
+
*/
|
|
376
|
+
worldToWindow(position: Vec2, render: RenderLike): Vec2;
|
|
377
|
+
/**
|
|
378
|
+
* 浏览器视口坐标转世界坐标。
|
|
379
|
+
* @param position MouseEvent.clientX/clientY,不是 pageX/pageY
|
|
380
|
+
* @param render 提供实际画布位置和尺寸的渲染器
|
|
381
|
+
* @example
|
|
382
|
+
* camera.windowToWorld(position, render);
|
|
383
|
+
* @returns 世界坐标。
|
|
384
|
+
*/
|
|
385
|
+
windowToWorld(position: Vec2, render: RenderLike): Vec2;
|
|
86
386
|
}
|
|
87
387
|
export default Camera;
|
|
88
388
|
export type { CameraBuffersLike, CameraLike };
|