@woosh/meep-engine 3.0.0 → 3.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.
- package/editor/particles/rebuildParticleEmitter.js +8 -26
- package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
- package/editor/tools/SelectionTool.js +1 -2
- package/editor/tools/TransformToolV2.js +2 -3
- package/editor/tools/v2/BlenderCameraOrientationGizmo.js +501 -501
- package/editor/tools/v2/TransformControls.js +1 -1
- package/package.json +95 -96
- package/src/core/geom/3d/mat4/m4_look_at.d.ts +25 -0
- package/src/core/geom/3d/mat4/m4_look_at.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_look_at.js +96 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts +18 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_x.js +47 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts +18 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_y.js +47 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts +18 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_z.js +47 -0
- package/src/core/geom/3d/mat4/m4_perspective.d.ts +25 -0
- package/src/core/geom/3d/mat4/m4_perspective.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_perspective.js +66 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2045 -2052
- package/src/engine/ecs/gui/hud/testHudEdgeStick.js +2 -2
- package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/TerrainSystem.js +14 -27
- package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.d.ts.map +1 -1
- package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +129 -126
- package/src/engine/graphics/ecs/camera/Camera.d.ts +36 -48
- package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/Camera.js +165 -303
- package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts +14 -0
- package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts.map +1 -0
- package/src/engine/graphics/ecs/camera/camera_active_frustum.js +25 -0
- package/src/engine/graphics/ecs/camera/camera_find_active.d.ts +16 -0
- package/src/engine/graphics/ecs/camera/camera_find_active.d.ts.map +1 -0
- package/src/engine/graphics/ecs/camera/camera_find_active.js +28 -0
- package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts +12 -0
- package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts.map +1 -0
- package/src/engine/graphics/ecs/camera/camera_traverse_active.js +18 -0
- package/src/engine/graphics/ecs/camera/pp/PerfectPanner.js +170 -170
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts +5 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +296 -281
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +1 -1
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +1 -1
- package/src/engine/graphics/geometry/AttributeData.d.ts +52 -0
- package/src/engine/graphics/geometry/AttributeData.d.ts.map +1 -0
- package/src/engine/graphics/geometry/AttributeData.js +84 -0
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts +1 -14
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +229 -253
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +25 -12
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1149 -1194
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +4 -8
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +472 -540
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +19 -90
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +135 -514
- package/src/engine/graphics3/CameraSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/CameraSystem3.js +10 -1
- package/src/engine/graphics3/GraphicsEngine3.d.ts +3 -3
- package/src/engine/graphics3/GraphicsEngine3.js +3 -3
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +11 -0
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ParticleEmitterSystem3.js +289 -265
- package/src/engine/graphics3/ShadeCameraAdapter.d.ts +3 -3
- package/src/engine/graphics3/ShadeCameraAdapter.js +3 -3
- package/src/engine/graphics3/camera_sync_from_transform.d.ts +2 -2
- package/src/engine/graphics3/camera_sync_from_transform.js +2 -2
- package/src/engine/graphics3/shade_camera_projection_ray.js +2 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/renderer/camera/Camera.d.ts +3 -5
- package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
- package/src/shade/renderer/camera/Camera.js +281 -280
- package/src/shade/renderer/camera/GPUCameraContext.js +233 -233
- package/src/shade/renderer/loader/usd/parse_usda.js +1 -1
- package/src/shade/renderer/loader/usd/usd_build_scene.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_build_scene.js +658 -652
- package/src/shade/renderer/loader/usd/usd_compose_transform.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_compose_transform.js +58 -23
- package/src/shade/renderer/particles/prototypeParticleSystem.js +450 -443
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +7 -3
- package/src/view/minimap/dom/MinimapCameraView.d.ts +2 -2
- package/src/view/minimap/dom/MinimapCameraView.js +206 -206
- package/src/engine/graphics/ecs/camera/CameraSystem.d.ts +0 -74
- package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/CameraSystem.js +0 -331
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts +0 -10
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +0 -105
- package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts +0 -7
- package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/build_three_camera_object.js +0 -29
- package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts +0 -8
- package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/frustum_from_camera.js +0 -20
- package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts +0 -9
- package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.js +0 -46
- package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts +0 -9
- package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/unprojectPoint.js +0 -14
- package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts +0 -6
- package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/update_camera_transform.js +0 -17
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts +0 -67
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +0 -1
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +0 -291
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts +0 -11
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +0 -497
- package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts +0 -40
- package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.js +0 -47
- package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts +0 -7
- package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts.map +0 -1
- package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.js +0 -40
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usd_compose_transform.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/loader/usd/usd_compose_transform.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usd_compose_transform.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/loader/usd/usd_compose_transform.js"],"names":[],"mappings":"AAgEA;;;;;;;;;;;;GAYG;AACH,kFAHW,MAAM,GACJ,YAAY,CA0BxB"}
|
|
@@ -17,8 +17,18 @@
|
|
|
17
17
|
* @module usd_compose_transform
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
+
import { array_copy } from "../../../../core/collection/array/array_copy.js";
|
|
21
|
+
import { M4_IDENTITY } from "../../../../core/geom/3d/mat4/M4_IDENTITY.js";
|
|
22
|
+
import { m4_allocate } from "../../../../core/geom/3d/mat4/m4_allocate.js";
|
|
23
|
+
import { m4_from_rotation_translation_scale } from "../../../../core/geom/3d/mat4/m4_from_rotation_translation_scale.js";
|
|
24
|
+
import { m4_make_rotation_x } from "../../../../core/geom/3d/mat4/m4_make_rotation_x.js";
|
|
25
|
+
import { m4_make_rotation_y } from "../../../../core/geom/3d/mat4/m4_make_rotation_y.js";
|
|
26
|
+
import { m4_make_rotation_z } from "../../../../core/geom/3d/mat4/m4_make_rotation_z.js";
|
|
27
|
+
import { m4_make_scale } from "../../../../core/geom/3d/mat4/m4_make_scale.js";
|
|
28
|
+
import { m4_make_translation } from "../../../../core/geom/3d/mat4/m4_make_translation.js";
|
|
29
|
+
import { m4_multiply } from "../../../../core/geom/3d/mat4/m4_multiply.js";
|
|
30
|
+
import { m4_transpose } from "../../../../core/geom/3d/mat4/m4_transpose.js";
|
|
20
31
|
import { DEG_TO_RAD } from "../../../../core/math/DEG_TO_RAD.js";
|
|
21
|
-
import { mat4, quat } from "gl-matrix";
|
|
22
32
|
|
|
23
33
|
/**
|
|
24
34
|
* Reusable temporary matrix to avoid per-call allocations.
|
|
@@ -26,12 +36,31 @@ import { mat4, quat } from "gl-matrix";
|
|
|
26
36
|
*/
|
|
27
37
|
const _temp_mat = new Float32Array(16);
|
|
28
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Reusable temporary matrix holding a single axis of an euler rotation, which is multiplied into
|
|
41
|
+
* the accumulating rotation rather than replacing it.
|
|
42
|
+
* @type {Float32Array}
|
|
43
|
+
*/
|
|
44
|
+
const _temp_axis_mat = new Float32Array(16);
|
|
45
|
+
|
|
29
46
|
/**
|
|
30
47
|
* Reusable temporary quaternion.
|
|
31
48
|
* @type {Float32Array}
|
|
32
49
|
*/
|
|
33
50
|
const _temp_quat = new Float32Array(4);
|
|
34
51
|
|
|
52
|
+
/**
|
|
53
|
+
* An `xformOp:orient` carries rotation alone — translation and scale are separate ops with their
|
|
54
|
+
* own place in `xformOpOrder` — so the matrix it composes from a quaternion has neither.
|
|
55
|
+
* @type {number[]}
|
|
56
|
+
*/
|
|
57
|
+
const NO_TRANSLATION = [0, 0, 0];
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @see NO_TRANSLATION
|
|
61
|
+
* @type {number[]}
|
|
62
|
+
*/
|
|
63
|
+
const UNIT_SCALE = [1, 1, 1];
|
|
35
64
|
|
|
36
65
|
/**
|
|
37
66
|
* Compose a USD transform from its `xformOpOrder` and associated properties.
|
|
@@ -51,10 +80,10 @@ export function usd_compose_transform(fields, specs_by_path, prim_path) {
|
|
|
51
80
|
const xform_op_order = fields.xformOpOrder;
|
|
52
81
|
|
|
53
82
|
if (!xform_op_order || xform_op_order.length === 0) {
|
|
54
|
-
return
|
|
83
|
+
return m4_allocate();
|
|
55
84
|
}
|
|
56
85
|
|
|
57
|
-
const result =
|
|
86
|
+
const result = m4_allocate();
|
|
58
87
|
|
|
59
88
|
for (let i = 0; i < xform_op_order.length; i++) {
|
|
60
89
|
const op_name = xform_op_order[i];
|
|
@@ -126,7 +155,7 @@ function resolve_xform_op_value(op_name, fields, specs_by_path, prim_path) {
|
|
|
126
155
|
* - `xformOp:orient` — quaternion rotation (USD format: w,x,y,z)
|
|
127
156
|
* - `xformOp:transform` — full 4×4 matrix
|
|
128
157
|
*
|
|
129
|
-
* @param {
|
|
158
|
+
* @param {Float32Array} result - Matrix to multiply into (modified in place)
|
|
130
159
|
* @param {string} op_name - Operation name
|
|
131
160
|
* @param {number[]|Float32Array|Float64Array} value - Operation value
|
|
132
161
|
*/
|
|
@@ -135,28 +164,26 @@ function apply_xform_op(result, op_name, value) {
|
|
|
135
164
|
// Strip the "xformOp:" prefix and any namespace suffix (e.g. ":pivot")
|
|
136
165
|
const op = op_name.replace(/^xformOp:/, "");
|
|
137
166
|
|
|
138
|
-
mat4.identity(_temp_mat);
|
|
139
|
-
|
|
140
167
|
if (op === "translate") {
|
|
141
168
|
|
|
142
169
|
// NOTE: float64 → float32 precision loss for large coordinates
|
|
143
|
-
|
|
170
|
+
m4_make_translation(_temp_mat, value);
|
|
144
171
|
|
|
145
172
|
} else if (op === "scale") {
|
|
146
173
|
|
|
147
|
-
|
|
174
|
+
m4_make_scale(_temp_mat, value);
|
|
148
175
|
|
|
149
176
|
} else if (op === "rotateX") {
|
|
150
177
|
|
|
151
|
-
|
|
178
|
+
m4_make_rotation_x(_temp_mat, value * DEG_TO_RAD);
|
|
152
179
|
|
|
153
180
|
} else if (op === "rotateY") {
|
|
154
181
|
|
|
155
|
-
|
|
182
|
+
m4_make_rotation_y(_temp_mat, value * DEG_TO_RAD);
|
|
156
183
|
|
|
157
184
|
} else if (op === "rotateZ") {
|
|
158
185
|
|
|
159
|
-
|
|
186
|
+
m4_make_rotation_z(_temp_mat, value * DEG_TO_RAD);
|
|
160
187
|
|
|
161
188
|
} else if (op === "rotateXYZ" || op === "rotateXZY" || op === "rotateYXZ" ||
|
|
162
189
|
op === "rotateYZX" || op === "rotateZXY" || op === "rotateZYX") {
|
|
@@ -166,30 +193,34 @@ function apply_xform_op(result, op_name, value) {
|
|
|
166
193
|
} else if (op === "orient") {
|
|
167
194
|
|
|
168
195
|
// USD quaternion order: (w, x, y, z)
|
|
169
|
-
//
|
|
196
|
+
// engine quaternion order: (x, y, z, w)
|
|
170
197
|
// @see https://openusd.org/release/api/class_gf_quatf.html — GfQuatf real-part-first layout
|
|
171
|
-
|
|
172
|
-
|
|
198
|
+
_temp_quat[0] = value[1];
|
|
199
|
+
_temp_quat[1] = value[2];
|
|
200
|
+
_temp_quat[2] = value[3];
|
|
201
|
+
_temp_quat[3] = value[0];
|
|
202
|
+
|
|
203
|
+
m4_from_rotation_translation_scale(_temp_mat, _temp_quat, NO_TRANSLATION, UNIT_SCALE);
|
|
173
204
|
|
|
174
205
|
} else if (op === "transform") {
|
|
175
206
|
|
|
176
207
|
// Full 4×4 matrix — USD stores row-major, engine uses column-major
|
|
177
208
|
// NOTE: float64 → float32 precision loss for all 16 matrix elements
|
|
178
|
-
|
|
209
|
+
m4_transpose(_temp_mat, value);
|
|
179
210
|
|
|
180
211
|
} else {
|
|
181
212
|
console.warn(`[USD] Unknown xformOp: "${op_name}", skipping`);
|
|
182
213
|
return;
|
|
183
214
|
}
|
|
184
215
|
|
|
185
|
-
|
|
216
|
+
m4_multiply(result, result, _temp_mat);
|
|
186
217
|
}
|
|
187
218
|
|
|
188
219
|
|
|
189
220
|
/**
|
|
190
221
|
* Apply euler rotation in the specified axis order.
|
|
191
222
|
*
|
|
192
|
-
* @param {
|
|
223
|
+
* @param {Float32Array} out - Output matrix
|
|
193
224
|
* @param {string} order - e.g. "rotateXYZ"
|
|
194
225
|
* @param {number[]} angles - [x, y, z] in degrees
|
|
195
226
|
*/
|
|
@@ -203,21 +234,25 @@ function apply_euler_rotation(out, order, angles) {
|
|
|
203
234
|
const axis_order = order.replace("rotate", "");
|
|
204
235
|
|
|
205
236
|
const ops = {
|
|
206
|
-
"X": (m) =>
|
|
207
|
-
"Y": (m) =>
|
|
208
|
-
"Z": (m) =>
|
|
237
|
+
"X": (m) => m4_make_rotation_x(m, rx),
|
|
238
|
+
"Y": (m) => m4_make_rotation_y(m, ry),
|
|
239
|
+
"Z": (m) => m4_make_rotation_z(m, rz),
|
|
209
240
|
};
|
|
210
241
|
|
|
242
|
+
array_copy(M4_IDENTITY, 0, out, 0, 16);
|
|
243
|
+
|
|
211
244
|
// OpenUSD applies the named axes to the point first-to-last (rotateXYZ ⇒ X
|
|
212
|
-
// first).
|
|
213
|
-
// out = R_last · … · R_first.
|
|
245
|
+
// first). A column-major matrix applies its rightmost factor first, so build
|
|
246
|
+
// the product in reverse: out = R_last · … · R_first.
|
|
214
247
|
// @see https://openusd.org/release/api/class_usd_geom_xform_op.html — TypeRotateXYZ
|
|
215
248
|
for (let i = axis_order.length - 1; i >= 0; i--) {
|
|
216
249
|
const axis = axis_order[i];
|
|
217
250
|
const fn = ops[axis];
|
|
218
251
|
|
|
219
252
|
if (fn) {
|
|
220
|
-
fn(
|
|
253
|
+
fn(_temp_axis_mat);
|
|
254
|
+
|
|
255
|
+
m4_multiply(out, out, _temp_axis_mat);
|
|
221
256
|
}
|
|
222
257
|
}
|
|
223
258
|
}
|