@d5techs/3dgs-lib 1.4.73 → 1.4.75
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/dist/3dgs-lib.cjs +35 -38
- package/dist/3dgs-lib.cjs.map +1 -1
- package/dist/3dgs-lib.js +35 -38
- package/dist/3dgs-lib.js.map +1 -1
- package/dist/editor/SplatEditor.d.ts +2 -3
- package/package.json +1 -1
package/dist/3dgs-lib.js
CHANGED
|
@@ -809,6 +809,7 @@ const _OrbitControls = class _OrbitControls {
|
|
|
809
809
|
onKeyDown(e) {
|
|
810
810
|
var _a2;
|
|
811
811
|
if (!this.enabled) return;
|
|
812
|
+
if (e.ctrlKey || e.metaKey || e.altKey) return;
|
|
812
813
|
const tag = (_a2 = e.target) == null ? void 0 : _a2.tagName;
|
|
813
814
|
if (tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT") return;
|
|
814
815
|
const key = e.key.toLowerCase();
|
|
@@ -2112,8 +2113,7 @@ struct V { @builtin(position) pos: vec4<f32>, @location(0) dir: vec3<f32> };
|
|
|
2112
2113
|
return o;
|
|
2113
2114
|
}
|
|
2114
2115
|
@fragment fn fs(i: V) -> @location(0) vec4<f32> {
|
|
2115
|
-
|
|
2116
|
-
return vec4(textureSample(cubeTexture, cubeSampler, vec3(-d.x, d.y, -d.z)).rgb, 1.);
|
|
2116
|
+
return vec4(textureSample(cubeTexture, cubeSampler, normalize(i.dir)).rgb, 1.);
|
|
2117
2117
|
}`
|
|
2118
2118
|
);
|
|
2119
2119
|
class SkyboxRenderer {
|
|
@@ -18246,52 +18246,49 @@ class SplatEditor {
|
|
|
18246
18246
|
this.editHistory.add(editOp);
|
|
18247
18247
|
}
|
|
18248
18248
|
/**
|
|
18249
|
-
*
|
|
18249
|
+
* 球选择:在屏幕空间判断 splat 是否在圆形区域内
|
|
18250
18250
|
*/
|
|
18251
18251
|
selectBySphere(op, centerPx, radiusPx) {
|
|
18252
|
-
|
|
18253
|
-
|
|
18254
|
-
|
|
18255
|
-
const
|
|
18256
|
-
|
|
18257
|
-
const
|
|
18258
|
-
const
|
|
18259
|
-
const
|
|
18252
|
+
this.ensureProjection();
|
|
18253
|
+
const proj = this.projectedPositions;
|
|
18254
|
+
if (!proj) return;
|
|
18255
|
+
const w = this.container.clientWidth;
|
|
18256
|
+
const h = this.container.clientHeight;
|
|
18257
|
+
const cx = centerPx.x / w;
|
|
18258
|
+
const cy = centerPx.y / h;
|
|
18259
|
+
const rx = radiusPx / w;
|
|
18260
|
+
const ry = radiusPx / h;
|
|
18261
|
+
const rx2 = rx * rx;
|
|
18262
|
+
const ry2 = ry * ry;
|
|
18260
18263
|
const editOp = new SelectOp(this.splatState, op, (i) => {
|
|
18261
|
-
|
|
18262
|
-
const
|
|
18263
|
-
|
|
18264
|
-
const
|
|
18265
|
-
|
|
18266
|
-
const wz = modelMat[2] * lx + modelMat[6] * ly + modelMat[10] * lz + modelMat[14];
|
|
18267
|
-
const dx = wx - cx, dy = wy - cy, dz = wz - cz;
|
|
18268
|
-
return dx * dx + dy * dy + dz * dz < r2;
|
|
18264
|
+
const b = i * 3;
|
|
18265
|
+
const sx = proj[b], sy = proj[b + 1], sz = proj[b + 2];
|
|
18266
|
+
if (sz <= 0 || sz >= 1) return false;
|
|
18267
|
+
const dx = sx - cx, dy = sy - cy;
|
|
18268
|
+
return dx * dx / rx2 + dy * dy / ry2 <= 1;
|
|
18269
18269
|
});
|
|
18270
18270
|
this.editHistory.add(editOp);
|
|
18271
18271
|
}
|
|
18272
18272
|
/**
|
|
18273
|
-
*
|
|
18274
|
-
* X/Y 半宽由屏幕拖拽距离转换,Z 半深度取 max(halfW, halfH)
|
|
18273
|
+
* 盒选择:在屏幕空间判断 splat 是否在矩形区域内
|
|
18275
18274
|
*/
|
|
18276
18275
|
selectByBox(op, centerPx, halfWPx, halfHPx) {
|
|
18277
|
-
|
|
18278
|
-
|
|
18279
|
-
|
|
18280
|
-
const
|
|
18281
|
-
const
|
|
18282
|
-
const
|
|
18283
|
-
const
|
|
18284
|
-
|
|
18285
|
-
const
|
|
18286
|
-
const
|
|
18276
|
+
this.ensureProjection();
|
|
18277
|
+
const proj = this.projectedPositions;
|
|
18278
|
+
if (!proj) return;
|
|
18279
|
+
const w = this.container.clientWidth;
|
|
18280
|
+
const h = this.container.clientHeight;
|
|
18281
|
+
const cx = centerPx.x / w;
|
|
18282
|
+
const cy = centerPx.y / h;
|
|
18283
|
+
const hw = halfWPx / w;
|
|
18284
|
+
const hh = halfHPx / h;
|
|
18285
|
+
const left = cx - hw, right = cx + hw;
|
|
18286
|
+
const top = cy - hh, bottom = cy + hh;
|
|
18287
18287
|
const editOp = new SelectOp(this.splatState, op, (i) => {
|
|
18288
|
-
|
|
18289
|
-
const
|
|
18290
|
-
|
|
18291
|
-
|
|
18292
|
-
const wy = modelMat[1] * lx + modelMat[5] * ly + modelMat[9] * lz + modelMat[13];
|
|
18293
|
-
const wz = modelMat[2] * lx + modelMat[6] * ly + modelMat[10] * lz + modelMat[14];
|
|
18294
|
-
return Math.abs(wx - cx) < hx && Math.abs(wy - cy) < hy && Math.abs(wz - cz) < hz;
|
|
18288
|
+
const b = i * 3;
|
|
18289
|
+
const sx = proj[b], sy = proj[b + 1], sz = proj[b + 2];
|
|
18290
|
+
if (sz <= 0 || sz >= 1) return false;
|
|
18291
|
+
return sx >= left && sx <= right && sy >= top && sy <= bottom;
|
|
18295
18292
|
});
|
|
18296
18293
|
this.editHistory.add(editOp);
|
|
18297
18294
|
}
|