载入中...
搜索中...
未找到
VolumeFluid.h
浏览该文件的文档.
23enum class VolumeFluidMaterialCombineMode : uint8_t { Average = 0, Minimum = 1, Multiply = 2, Maximum = 3 };
285 [[nodiscard]] Result<std::vector<VolumeFluidContactEvent>> advance(std::span<const VolumeFluidContact> contacts,
520 [[nodiscard]] static Result<std::unique_ptr<VolumeFluid>> create(const VolumeFluidSettings& settings);
574 [[nodiscard]] Result<void> accumulateWindZones(std::span<const VolumeFluidWindZone> zones, float fixedTimeSeconds);
579 [[nodiscard]] Result<void> accumulateExternalForceZones(std::span<const VolumeFluidWindZone> zones,
625 [[nodiscard]] float copyRenderData(std::vector<glm::vec3>& positions, std::vector<glm::vec4>& colors) const;
634 [[nodiscard]] Result<void> copyInterpolatedPositions(float alpha, std::vector<glm::vec3>& positions) const;
636 [[nodiscard]] Result<float> copyInterpolatedRenderData(float alpha, std::vector<glm::vec3>& positions,
649 [[nodiscard]] float copySurfaceRenderData(std::vector<glm::vec3>& positions, std::vector<glm::vec4>& colors,
657 [[nodiscard]] Result<float> copyInterpolatedSurfaceRenderData(float alpha, std::vector<glm::vec3>& positions,
670 [[nodiscard]] size_t copyPhaseRenderData(VolumeFluidPhase phase, std::vector<glm::vec3>& positions,
690 [[nodiscard]] Result<void> setHeightFieldColliders(std::span<const VolumeFluidHeightFieldCollider> colliders);
714 [[nodiscard]] Result<unsigned> unbindStaticParticles(std::span<const unsigned> particleIndices);
742 [[nodiscard]] Result<std::vector<VolumeFluidParticle>> overlap(glm::vec3 center, float radius) const;
750 [[nodiscard]] Result<std::vector<VolumeFluidParticle>> overlapBox(glm::vec3 center, glm::vec3 halfExtent,
765 [[nodiscard]] Result<std::vector<VolumeFluidRayHit>> raycast(glm::vec3 origin, glm::vec3 direction,
780 [[nodiscard]] Result<std::vector<VolumeFluidDistanceHit>> querySphere(glm::vec3 center, float radius,
799 [[nodiscard]] Result<std::vector<VolumeFluidDistanceHit>> queryBox(glm::vec3 center, glm::vec3 halfExtent,
816 [[nodiscard]] Result<std::vector<VolumeFluidQueryHit>> queryBatch(std::span<const VolumeFluidQueryShape> queries,
829 [[nodiscard]] Result<std::vector<unsigned>> applyQueryColors(std::span<const VolumeFluidQueryShape> queries,
863 [[nodiscard]] Result<void> paint(glm::vec3 center, float radius, const VolumeFluidMaterial& material);
875 [[nodiscard]] Result<void> applyMaterialChannels(std::span<const VolumeFluidViscosityColorKey> colorKeys = {});
903 [[nodiscard]] Result<void> applyDataColors(unsigned channel, std::span<const VolumeFluidColorKey> gradient);
909 [[nodiscard]] Result<void> applyRandomColors(std::span<const VolumeFluidColorKey> gradient, uint32_t seed);
955 [[nodiscard]] Result<void> setActorCollisionFilter(unsigned actorGroup, unsigned collisionFilter);
964 [[nodiscard]] Result<void> updateActorMaterial(unsigned actorGroup, const VolumeFluidParticle& prototype);
1002 [[nodiscard]] Result<void> applyParticleDrag(unsigned particleIndex, glm::vec3 targetPosition, float stiffness,
1015 [[nodiscard]] Result<unsigned> grabContactParticles(unsigned colliderLabel, glm::vec3 position, glm::vec4 rotation,
1022 [[nodiscard]] Result<unsigned> updateGrabbedParticles(unsigned colliderLabel, glm::vec3 position,
1036 [[nodiscard]] Result<std::vector<VolumeFluidFieldSample>> sampleField(std::span<const glm::vec3> positions) const;
1044 [[nodiscard]] Result<std::vector<VolumeFluidGridCell>> debugParticleGrid(unsigned maxCells = 65536) const;
1095 [[nodiscard]] Result<void> copyParticleImpostors(unsigned actorGroup, float radiusScale, glm::vec4 tint,
1109 [[nodiscard]] Result<VolumeFluidSdfSlice> debugSdfSlice(unsigned colliderLabel, VolumeFluidSdfSliceAxis axis,
1132 [[nodiscard]] Result<unsigned> bindParticles(std::span<const unsigned> particleIndices, unsigned colliderLabel,
1135 [[nodiscard]] Result<void> accumulateForceZones(std::span<const VolumeFluidWindZone> zones, float fixedTimeSeconds,
Move-only, checked operation results for the common layer.
Explicit bounded contact lifecycle tracker; owns no solver reference.
Definition VolumeFluid.h:276
Bounded, one-way fluid-advected secondary particle pool. @ownership Owns particles and capacity; no f...
Definition VolumeFluidDiffuse.h:38
Generates secondary particles at high-curl, low-density fluid source positions. @ownership Owns setti...
Definition VolumeFluidFoam.h:39
CPU position-based free-volume fluid with a bounded spatial grid. @ownership Owns all particle state;...
Definition VolumeFluid.h:517
VolumeFluid & operator=(const VolumeFluid &)=delete
VolumeFluid(const VolumeFluid &)=delete
~VolumeFluid()
VolumeFluidPhase
Constitutive phase; solids are world-fixed or follow their owned collider attachment.
Definition VolumeFluid.h:20
@ Granular
VolumeFluidSdfSliceAxis
Local axis normal used by an explicit SDF diagnostic slice.
Definition VolumeFluid.h:241
VolumeFluidParticleEventType
Lifecycle kind matching Fluid3DEmitter OnEmitParticle/OnKillParticle.
Definition VolumeFluid.h:360
VolumeFluidWindZoneType
Shape used by a transient Fluid3D-style wind force zone.
Definition VolumeFluid.h:120
VolumeFluidMaterialCombineMode
Fluid3D collision-material coefficient combination, with package integer values.
Definition VolumeFluid.h:23
VolumeFluidContactEventType
Contact lifecycle classification matching Fluid3DContactEventDispatcher.
Definition VolumeFluid.h:267
Opposite impulse produced by a prescribed solid-particle attachment constraint.
Definition VolumeFluid.h:296
glm::vec3 angularImpulse
World-space pure angular impulse from prescribed particle rotation.
Definition VolumeFluid.h:304
Owned local anchor for a contact-frozen particle; indices refer to its snapshot particle array.
Definition VolumeFluid.h:464
unsigned particleIndex
Snapshot-local particle index; remapped on lifetime removal, never a persistent entity ID.
Definition VolumeFluid.h:466
float breakThreshold
Approximate constraint-force threshold in newtons; finite and positive.
Definition VolumeFluid.h:480
glm::vec4 localOrientation
Particle-shape orientation in the collider's local frame, XYZW.
Definition VolumeFluid.h:472
glm::vec3 localPosition
Point in the collider's rigid local frame; no external pointer is retained.
Definition VolumeFluid.h:470
bool dynamic
Dynamic attachments use a compliant pin instead of a fixed inverse weight.
Definition VolumeFluid.h:476
float compliance
XPBD compliance in inverse stiffness units; zero is rigid.
Definition VolumeFluid.h:478
bool constrainOrientation
Whether the target rotation also drives the particle orientation.
Definition VolumeFluid.h:474
unsigned colliderLabel
Application sample identity; removal detaches permanently, including after label reuse.
Definition VolumeFluid.h:468
Owned obstacle sample; the caller updates moving obstacles before stepping.
Definition VolumeFluid.h:139
float stickDistance
Maximum adhesive surface separation in meters, in [0,10].
Definition VolumeFluid.h:159
float staticFriction
Static Coulomb friction in [0,1]; friction is the dynamic coefficient.
Definition VolumeFluid.h:153
bool rollingContacts
Enables oriented rolling contact when either side requests it.
Definition VolumeFluid.h:165
glm::vec4 rotation
Unit quaternion XYZW; box extents and the capsule's Y axis use this local frame.
Definition VolumeFluid.h:169
bool isTrigger
Generates contacts without applying projection, friction or material transfer.
Definition VolumeFluid.h:175
glm::vec3 center
World center and box half extents; capsule halfExtent.y is half its total height.
Definition VolumeFluid.h:145
unsigned label
Application label echoed by contacts; not a runtime object handle.
Definition VolumeFluid.h:141
VolumeFluidMaterialCombineMode stickinessCombine
Fluid3D-compatible priority combine mode for stickiness.
Definition VolumeFluid.h:163
glm::vec3 angularVelocity
World angular velocity in radians/second, sampled at the collider center.
Definition VolumeFluid.h:171
unsigned collisionFilter
Collision filter: low 16 bits category, high 16 bits mask.
Definition VolumeFluid.h:173
bool solidify
Freezes contacts and enables one neighbor-contact wave per step from its attached solids.
Definition VolumeFluid.h:167
VolumeFluidMaterialCombineMode frictionCombine
Fluid3D-compatible priority combine mode for all friction coefficients.
Definition VolumeFluid.h:161
One strictly ordered [0,1] coordinate and linear RGBA gradient color.
Definition VolumeFluid.h:76
Owning deduplicated actor/collider contact lifecycle event.
Definition VolumeFluid.h:270
VolumeFluidContactEventType type
Definition VolumeFluid.h:271
Owned contact event; opposite impulse can be applied to the caller's rigid body.
Definition VolumeFluid.h:255
unsigned actorGroup
Stable actor group copied from the contacting particle.
Definition VolumeFluid.h:261
unsigned particleIndex
Current dense particle index; stale after any particle mutation.
Definition VolumeFluid.h:259
Owning signed surface-distance result for a native query shape.
Definition VolumeFluid.h:403
VolumeFluidParticle particle
Owning particle value captured at query time.
Definition VolumeFluid.h:413
glm::vec3 queryPoint
Nearest point on the query surface including its contact offset.
Definition VolumeFluid.h:409
unsigned particleIndex
Current pool index; valid only until the next particle mutation.
Definition VolumeFluid.h:405
glm::vec3 normal
Direction from the query shape toward the particle center.
Definition VolumeFluid.h:411
Owned liquid/gas field sample for diffuse-particle emission and advection.
Definition VolumeFluid.h:316
unsigned neighborCount
Liquid/gas samples strictly within twice the particle spacing.
Definition VolumeFluid.h:324
float density
SPH mass density in kg/m3; no container boundary-support correction.
Definition VolumeFluid.h:322
glm::vec3 vorticity
Curl of the normalized poly6 velocity interpolation, in inverse seconds.
Definition VolumeFluid.h:320
glm::vec3 velocity
Poly6-weighted velocity in meters/second; zero without support.
Definition VolumeFluid.h:318
Owning occupied-cell sample for Fluid3DParticleGridDebugger-style visualization.
Definition VolumeFluid.h:328
unsigned particleCount
Number of current particles hashed into this cell.
Definition VolumeFluid.h:334
Owned regular-grid terrain collider matching Fluid3D height-field sample layout.
Definition VolumeFluid.h:204
unsigned collisionFilter
Definition VolumeFluid.h:225
glm::vec3 size
Local terrain size; sample height is multiplied by size.y.
Definition VolumeFluid.h:211
float staticFriction
Definition VolumeFluid.h:218
bool rollingContacts
Definition VolumeFluid.h:224
VolumeFluidMaterialCombineMode stickinessCombine
Definition VolumeFluid.h:223
std::vector< float > heights
Row-major samples indexed as z * resolution.x + x, in normalized [0,1] height units.
Definition VolumeFluid.h:207
bool isTrigger
Generates contacts without applying projection, friction or material transfer.
Definition VolumeFluid.h:227
VolumeFluidMaterialCombineMode frictionCombine
Definition VolumeFluid.h:222
float stickDistance
Definition VolumeFluid.h:221
float rollingFriction
Definition VolumeFluid.h:219
glm::vec3 angularVelocity
Definition VolumeFluid.h:216
Owning mass summary for one Fluid3D-compatible actor group.
Definition VolumeFluid.h:381
Per-particle material, copied at emission; densities enable multiphase buoyancy.
Definition VolumeFluid.h:26
float smoothing
SPH support-radius multiplier over solver spacing, in [1,4].
Definition VolumeFluid.h:30
float dynamicFriction
Dynamic particle-contact friction coefficient in [0,1].
Definition VolumeFluid.h:48
float staticFriction
Static particle-contact friction coefficient in [0,1].
Definition VolumeFluid.h:50
float atmosphericPressure
Ambient pressure acceleration along the inward SPH surface normal, in [0,1000].
Definition VolumeFluid.h:40
bool rollingContacts
Enables angular contact velocity and rolling response for granular particles.
Definition VolumeFluid.h:54
VolumeFluidMaterialCombineMode frictionCombine
Combination mode for static, dynamic and rolling friction.
Definition VolumeFluid.h:60
VolumeFluidMaterialCombineMode stickinessCombine
Combination mode for stickiness.
Definition VolumeFluid.h:62
Owning result of one explicit particle lifecycle-event drain.
Definition VolumeFluid.h:374
std::vector< VolumeFluidParticleEvent > events
Definition VolumeFluid.h:375
uint64_t dropped
Events discarded since the preceding drain because the configured queue was full.
Definition VolumeFluid.h:377
Owning particle lifecycle event captured before the dense pool changes again.
Definition VolumeFluid.h:363
unsigned particleIndex
Dense index at event time; stale after any later particle mutation.
Definition VolumeFluid.h:366
VolumeFluidParticle particle
Owning particle value at emission or immediately before removal.
Definition VolumeFluid.h:370
VolumeFluidParticleEventType type
Definition VolumeFluid.h:364
Owning local-axis sample for DebugParticleFrames-style visualization.
Definition VolumeFluid.h:338
unsigned particleIndex
Current dense particle index; invalidated by particle-pool mutation.
Definition VolumeFluid.h:340
glm::vec3 x
World-space endpoints for the red, green and blue local-axis rays.
Definition VolumeFluid.h:344
One owning mesh-instance transform/color row for Fluid3DInstancedParticleRenderer-style presentation.
Definition VolumeFluid.h:348
glm::vec3 scale
Principal particle radii multiplied component-wise by the requested instance scale.
Definition VolumeFluid.h:355
unsigned particleIndex
Current dense particle index; invalidated by particle-pool mutation.
Definition VolumeFluid.h:350
Owning particle value with world position and velocity in SI units.
Definition VolumeFluid.h:96
glm::vec3 angularVelocity
World angular velocity in radians/second; integrated for granular particles.
Definition VolumeFluid.h:100
unsigned collisionFilter
Query collision filter: low 16 bits category, high 16 bits mask.
Definition VolumeFluid.h:112
bool selfCollide
Allows interaction with particles in the same actor group.
Definition VolumeFluid.h:116
glm::vec3 radii
Principal collision/query radii in meters; all zero resolves to spacing/2 on emission.
Definition VolumeFluid.h:102
glm::vec4 color
Linear RGBA color and four diffusing application channels.
Definition VolumeFluid.h:108
unsigned actorGroup
Fluid3D-compatible actor group in [0, 0x00ffffff]; equal groups use selfCollide instead of filters.
Definition VolumeFluid.h:114
Owning result from one entry in a mixed query batch.
Definition VolumeFluid.h:436
Owning transient query description compatible with Fluid3D QueryShape semantics.
Definition VolumeFluid.h:420
unsigned collisionFilter
Low 16 bits category and high 16 bits mask; both sides must match.
Definition VolumeFluid.h:432
glm::vec4 rotation
Unit XYZW box rotation; ignored by sphere and ray queries.
Definition VolumeFluid.h:427
Owning ray hit against one native oriented-ellipsoid volume-fluid particle.
Definition VolumeFluid.h:391
unsigned particleIndex
Current pool index; valid only until the next particle mutation.
Definition VolumeFluid.h:393
VolumeFluidParticle particle
Owning particle value captured at query time.
Definition VolumeFluid.h:399
Owned sampled mesh/SDF collider with a uniform world transform.
Definition VolumeFluid.h:179
glm::vec3 angularVelocity
Definition VolumeFluid.h:189
bool rollingContacts
Definition VolumeFluid.h:197
bool inverted
When true, positive mesh exterior is solid and particles remain inside.
Definition VolumeFluid.h:187
unsigned collisionFilter
Definition VolumeFluid.h:198
bool isTrigger
Generates contacts without applying projection, friction or material transfer.
Definition VolumeFluid.h:200
float rollingFriction
Definition VolumeFluid.h:192
VolumeFluidMaterialCombineMode stickinessCombine
Definition VolumeFluid.h:196
VolumeFluidMaterialCombineMode frictionCombine
Definition VolumeFluid.h:195
Transient transform update for one owned SDF collider, identified by stable label.
Definition VolumeFluid.h:231
glm::vec3 angularVelocity
Definition VolumeFluid.h:237
Owning normalized SDF slice plus its world-space sample lattice.
Definition VolumeFluid.h:244
std::vector< float > values
Row-major values remapped from [-maxDistance,+maxDistance] to [0,1].
Definition VolumeFluid.h:251
glm::vec3 stepX
World displacement from one sample to the next along image X/Y.
Definition VolumeFluid.h:249
Meter-space (+Y up) volume-fluid material and solver policy.
Definition VolumeFluid.h:82
unsigned capacity
Maximum live particles; admission fails atomically at capacity.
Definition VolumeFluid.h:84
glm::vec3 minimum
Inner container corners. Particle centers retain half-spacing clearance.
Definition VolumeFluid.h:90
Owning Fluid3D-compatible nearest result for one simplex and query pair.
Definition VolumeFluid.h:453
unsigned simplexIndex
Current topology index; stale after topology or particle mutation.
Definition VolumeFluid.h:459
A point, edge or triangle over snapshot-local particle indices.
Definition VolumeFluid.h:446
std::array< unsigned, 3 > particleIndices
First size entries are used; size must be in [1,3] and entries must be distinct.
Definition VolumeFluid.h:448
Canonical version-20 owning state; older codecs migrate collider, attachment, stitch,...
Definition VolumeFluid.h:493
std::vector< VolumeFluidCollider > colliders
Definition VolumeFluid.h:498
std::vector< VolumeFluidSdfCollider > sdfColliders
Definition VolumeFluid.h:499
std::vector< VolumeFluidAttachment > attachments
Definition VolumeFluid.h:501
std::vector< VolumeFluidStitch > stitches
Definition VolumeFluid.h:502
std::vector< VolumeFluidSimplex > simplexes
Explicit point/edge/triangle topology; empty means one implicit point simplex per particle.
Definition VolumeFluid.h:504
std::vector< VolumeFluidParticle > particles
Definition VolumeFluid.h:497
std::vector< VolumeFluidHeightFieldCollider > heightFieldColliders
Definition VolumeFluid.h:500
One Fluid3DStitcher-compatible zero-distance particle-pair constraint.
Definition VolumeFluid.h:484
float compliance
XPBD compliance in inverse stiffness units; zero is rigid.
Definition VolumeFluid.h:488
One-step contact transfer into user channels x/y; negative rate heats, positive cools.
Definition VolumeFluid.h:308
float maximumCohesion
Definition VolumeFluid.h:312
float minimumViscosity
Definition VolumeFluid.h:311
unsigned colliderLabel
Definition VolumeFluid.h:309
float maximumViscosity
Definition VolumeFluid.h:311
float minimumCohesion
Definition VolumeFluid.h:312
Transient linear RGBA gradient key at an absolute material viscosity.
Definition VolumeFluid.h:68
float viscosity
Viscosity coordinate in [0,100]; keys must be strictly increasing.
Definition VolumeFluid.h:70
Owning description of one transient ambient or spherical wind zone.
Definition VolumeFluid.h:123
float turbulenceFrequency
Definition VolumeFluid.h:129