Abstract base class for physics-based animation. More...
#include <Core/Animation/PhysicsAnimation.hpp>
Public Member Functions | |
PhysicsAnimation () | |
Default constructor. More... | |
PhysicsAnimation (const PhysicsAnimation &)=default | |
Default copy constructor. More... | |
PhysicsAnimation (PhysicsAnimation &&) noexcept=default | |
Default move constructor. More... | |
virtual | ~PhysicsAnimation ()=default |
Default virtual destructor. More... | |
PhysicsAnimation & | operator= (const PhysicsAnimation &)=default |
Default copy assignment operator. More... | |
PhysicsAnimation & | operator= (PhysicsAnimation &&) noexcept=default |
Default move assignment operator. More... | |
bool | GetIsUsingFixedSubTimeSteps () const |
Returns true if fixed sub-timestepping is used. More... | |
void | SetIsUsingFixedSubTimeSteps (bool isUsing) |
Sets true if fixed sub-timestepping is used. More... | |
unsigned int | GetNumberOfFixedSubTimeSteps () const |
Returns the number of fixed sub-timesteps. More... | |
void | SetNumberOfFixedSubTimeSteps (unsigned int numberOfSteps) |
Sets the number of fixed sub-timesteps. More... | |
void | AdvanceSingleFrame () |
Advances a single frame. More... | |
Frame | GetCurrentFrame () const |
Returns current frame. More... | |
void | SetCurrentFrame (const Frame &frame) |
Sets current frame cursor (but do not invoke update()). More... | |
double | GetCurrentTimeInSeconds () const |
Returns current time in seconds. More... | |
Public Member Functions inherited from CubbyFlow::Animation | |
Animation ()=default | |
Default constructor. More... | |
Animation (const Animation &)=default | |
Default copy constructor. More... | |
Animation (Animation &&) noexcept=default | |
Default move constructor. More... | |
virtual | ~Animation ()=default |
Default virtual destructor. More... | |
Animation & | operator= (const Animation &)=default |
Default copy assignment operator. More... | |
Animation & | operator= (Animation &&) noexcept=default |
Default move assignment operator. More... | |
void | Update (const Frame &frame) |
Updates animation state for given frame . More... | |
Protected Member Functions | |
virtual void | OnAdvanceTimeStep (double timeIntervalInSeconds)=0 |
Called when a single time-step should be advanced. More... | |
virtual unsigned int | GetNumberOfSubTimeSteps (double timeIntervalInSeconds) const |
Returns the required number of sub-timesteps for given time interval. More... | |
virtual void | OnInitialize () |
Called at frame 0 to initialize the physics state. More... | |
Detailed Description
Abstract base class for physics-based animation.
This class represents physics-based animation by adding time-integration specific functions to Animation class.
Constructor & Destructor Documentation
◆ PhysicsAnimation() [1/3]
CubbyFlow::PhysicsAnimation::PhysicsAnimation | ( | ) |
Default constructor.
◆ PhysicsAnimation() [2/3]
|
default |
Default copy constructor.
◆ PhysicsAnimation() [3/3]
|
defaultnoexcept |
Default move constructor.
◆ ~PhysicsAnimation()
|
virtualdefault |
Default virtual destructor.
Member Function Documentation
◆ AdvanceSingleFrame()
void CubbyFlow::PhysicsAnimation::AdvanceSingleFrame | ( | ) |
Advances a single frame.
◆ GetCurrentFrame()
Frame CubbyFlow::PhysicsAnimation::GetCurrentFrame | ( | ) | const |
Returns current frame.
◆ GetCurrentTimeInSeconds()
double CubbyFlow::PhysicsAnimation::GetCurrentTimeInSeconds | ( | ) | const |
Returns current time in seconds.
This function returns the current time which is calculated by adding current frame + sub-timesteps it passed.
◆ GetIsUsingFixedSubTimeSteps()
bool CubbyFlow::PhysicsAnimation::GetIsUsingFixedSubTimeSteps | ( | ) | const |
Returns true if fixed sub-timestepping is used.
When performing a time-integration, it is often required to take sub-timestepping for better results. The sub-stepping can be either fixed rate or adaptive, and this function returns which feature is currently selected.
- Returns
- True if using fixed sub time steps, false otherwise.
◆ GetNumberOfFixedSubTimeSteps()
unsigned int CubbyFlow::PhysicsAnimation::GetNumberOfFixedSubTimeSteps | ( | ) | const |
Returns the number of fixed sub-timesteps.
When performing a time-integration, it is often required to take sub-timestepping for better results. The sub-stepping can be either fixed rate or adaptive, and this function returns the number of fixed sub-steps.
- Returns
- The number of fixed sub-timesteps.
◆ GetNumberOfSubTimeSteps()
|
protectedvirtual |
Returns the required number of sub-timesteps for given time interval.
The required number of sub-timestep can be different depending on the physics model behind the implementation. Override this function to implement own logic for model specific sub-timestepping for given time interval.
- Parameters
-
[in] timeIntervalInSeconds The time interval in seconds.
- Returns
- The required number of sub-timesteps.
Reimplemented in CubbyFlow::GridFluidSolver2, CubbyFlow::GridFluidSolver3, CubbyFlow::SPHSolver2, and CubbyFlow::SPHSolver3.
◆ OnAdvanceTimeStep()
|
protectedpure virtual |
Called when a single time-step should be advanced.
When Animation::update function is called, this class will internally subdivide a frame into sub-steps if needed. Each sub-step, or time-step, is then taken to move forward in time. This function is called for each time-step, and a subclass that inherits PhysicsAnimation class should implement this function for its own physics model.
- Parameters
-
[in] timeIntervalInSeconds The time interval in seconds
Implemented in CubbyFlow::GridFluidSolver2, CubbyFlow::GridFluidSolver3, CubbyFlow::ParticleSystemSolver2, and CubbyFlow::ParticleSystemSolver3.
◆ OnInitialize()
|
protectedvirtual |
Called at frame 0 to initialize the physics state.
Inheriting classes can override this function to setup initial condition for the simulation.
Reimplemented in CubbyFlow::GridFluidSolver2, CubbyFlow::GridFluidSolver3, CubbyFlow::ParticleSystemSolver2, CubbyFlow::ParticleSystemSolver3, CubbyFlow::PICSolver2, and CubbyFlow::PICSolver3.
◆ operator=() [1/2]
|
default |
Default copy assignment operator.
◆ operator=() [2/2]
|
defaultnoexcept |
Default move assignment operator.
◆ SetCurrentFrame()
void CubbyFlow::PhysicsAnimation::SetCurrentFrame | ( | const Frame & | frame | ) |
Sets current frame cursor (but do not invoke update()).
◆ SetIsUsingFixedSubTimeSteps()
void CubbyFlow::PhysicsAnimation::SetIsUsingFixedSubTimeSteps | ( | bool | isUsing | ) |
Sets true if fixed sub-timestepping is used.
When performing a time-integration, it is often required to take sub-timestepping for better results. The sub-stepping can be either fixed rate or adaptive, and this function sets which feature should be selected.
- Parameters
-
[in] isUsing True to enable fixed sub-stepping.
◆ SetNumberOfFixedSubTimeSteps()
void CubbyFlow::PhysicsAnimation::SetNumberOfFixedSubTimeSteps | ( | unsigned int | numberOfSteps | ) |
Sets the number of fixed sub-timesteps.
When performing a time-integration, it is often required to take sub-timestepping for better results. The sub-stepping can be either fixed rate or adaptive, and this function sets the number of fixed sub-steps.
- Parameters
-
[in] numberOfSteps The number of fixed sub-timesteps.
The documentation for this class was generated from the following file:
- Core/Animation/PhysicsAnimation.hpp