![]() |
Obi
7.0.5
Unified particle physics for Unity
|
Public Types | |
enum | EmissionMethod { EmissionMethod.STREAM, EmissionMethod.BURST, EmissionMethod.MANUAL } |
Public Member Functions | |
delegate void | EmitterParticleCallback (ObiEmitter emitter, int particleIndex) |
override void | RequestReadback () |
void | AddShape (ObiEmitterShape shape) |
Adds a shape trough which to emit particles. This is called automatically by ObiEmitterShape. More... | |
void | RemoveShape (ObiEmitterShape shape) |
Removes a shape trough which to emit particles. This is called automatically by ObiEmitterShape. More... | |
void | UpdateEmitter () |
Updates the spawn point distribution of all shapes used by this emitter. More... | |
override void | SetSelfCollisions (bool selfCollisions) |
Updates particle phases in the solver at runtime, including or removing the self-collision flag. More... | |
override bool | ActivateParticle () |
Activates one particle. Specialized implementation, optimized to activate large amounts of particles per step. Does not flag active particles and simplices as dirty (which requires the solver to rebuild them), instead it appends to their end. More... | |
bool | EmitParticle (float offset) |
Asks the emitter to emit a new particle. Returns whether the emission was succesful. More... | |
bool | KillParticle (int index) |
Asks the emiter to kill a particle. Returns whether it was succesful. More... | |
void | KillAll () |
Kills all particles in the emitter, and returns them to the emission pool. More... | |
override void | SimulationStart (float timeToSimulate, float substepTime) |
![]() | |
delegate void | ActorCallback (ObiActor actor) |
delegate void | ActorStepCallback (ObiActor actor, float simulatedTime, float substepTime) |
delegate void | ActorBlueprintCallback (ObiActor actor, ObiActorBlueprint blueprint) |
void | AddToSolver () |
Adds this actor to its solver, if any. Automatically called by ObiSolver. More... | |
void | RemoveFromSolver () |
Remove this actor from its solver, if any. Automatically called by ObiSolver. More... | |
virtual void | ProvideDeformableTriangles (ObiNativeIntList deformableTriangles, ObiNativeVector2List deformableUVs) |
virtual void | ProvideDeformableEdges (ObiNativeIntList deformableEdges) |
virtual int | GetDeformableEdgeCount () |
virtual bool | CopyParticle (int actorSourceIndex, int actorDestIndex) |
Copies all data (position, velocity, phase, etc) from one particle to another one. More... | |
void | TeleportParticle (int actorIndex, Vector3 position) |
Teleports one actor particle to a certain position in solver space. More... | |
virtual Matrix4x4 | Teleport (Vector3 position, Quaternion rotation) |
Teleports the entire actor to a new location / orientation. More... | |
virtual bool | DeactivateParticle (int actorIndex) |
Deactivates one particle. More... | |
virtual bool | IsParticleActive (int actorIndex) |
Returns whether a given particle is active. More... | |
virtual void | SetOneSided (bool oneSided) |
Updates particle phases in the solver at runtime, including or removing the one-sided flag. More... | |
void | SetSimplicesDirty () |
Marks simplices dirty. More... | |
void | SetConstraintsDirty (Oni.ConstraintType constraintType) |
Marks a given constraint type as dirty. More... | |
void | SetRenderingDirty (Oni.RenderingSystemType rendererType) |
Marks rendering dirty. More... | |
IObiConstraints | GetConstraintsByType (Oni.ConstraintType type) |
Returns the data representation of constraints of a given type being simulated by this solver. More... | |
virtual void | UpdateParticleProperties () |
Call when some particle properties have been modified and need updating. More... | |
int | GetParticleRuntimeIndex (int actorIndex) |
Returns the index of this particle in the solver arrays. More... | |
Vector3 | GetParticlePosition (int solverIndex) |
Given a solver particle index, returns the position of that particle in world space. More... | |
Quaternion | GetParticleOrientation (int solverIndex) |
Given a solver particle index, returns the orientation of that particle in world space. More... | |
Vector3 | GetParticleRestPosition (int solverIndex) |
Given a solver particle index, returns the rest position of that particle. More... | |
Quaternion | GetParticleRestOrientation (int solverIndex) |
Given a solver particle index, returns the rest orientation of that particle. More... | |
void | GetParticleAnisotropy (int solverIndex, ref Vector4 b1, ref Vector4 b2, ref Vector4 b3) |
Given a solver particle index, returns the anisotropic frame of that particle in world space. More... | |
float | GetParticleMaxRadius (int solverIndex) |
Given a solver particle index, returns the maximum world space radius of that particle, in any axis. More... | |
Color | GetParticleColor (int solverIndex) |
Given a solver particle index, returns the color of that particle. More... | |
void | SetFilterCategory (int newCategory) |
Sets a given category value for all particles in the actor. More... | |
void | SetFilterMask (int newMask) |
Sets a given mask value for all particles in the actor. More... | |
void | SetMass (float mass) |
Sets the inverse mass of each particle so that the total actor mass matches the one passed by parameter. More... | |
float | GetMass (out Vector3 com) |
Returns the actor's mass (sum of all particle masses), and the position of its center of mass. More... | |
void | AddForce (Vector3 force, ForceMode forceMode) |
Adds an external force to all particles in the actor. More... | |
void | AddTorque (Vector3 force, ForceMode forceMode) |
Adds a torque to the actor. More... | |
void | ResetParticles () |
Resets the position and velocity of all particles, to the values stored in the blueprint. More... | |
bool | SaveStateToBlueprint (ObiActorBlueprint bp) |
Resets the position and velocity of all particles, to the values stored in the blueprint. More... | |
void | ClearState () |
virtual void | SimulationEnd (float simulatedTime, float substepTime) |
virtual void | Interpolate (float simulatedTime, float substepTime) |
virtual void | OnSolverVisibilityChanged (bool visible) |
Public Attributes | |
ObiEmitterBlueprintBase | emitterBlueprint |
EmissionMethod | emissionMethod = EmissionMethod.STREAM |
Emission method used by this emitter. More... | |
float | minPoolSize = 0.5f |
Minimum amount of inactive particles available before the emitter is allowed to resume emission. More... | |
float | speed = 0.25f |
Speed (in meters/second) at which fluid is emitter. More... | |
float | lifespan = 4 |
Particle lifespan in seconds. More... | |
float | randomDirection = 0 |
Amount of randomness added to particle direction when emitted. More... | |
float | inheritVelocity = 0 |
Amount of emitter velocity inherited by the fluid. More... | |
bool | useShapeColor = true |
Use the emitter shape color to tint particles upon emission. More... | |
![]() | |
ObiNativeIntList | solverIndices |
Index of each one of the actor's particles in the solver. More... | |
List< int >[] | solverBatchOffsets |
For each of the actor's constraint types, offset of every batch in the solver. More... | |
int | groupID = 0 |
Protected Member Functions | |
override void | Awake () |
override void | OnDestroy () |
override void | OnValidate () |
![]() | |
virtual void | OnEnable () |
virtual void | OnDisable () |
void | SetSolver (ObiSolver newSolver) |
Forcibly changes the solver in charge of this actor More... | |
void | SetMassScale (float scale) |
Sets the mass of all particles in the actor to their blueprint values, multiplied by a scale factor. More... | |
virtual void | OnBlueprintRegenerate (ObiActorBlueprint blueprint) |
void | UpdateCollisionMaterials () |
virtual void | SwapWithFirstInactiveParticle (int actorIndex) |
void | StoreState () |
Properties | |
override ObiActorBlueprint | sourceBlueprint [get] |
The base actor blueprint used by this actor. More... | |
int | Filter [get, set] |
Collision filter value used by fluid particles. More... | |
bool | isEmitting [get, set] |
Whether the emitter is currently emitting particles. More... | |
override bool | surfaceCollisions = false [get, set] |
Whether to use simplices (triangles, edges) for contact generation. More... | |
override bool | usesAnisotropicParticles [get] |
Whether this actor makes use of particle anisotropy More... | |
![]() | |
int | deformableEdgesOffset [get, set] |
ObiSolver | solver [get] |
The solver in charge of simulating this actor. More... | |
bool | isLoaded [get] |
True if the actor blueprint has been loaded into a solver. If true, it guarantees actor.solver, actor.solverIndices and actor.solverBatchOffsets won't be null. More... | |
ObiCollisionMaterial | collisionMaterial [get, set] |
The collision material being used by this actor. More... | |
virtual bool | surfaceCollisions [get, set] |
Whether to use simplices (triangles, edges) for contact generation. More... | |
float | massScale [get, set] |
Scale applied to this actor's particle masses. More... | |
int | particleCount [get] |
Amount of particles allocated by this actor. More... | |
int | activeParticleCount [get] |
Amount of particles in use by this actor. More... | |
bool | usesOrientedParticles [get] |
Whether this actors makes use of particle orientations or not. More... | |
virtual bool | usesAnisotropicParticles [get] |
If true, it means particles may not be completely spherical, but ellipsoidal. More... | |
Oni.SimplexType | simplexTypes [get] |
Matrix4x4 | actorLocalToSolverMatrix [get] |
Matrix that transforms from the actor's local space to the solver's local space. More... | |
Matrix4x4 | actorSolverToLocalMatrix [get] |
Matrix that transforms from the solver's local space to the actor's local space. More... | |
abstract ObiActorBlueprint | sourceBlueprint [get] |
Reference to the blueprint asset used by this actor. More... | |
ObiActorBlueprint | sharedBlueprint [get] |
Reference to the blueprint in use by this actor. More... | |
ObiActorBlueprint | blueprint [get] |
Returns a unique instance of this actor's sourceBlueprint. More... | |
![]() | |
int | particleCount [get] |
int | activeParticleCount [get] |
bool | usesOrientedParticles [get] |
Events | |
EmitterParticleCallback | OnEmitParticle |
EmitterParticleCallback | OnKillParticle |
![]() | |
ActorBlueprintCallback | OnBlueprintLoaded |
Called when the actor blueprint has been loaded into the solver. More... | |
ActorBlueprintCallback | OnBlueprintUnloaded |
Called when the actor blueprint has been unloaded from the solver. More... | |
ActorBlueprintCallback | OnBlueprintRegenerated |
Called when the blueprint currently in use has been re-generated. This will always be preceded by a call to OnBlueprintUnloaded and OnBlueprintLoaded. More... | |
ActorStepCallback | OnSimulationStart |
Called before simulation starts. More... | |
ActorStepCallback | OnSimulationEnd |
Called after simulation ends. More... | |
ActorCallback | OnRequestReadback |
You can use this callback to issue GPU->CPU readbacks. More... | |
ActorStepCallback | OnInterpolate |
Called at the end of each frame, after interpolation but before rendering. More... | |
Additional Inherited Members | |
![]() | |
int | m_ActiveParticleCount = 0 |
ObiSolver | m_Solver |
bool | m_Loaded = false |
ObiCollisionMaterial | m_CollisionMaterial |
bool | m_SurfaceCollisions = false |
float | m_MassScale = 1 |
Enumerator | |
---|---|
STREAM |
Continously emits particles until there are no particles left to emit. |
BURST |
Emits a single burst of particles from the emitter, and does not emit any more until all alive particles have died. |
MANUAL |
Will not automatically emit particles. The user needs to call EmitParticle() manually. |
|
virtual |
Activates one particle. Specialized implementation, optimized to activate large amounts of particles per step. Does not flag active particles and simplices as dirty (which requires the solver to rebuild them), instead it appends to their end.
This operation preserves the relative order of all particles.
Reimplemented from Obi.ObiActor.
void Obi.ObiEmitter.AddShape | ( | ObiEmitterShape | shape | ) |
Adds a shape trough which to emit particles. This is called automatically by ObiEmitterShape.
bool Obi.ObiEmitter.EmitParticle | ( | float | offset | ) |
Asks the emitter to emit a new particle. Returns whether the emission was succesful.
offset | Distance from the emitter surface at which the particle should be emitted. |
void Obi.ObiEmitter.KillAll | ( | ) |
Kills all particles in the emitter, and returns them to the emission pool.
bool Obi.ObiEmitter.KillParticle | ( | int | index | ) |
Asks the emiter to kill a particle. Returns whether it was succesful.
void Obi.ObiEmitter.RemoveShape | ( | ObiEmitterShape | shape | ) |
Removes a shape trough which to emit particles. This is called automatically by ObiEmitterShape.
|
virtual |
Updates particle phases in the solver at runtime, including or removing the self-collision flag.
Reimplemented from Obi.ObiActor.
void Obi.ObiEmitter.UpdateEmitter | ( | ) |
Updates the spawn point distribution of all shapes used by this emitter.
EmissionMethod Obi.ObiEmitter.emissionMethod = EmissionMethod.STREAM |
Emission method used by this emitter.
Can be either STREAM or BURST.
float Obi.ObiEmitter.inheritVelocity = 0 |
Amount of emitter velocity inherited by the fluid.
float Obi.ObiEmitter.lifespan = 4 |
Particle lifespan in seconds.
Particles older than this value will become inactive and go back to the solver's emission pool, making them available for reuse.
float Obi.ObiEmitter.minPoolSize = 0.5f |
Minimum amount of inactive particles available before the emitter is allowed to resume emission.
float Obi.ObiEmitter.randomDirection = 0 |
Amount of randomness added to particle direction when emitted.
float Obi.ObiEmitter.speed = 0.25f |
Speed (in meters/second) at which fluid is emitter.
Note this affects both the speed and the amount of particles emitted per second, to ensure flow is as smooth as possible. Set it to zero to deactivate emission.
bool Obi.ObiEmitter.useShapeColor = true |
Use the emitter shape color to tint particles upon emission.
|
getset |
Collision filter value used by fluid particles.
|
getset |
Whether the emitter is currently emitting particles.
|
get |
The base actor blueprint used by this actor.
This is the same as emitterBlueprint.
|
getset |
Whether to use simplices (triangles, edges) for contact generation.
|
get |
Whether this actor makes use of particle anisotropy
In case of fluid, this is true as particles adapt their shape to fit the fluid's surface.