载入中...
搜索中...
未找到
VolumeFluidCodec.cpp
浏览该文件的文档.
4Value encodeFluidRendererSettings(const FluidRendererSettings& settings) { return pack(settings); }
11 DiagnosticCode::InvalidArgument, "Invalid, missing or unknown fluid renderer setting", error.what()));
31Value encodeVolumeFluidDiffuse(const VolumeFluidDiffuseSnapshot& snapshot) { return pack(snapshot); }
41 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid diffuse snapshot fields", error.what()));
48Result<std::vector<VolumeFluidDiffuseParticle>> decodeVolumeFluidDiffuseParticles(const Value& value) {
51 if (!value.isArray() || value.arraySize() > 65536) throw std::runtime_error("fluids.volume.diffuse/particles");
55 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid diffuse particle fields", error.what()));
59Value encodeVolumeFluidFieldSamples(const std::vector<VolumeFluidFieldSample>& samples) { return pack(samples); }
61Value encodeVolumeFluidDistanceHits(const std::vector<VolumeFluidDistanceHit>& hits) { return pack(hits); }
62Value encodeVolumeFluidQueryHits(const std::vector<VolumeFluidQueryHit>& hits) { return pack(hits); }
63Value encodeVolumeFluidSimplexHits(const std::vector<VolumeFluidSimplexHit>& hits) { return pack(hits); }
67 if (!value.isArray() || value.arraySize() > 65536) throw std::runtime_error("fluids.volume/simplexes");
71 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid simplex fields or count", error.what()));
78 if (!value.isArray() || value.arraySize() > 65536) throw std::runtime_error("fluids.volume/stitches");
82 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid stitch fields or count", error.what()));
89 if (!value.isArray() || value.arraySize() > 256) throw std::runtime_error("fluids.volume.queries");
93 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid query fields or count", error.what()));
100 if (!value.isArray() || value.arraySize() > 256) throw std::runtime_error("fluids.volume.queryColors");
104 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid query color fields or count", error.what()));
111 if (!value.isArray() || value.arraySize() > 65536) throw std::runtime_error("fluids.volume.field/positions");
115 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid field query positions", error.what()));
122 if (!value.isArray() || value.arraySize() > 64) throw std::runtime_error("fluids.volume.wind/zones");
126 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid wind-zone fields or count", error.what()));
131Value encodeVolumeFluidSdfCollider(const VolumeFluidSdfCollider& collider) { return pack(collider); }
132Value encodeVolumeFluidHeightFieldCollider(const VolumeFluidHeightFieldCollider& collider) { return pack(collider); }
148 if (!value.isArray() || value.arraySize() > 16) throw std::runtime_error("fluids.volume.sdfColliders");
152 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid SDF collider fields or count", error.what()));
156Result<std::vector<VolumeFluidHeightFieldCollider>> decodeVolumeFluidHeightFieldColliders(const Value& value) {
159 if (!value.isArray() || value.arraySize() > 16) throw std::runtime_error("fluids.volume.heightFieldColliders");
163 DiagnosticCode::InvalidArgument, "Invalid height-field collider fields or count", error.what()));
168Value encodeVolumeFluidContacts(const std::vector<VolumeFluidContact>& contacts) { return pack(contacts); }
169Value encodeVolumeFluidContactEvents(const std::vector<VolumeFluidContactEvent>& events) { return pack(events); }
171Result<std::vector<VolumeFluidViscosityColorKey>> decodeVolumeFluidViscosityColors(const Value& value) {
190 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid color gradient fields or count", error.what()));
197 if (!value.isArray() || value.arraySize() > 1024) throw std::runtime_error("fluids.volume.thermalRules");
201 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid thermal rule fields or count", error.what()));
205Value encodeVolumeFluidParticles(const std::vector<VolumeFluidParticle>& particles) { return pack(particles); }
206Value encodeVolumeFluidParticleEvents(const VolumeFluidParticleEventBatch& batch) { return pack(batch); }
218Value encodeVolumeFluidEmitterBlueprint3D(const VolumeFluidEmitterBlueprint3D& blueprint) { return pack(blueprint); }
230Value encodeVolumeGranularEmitterBlueprint3D(const VolumeGranularEmitterBlueprint3D& blueprint) {
244Value encodeVolumeFluidEmitterBlueprintApplication3D(const VolumeFluidEmitterBlueprintApplication3D& application) {
260 if (!value.isArray() || value.arraySize() > 1024) throw std::runtime_error("fluids.volume.colliders");
264 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid collider fields or count", error.what()));
275 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid nozzle pose fields", error.what()));
280Value encodeVolumeFluidEmitterState(const VolumeFluidEmitterSnapshot& state) { return pack(state); }
287 Diagnostic::error(DiagnosticCode::InvalidArgument, "Invalid emitter-state fields", error.what()));
320 Diagnostic::error(DiagnosticCode::InvalidArgument, message, "fluids.volume.emitterCheckpoint"));
329 schema->asString() != "eve.volume-fluid-emitter-checkpoint" || !version || !version->isInt64() ||
333 if (!decodedSolver) return Result<VolumeFluidEmitterCheckpoint>::failure(decodedSolver.status());
335 if (!decodedEmission) return Result<VolumeFluidEmitterCheckpoint>::failure(decodedEmission.status());
337 if (!decodedController) return Result<VolumeFluidEmitterCheckpoint>::failure(decodedController.status());
378 if (!prototype || !prototype->isObject() || prototype->find("radii") || prototype->find("orientation"))
410 !material->isObject() || material->find("rollingContacts") || material->find("rollingFriction"))
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
void set(const std::string &key, Value value)
Insert or replace an object member.
Definition Value.cpp:118
Bounded, one-way fluid-advected secondary particle pool. @ownership Owns particles and capacity; no f...
Definition VolumeFluidDiffuse.h:38
Result< void > restore(const VolumeFluidDiffuseSnapshot &snapshot)
Validates schema, capacity [1,65536] and all particles before replacing state.
Definition VolumeFluidDiffuse.cpp:57
Bounded runtime stream controller with explicit snapshot/restore.
Definition VolumeFluidEmitter.h:207
Generates secondary particles at high-curl, low-density fluid source positions. @ownership Owns setti...
Definition VolumeFluidFoam.h:39
Result< void > restore(const VolumeFluidFoamSnapshot &state)
Validates all settings/schema/credit/RNG before atomic replacement.
Definition VolumeFluidFoam.cpp:120
Spacing-driven planar/distribution jet controller with independent, owned stream phase.
Definition VolumeFluidEmitter.h:255
Result< void > restore(const VolumeFluidEmitterSnapshot &state)
Validates schema, kind and phase before atomic replacement; invokes no callbacks.
Definition VolumeFluidEmitter.cpp:745
Value encodeVolumeFluid(const VolumeFluidSnapshot &snapshot)
Canonical schema-17 value projection, shared by JSON, scripts and authoring.
Definition VolumeFluidCodec.cpp:16
Result< std::vector< VolumeFluidViscosityColorKey > > decodeVolumeFluidViscosityColors(const Value &value)
Strict owning decode of at most 32 transient viscosity color keys; application validates domains.
Definition VolumeFluidCodec.cpp:171
Result< VolumeGranularEmitterBlueprint3D > decodeVolumeGranularEmitterBlueprint3D(const Value &value)
Strictly decodes one owning Fluid3D granular-emitter blueprint value.
Definition VolumeFluidCodec.cpp:233
Result< FluidRendererSettings > decodeFluidRendererSettings(const Value &value)
Strictly decodes one complete owning Fluid3D-renderer settings value.
Definition VolumeFluidCodec.cpp:5
Value encodeVolumeFluidEmitterBlueprint3D(const VolumeFluidEmitterBlueprint3D &blueprint)
Projects default or caller-prepared Fluid3D-emitter blueprint values.
Definition VolumeFluidCodec.cpp:218
Result< std::vector< VolumeFluidQueryShape > > decodeVolumeFluidQueries(const Value &value)
Strict owning decode of at most 256 transient mixed query descriptions.
Definition VolumeFluidCodec.cpp:86
Value encodeVolumeFluidContacts(const std::vector< VolumeFluidContact > &contacts)
Projects last-step contacts, including world-space point and opposite impulse.
Definition VolumeFluidCodec.cpp:168
Result< VolumeFluidMaterial > decodeVolumeFluidMaterial(const Value &value)
Strict transient material decode; paint validates numeric domains before mutation.
Definition VolumeFluidCodec.cpp:207
Value encodeVolumeFluidFieldSamples(const std::vector< VolumeFluidFieldSample > &samples)
Projects owning field samples, preserving query order.
Definition VolumeFluidCodec.cpp:59
Result< std::vector< VolumeFluidSdfPose > > decodeVolumeFluidSdfPoses(const Value &value)
Strict transient decode of at most 16 SDF transform-only updates.
Definition VolumeFluidCodec.cpp:134
Value encodeVolumeFluidWindZone(const VolumeFluidWindZone &zone)
Projects one complete wind-zone description for script construction.
Definition VolumeFluidCodec.cpp:167
Value encodeVolumeFluidSimplexHits(const std::vector< VolumeFluidSimplexHit > &hits)
Projects owning Fluid3D-compatible simplex query results.
Definition VolumeFluidCodec.cpp:63
Result< VolumeFluidNozzlePose > decodeVolumeFluidNozzlePose(const Value &value)
Strict transient pose-argument decode; advanceMoving validates the unit quaternion.
Definition VolumeFluidCodec.cpp:269
Result< std::vector< VolumeFluidSimplex > > decodeVolumeFluidSimplexes(const Value &value)
Strict owning decode of at most 65536 point, edge or triangle topology entries.
Definition VolumeFluidCodec.cpp:64
Result< std::vector< VolumeFluidWindZone > > decodeVolumeFluidWindZones(const Value &value)
Strict owning decode of at most 64 transient Fluid3D-style wind zones.
Definition VolumeFluidCodec.cpp:119
Value encodeVolumeFluidCollider(const VolumeFluidCollider &collider)
Projects an owning collider description for script construction.
Definition VolumeFluidCodec.cpp:130
Value encodeVolumeFluidContactEvents(const std::vector< VolumeFluidContactEvent > &events)
Projects owning Enter/Stay/Exit contact lifecycle events.
Definition VolumeFluidCodec.cpp:169
Value encodeVolumeFluidHeightFieldCollider(const VolumeFluidHeightFieldCollider &collider)
Projects one complete owning regular height field.
Definition VolumeFluidCodec.cpp:132
Value encodeVolumeFluidSdfCollider(const VolumeFluidSdfCollider &collider)
Projects one complete owning SDF collider.
Definition VolumeFluidCodec.cpp:131
Result< std::vector< glm::vec4 > > decodeVolumeFluidColors(const Value &value)
Strict owning decode of at most 256 transient linear RGBA colors.
Definition VolumeFluidCodec.cpp:97
Result< std::vector< VolumeFluidStitch > > decodeVolumeFluidStitches(const Value &value)
Strict owning decode of at most 65536 Fluid3DStitcher particle pairs.
Definition VolumeFluidCodec.cpp:75
Result< VolumeFluidEmitterSnapshot > decodeVolumeFluidEmitterState(const Value &value)
Strict version-1 controller-state decode; unsupported fields, kinds and phase values fail.
Definition VolumeFluidCodec.cpp:281
Value encodeVolumeFluidParticles(const std::vector< VolumeFluidParticle > &particles)
Projects an owning particle batch without copying the live solver.
Definition VolumeFluidCodec.cpp:205
Value encodeVolumeFluidDiffuse(const VolumeFluidDiffuseSnapshot &snapshot)
Projects the owning version-1 secondary particle pool state.
Definition VolumeFluidCodec.cpp:31
Result< std::vector< VolumeFluidHeightFieldCollider > > decodeVolumeFluidHeightFieldColliders(const Value &value)
Strict owning decode of at most 16 regular sampled height fields.
Definition VolumeFluidCodec.cpp:156
Value encodeVolumeFluidSdfPose(const VolumeFluidSdfPose &pose)
Projects one transform-only SDF update for script construction.
Definition VolumeFluidCodec.cpp:133
Result< std::vector< VolumeFluidDiffuseParticle > > decodeVolumeFluidDiffuseParticles(const Value &value)
Strict transient batch decode of at most 65536 particles; emit validates domains.
Definition VolumeFluidCodec.cpp:48
Value encodeFluidRendererSettings(const FluidRendererSettings &settings)
Projects one complete Fluid3D-renderer settings value.
Definition VolumeFluidCodec.cpp:4
Value encodeVolumeFluidQueryHits(const std::vector< VolumeFluidQueryHit > &hits)
Projects owning mixed-query hits with their source query indices.
Definition VolumeFluidCodec.cpp:62
Result< std::vector< glm::vec3 > > decodeVolumeFluidFieldPositions(const Value &value)
Strict owning decode of up to 65536 transient world-space field query positions.
Definition VolumeFluidCodec.cpp:108
Result< VolumeFluidFoamSnapshot > decodeVolumeFluidFoam(const Value &value)
Strict decode with atomic-controller validation; rejects unknown fields and versions.
Definition VolumeFluidCodec.cpp:18
EVENGINE_API_DOMAINS Result< VolumeFluidSnapshot > decodeVolumeFluid(const Value &value)
Strict owning decode; unknown/missing fields, unsupported versions and invalid state are rejected.
Definition VolumeFluidStateCodec.cpp:4
Value encodeVolumeFluidThermalRule(const VolumeFluidThermalRule &rule)
Owning default-rule projection for script construction.
Definition VolumeFluidCodec.cpp:170
Result< std::vector< VolumeFluidColorKey > > decodeVolumeFluidColorGradient(const Value &value)
Strict owning decode of a 2..32-key normalized linear RGBA gradient.
Definition VolumeFluidCodec.cpp:182
Result< VolumeFluidDiffuseSnapshot > decodeVolumeFluidDiffuse(const Value &value)
Strict bounded decode; validates the entire pool before returning owning state.
Definition VolumeFluidCodec.cpp:32
Result< VolumeFluidEmission > decodeVolumeFluidEmission(const Value &value)
Strict structural decode; nozzle/material domain validation occurs atomically at emission.
Definition VolumeFluidCodec.cpp:354
Result< std::vector< VolumeFluidSdfCollider > > decodeVolumeFluidSdfColliders(const Value &value)
Strict owning decode of at most 16 sampled SDF colliders.
Definition VolumeFluidCodec.cpp:145
Value encodeVolumeFluidEmitterBlueprintApplication3D(const VolumeFluidEmitterBlueprintApplication3D &application)
Projects the complete native solver/emission setup produced from a blueprint.
Definition VolumeFluidCodec.cpp:244
Result< std::vector< VolumeFluidThermalRule > > decodeVolumeFluidThermalRules(const Value &value)
Strict owning decode of at most 1024 transient thermal rules; step validates domains.
Definition VolumeFluidCodec.cpp:194
Result< std::vector< VolumeFluidParticle > > decodeVolumeFluidParticles(const Value &value)
Decodes an owning emission batch without serializing the live solver; admission validates domains.
Definition VolumeFluidCodec.cpp:296
Value encodeVolumeFluidParticleEvents(const VolumeFluidParticleEventBatch &batch)
Projects one owning bounded particle lifecycle-event drain.
Definition VolumeFluidCodec.cpp:206
Value encodeVolumeFluidEmission(const VolumeFluidEmission &emission)
Encodes a version-9 emission description including precomputed points and particle state.
Definition VolumeFluidCodec.cpp:346
Value encodeVolumeFluidFoam(const VolumeFluidFoamSnapshot &snapshot)
Projects owning schema-1 foam settings, credit text and RNG state.
Definition VolumeFluidCodec.cpp:17
Value encodeVolumeFluidDistanceHits(const std::vector< VolumeFluidDistanceHit > &hits)
Projects owning signed-distance hits including captured particle values.
Definition VolumeFluidCodec.cpp:61
Value encodeVolumeFluidEmitterState(const VolumeFluidEmitterSnapshot &state)
Encodes controller state without converting phase text to VM floating point.
Definition VolumeFluidCodec.cpp:280
Result< std::vector< VolumeFluidCollider > > decodeVolumeFluidColliders(const Value &value)
Strict transient collider batch decode; setColliders validates geometry atomically.
Definition VolumeFluidCodec.cpp:257
Value encodeVolumeFluidRayHits(const std::vector< VolumeFluidRayHit > &hits)
Projects owning ray hits including captured particle values.
Definition VolumeFluidCodec.cpp:60
Value encodeVolumeFluidEmitterCheckpoint(const VolumeFluidEmitterCheckpoint &checkpoint)
Encodes one version-1 solver/emission/controller checkpoint.
Definition VolumeFluidCodec.cpp:307
Result< VolumeFluidEmitterCheckpoint > decodeVolumeFluidEmitterCheckpoint(const Value &value)
Strictly decodes and validates all owning checkpoint members without publishing state.
Definition VolumeFluidCodec.cpp:317
Value encodeVolumeGranularEmitterBlueprint3D(const VolumeGranularEmitterBlueprint3D &blueprint)
Projects default or caller-prepared Fluid3D granular-emitter blueprint values.
Definition VolumeFluidCodec.cpp:230
Result< VolumeFluidEmitterBlueprint3D > decodeVolumeFluidEmitterBlueprint3D(const Value &value)
Strictly decodes one owning Fluid3D-emitter blueprint value.
Definition VolumeFluidCodec.cpp:219
@ InvalidArgument
Complete owning mirror of Fluid3DRendererSettings with package defaults.
Definition FluidSurfaceRenderer.h:82
Owned obstacle sample; the caller updates moving obstacles before stepping.
Definition VolumeFluid.h:139
Strict version-1 diffuse pool state; unknown fields and versions are rejected.
Definition VolumeFluidDiffuse.h:24
Value-owned emission description; +Z is mapped to direction.
Definition VolumeFluidEmitter.h:105
unsigned actorCapacity
Maximum live particles owned by this emitter actor, matching Fluid3DEmitterBlueprintBase capacity.
Definition VolumeFluidEmitter.h:118
Owning Fluid3DEmitterBlueprint values used to prepare a native 3D emitter.
Definition VolumeFluidEmitter.h:25
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
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
Owning strict version-1 foam controller state; checkpoint the diffuse pool separately.
Definition VolumeFluidFoam.h:22
Owned regular-grid terrain collider matching Fluid3D height-field sample layout.
Definition VolumeFluid.h:204
Per-particle material, copied at emission; densities enable multiphase buoyancy.
Definition VolumeFluid.h:26
Owning world-space nozzle pose; rotation is a unit quaternion in XYZW order.
Definition VolumeFluidEmitter.h:197
Owning result of one explicit particle lifecycle-event drain.
Definition VolumeFluid.h:374
Owned sampled mesh/SDF collider with a uniform world transform.
Definition VolumeFluid.h:179
Transient transform update for one owned SDF collider, identified by stable label.
Definition VolumeFluid.h:231
Canonical version-20 owning state; older codecs migrate collider, attachment, stitch,...
Definition VolumeFluid.h:493
One-step contact transfer into user channels x/y; negative rate heats, positive cools.
Definition VolumeFluid.h:308
Owning description of one transient ambient or spherical wind zone.
Definition VolumeFluid.h:123
Owning Fluid3DGranularEmitterBlueprint values used to prepare a native 3D emitter.
Definition VolumeFluidEmitter.h:35