Spacing-driven planar/distribution jet controller with independent, owned stream phase. 更多...
#include <VolumeFluidEmitter.h>
Public 成员函数 | |
| Result< unsigned > | advanceMoving (VolumeFluid &solver, const VolumeFluidEmission &emission, const VolumeFluidNozzlePose &begin, const VolumeFluidNozzlePose &end, float dt, unsigned maxPerStep=256, float minimumPoolFraction=0.5f, float inheritVelocity=0.f) |
| Emits using interpolated step-boundary rigid poses instead of description origin/direction. | |
| Result< unsigned > | advance (VolumeFluid &solver, const VolumeFluidEmission &emission, float dt, unsigned maxPerStep=256, float minimumPoolFraction=0.5f) |
| Emits whole nozzle layers spaced by solver.spacing(). | |
| bool | isEmitting () const noexcept |
| Returns whether the jet currently owns an active emission phase, without allocation. | |
| VolumeFluidEmitterSnapshot | snapshot () const |
| Copies controller state; caller checkpoints solver/configuration at the same step boundary. | |
| Result< void > | restore (const VolumeFluidEmitterSnapshot &state) |
| Validates schema, kind and phase before atomic replacement; invokes no callbacks. | |
详细描述
Spacing-driven planar/distribution jet controller with independent, owned stream phase.
Simulation-thread affine, no callbacks or retained external references. Recreating it resets phase unless restored. Call once AFTER the solver step with that step's dt. New layers are advected from their intra-step emission time at prescribed nozzle velocity. Existing particles are advanced only by the solver.
在文件 VolumeFluidEmitter.h 第 255 行定义.
成员函数说明
◆ advance()
| Result< unsigned > eve::fluids::VolumeFluidJetEmitter::advance | ( | VolumeFluid & | solver, |
| const VolumeFluidEmission & | emission, | ||
| float | dt, | ||
| unsigned | maxPerStep = 256, |
||
| float | minimumPoolFraction = 0.5f |
||
| ) |
Emits whole nozzle layers spaced by solver.spacing().
Supports edge, square, disk and owned precomputed distributions; rejects analytic volume shapes. Distribution point colors replace the prototype when enabled. The work cap must fit one complete layer. Excess whole layers are dropped, never queued. Admission failures preserve solver and stream phase. dt is in [0,1/30]. A speed of zero emits nothing and clears partial travel, so resume cannot catch up disabled time.
在文件 VolumeFluidEmitter.cpp 第 308 行定义.
引用了 advanceMoving(), eve::fluids::VolumeFluidEmission::direction, eve::fluids::VolumeFluidEmission::origin, pose, reference, right, rotation , 以及 valid.
◆ advanceMoving()
| Result< unsigned > eve::fluids::VolumeFluidJetEmitter::advanceMoving | ( | VolumeFluid & | solver, |
| const VolumeFluidEmission & | emission, | ||
| const VolumeFluidNozzlePose & | begin, | ||
| const VolumeFluidNozzlePose & | end, | ||
| float | dt, | ||
| unsigned | maxPerStep = 256, |
||
| float | minimumPoolFraction = 0.5f, |
||
| float | inheritVelocity = 0.f |
||
| ) |
Emits using interpolated step-boundary rigid poses instead of description origin/direction.
Call after the solver step. Translation is linear, rotation follows the shortest quaternion arc; pose values are borrowed for this call only. inheritVelocity in [0,1] blends linear and angular nozzle surface velocity. New particles are advected for their fractional age at emission velocity; external forces for that fractional age are not integrated here.
在文件 VolumeFluidEmitter.cpp 第 319 行定义.
引用了 active, eve::fluids::VolumeFluidEmission::actorCapacity, eve::fluids::VolumeFluidParticle::actorGroup, eve::fluids::VolumeFluid::actorParticleCount(), angle, eve::fluids::VolumeFluid::availableCapacity(), begin, eve::fluids::Cube, eve::fluids::Disk, distance, eve::fluids::Distribution, eve::fluids::VolumeFluidEmission::distribution, eve::fluids::Edge, eve::fluids::VolumeFluid::emit(), end, eve::fluids::VolumeFluidEmission::extent, eve::Result< T >::failure(), eve::fluids::VolumeFluidEmission::granularRadiusRandomness, eve::fluids::VolumeFluidEmission::jitter, layer, nx, ny, offset, eve::fluids::VolumeFluidParticle::orientation, origin, p, point, points, pose, eve::fluids::VolumeFluidEmission::prototype, q, rotation, eve::fluids::VolumeFluidEmission::seed, eve::fluids::VolumeFluidEmission::shape, eve::fluids::VolumeFluid::spacing(), spacing, eve::fluids::VolumeFluidEmission::speed, eve::fluids::Sphere, eve::Result< T >::success(), eve::fluids::VolumeFluidEmission::useShapeColor, valid, x , 以及 y.
被这些函数引用 advance().
◆ isEmitting()
|
inlinenoexcept |
Returns whether the jet currently owns an active emission phase, without allocation.
在文件 VolumeFluidEmitter.h 第 278 行定义.
◆ restore()
| Result< void > eve::fluids::VolumeFluidJetEmitter::restore | ( | const VolumeFluidEmitterSnapshot & | state | ) |
Validates schema, kind and phase before atomic replacement; invokes no callbacks.
在文件 VolumeFluidEmitter.cpp 第 745 行定义.
引用了 eve::Result< T >::failure(), phase, state , 以及 eve::Result< T >::success().
◆ snapshot()
| VolumeFluidEmitterSnapshot eve::fluids::VolumeFluidJetEmitter::snapshot | ( | ) | const |
Copies controller state; caller checkpoints solver/configuration at the same step boundary.
在文件 VolumeFluidEmitter.cpp 第 742 行定义.
该类的文档由以下文件生成:
- src/modules/fluids/VolumeFluidEmitter.h
- src/modules/fluids/VolumeFluidEmitter.cpp