![]() |
Obi
7.0.5
Unified particle physics for Unity
|
Classes | |
class | Meristem |
struct | Node |
class | SurfacePoint |
Public Types | |
enum | LeafType { Square, Cross, Diamond, DiamondCross, Long, Custom } |
Public Member Functions | |
void | Start () |
int | AddGenerator (ObiPlantGenerator.GeneratorType type, string name, int parent) |
void | RemoveGenerator (int index) |
bool | IsGrowing () |
int | GetGeneratorLevel (ObiPlantGenerator generator) |
void | InstantGrow () |
void | GenerateTrunkGeometry () |
void | GenerateTrunkCurves () |
![]() | |
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 | ActivateParticle () |
Activates one particle. 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 | SetSelfCollisions (bool selfCollisions) |
Updates particle phases in the solver at runtime, including or removing the self-collision flag. 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 | SimulationStart (float timeToSimulate, float substepTime) |
virtual void | SimulationEnd (float simulatedTime, float substepTime) |
virtual void | RequestReadback () |
virtual void | Interpolate (float simulatedTime, float substepTime) |
virtual void | OnSolverVisibilityChanged (bool visible) |
Public Attributes | |
const float | DEFAULT_PARTICLE_ROTATIONAL_MASS = 0.005f |
const float | MAX_YOUNG_MODULUS = 25000000000 |
const float | MIN_YOUNG_MODULUS = 10 |
int | pooledParticles = 250 |
bool | instantGrowth = true |
int | seed = 0 |
List< ObiPlantGenerator > | generators = new List<ObiPlantGenerator>() |
List< Meristem > | meristems |
int[] | parentIndices |
float[] | parentOffsets |
int[] | levels |
SurfacePoint[] | closestSurfaces |
![]() | |
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 | OnEnable () |
override void | OnDisable () |
void | LazyMeshInitialization () |
void | UpdateMesh () |
![]() | |
virtual void | Awake () |
virtual void | OnDestroy () |
virtual void | OnValidate () |
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 | |
int | UsedParticles [get] |
override ObiActorBlueprint | sourceBlueprint [get] |
![]() | |
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] |
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 |
![]() | |
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... | |
int Obi.ObiPlant.AddGenerator | ( | ObiPlantGenerator.GeneratorType | type, |
string | name, | ||
int | parent | ||
) |
Generates the particle based physical representation of the rope. This is the initialization method for the rope object and should not be called directly once the object has been created.
void Obi.ObiPlant.GenerateTrunkGeometry | ( | ) |
Clears the plant mesh, and then fills it with trunk geometry by first calculating curves and then generating vertices/triangles around them.
float [] Obi.ObiPlant.parentOffsets |
normalized offset from the parent particle's center