![]() |
ProtoTracer
1.0
Real-time 3D rendering and animation engine
|
Animates transitions and blends between multiple materials. More...
#include <MaterialAnimator.h>
Public Member Functions | |
MaterialAnimator () | |
Default constructor for MaterialAnimator . | |
void | SetBaseMaterial (Material::Method method, Material *material) |
Sets the base material for the animation. | |
void | AddMaterial (Material::Method method, Material *material, uint16_t frames, float minOpacity, float maxOpacity) |
Adds a material to the animation with specified properties. | |
void | AddMaterialFrame (Material &material, float opacity) |
Adds a specific frame for a material in the animation. | |
float | GetMaterialOpacity (Material &material) |
Retrieves the current opacity of a material. | |
void | Update () |
Updates the animator, advancing the transitions. | |
RGBColor | GetRGB (const Vector3D &position, const Vector3D &normal, const Vector3D &uvw) override |
Retrieves the color at a specific position, considering the blended materials. | |
![]() | |
virtual | ~Material ()=default |
Virtual destructor for proper cleanup in derived classes. | |
Private Attributes | |
EasyEaseAnimator< materialCount > | eEA = EasyEaseAnimator<materialCount>(IEasyEaseAnimator::Cosine) |
Animator for easing transitions. | |
CombineMaterial< materialCount > | combineMaterial |
Combines multiple materials for rendering. | |
float | materialRatios [materialCount] |
Stores the opacity ratios for each material. | |
Material * | dictionary [materialCount] |
Holds the materials in the animator. | |
uint8_t | currentMaterials = 0 |
Tracks the number of materials added. | |
bool | baseMaterialSet = false |
Indicates if the base material is set. | |
Additional Inherited Members | |
![]() | |
enum | Method { Base , Add , Subtract , Multiply , Divide , Darken , Lighten , Screen , Overlay , SoftLight , Replace , EfficientMask , Bypass } |
Defines blending methods for combining colors. More... | |
Animates transitions and blends between multiple materials.
The MaterialAnimator
class uses an EasyEaseAnimator
for smooth transitions between materials, allowing dynamic blending and effects in rendering systems.
materialCount | The maximum number of materials to animate. |
Definition at line 28 of file MaterialAnimator.h.
MaterialAnimator | ( | ) |
Default constructor for MaterialAnimator
.
void AddMaterial | ( | Material::Method | method, |
Material * | material, | ||
uint16_t | frames, | ||
float | minOpacity, | ||
float | maxOpacity | ||
) |
Adds a material to the animation with specified properties.
method | The blending method for this material. |
material | Pointer to the material to be added. |
frames | The number of frames for the transition. |
minOpacity | The minimum opacity of the material during the animation. |
maxOpacity | The maximum opacity of the material during the animation. |
Referenced by ProtogenProject::AddBackgroundMaterial(), ProtogenProject::AddMaterial(), AceAnimation::LinkControlParameters(), DrGonzoProject::LinkControlParameters(), AphoriAnimation::SetMaterialLayers(), BasilGardenAnimation::SetMaterialLayers(), BroookAnimation::SetMaterialLayers(), GalaxyAnimation::SetMaterialLayers(), HertzzAnimation::SetMaterialLayers(), InfraredAnimation::SetMaterialLayers(), SammyAnimation::SetMaterialLayers(), SergaliciousAnimation::SetMaterialLayers(), StrawberryAnimation::SetMaterialLayers(), TamamoAnimation::SetMaterialLayers(), TechSaneAnimation::SetMaterialLayers(), WarzoneAnimation::SetMaterialLayers(), Warzone2Animation::SetMaterialLayers(), XenraxAnimation::SetMaterialLayers(), AlphaAnimation::SetMaterialLayers(), GammaAnimation::SetMaterialLayers(), HUB75AnimationSplit::SetMaterialLayers(), WS35AnimationSplit::SetMaterialLayers(), and ProtogenProject::SetMaterialLayers().
Adds a specific frame for a material in the animation.
material | Reference to the material. |
opacity | The opacity value for the frame. |
Referenced by ProtogenProject::AddBackgroundMaterialFrame(), ProtogenProject::AddBackgroundMaterialFrame(), ProtogenProject::AddMaterialFrame(), ProtogenProject::AddMaterialFrame(), AphoriAnimation::Angry(), BasilGardenAnimation::Angry(), InfraredAnimation::Angry(), SammyAnimation::Angry(), TamamoAnimation::Angry(), TechSaneAnimation::Angry(), WarzoneAnimation::Angry(), XenraxAnimation::Angry(), HUB75AnimationSplit::Angry(), WS35AnimationSplit::Angry(), AlphaAnimation::AngryFace(), GammaAnimation::AngryFace(), AlphaAnimation::AudioReactiveGradientDisplay(), AphoriAnimation::AudioReactiveGradientFace(), BasilGardenAnimation::AudioReactiveGradientFace(), BroookAnimation::AudioReactiveGradientFace(), GalaxyAnimation::AudioReactiveGradientFace(), HertzzAnimation::AudioReactiveGradientFace(), InfraredAnimation::AudioReactiveGradientFace(), SammyAnimation::AudioReactiveGradientFace(), SergaliciousAnimation::AudioReactiveGradientFace(), StrawberryAnimation::AudioReactiveGradientFace(), TamamoAnimation::AudioReactiveGradientFace(), TechSaneAnimation::AudioReactiveGradientFace(), Warzone2Animation::AudioReactiveGradientFace(), XenraxAnimation::AudioReactiveGradientFace(), GammaAnimation::AudioReactiveGradientFace(), HUB75AnimationSplit::AudioReactiveGradientFace(), WS35AnimationSplit::AudioReactiveGradientFace(), ProtogenProject::AudioReactiveGradientFace(), BroookAnimation::BadAppleFace(), XenraxAnimation::Battery(), AphoriAnimation::Blush(), Warzone2Animation::Blush(), AphoriAnimation::Boop(), TamamoAnimation::Boop(), XenraxAnimation::Boop(), SergaliciousAnimation::BSOD(), XenraxAnimation::BSOD(), InfraredAnimation::Calm(), AceAnimation::Crash(), BroookAnimation::Dead(), Warzone2Animation::Dead(), AlphaAnimation::Dead(), GammaAnimation::Dead(), InfraredAnimation::Default(), InfraredAnimation::Determination(), BasilGardenAnimation::ForReal(), BroookAnimation::Happy(), InfraredAnimation::Happy(), GalaxyAnimation::HappyRainbow(), BroookAnimation::Heart(), AlphaAnimation::Heart(), GammaAnimation::Heart(), AlphaAnimation::HideAll(), XenraxAnimation::Hypno(), DrGonzoProject::Lewd(), InfraredAnimation::Mad(), AphoriAnimation::OscilloscopeFace(), BasilGardenAnimation::OscilloscopeFace(), BroookAnimation::OscilloscopeFace(), GalaxyAnimation::OscilloscopeFace(), HertzzAnimation::OscilloscopeFace(), InfraredAnimation::OscilloscopeFace(), SammyAnimation::OscilloscopeFace(), SergaliciousAnimation::OscilloscopeFace(), StrawberryAnimation::OscilloscopeFace(), TamamoAnimation::OscilloscopeFace(), TechSaneAnimation::OscilloscopeFace(), Warzone2Animation::OscilloscopeFace(), XenraxAnimation::OscilloscopeFace(), GammaAnimation::OscilloscopeFace(), HUB75AnimationSplit::OscilloscopeFace(), WS35AnimationSplit::OscilloscopeFace(), ProtogenProject::OscilloscopeFace(), GammaAnimation::OwO(), AlphaAnimation::OwO2(), GammaAnimation::OwO2(), BasilGardenAnimation::Rage(), AphoriAnimation::Sad(), BasilGardenAnimation::Sad(), BroookAnimation::Sad(), InfraredAnimation::Sad(), SammyAnimation::Sad(), TechSaneAnimation::Sad(), WarzoneAnimation::Sad(), AlphaAnimation::Sad(), GammaAnimation::Sad(), HUB75AnimationSplit::Sad(), WS35AnimationSplit::Sad(), AphoriAnimation::SetMaterialColor(), BasilGardenAnimation::SetMaterialColor(), BroookAnimation::SetMaterialColor(), GalaxyAnimation::SetMaterialColor(), HertzzAnimation::SetMaterialColor(), SammyAnimation::SetMaterialColor(), SergaliciousAnimation::SetMaterialColor(), StrawberryAnimation::SetMaterialColor(), TamamoAnimation::SetMaterialColor(), TechSaneAnimation::SetMaterialColor(), Warzone2Animation::SetMaterialColor(), XenraxAnimation::SetMaterialColor(), GammaAnimation::SetMaterialColor(), HUB75AnimationSplit::SetMaterialColor(), WS35AnimationSplit::SetMaterialColor(), ProtogenProject::SetMaterialColor(), AlphaAnimation::SpectrumAnalyzerDisplay(), AphoriAnimation::SpectrumAnalyzerFace(), BasilGardenAnimation::SpectrumAnalyzerFace(), BroookAnimation::SpectrumAnalyzerFace(), GalaxyAnimation::SpectrumAnalyzerFace(), HertzzAnimation::SpectrumAnalyzerFace(), InfraredAnimation::SpectrumAnalyzerFace(), SammyAnimation::SpectrumAnalyzerFace(), SergaliciousAnimation::SpectrumAnalyzerFace(), StrawberryAnimation::SpectrumAnalyzerFace(), TamamoAnimation::SpectrumAnalyzerFace(), TechSaneAnimation::SpectrumAnalyzerFace(), Warzone2Animation::SpectrumAnalyzerFace(), XenraxAnimation::SpectrumAnalyzerFace(), GammaAnimation::SpectrumAnalyzerFace(), HUB75AnimationSplit::SpectrumAnalyzerFace(), WS35AnimationSplit::SpectrumAnalyzerFace(), ProtogenProject::SpectrumAnalyzerFace(), Warzone2Animation::Spiral(), InfraredAnimation::Surprised(), SammyAnimation::Surprised(), TechSaneAnimation::Surprised(), WarzoneAnimation::Surprised(), HUB75AnimationSplit::Surprised(), WS35AnimationSplit::Surprised(), AphoriAnimation::Thrilled(), AphoriAnimation::Toast(), BroookAnimation::Upset(), and Warzone2Animation::Upset().
Retrieves the current opacity of a material.
material | Reference to the material. |
Referenced by AceAnimation::Update().
|
overridevirtual |
Retrieves the color at a specific position, considering the blended materials.
position | The 3D position to sample the color. |
normal | The normal vector at the position. |
uvw | UVW coordinates at the position. |
Implements Material.
void SetBaseMaterial | ( | Material::Method | method, |
Material * | material | ||
) |
Sets the base material for the animation.
method | The method of blending for the base material. |
material | Pointer to the base material. |
Referenced by AceAnimation::LinkControlParameters(), DrGonzoProject::LinkControlParameters(), ProtogenProject::SetBaseMaterial(), AphoriAnimation::SetMaterialLayers(), BasilGardenAnimation::SetMaterialLayers(), BroookAnimation::SetMaterialLayers(), GalaxyAnimation::SetMaterialLayers(), HertzzAnimation::SetMaterialLayers(), InfraredAnimation::SetMaterialLayers(), SammyAnimation::SetMaterialLayers(), SergaliciousAnimation::SetMaterialLayers(), StrawberryAnimation::SetMaterialLayers(), TamamoAnimation::SetMaterialLayers(), TechSaneAnimation::SetMaterialLayers(), WarzoneAnimation::SetMaterialLayers(), Warzone2Animation::SetMaterialLayers(), XenraxAnimation::SetMaterialLayers(), AlphaAnimation::SetMaterialLayers(), GammaAnimation::SetMaterialLayers(), HUB75AnimationSplit::SetMaterialLayers(), WS35AnimationSplit::SetMaterialLayers(), and ProtogenProject::SetMaterialLayers().
Updates the animator, advancing the transitions.
Referenced by AceAnimation::Update(), AphoriAnimation::Update(), BasilGardenAnimation::Update(), BroookAnimation::Update(), DrGonzoProject::Update(), GalaxyAnimation::Update(), HertzzAnimation::Update(), InfraredAnimation::Update(), SammyAnimation::Update(), SergaliciousAnimation::Update(), StrawberryAnimation::Update(), TamamoAnimation::Update(), TechSaneAnimation::Update(), WarzoneAnimation::Update(), Warzone2Animation::Update(), XenraxAnimation::Update(), AlphaAnimation::Update(), GammaAnimation::Update(), HUB75AnimationSplit::Update(), WS35AnimationSplit::Update(), and ProtogenProject::UpdateFace().
Indicates if the base material is set.
Definition at line 35 of file MaterialAnimator.h.
|
private |
Combines multiple materials for rendering.
Definition at line 31 of file MaterialAnimator.h.
Tracks the number of materials added.
Definition at line 34 of file MaterialAnimator.h.
|
private |
Holds the materials in the animator.
Definition at line 33 of file MaterialAnimator.h.
|
private |
Animator for easing transitions.
Definition at line 30 of file MaterialAnimator.h.
|
private |
Stores the opacity ratios for each material.
Definition at line 32 of file MaterialAnimator.h.