载入中...
搜索中...
未找到
VolumeFluidEmitter.h
浏览该文件的文档.
46[[nodiscard]] EVENGINE_API_DOMAINS Result<VolumeFluidEmitterBlueprintMetrics> evaluateVolumeFluidEmitterBlueprint3D(
63[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidDistributionPoint>> buildVolumeFluidImageDistribution(
64 std::span<const glm::vec4> pixels, unsigned width, unsigned height, float pixelScale, float maximumSize,
73[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidDistributionPoint>> buildVolumeFluidMeshDistribution(
74 std::span<const glm::vec3> vertices, std::span<const uint32_t> indices, glm::vec3 scale, float spacing);
80[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidDistributionPoint>> buildVolumeFluidSphereDistribution(
87[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidDistributionPoint>> buildVolumeFluidCubeDistribution(
94[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidDistributionPoint>> buildVolumeFluidEdgeDistribution(
101[[nodiscard]] EVENGINE_API_DOMAINS Result<std::vector<VolumeFluidDistributionPoint>> buildVolumeFluidDiskDistribution(
215 [[nodiscard]] Result<unsigned> emitParticle(VolumeFluid& solver, const VolumeFluidEmission& emission, float offset,
223 [[nodiscard]] Result<unsigned> advance(VolumeFluid& solver, const VolumeFluidEmission& emission, float dt,
234 [[nodiscard]] Result<unsigned> advanceBurst(VolumeFluid& solver, const VolumeFluidEmission& emission,
264 [[nodiscard]] Result<unsigned> advanceMoving(VolumeFluid& solver, const VolumeFluidEmission& emission,
275 [[nodiscard]] Result<unsigned> advance(VolumeFluid& solver, const VolumeFluidEmission& emission, float dt,
293[[nodiscard]] EVENGINE_API_DOMAINS VolumeFluidEmitterCheckpoint captureVolumeFluidEmitterCheckpoint(
294 const VolumeFluid& solver, const VolumeFluidEmission& emission, const VolumeFluidEmitter& controller);
296[[nodiscard]] EVENGINE_API_DOMAINS VolumeFluidEmitterCheckpoint captureVolumeFluidEmitterCheckpoint(
297 const VolumeFluid& solver, const VolumeFluidEmission& emission, const VolumeFluidJetEmitter& controller);
305 VolumeFluid& solver, VolumeFluidEmitter& controller, const VolumeFluidEmitterCheckpoint& checkpoint);
308 VolumeFluid& solver, VolumeFluidJetEmitter& controller, const VolumeFluidEmitterCheckpoint& checkpoint);
Move-only, checked operation results for the common layer.
Bounded runtime stream controller with explicit snapshot/restore.
Definition VolumeFluidEmitter.h:207
bool isEmitting() const noexcept
Returns the current Fluid3DEmitter isEmitting state in O(1), without snapshot allocation.
Definition VolumeFluidEmitter.h:237
Spacing-driven planar/distribution jet controller with independent, owned stream phase.
Definition VolumeFluidEmitter.h:255
bool isEmitting() const noexcept
Returns whether the jet currently owns an active emission phase, without allocation.
Definition VolumeFluidEmitter.h:278
CPU position-based free-volume fluid with a bounded spatial grid. @ownership Owns all particle state;...
Definition VolumeFluid.h:517
Result< std::vector< VolumeFluidDistributionPoint > > buildVolumeFluidEdgeDistribution(float length, float spacing, float radialVelocityDegrees)
Builds Fluid3D's edge lattice with per-sample radial velocity directions.
Definition VolumeFluidEmitter.cpp:529
Result< std::vector< VolumeFluidDistributionPoint > > buildVolumeFluidCubeDistribution(glm::vec3 size, float spacing, bool surface)
Builds an Fluid3D-compatible box surface or volume lattice during setup.
Definition VolumeFluidEmitter.cpp:497
VolumeFluidEmitterCheckpoint captureVolumeFluidEmitterCheckpoint(const VolumeFluid &solver, const VolumeFluidEmission &emission, const VolumeFluidEmitter &controller)
Captures one completed-step rate-emitter checkpoint without retaining references.
Definition VolumeFluidEmitter.cpp:681
Result< void > restoreVolumeFluidEmitterCheckpoint(VolumeFluid &solver, VolumeFluidEmitter &controller, const VolumeFluidEmitterCheckpoint &checkpoint)
Atomically restores solver and rate controller after validating the complete owning candidate.
Definition VolumeFluidEmitter.cpp:693
Result< std::vector< VolumeFluidDistributionPoint > > buildVolumeFluidDiskDistribution(float radius, float spacing, bool edgeEmission)
Builds Fluid3D's concentric disk or circumference-only distribution.
Definition VolumeFluidEmitter.cpp:549
EVENGINE_API_DOMAINS Result< std::vector< VolumeFluidDistributionPoint > > buildVolumeFluidMeshDistribution(std::span< const glm::vec3 > vertices, std::span< const uint32_t > indices, glm::vec3 scale, float spacing)
Voxelizes indexed triangles, returning surface and enclosed interior cell centers.
Definition VolumeFluidMeshEmitter.cpp:30
Result< VolumeFluidEmission > composeVolumeFluidEmitterShapes(const VolumeFluidEmission &base, std::span< const VolumeFluidEmission > shapes)
Builds one emitter distribution from an ordered set of Fluid3D emitter shapes.
Definition VolumeFluidEmitter.cpp:579
VolumeFluidEmissionShape
Local nozzle domain; disk/square lie in XY, edge lies on X.
Definition VolumeFluidEmitter.h:12
@ Distribution
Result< std::vector< VolumeFluidDistributionPoint > > buildVolumeFluidSphereDistribution(float radius, float spacing, bool surface)
Builds an Fluid3D-compatible spherical surface or volume lattice during setup.
Definition VolumeFluidEmitter.cpp:444
Result< std::vector< VolumeFluidDistributionPoint > > buildVolumeFluidImageDistribution(std::span< const glm::vec4 > pixels, unsigned width, unsigned height, float pixelScale, float maximumSize, float spacing, float alphaThreshold)
Precomputes a bilinear alpha-masked image distribution on a spacing lattice.
Definition VolumeFluidEmitter.cpp:633
Result< VolumeFluidEmitterBlueprintMetrics > evaluateVolumeFluidEmitterBlueprint3D(float resolution, float restDensity, float smoothing)
Evaluates Fluid3DEmitterBlueprintBase/Fluid3DEmitterBlueprint formulas in 3D.
Definition VolumeFluidEmitter.cpp:145
Result< VolumeFluidEmitterBlueprintApplication3D > prepareVolumeFluidEmitterBlueprint3D(const VolumeFluidEmitterBlueprint3D &blueprint)
Atomically maps every Fluid3DEmitterBlueprint field to native 3D setup values.
Definition VolumeFluidEmitter.cpp:159
Result< VolumeFluidEmitterBlueprintApplication3D > prepareVolumeGranularEmitterBlueprint3D(const VolumeGranularEmitterBlueprint3D &blueprint)
Atomically maps an Fluid3DGranularEmitterBlueprint to owned native 3D setup values.
Definition VolumeFluidEmitter.cpp:195
Result< unsigned > emitVolumeFluidBurst(VolumeFluid &solver, const VolumeFluidEmission &e, unsigned count)
Generates at most 4096 particles and admits the entire burst atomically.
Definition VolumeFluidEmitter.cpp:216
Owned precomputed local emission sample, including shape-specific color.
Definition VolumeFluidEmitter.h:50
glm::vec3 direction
Local normalized emission direction; transformed by the nozzle pose.
Definition VolumeFluidEmitter.h:54
glm::vec3 position
Definition VolumeFluidEmitter.h:51
Value-owned emission description; +Z is mapped to direction.
Definition VolumeFluidEmitter.h:105
VolumeFluidParticle prototype
Material/color/data/lifetime copied to emitted particles; position/velocity are generated.
Definition VolumeFluidEmitter.h:122
float speed
Nozzle speed and independent per-axis uniform native velocity jitter, m/s.
Definition VolumeFluidEmitter.h:112
std::vector< VolumeFluidDistributionPoint > distribution
Precomputed shape points, used only by Distribution; maximum 4096, copied by value.
Definition VolumeFluidEmitter.h:126
bool useShapeColor
Whether Distribution points replace prototype color, matching Fluid3DEmitter useShapeColor.
Definition VolumeFluidEmitter.h:116
float randomVelocity
Fluid3D randomVelocity blend between the shape direction and a seeded unit vector,...
Definition VolumeFluidEmitter.h:114
unsigned actorCapacity
Maximum live particles owned by this emitter actor, matching Fluid3DEmitterBlueprintBase capacity.
Definition VolumeFluidEmitter.h:118
uint32_t seed
Explicit named emission RNG stream seed; never touches a global RNG.
Definition VolumeFluidEmitter.h:124
float granularRadiusRandomness
Granular radius reduction percentage in [0,100]; zero preserves the prototype radius.
Definition VolumeFluidEmitter.h:120
VolumeFluidEmissionShape shape
Definition VolumeFluidEmitter.h:106
Owning Fluid3DEmitterBlueprint values used to prepare a native 3D emitter.
Definition VolumeFluidEmitter.h:25
float diffusion
Definition VolumeFluidEmitter.h:30
float viscosity
Definition VolumeFluidEmitter.h:28
float buoyancy
Definition VolumeFluidEmitter.h:29
float vorticity
Definition VolumeFluidEmitter.h:29
glm::vec4 diffusionData
Definition VolumeFluidEmitter.h:31
float restDensity
Definition VolumeFluidEmitter.h:27
float resolution
Definition VolumeFluidEmitter.h:27
float atmosphericPressure
Definition VolumeFluidEmitter.h:29
float smoothing
Definition VolumeFluidEmitter.h:27
float surfaceTension
Definition VolumeFluidEmitter.h:28
unsigned capacity
Definition VolumeFluidEmitter.h:26
float atmosphericDrag
Definition VolumeFluidEmitter.h:29
Fully owned native setup prepared from one Fluid3D-emitter blueprint.
Definition VolumeFluidEmitter.h:147
VolumeFluidEmitterBlueprintMetrics metrics
Definition VolumeFluidEmitter.h:150
VolumeFluidEmission emission
Definition VolumeFluidEmitter.h:149
VolumeFluidSettings settings
Definition VolumeFluidEmitter.h:148
Exact 3D metrics derived by Fluid3DEmitterBlueprintBase from resolution and density.
Definition VolumeFluidEmitter.h:15
float particleSize
Recommended solver rest spacing and particle diameter in metres.
Definition VolumeFluidEmitter.h:17
Version-1 owning atomic checkpoint for a solver, emission description and controller.
Definition VolumeFluidEmitter.h:188
VolumeFluidEmission emission
Definition VolumeFluidEmitter.h:192
VolumeFluidSnapshot solver
Definition VolumeFluidEmitter.h:191
VolumeFluidEmitterSnapshot controller
Definition VolumeFluidEmitter.h:193
std::string schema
Definition VolumeFluidEmitter.h:189
unsigned version
Definition VolumeFluidEmitter.h:190
Version-1 owning state for rate (kind 0) or jet (kind 1) controllers.
Definition VolumeFluidEmitter.h:177
uint32_t sequence
Definition VolumeFluidEmitter.h:183
std::string phase
Decimal double text preserves phase across float32 scripting VMs.
Definition VolumeFluidEmitter.h:182
std::string schema
Definition VolumeFluidEmitter.h:178
Owning world-space nozzle pose; rotation is a unit quaternion in XYZW order.
Definition VolumeFluidEmitter.h:197
Owning particle value with world position and velocity in SI units.
Definition VolumeFluid.h:96
Meter-space (+Y up) volume-fluid material and solver policy.
Definition VolumeFluid.h:82
Canonical version-20 owning state; older codecs migrate collider, attachment, stitch,...
Definition VolumeFluid.h:493
Owning Fluid3DGranularEmitterBlueprint values used to prepare a native 3D emitter.
Definition VolumeFluidEmitter.h:35
float randomness
Fluid3D radius-reduction percentage; runtime accepts the meaningful [0,100] range.
Definition VolumeFluidEmitter.h:39
float resolution
Definition VolumeFluidEmitter.h:37
float restDensity
Definition VolumeFluidEmitter.h:37
unsigned capacity
Definition VolumeFluidEmitter.h:36