@aura3d/physics-rapier 3.0.1 → 4.0.2
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/index.d.ts +164 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +402 -8
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
package/dist/index.d.ts
CHANGED
|
@@ -130,21 +130,155 @@ export declare class RapierCharacterControllerHandle {
|
|
|
130
130
|
enableAutostep(maxHeight: number, minWidth: number, includeDynamicBodies?: boolean): this;
|
|
131
131
|
enableSnapToGround(distance: number): this;
|
|
132
132
|
setMaxSlopeClimbAngle(radians: number): this;
|
|
133
|
+
setMinSlopeSlideAngle(radians: number): this;
|
|
134
|
+
/** Sliding down slopes too steep to stand on. Turning this off leaves a character stuck on a hill. */
|
|
135
|
+
setSlideEnabled(enabled: boolean): this;
|
|
136
|
+
/** Mass used when the character pushes a dynamic body, in kilograms. */
|
|
137
|
+
setCharacterMass(mass: number | null): this;
|
|
138
|
+
/** Whether touching a dynamic body moves it. Off, the character walks through crates. */
|
|
139
|
+
setApplyImpulsesToDynamicBodies(enabled: boolean): this;
|
|
140
|
+
/** The grounding reported by the most recent `move`, with no solver side effect. */
|
|
141
|
+
get lastGrounded(): boolean;
|
|
142
|
+
get lastApplied(): PhysicsVec3;
|
|
133
143
|
move(character: RapierColliderHandle | RapierBodyHandle, requested: PhysicsVec3): RapierCharacterMovement;
|
|
144
|
+
/**
|
|
145
|
+
* Teleport the character and clear the queued kinematic step.
|
|
146
|
+
*
|
|
147
|
+
* Writing only the rendered mesh leaves Rapier's queued next-translation in place,
|
|
148
|
+
* so the respawned character is dragged back toward wherever the old movement was
|
|
149
|
+
* headed on the following step.
|
|
150
|
+
*/
|
|
151
|
+
setPosition(character: RapierColliderHandle | RapierBodyHandle, position: PhysicsVec3): PhysicsVec3;
|
|
134
152
|
dispose(): void;
|
|
135
153
|
}
|
|
154
|
+
/** Per-wheel suspension and grip tuning. All values are solver units. */
|
|
155
|
+
export interface RapierWheelTuning {
|
|
156
|
+
readonly suspensionStiffness?: number;
|
|
157
|
+
readonly suspensionCompression?: number;
|
|
158
|
+
readonly suspensionRelaxation?: number;
|
|
159
|
+
readonly maxSuspensionTravel?: number;
|
|
160
|
+
readonly maxSuspensionForce?: number;
|
|
161
|
+
/**
|
|
162
|
+
* Tyre traction. Rapier's own wording: "the larger the value, the more
|
|
163
|
+
* instantaneous braking will happen" — so a LARGER number is MORE grip and a
|
|
164
|
+
* smaller number lets the tyre break loose. A racing game's drift control is
|
|
165
|
+
* therefore a *reduction* of this value.
|
|
166
|
+
*/
|
|
167
|
+
readonly frictionSlip?: number;
|
|
168
|
+
readonly sideFrictionStiffness?: number;
|
|
169
|
+
}
|
|
170
|
+
/** A wheel plus its initial tuning, used by `addWheel`. */
|
|
171
|
+
export interface RapierWheelSpec extends RapierWheelTuning {
|
|
172
|
+
readonly connection: PhysicsVec3;
|
|
173
|
+
readonly direction: PhysicsVec3;
|
|
174
|
+
readonly axle: PhysicsVec3;
|
|
175
|
+
readonly restLength: number;
|
|
176
|
+
readonly radius: number;
|
|
177
|
+
}
|
|
178
|
+
/** Driver input for one wheel for one step. */
|
|
179
|
+
export interface RapierWheelCommand {
|
|
180
|
+
readonly engineForce?: number;
|
|
181
|
+
readonly brake?: number;
|
|
182
|
+
/** Radians. */
|
|
183
|
+
readonly steering?: number;
|
|
184
|
+
}
|
|
185
|
+
/** Measured wheel state after `update`. */
|
|
186
|
+
export interface RapierWheelState {
|
|
187
|
+
readonly index: number;
|
|
188
|
+
readonly isInContact: boolean;
|
|
189
|
+
readonly contactPoint: PhysicsVec3 | null;
|
|
190
|
+
readonly contactNormal: PhysicsVec3 | null;
|
|
191
|
+
readonly engineForce: number;
|
|
192
|
+
readonly brake: number;
|
|
193
|
+
readonly steering: number;
|
|
194
|
+
readonly suspensionLength: number;
|
|
195
|
+
readonly rotation: number;
|
|
196
|
+
readonly frictionSlip: number;
|
|
197
|
+
/** Force the suspension spring is applying this step, newtons. Zero means the spring is not carrying the car. */
|
|
198
|
+
readonly suspensionForce: number;
|
|
199
|
+
/** Tyre impulse along the rolling direction — the drive/brake traction actually realized. */
|
|
200
|
+
readonly forwardImpulse: number;
|
|
201
|
+
/** Tyre impulse across the rolling direction — the lateral grip actually realized. This is the slip signal. */
|
|
202
|
+
readonly sideImpulse: number;
|
|
203
|
+
/** Handle of the collider this tyre is standing on, or `null` in the air. Lets a game tell road from verge without a second query. */
|
|
204
|
+
readonly groundColliderHandle: number | null;
|
|
205
|
+
}
|
|
136
206
|
export declare class RapierVehicleControllerHandle {
|
|
137
207
|
#private;
|
|
138
208
|
readonly raw: Rapier.DynamicRayCastVehicleController;
|
|
139
209
|
constructor(world: RapierPhysicsWorld, raw: Rapier.DynamicRayCastVehicleController);
|
|
140
|
-
|
|
210
|
+
/** Chassis-local axes the solver uses to project suspension and tyre forces. */
|
|
211
|
+
get upAxis(): number;
|
|
212
|
+
set upAxis(axis: number);
|
|
213
|
+
/**
|
|
214
|
+
* Rapier declares this as the write-only accessor `setIndexForwardAxis`, so the
|
|
215
|
+
* assignment below is the call, not a typo. Reading it back is `indexForwardAxis`.
|
|
216
|
+
*/
|
|
217
|
+
set forwardAxis(axis: number);
|
|
218
|
+
get forwardAxis(): number;
|
|
219
|
+
addWheel(spec: RapierWheelSpec): this;
|
|
220
|
+
/** Wheel geometry may only be changed through the setters after registration. */
|
|
221
|
+
setWheelTuning(index: number, tuning: RapierWheelTuning): this;
|
|
222
|
+
/**
|
|
223
|
+
* Applies drive input. Only the fields present are written, so a caller can
|
|
224
|
+
* steer without disturbing throttle and vice versa.
|
|
225
|
+
*
|
|
226
|
+
* Nonzero input wakes the chassis. Rapier sleeps a body that has been still, and a
|
|
227
|
+
* raycast vehicle writes its chassis velocity directly rather than through the force
|
|
228
|
+
* accumulator, so nothing else wakes it: a car that sat on the start line long enough
|
|
229
|
+
* to fall asleep then ignores the throttle when the lights go out. That is a
|
|
230
|
+
* "car will not launch after a countdown" bug with no error anywhere in it.
|
|
231
|
+
*/
|
|
232
|
+
setWheelCommand(index: number, command: RapierWheelCommand): this;
|
|
233
|
+
/** Broadcast the same brake to every wheel — the handbrake and stop case. */
|
|
234
|
+
setBrakes(brake: number): this;
|
|
235
|
+
wheelState(index: number): RapierWheelState;
|
|
236
|
+
wheelStates(): readonly RapierWheelState[];
|
|
237
|
+
/** True only while at least one tyre is touching the ground — the grounding test. */
|
|
238
|
+
isGrounded(): boolean;
|
|
239
|
+
groundedWheelCount(): number;
|
|
240
|
+
currentVehicleSpeed(): number;
|
|
241
|
+
wheelCount(): number;
|
|
141
242
|
update(dt: number): void;
|
|
243
|
+
/**
|
|
244
|
+
* Release every drive input without touching the chassis.
|
|
245
|
+
*
|
|
246
|
+
* A restart that teleports the car but leaves `engineForce` set resumes throttle
|
|
247
|
+
* the instant the frame resumes, and a wheel left at full lock steers the car into
|
|
248
|
+
* the barrier it was respawned away from. Both are invisible in a screenshot and
|
|
249
|
+
* obvious in play, so the reset has to own them.
|
|
250
|
+
*/
|
|
251
|
+
clearWheelCommands(): this;
|
|
252
|
+
/**
|
|
253
|
+
* Take the chassis back as a full physical state, not just a rendered transform.
|
|
254
|
+
*
|
|
255
|
+
* Position, rotation, linear velocity, angular velocity and sleep state are all
|
|
256
|
+
* written, because leaving the old velocity in place means the respawned car keeps
|
|
257
|
+
* its pre-crash momentum and drives straight off the new spawn.
|
|
258
|
+
*/
|
|
259
|
+
setChassisPose(position: PhysicsVec3, rotation?: readonly [number, number, number, number], linearVelocity?: PhysicsVec3, angularVelocity?: PhysicsVec3): this;
|
|
260
|
+
/** The native body the controller drives, so a caller can read the solved pose. */
|
|
261
|
+
chassisPosition(): PhysicsVec3;
|
|
262
|
+
chassisRotation(): readonly [number, number, number, number];
|
|
263
|
+
chassisLinearVelocity(): PhysicsVec3;
|
|
264
|
+
chassisAngularVelocity(): PhysicsVec3;
|
|
142
265
|
dispose(): void;
|
|
143
266
|
}
|
|
144
267
|
export declare class RapierPhysicsWorld {
|
|
145
268
|
#private;
|
|
146
269
|
constructor(module: RapierModule, gravity: PhysicsVec3);
|
|
147
270
|
get disposed(): boolean;
|
|
271
|
+
/** True until {@link refreshQueries} or a real step has run since the last structural change. */
|
|
272
|
+
get queriesStale(): boolean;
|
|
273
|
+
/** Declare that a transform was written outside the solver, so the next query needs a refresh. */
|
|
274
|
+
markQueriesStale(): void;
|
|
275
|
+
/**
|
|
276
|
+
* Make scene queries valid without advancing the simulation.
|
|
277
|
+
*
|
|
278
|
+
* Called by `PhysicsWorld` before a character move or a vehicle wheel update when the
|
|
279
|
+
* world changed since the last pass, so a route never has to know this exists.
|
|
280
|
+
*/
|
|
281
|
+
refreshQueries(): void;
|
|
148
282
|
createRigidBody(spec?: RapierRigidBodySpec): RapierBodyHandle;
|
|
149
283
|
createCollider(body: RapierBodyHandle, spec: RapierColliderSpec): RapierColliderHandle;
|
|
150
284
|
createBody(spec: RapierBodySpec): RapierBodyHandle;
|
|
@@ -172,4 +306,33 @@ export declare function createRapierPhysics(options?: RapierPhysicsOptions): Pro
|
|
|
172
306
|
* JavaScript solver behind the synchronous API.
|
|
173
307
|
*/
|
|
174
308
|
export declare function createRapierPhysicsSync(options?: Omit<RapierPhysicsOptions, "moduleLoader">): RapierPhysicsWorld;
|
|
309
|
+
/**
|
|
310
|
+
* PRD-05 §6.3.7 — consume a generated `<id>.<hash8>.collision.glb` sidecar.
|
|
311
|
+
*
|
|
312
|
+
* The sidecar (written by `tools/asset-optimize` step `colliders`) carries one
|
|
313
|
+
* node per mesh-bearing scene node; each mesh's `extras.aura3dCollider` names
|
|
314
|
+
* the shape: `trimesh` / `convex-hull` geometry verbatim, or analytic `box` /
|
|
315
|
+
* `capsule` parameters baked from bounds. Node-local TRS is baked into the
|
|
316
|
+
* produced shape so colliders sit where the source mesh sits.
|
|
317
|
+
*
|
|
318
|
+
* `source` is a fetchable URL or the sidecar bytes. `transform` places the
|
|
319
|
+
* fixed body all colliders attach to — it is the model's world transform
|
|
320
|
+
* (Q-15-2 wires `model(asset, { physics, collider: "auto" })` to call this).
|
|
321
|
+
* `options.collider` passes density/friction/etc. through to every collider.
|
|
322
|
+
*/
|
|
323
|
+
export interface ColliderSidecarTransform {
|
|
324
|
+
readonly position?: PhysicsVec3;
|
|
325
|
+
readonly rotation?: readonly [number, number, number, number];
|
|
326
|
+
}
|
|
327
|
+
export interface ColliderSidecarOptions extends ColliderSidecarTransform {
|
|
328
|
+
readonly body?: RapierBodyHandle;
|
|
329
|
+
readonly collider?: Readonly<Partial<Omit<RapierColliderSpec, "shape">>>;
|
|
330
|
+
}
|
|
331
|
+
export interface ColliderSidecarResult {
|
|
332
|
+
readonly body: RapierBodyHandle;
|
|
333
|
+
readonly colliders: readonly RapierColliderHandle[];
|
|
334
|
+
/** Per-collider `extras.aura3dCollider.sourceNode` in creation order. */
|
|
335
|
+
readonly sourceNodes: readonly string[];
|
|
336
|
+
}
|
|
337
|
+
export declare function createCollidersFromSidecar(world: RapierPhysicsWorld, source: string | Uint8Array, options?: ColliderSidecarOptions): Promise<ColliderSidecarResult>;
|
|
175
338
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/physics-rapier/src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/physics-rapier/src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -64,41 +64,255 @@ export class RapierJointHandle {
|
|
|
64
64
|
export class RapierCharacterControllerHandle {
|
|
65
65
|
#world;
|
|
66
66
|
raw;
|
|
67
|
+
#lastGrounded = false;
|
|
68
|
+
#lastApplied = [0, 0, 0];
|
|
67
69
|
constructor(world, raw) { this.#world = world; this.raw = raw; }
|
|
68
70
|
enableAutostep(maxHeight, minWidth, includeDynamicBodies = false) { this.raw.enableAutostep(maxHeight, minWidth, includeDynamicBodies); return this; }
|
|
69
71
|
enableSnapToGround(distance) { this.raw.enableSnapToGround(distance); return this; }
|
|
70
72
|
setMaxSlopeClimbAngle(radians) { this.raw.setMaxSlopeClimbAngle(radians); return this; }
|
|
73
|
+
setMinSlopeSlideAngle(radians) { this.raw.setMinSlopeSlideAngle(radians); return this; }
|
|
74
|
+
/** Sliding down slopes too steep to stand on. Turning this off leaves a character stuck on a hill. */
|
|
75
|
+
setSlideEnabled(enabled) { this.raw.setSlideEnabled(enabled); return this; }
|
|
76
|
+
/** Mass used when the character pushes a dynamic body, in kilograms. */
|
|
77
|
+
setCharacterMass(mass) { this.raw.setCharacterMass(mass); return this; }
|
|
78
|
+
/** Whether touching a dynamic body moves it. Off, the character walks through crates. */
|
|
79
|
+
setApplyImpulsesToDynamicBodies(enabled) { this.raw.setApplyImpulsesToDynamicBodies(enabled); return this; }
|
|
80
|
+
/** The grounding reported by the most recent `move`, with no solver side effect. */
|
|
81
|
+
get lastGrounded() { return this.#lastGrounded; }
|
|
82
|
+
get lastApplied() { return this.#lastApplied; }
|
|
71
83
|
move(character, requested) {
|
|
72
84
|
const desired = vec(requested, "character movement");
|
|
73
|
-
|
|
85
|
+
const collider = character.unsafeRapierCollider();
|
|
86
|
+
if (collider.isSensor()) {
|
|
87
|
+
throw new Error("A solver-backed character controller cannot move through a sensor collider: sensors are reported to " +
|
|
88
|
+
"queries but never block, so the character would fall through the world with no error anywhere.");
|
|
89
|
+
}
|
|
90
|
+
this.raw.computeColliderMovement(collider, desired);
|
|
74
91
|
const movement = this.raw.computedMovement();
|
|
75
|
-
const body =
|
|
92
|
+
const body = collider.parent();
|
|
76
93
|
if (!body)
|
|
77
94
|
throw new Error("Character collider must be attached to a rigid body.");
|
|
95
|
+
if (!body.isKinematic()) {
|
|
96
|
+
throw new Error("A solver-backed character controller moves a kinematic-position body; Rapier owns the position the " +
|
|
97
|
+
"collision solver allowed. A dynamic body has to be pushed by forces or it gets two transform owners.");
|
|
98
|
+
}
|
|
78
99
|
const current = body.translation();
|
|
79
100
|
const next = { x: current.x + movement.x, y: current.y + movement.y, z: current.z + movement.z };
|
|
80
101
|
body.setNextKinematicTranslation(next);
|
|
102
|
+
this.#lastGrounded = this.raw.computedGrounded();
|
|
103
|
+
this.#lastApplied = [movement.x, movement.y, movement.z];
|
|
81
104
|
return {
|
|
82
105
|
requested: [...requested],
|
|
83
106
|
applied: [movement.x, movement.y, movement.z],
|
|
84
|
-
grounded: this
|
|
107
|
+
grounded: this.#lastGrounded,
|
|
85
108
|
collisions: this.raw.numComputedCollisions(),
|
|
86
109
|
nextPosition: [next.x, next.y, next.z]
|
|
87
110
|
};
|
|
88
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Teleport the character and clear the queued kinematic step.
|
|
114
|
+
*
|
|
115
|
+
* Writing only the rendered mesh leaves Rapier's queued next-translation in place,
|
|
116
|
+
* so the respawned character is dragged back toward wherever the old movement was
|
|
117
|
+
* headed on the following step.
|
|
118
|
+
*/
|
|
119
|
+
setPosition(character, position) {
|
|
120
|
+
const body = character.unsafeRapierCollider().parent();
|
|
121
|
+
if (!body)
|
|
122
|
+
throw new Error("Character collider must be attached to a rigid body.");
|
|
123
|
+
const target = vec(position, "character position");
|
|
124
|
+
body.setTranslation(target, true);
|
|
125
|
+
body.setNextKinematicTranslation(target);
|
|
126
|
+
this.#lastGrounded = false;
|
|
127
|
+
this.#lastApplied = [0, 0, 0];
|
|
128
|
+
return [target.x, target.y, target.z];
|
|
129
|
+
}
|
|
89
130
|
dispose() { this.#world.removeCharacterController(this); }
|
|
90
131
|
}
|
|
132
|
+
function readVec(target) {
|
|
133
|
+
if (!target)
|
|
134
|
+
return null;
|
|
135
|
+
return [target.x, target.y, target.z];
|
|
136
|
+
}
|
|
91
137
|
export class RapierVehicleControllerHandle {
|
|
92
138
|
#world;
|
|
93
139
|
raw;
|
|
94
140
|
constructor(world, raw) { this.#world = world; this.raw = raw; }
|
|
95
|
-
|
|
96
|
-
|
|
141
|
+
/** Chassis-local axes the solver uses to project suspension and tyre forces. */
|
|
142
|
+
get upAxis() { return this.raw.indexUpAxis; }
|
|
143
|
+
set upAxis(axis) { this.raw.indexUpAxis = VehicleAxis(axis); }
|
|
144
|
+
/**
|
|
145
|
+
* Rapier declares this as the write-only accessor `setIndexForwardAxis`, so the
|
|
146
|
+
* assignment below is the call, not a typo. Reading it back is `indexForwardAxis`.
|
|
147
|
+
*/
|
|
148
|
+
set forwardAxis(axis) { this.raw.setIndexForwardAxis = VehicleAxis(axis); }
|
|
149
|
+
get forwardAxis() { return this.raw.indexForwardAxis; }
|
|
150
|
+
addWheel(spec) {
|
|
151
|
+
this.raw.addWheel(vec(spec.connection, "wheel connection"), vec(spec.direction, "wheel direction"), vec(spec.axle, "wheel axle"), positive(spec.restLength, "suspension rest length"), positive(spec.radius, "wheel radius"));
|
|
152
|
+
const index = this.raw.numWheels() - 1;
|
|
153
|
+
if (index < 0)
|
|
154
|
+
throw new Error("Rapier did not register the wheel.");
|
|
155
|
+
this.setWheelTuning(index, spec);
|
|
156
|
+
return this;
|
|
157
|
+
}
|
|
158
|
+
/** Wheel geometry may only be changed through the setters after registration. */
|
|
159
|
+
setWheelTuning(index, tuning) {
|
|
160
|
+
const i = WheelIndex(index, this.raw.numWheels());
|
|
161
|
+
if (tuning.suspensionStiffness !== undefined)
|
|
162
|
+
this.raw.setWheelSuspensionStiffness(i, finite(tuning.suspensionStiffness, "suspensionStiffness"));
|
|
163
|
+
if (tuning.suspensionCompression !== undefined)
|
|
164
|
+
this.raw.setWheelSuspensionCompression(i, finite(tuning.suspensionCompression, "suspensionCompression"));
|
|
165
|
+
if (tuning.suspensionRelaxation !== undefined)
|
|
166
|
+
this.raw.setWheelSuspensionRelaxation(i, finite(tuning.suspensionRelaxation, "suspensionRelaxation"));
|
|
167
|
+
if (tuning.maxSuspensionTravel !== undefined)
|
|
168
|
+
this.raw.setWheelMaxSuspensionTravel(i, finite(tuning.maxSuspensionTravel, "maxSuspensionTravel"));
|
|
169
|
+
if (tuning.maxSuspensionForce !== undefined)
|
|
170
|
+
this.raw.setWheelMaxSuspensionForce(i, finite(tuning.maxSuspensionForce, "maxSuspensionForce"));
|
|
171
|
+
if (tuning.frictionSlip !== undefined)
|
|
172
|
+
this.raw.setWheelFrictionSlip(i, positive(tuning.frictionSlip, "frictionSlip"));
|
|
173
|
+
if (tuning.sideFrictionStiffness !== undefined)
|
|
174
|
+
this.raw.setWheelSideFrictionStiffness(i, finite(tuning.sideFrictionStiffness, "sideFrictionStiffness"));
|
|
175
|
+
return this;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Applies drive input. Only the fields present are written, so a caller can
|
|
179
|
+
* steer without disturbing throttle and vice versa.
|
|
180
|
+
*
|
|
181
|
+
* Nonzero input wakes the chassis. Rapier sleeps a body that has been still, and a
|
|
182
|
+
* raycast vehicle writes its chassis velocity directly rather than through the force
|
|
183
|
+
* accumulator, so nothing else wakes it: a car that sat on the start line long enough
|
|
184
|
+
* to fall asleep then ignores the throttle when the lights go out. That is a
|
|
185
|
+
* "car will not launch after a countdown" bug with no error anywhere in it.
|
|
186
|
+
*/
|
|
187
|
+
setWheelCommand(index, command) {
|
|
188
|
+
const i = WheelIndex(index, this.raw.numWheels());
|
|
189
|
+
if (command.engineForce !== undefined)
|
|
190
|
+
this.raw.setWheelEngineForce(i, finite(command.engineForce, "engineForce"));
|
|
191
|
+
if (command.brake !== undefined)
|
|
192
|
+
this.raw.setWheelBrake(i, nonNegative(command.brake, "brake"));
|
|
193
|
+
if (command.steering !== undefined)
|
|
194
|
+
this.raw.setWheelSteering(i, finite(command.steering, "steering"));
|
|
195
|
+
if ((command.engineForce ?? 0) !== 0 || (command.brake ?? 0) !== 0 || (command.steering ?? 0) !== 0) {
|
|
196
|
+
this.raw.chassis().wakeUp();
|
|
197
|
+
}
|
|
198
|
+
return this;
|
|
199
|
+
}
|
|
200
|
+
/** Broadcast the same brake to every wheel — the handbrake and stop case. */
|
|
201
|
+
setBrakes(brake) {
|
|
202
|
+
const value = nonNegative(brake, "brake");
|
|
203
|
+
this.raw.chassis().wakeUp();
|
|
204
|
+
for (let i = 0; i < this.raw.numWheels(); i += 1)
|
|
205
|
+
this.raw.setWheelBrake(i, value);
|
|
97
206
|
return this;
|
|
98
207
|
}
|
|
208
|
+
wheelState(index) {
|
|
209
|
+
const i = WheelIndex(index, this.raw.numWheels());
|
|
210
|
+
return {
|
|
211
|
+
index: i,
|
|
212
|
+
isInContact: this.raw.wheelIsInContact(i),
|
|
213
|
+
contactPoint: readVec(this.raw.wheelContactPoint(i)),
|
|
214
|
+
contactNormal: readVec(this.raw.wheelContactNormal(i)),
|
|
215
|
+
engineForce: this.raw.wheelEngineForce(i) ?? 0,
|
|
216
|
+
brake: this.raw.wheelBrake(i) ?? 0,
|
|
217
|
+
steering: this.raw.wheelSteering(i) ?? 0,
|
|
218
|
+
suspensionLength: this.raw.wheelSuspensionLength(i) ?? this.raw.wheelSuspensionRestLength(i) ?? 0,
|
|
219
|
+
rotation: this.raw.wheelRotation(i) ?? 0,
|
|
220
|
+
frictionSlip: this.raw.wheelFrictionSlip(i) ?? 0,
|
|
221
|
+
suspensionForce: this.raw.wheelSuspensionForce(i) ?? 0,
|
|
222
|
+
forwardImpulse: this.raw.wheelForwardImpulse(i) ?? 0,
|
|
223
|
+
sideImpulse: this.raw.wheelSideImpulse(i) ?? 0,
|
|
224
|
+
groundColliderHandle: this.raw.wheelGroundObject(i)?.handle ?? null,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
wheelStates() {
|
|
228
|
+
return Array.from({ length: this.raw.numWheels() }, (_, i) => this.wheelState(i));
|
|
229
|
+
}
|
|
230
|
+
/** True only while at least one tyre is touching the ground — the grounding test. */
|
|
231
|
+
isGrounded() {
|
|
232
|
+
for (let i = 0; i < this.raw.numWheels(); i += 1)
|
|
233
|
+
if (this.raw.wheelIsInContact(i))
|
|
234
|
+
return true;
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
groundedWheelCount() {
|
|
238
|
+
let count = 0;
|
|
239
|
+
for (let i = 0; i < this.raw.numWheels(); i += 1)
|
|
240
|
+
if (this.raw.wheelIsInContact(i))
|
|
241
|
+
count += 1;
|
|
242
|
+
return count;
|
|
243
|
+
}
|
|
244
|
+
currentVehicleSpeed() { return this.raw.currentVehicleSpeed(); }
|
|
245
|
+
wheelCount() { return this.raw.numWheels(); }
|
|
99
246
|
update(dt) { this.raw.updateVehicle(finite(dt, "dt")); }
|
|
247
|
+
/**
|
|
248
|
+
* Release every drive input without touching the chassis.
|
|
249
|
+
*
|
|
250
|
+
* A restart that teleports the car but leaves `engineForce` set resumes throttle
|
|
251
|
+
* the instant the frame resumes, and a wheel left at full lock steers the car into
|
|
252
|
+
* the barrier it was respawned away from. Both are invisible in a screenshot and
|
|
253
|
+
* obvious in play, so the reset has to own them.
|
|
254
|
+
*/
|
|
255
|
+
clearWheelCommands() {
|
|
256
|
+
for (let i = 0; i < this.raw.numWheels(); i += 1) {
|
|
257
|
+
this.raw.setWheelEngineForce(i, 0);
|
|
258
|
+
this.raw.setWheelBrake(i, 0);
|
|
259
|
+
this.raw.setWheelSteering(i, 0);
|
|
260
|
+
}
|
|
261
|
+
return this;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Take the chassis back as a full physical state, not just a rendered transform.
|
|
265
|
+
*
|
|
266
|
+
* Position, rotation, linear velocity, angular velocity and sleep state are all
|
|
267
|
+
* written, because leaving the old velocity in place means the respawned car keeps
|
|
268
|
+
* its pre-crash momentum and drives straight off the new spawn.
|
|
269
|
+
*/
|
|
270
|
+
setChassisPose(position, rotation, linearVelocity, angularVelocity) {
|
|
271
|
+
const body = this.raw.chassis();
|
|
272
|
+
body.setTranslation(vec(position, "chassis position"), true);
|
|
273
|
+
if (rotation) {
|
|
274
|
+
body.setRotation({
|
|
275
|
+
x: finite(rotation[0], "chassis rotation[0]"),
|
|
276
|
+
y: finite(rotation[1], "chassis rotation[1]"),
|
|
277
|
+
z: finite(rotation[2], "chassis rotation[2]"),
|
|
278
|
+
w: finite(rotation[3], "chassis rotation[3]")
|
|
279
|
+
}, true);
|
|
280
|
+
}
|
|
281
|
+
body.setLinvel(vec(linearVelocity ?? [0, 0, 0], "chassis linear velocity"), true);
|
|
282
|
+
body.setAngvel(vec(angularVelocity ?? [0, 0, 0], "chassis angular velocity"), true);
|
|
283
|
+
body.wakeUp();
|
|
284
|
+
this.clearWheelCommands();
|
|
285
|
+
return this;
|
|
286
|
+
}
|
|
287
|
+
/** The native body the controller drives, so a caller can read the solved pose. */
|
|
288
|
+
chassisPosition() { const p = this.raw.chassis().translation(); return [p.x, p.y, p.z]; }
|
|
289
|
+
chassisRotation() { const q = this.raw.chassis().rotation(); return [q.x, q.y, q.z, q.w]; }
|
|
290
|
+
chassisLinearVelocity() { const v = this.raw.chassis().linvel(); return [v.x, v.y, v.z]; }
|
|
291
|
+
chassisAngularVelocity() { const v = this.raw.chassis().angvel(); return [v.x, v.y, v.z]; }
|
|
100
292
|
dispose() { this.#world.removeVehicleController(this); }
|
|
101
293
|
}
|
|
294
|
+
function VehicleAxis(axis) {
|
|
295
|
+
if (!Number.isInteger(axis) || axis < 0 || axis > 2)
|
|
296
|
+
throw new TypeError("Vehicle axis must be 0 (x), 1 (y) or 2 (z).");
|
|
297
|
+
return axis;
|
|
298
|
+
}
|
|
299
|
+
function WheelIndex(index, count) {
|
|
300
|
+
if (!Number.isInteger(index) || index < 0 || index >= count)
|
|
301
|
+
throw new RangeError(`Wheel index ${index} is out of range for ${count} wheel(s).`);
|
|
302
|
+
return index;
|
|
303
|
+
}
|
|
304
|
+
function positive(value, label) {
|
|
305
|
+
const v = finite(value, label);
|
|
306
|
+
if (v <= 0)
|
|
307
|
+
throw new RangeError(`${label} must be greater than zero.`);
|
|
308
|
+
return v;
|
|
309
|
+
}
|
|
310
|
+
function nonNegative(value, label) {
|
|
311
|
+
const v = finite(value, label);
|
|
312
|
+
if (v < 0)
|
|
313
|
+
throw new RangeError(`${label} must not be negative.`);
|
|
314
|
+
return v;
|
|
315
|
+
}
|
|
102
316
|
export class RapierPhysicsWorld {
|
|
103
317
|
#module;
|
|
104
318
|
#world;
|
|
@@ -108,10 +322,49 @@ export class RapierPhysicsWorld {
|
|
|
108
322
|
#characters = new Set();
|
|
109
323
|
#vehicles = new Set();
|
|
110
324
|
#disposed = false;
|
|
325
|
+
/**
|
|
326
|
+
* Whether Rapier's internal scene-query structure still needs a pass before it can
|
|
327
|
+
* answer a shape cast or wheel ray.
|
|
328
|
+
*
|
|
329
|
+
* This is a solver property worth stating plainly: Rapier rebuilds its query
|
|
330
|
+
* acceleration structure inside `World.step()`. A collider created after the last
|
|
331
|
+
* step is therefore *invisible* to `computeColliderMovement` and to
|
|
332
|
+
* `updateVehicle`'s wheel rays. The symptom is not an error — the character controller
|
|
333
|
+
* happily reports an unobstructed move through the level floor on the very first
|
|
334
|
+
* frame, and every wheel reports "in the air" on the frame the car spawns. That is
|
|
335
|
+
* the "character sinks through the floor" and "car beside the road" defect class,
|
|
336
|
+
* created by construction order rather than by the game.
|
|
337
|
+
*
|
|
338
|
+
* A zero-duration step refreshes the structure without advancing anything: measured,
|
|
339
|
+
* positions and velocities are bit-identical across it. So the wrapper can be honest
|
|
340
|
+
* about freshness and pay one extra narrow-phase pass, once, after a structural change.
|
|
341
|
+
*/
|
|
342
|
+
#queriesStale = true;
|
|
111
343
|
constructor(module, gravity) { this.#module = module; this.#world = new module.World(vec(gravity, "gravity")); }
|
|
112
344
|
get disposed() { return this.#disposed; }
|
|
345
|
+
/** True until {@link refreshQueries} or a real step has run since the last structural change. */
|
|
346
|
+
get queriesStale() { return this.#queriesStale; }
|
|
347
|
+
/** Declare that a transform was written outside the solver, so the next query needs a refresh. */
|
|
348
|
+
markQueriesStale() { this.#queriesStale = true; }
|
|
349
|
+
/**
|
|
350
|
+
* Make scene queries valid without advancing the simulation.
|
|
351
|
+
*
|
|
352
|
+
* Called by `PhysicsWorld` before a character move or a vehicle wheel update when the
|
|
353
|
+
* world changed since the last pass, so a route never has to know this exists.
|
|
354
|
+
*/
|
|
355
|
+
refreshQueries() {
|
|
356
|
+
this.#assertAlive();
|
|
357
|
+
if (!this.#queriesStale)
|
|
358
|
+
return;
|
|
359
|
+
const previousTimestep = this.#world.timestep;
|
|
360
|
+
this.#world.timestep = 0;
|
|
361
|
+
this.#world.step();
|
|
362
|
+
this.#world.timestep = previousTimestep;
|
|
363
|
+
this.#queriesStale = false;
|
|
364
|
+
}
|
|
113
365
|
createRigidBody(spec = {}) {
|
|
114
366
|
this.#assertAlive();
|
|
367
|
+
this.#queriesStale = true;
|
|
115
368
|
const R = this.#module;
|
|
116
369
|
const descriptor = spec.type === "fixed" ? R.RigidBodyDesc.fixed() : spec.type === "kinematic-position" ? R.RigidBodyDesc.kinematicPositionBased() : spec.type === "kinematic-velocity" ? R.RigidBodyDesc.kinematicVelocityBased() : R.RigidBodyDesc.dynamic();
|
|
117
370
|
if (spec.position)
|
|
@@ -143,6 +396,7 @@ export class RapierPhysicsWorld {
|
|
|
143
396
|
}
|
|
144
397
|
createCollider(body, spec) {
|
|
145
398
|
this.#assertAlive();
|
|
399
|
+
this.#queriesStale = true;
|
|
146
400
|
const R = this.#module;
|
|
147
401
|
const shape = spec.shape;
|
|
148
402
|
let collider;
|
|
@@ -196,13 +450,14 @@ export class RapierPhysicsWorld {
|
|
|
196
450
|
}
|
|
197
451
|
removeBody(handle) {
|
|
198
452
|
this.#assertAlive();
|
|
453
|
+
this.#queriesStale = true;
|
|
199
454
|
const raw = handle.unsafeRapierBody();
|
|
200
455
|
for (let index = 0; index < raw.numColliders(); index += 1)
|
|
201
456
|
this.#colliders.delete(raw.collider(index).handle);
|
|
202
457
|
this.#world.removeRigidBody(raw);
|
|
203
458
|
this.#bodies.delete(raw.handle);
|
|
204
459
|
}
|
|
205
|
-
removeCollider(handle) { this.#assertAlive(); const raw = handle.unsafeRapierCollider(); this.#world.removeCollider(raw, true); this.#colliders.delete(raw.handle); }
|
|
460
|
+
removeCollider(handle) { this.#assertAlive(); this.#queriesStale = true; const raw = handle.unsafeRapierCollider(); this.#world.removeCollider(raw, true); this.#colliders.delete(raw.handle); }
|
|
206
461
|
createJoint(spec, a, b) {
|
|
207
462
|
this.#assertAlive();
|
|
208
463
|
const R = this.#module;
|
|
@@ -261,8 +516,8 @@ export class RapierPhysicsWorld {
|
|
|
261
516
|
const point = ray.pointAt(hit.timeOfImpact);
|
|
262
517
|
return { body, colliderHandle: hit.collider.handle, timeOfImpact: hit.timeOfImpact, point: [point.x, point.y, point.z] };
|
|
263
518
|
}
|
|
264
|
-
step(dt = 1 / 60) { this.#assertAlive(); this.#world.timestep = finite(dt, "dt"); this.#world.step(); }
|
|
265
|
-
setGravity(gravity) { this.#assertAlive(); this.#world.gravity = vec(gravity, "gravity"); }
|
|
519
|
+
step(dt = 1 / 60) { this.#assertAlive(); this.#world.timestep = finite(dt, "dt"); this.#world.step(); this.#queriesStale = false; }
|
|
520
|
+
setGravity(gravity) { this.#assertAlive(); this.#world.gravity = vec(gravity, "gravity"); this.#queriesStale = true; }
|
|
266
521
|
bodies() { return [...this.#bodies.values()]; }
|
|
267
522
|
/** Stable typed escape hatch. The adapter owns and frees the returned world. */
|
|
268
523
|
unsafeRapierWorld() { this.#assertAlive(); return this.#world; }
|
|
@@ -309,4 +564,143 @@ export async function createRapierPhysics(options = {}) {
|
|
|
309
564
|
export function createRapierPhysicsSync(options = {}) {
|
|
310
565
|
return new RapierPhysicsWorld(defaultRapierModule, options.gravity ?? [0, -9.81, 0]);
|
|
311
566
|
}
|
|
567
|
+
function transformPoint(m, p) {
|
|
568
|
+
const [x, y, z] = p;
|
|
569
|
+
return [
|
|
570
|
+
m[0] * x + m[4] * y + m[8] * z + m[12],
|
|
571
|
+
m[1] * x + m[5] * y + m[9] * z + m[13],
|
|
572
|
+
m[2] * x + m[6] * y + m[10] * z + m[14]
|
|
573
|
+
];
|
|
574
|
+
}
|
|
575
|
+
/** Largest column length — uniform-scale estimate for baking node scale into collider params. */
|
|
576
|
+
function transformScale(m) {
|
|
577
|
+
let max = 0;
|
|
578
|
+
for (let c = 0; c < 3; c++) {
|
|
579
|
+
const len = Math.hypot(m[c * 4], m[c * 4 + 1], m[c * 4 + 2]);
|
|
580
|
+
if (len > max)
|
|
581
|
+
max = len;
|
|
582
|
+
}
|
|
583
|
+
return max || 1;
|
|
584
|
+
}
|
|
585
|
+
export async function createCollidersFromSidecar(world, source, options = {}) {
|
|
586
|
+
const bytes = typeof source === "string"
|
|
587
|
+
? new Uint8Array(await (await fetch(source)).arrayBuffer())
|
|
588
|
+
: source;
|
|
589
|
+
const [{ WebIO }, { ALL_EXTENSIONS }, { MeshoptDecoder }] = await Promise.all([
|
|
590
|
+
import("@gltf-transform/core"),
|
|
591
|
+
import("@gltf-transform/extensions"),
|
|
592
|
+
import("meshoptimizer")
|
|
593
|
+
]);
|
|
594
|
+
const io = new WebIO()
|
|
595
|
+
.registerExtensions(ALL_EXTENSIONS)
|
|
596
|
+
.registerDependencies({ "meshopt.decoder": MeshoptDecoder });
|
|
597
|
+
await MeshoptDecoder.ready;
|
|
598
|
+
const doc = await io.readBinary(bytes);
|
|
599
|
+
const body = options.body ?? world.createRigidBody({
|
|
600
|
+
type: "fixed",
|
|
601
|
+
position: options.position,
|
|
602
|
+
rotation: options.rotation
|
|
603
|
+
});
|
|
604
|
+
const colliders = [];
|
|
605
|
+
const sourceNodes = [];
|
|
606
|
+
for (const node of doc.getRoot().listNodes()) {
|
|
607
|
+
const mesh = node.getMesh();
|
|
608
|
+
if (!mesh)
|
|
609
|
+
continue;
|
|
610
|
+
const extras = mesh.getExtras().aura3dCollider;
|
|
611
|
+
if (!extras?.shape)
|
|
612
|
+
continue;
|
|
613
|
+
const m = extras.nodeWorldMatrix && extras.nodeWorldMatrix.length === 16 ? extras.nodeWorldMatrix : node.getWorldMatrix();
|
|
614
|
+
const scale = transformScale(m);
|
|
615
|
+
let shape;
|
|
616
|
+
if (extras.shape === "box") {
|
|
617
|
+
if (!extras.halfExtents || !extras.center)
|
|
618
|
+
throw new Error(`collider sidecar node ${node.getName()}: box shape missing halfExtents/center`);
|
|
619
|
+
const center = transformPoint(m, [extras.center[0], extras.center[1], extras.center[2]]);
|
|
620
|
+
// Rapier cuboids are axis-aligned in collider space; rotation-baked boxes
|
|
621
|
+
// become the AABB of the rotated corners (documented approximation).
|
|
622
|
+
const h = extras.halfExtents;
|
|
623
|
+
const corners = [];
|
|
624
|
+
for (const sx of [-1, 1])
|
|
625
|
+
for (const sy of [-1, 1])
|
|
626
|
+
for (const sz of [-1, 1]) {
|
|
627
|
+
corners.push(transformPoint(m, [extras.center[0] + sx * h[0], extras.center[1] + sy * h[1], extras.center[2] + sz * h[2]]));
|
|
628
|
+
}
|
|
629
|
+
const min = [Infinity, Infinity, Infinity];
|
|
630
|
+
const max = [-Infinity, -Infinity, -Infinity];
|
|
631
|
+
for (const c of corners)
|
|
632
|
+
for (let i = 0; i < 3; i++) {
|
|
633
|
+
if (c[i] < min[i])
|
|
634
|
+
min[i] = c[i];
|
|
635
|
+
if (c[i] > max[i])
|
|
636
|
+
max[i] = c[i];
|
|
637
|
+
}
|
|
638
|
+
const half = [(max[0] - min[0]) / 2, (max[1] - min[1]) / 2, (max[2] - min[2]) / 2];
|
|
639
|
+
if (half.every((v, i) => Math.abs(v - (h[i] * scale)) < 1e-4) && center.every((v) => Math.abs(v) < 1e-6)) {
|
|
640
|
+
shape = { kind: "box", halfExtents: [h[0] * scale, h[1] * scale, h[2] * scale] };
|
|
641
|
+
}
|
|
642
|
+
else {
|
|
643
|
+
// Off-center or rotated: encode the AABB as a trimesh-free box by
|
|
644
|
+
// wrapping it in a convex hull of the 8 transformed corners.
|
|
645
|
+
shape = { kind: "convex-hull", vertices: corners };
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
else if (extras.shape === "capsule") {
|
|
649
|
+
if (extras.radius === undefined || extras.halfHeight === undefined || !extras.center) {
|
|
650
|
+
throw new Error(`collider sidecar node ${node.getName()}: capsule shape missing radius/halfHeight/center`);
|
|
651
|
+
}
|
|
652
|
+
const center = transformPoint(m, [extras.center[0], extras.center[1], extras.center[2]]);
|
|
653
|
+
if (center.some((v) => Math.abs(v) > 1e-6)) {
|
|
654
|
+
// Capsules are origin-centred in collider space; an off-centre capsule
|
|
655
|
+
// is approximated by a convex hull over both cap spheres.
|
|
656
|
+
const vertices = [];
|
|
657
|
+
for (const sign of [-1, 1]) {
|
|
658
|
+
for (let a = 0; a < 8; a++) {
|
|
659
|
+
const t = (a / 8) * Math.PI * 2;
|
|
660
|
+
const c = transformPoint(m, [
|
|
661
|
+
extras.center[0] + Math.cos(t) * extras.radius,
|
|
662
|
+
extras.center[1] + sign * extras.halfHeight,
|
|
663
|
+
extras.center[2] + Math.sin(t) * extras.radius
|
|
664
|
+
]);
|
|
665
|
+
vertices.push(c);
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
shape = { kind: "convex-hull", vertices };
|
|
669
|
+
}
|
|
670
|
+
else {
|
|
671
|
+
shape = { kind: "capsule", halfHeight: extras.halfHeight * scale, radius: extras.radius * scale };
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
else {
|
|
675
|
+
const vertices = [];
|
|
676
|
+
const indices = [];
|
|
677
|
+
const el = [0, 0, 0];
|
|
678
|
+
for (const prim of mesh.listPrimitives()) {
|
|
679
|
+
const pos = prim.getAttribute("POSITION");
|
|
680
|
+
if (!pos)
|
|
681
|
+
continue;
|
|
682
|
+
const idx = prim.getIndices()?.getArray();
|
|
683
|
+
const base = vertices.length;
|
|
684
|
+
// getElement dequantizes — the sidecar is meshopt-compressed and its
|
|
685
|
+
// POSITION accessors are KHR_mesh_quantization integers.
|
|
686
|
+
for (let i = 0; i < pos.getCount(); i += 1) {
|
|
687
|
+
pos.getElement(i, el);
|
|
688
|
+
vertices.push(transformPoint(m, [el[0], el[1], el[2]]));
|
|
689
|
+
}
|
|
690
|
+
if (idx)
|
|
691
|
+
for (const i of idx)
|
|
692
|
+
indices.push(base + i);
|
|
693
|
+
else
|
|
694
|
+
for (let i = 0; i < pos.getCount(); i++)
|
|
695
|
+
indices.push(base + i);
|
|
696
|
+
}
|
|
697
|
+
if (vertices.length === 0)
|
|
698
|
+
continue;
|
|
699
|
+
shape = extras.shape === "convex" ? { kind: "convex-hull", vertices } : { kind: "mesh", vertices, indices };
|
|
700
|
+
}
|
|
701
|
+
colliders.push(world.createCollider(body, { ...options.collider, shape }));
|
|
702
|
+
sourceNodes.push(extras.sourceNode ?? node.getName());
|
|
703
|
+
}
|
|
704
|
+
return { body, colliders, sourceNodes };
|
|
705
|
+
}
|
|
312
706
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/physics-rapier/src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/physics-rapier/src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aura3d/physics-rapier",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"sideEffects": false,
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@dimforge/rapier3d-compat": "0.20.0"
|
|
9
|
+
"@dimforge/rapier3d-compat": "0.20.0",
|
|
10
|
+
"@gltf-transform/core": "4.5.1",
|
|
11
|
+
"@gltf-transform/extensions": "4.5.1",
|
|
12
|
+
"meshoptimizer": "1.2.0"
|
|
10
13
|
},
|
|
11
14
|
"exports": {
|
|
12
15
|
".": {
|