![]() |
ProtoTracer
1.0
Real-time 3D rendering and animation engine
|
#include <SplatAnimation.h>
Public Member Functions | |
SplatAnimation () | |
void | Update (float ratio) override |
Updates the project state based on the given ratio. | |
void | SelectFace (uint8_t code) |
![]() | |
ProtogenProject (CameraManager *cameras, Controller *controller, uint8_t numObjects, Vector2D camMin, Vector2D camMax, uint8_t microphonePin, uint8_t buttonPin, uint8_t faceCount) | |
Constructs a ProtogenProject instance. | |
void | Initialize () override |
Initializes the ProtogenProject, setting up sensors, menus, and hardware. | |
![]() | |
Project (CameraManager *cameras, Controller *controller, uint8_t numObjects) | |
Constructs a Project with specified camera manager and controller. | |
float | GetAnimationTime () |
Retrieves the time spent on animations. | |
float | GetRenderTime () |
Retrieves the time spent on rendering. | |
float | GetDisplayTime () |
Retrieves the time spent on display operations. | |
float | GetFrameRate () |
Retrieves the current frame rate. | |
void | Animate (float ratio) |
Animates the project state based on the given ratio. | |
void | Render () |
Renders the scene. | |
void | Display () |
Updates the display with the rendered content. | |
void | PrintStats () |
Prints performance statistics such as frame rate and operation times. | |
Private Member Functions | |
void | LinkControlParameters () override |
Links external or user-defined control parameters (pure virtual to be implemented). | |
void | Default () |
void | Angry () |
void | Confused () |
void | Disappointed () |
void | Excited () |
void | FullCircle () |
void | Heart () |
void | HollowCircle () |
void | Sleepy () |
void | SpectrumAnalyzerCallback () override |
Callback invoked when the Spectrum Analyzer face is enabled/updated. | |
void | AudioReactiveGradientCallback () override |
Callback invoked when the Audio Reactive Gradient face is enabled/updated. | |
void | OscilloscopeCallback () override |
Callback invoked when the Oscilloscope face is enabled/updated. | |
Private Attributes | |
HUB75DeltaCameraManager | cameras |
HUB75Controller | controller = HUB75Controller(&cameras, 50, 50) |
SplatFace | pM |
DeltaDisplayBackground | deltaDisplayBackground |
LEDStripBackground | ledStripBackground |
HorizontalRainbow | hRainbow |
const __FlashStringHelper * | faceArray [13] = {F("DEFAULT"), F("ANGRY"), F("CONFUSE"), F("DISAPPO"), F("FCIRCLE"), F("EXCITED"), F("HEART"), F("HCIRCLE"), F("SLEEPY"), F("AUDIO1"), F("AUDIO2"), F("AUDIO3")} |
Additional Inherited Members | |
![]() | |
enum | Color { CBASE , CYELLOW , CORANGE , CWHITE , CGREEN , CPURPLE , CRED , CBLUE , CRAINBOW , CRAINBOWNOISE , CHORIZONTALRAINBOW , CBLACK } |
Enumeration of different color states for the face material. More... | |
![]() | |
void | UpdateFace (float ratio) |
Updates the face's rendered content, reading any user input and applying changes. | |
void | SetCameraMain (Vector2D min, Vector2D max) |
Sets the camera bounds for the main (front) view. | |
void | SetCameraRear (Vector2D min, Vector2D max) |
Sets the camera bounds for the rear view. | |
Transform | GetAlignmentTransform (Vector2D min, Vector2D max, Object3D *obj, float rotation=0.0f, float margin=2.0f) |
Computes a transform for aligning a single Object3D within the given bounds. | |
Transform | GetAlignmentTransform (Vector2D min, Vector2D max, Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f) |
Computes a transform for aligning multiple Object3D objects within the given bounds. | |
void | AlignObject (Vector2D min, Vector2D max, Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns a single Object3D within the given bounds, applying scaling. | |
void | AlignObjects (Vector2D min, Vector2D max, Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns multiple Object3D objects, applying scaling. | |
void | AlignObjectNoScale (Vector2D min, Vector2D max, Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns a single Object3D without scaling. | |
void | AlignObjectsNoScale (Vector2D min, Vector2D max, Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns multiple Object3D objects without scaling. | |
void | AlignObjectFace (Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns a single Object3D to the "face" camera bounds with scaling. | |
void | AlignObjectsFace (Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns multiple Object3D objects to the "face" camera bounds with scaling. | |
void | AlignObjectNoScaleFace (Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns a single Object3D to the "face" camera bounds without scaling. | |
void | AlignObjectsNoScaleFace (Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns multiple Object3D objects to the "face" camera bounds without scaling. | |
void | AlignObjectRear (Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns a single Object3D to the rear camera bounds with scaling. | |
void | AlignObjectsRear (Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns multiple Object3D objects to the rear camera bounds with scaling. | |
void | AlignObjectNoScaleRear (Object3D *obj, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns a single Object3D to the rear camera bounds without scaling. | |
void | AlignObjectsNoScaleRear (Object3D **objects, uint8_t objectCount, float rotation=0.0f, float margin=2.0f, bool mirror=true) |
Aligns multiple Object3D objects to the rear camera bounds without scaling. | |
ObjectAlign * | GetObjectAlign () |
Gets the generic ObjectAlign instance. | |
ObjectAlign * | GetObjectAlignFace () |
Gets the ObjectAlign instance for the face camera. | |
ObjectAlign * | GetObjectAlignRear () |
Gets the ObjectAlign instance for the rear camera. | |
float | GetFaceScale () |
Computes the face scaling based on a user-defined face size. | |
void | AddParameter (uint8_t index, float *parameter, uint16_t transitionFrames, IEasyEaseAnimator::InterpolationMethod interpolationMethod=IEasyEaseAnimator::InterpolationMethod::Overshoot, bool invertDirection=false) |
Adds a parameter to the EasyEaseAnimator for interpolation. | |
void | AddViseme (Viseme::MouthShape visemeName, float *parameter) |
Adds a viseme parameter to the animator (for mouth shapes). | |
void | AddBlinkParameter (float *blinkParameter) |
Adds a float parameter to the blink track for controlling blinking. | |
void | AddParameterFrame (uint16_t ProjectIndex, float target) |
Adds a frame target to a previously added parameter. | |
void | AddMaterial (Material::Method method, Material *material, uint16_t frames=20, float minOpacity=0.0f, float maxOpacity=1.0f) |
Adds a new material to the face's MaterialAnimator with given parameters. | |
void | AddMaterialFrame (Color color, float opacity=0.8f) |
Adds a new material frame to the face's MaterialAnimator from a color enum. | |
void | AddMaterialFrame (Material &material, float opacity=1.0f) |
Adds a new material frame to the face's MaterialAnimator from a Material reference. | |
void | AddBackgroundMaterial (Material::Method method, Material *material, uint16_t frames=20, float minOpacity=0.0f, float maxOpacity=1.0f) |
Adds a new material to the background's MaterialAnimator with given parameters. | |
void | AddBackgroundMaterialFrame (Color color, float opacity=0.8f) |
Adds a material frame to the background from a color enum. | |
void | AddBackgroundMaterialFrame (Material &material, float opacity=1.0f) |
Adds a material frame to the background from a Material reference. | |
void | SpectrumAnalyzerFace () |
Enables the Spectrum Analyzer on the face, updating offsets and calling callbacks. | |
void | AudioReactiveGradientFace () |
Enables the Audio Reactive Gradient on the face, updating offsets and calling callbacks. | |
void | OscilloscopeFace () |
Enables the Oscilloscope on the face, updating offsets and calling callbacks. | |
void | HideFace () |
Hides the face by setting its offset parameter. | |
void | DisableBlinking () |
Disables blinking (pauses and resets the blink track). | |
void | EnableBlinking () |
Enables blinking (resets and plays the blink track). | |
bool | IsBooped () |
Checks if the sensor has detected a boop. | |
Vector3D | GetWiggleOffset () |
Computes and returns a Vector3D offset for a "wiggle" effect using function generators. | |
void | SetWiggleSpeed (float multiplier) |
Sets the overall wiggle speed for both X and Y function generators. | |
void | SetMenuWiggleSpeed (float multiplierX, float multiplierY, float multiplierR) |
Adjusts the menu's wiggle speed along X, Y, and rotation. | |
void | SetMenuOffset (Vector2D offset) |
Sets the menu's position offset. | |
void | SetMenuSize (Vector2D size) |
Sets the menu's size. | |
Material * | GetFaceMaterial () |
Retrieves the current face material animator. | |
Material * | GetBackgroundMaterial () |
Retrieves the current background material animator. | |
![]() | |
void | RenderStartTimer () |
Starts the render timer for measuring render performance. | |
void | RenderEndTimer () |
Stops the render timer and records the elapsed time. | |
![]() | |
EasyEaseAnimator< 60 > | eEA = EasyEaseAnimator<60>(IEasyEaseAnimator::Overshoot, 1.0f, 0.35f) |
Animator that eases parameter transitions. | |
HeadsUpDisplay | hud = HeadsUpDisplay(Vector2D(0.0f, 0.0f), Vector2D(192.0f, 96.0f)) |
Heads-up display (HUD) for the face overlay or additional data. | |
![]() | |
CameraManager * | cameras |
Pointer to the CameraManager for managing cameras. | |
Controller * | controller |
Pointer to the Controller for controlling the display. | |
Scene | scene |
The Scene object representing the rendered environment. | |
RunningAverageFilter< 50 > | avgFPS = RunningAverageFilter<50>(0.05f) |
Running average filter for frame rate calculation. | |
long | previousAnimationTime = 0 |
Time of the previous animation frame in microseconds. | |
long | previousRenderTime = 0 |
Time of the previous render frame in microseconds. | |
long | previousDisplayTime = 0 |
Time of the previous display frame in microseconds. | |
float | fade = 0.0f |
Fade parameter for animations. | |
float | animationTime = 0.0f |
Time spent on animation in milliseconds. | |
float | renderTime = 0.0f |
Time spent on rendering in milliseconds. | |
float | displayTime = 0.0f |
Time spent on display in milliseconds. | |
Definition at line 13 of file SplatAnimation.h.
|
inline |
Definition at line 127 of file SplatAnimation.h.
References ProtogenProject::AddMaterial(), Scene::AddObject(), deltaDisplayBackground, faceArray, ProtogenProject::GetFaceMaterial(), hRainbow, ProtogenProject::hud, ledStripBackground, LinkControlParameters(), pM, Material::Replace, Project::scene, HeadsUpDisplay::SetFaceArray(), ProtogenProject::SetMenuOffset(), ProtogenProject::SetMenuSize(), ProtogenProject::SetMenuWiggleSpeed(), and ProtogenProject::SetWiggleSpeed().
|
inlineprivate |
Definition at line 58 of file SplatAnimation.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::AddParameterFrame(), and ProtogenProject::CRED.
Referenced by SelectFace().
|
inlineoverrideprivatevirtual |
Callback invoked when the Audio Reactive Gradient face is enabled/updated.
This method is pure virtual and must be implemented by the derived class to define custom behavior upon enabling or updating the Audio Reactive Gradient face.
Implements ProtogenProject.
Definition at line 116 of file SplatAnimation.h.
References deltaDisplayBackground, hRainbow, and ledStripBackground.
|
inlineprivate |
Definition at line 64 of file SplatAnimation.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::AddParameterFrame(), and hRainbow.
Referenced by SelectFace().
|
inlineprivate |
Definition at line 51 of file SplatAnimation.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::GetFaceMaterial(), hRainbow, and ledStripBackground.
Referenced by SelectFace().
|
inlineprivate |
Definition at line 72 of file SplatAnimation.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::AddParameterFrame(), and hRainbow.
Referenced by SelectFace().
|
inlineprivate |
Definition at line 79 of file SplatAnimation.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::AddParameterFrame(), and hRainbow.
Referenced by SelectFace().
|
inlineprivate |
Definition at line 86 of file SplatAnimation.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::AddParameterFrame(), and hRainbow.
Referenced by SelectFace().
|
inlineprivate |
Definition at line 92 of file SplatAnimation.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::AddParameterFrame(), and hRainbow.
Referenced by SelectFace().
|
inlineprivate |
Definition at line 99 of file SplatAnimation.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::AddParameterFrame(), and hRainbow.
Referenced by SelectFace().
|
inlineoverrideprivatevirtual |
Links external or user-defined control parameters (pure virtual to be implemented).
Implements ProtogenProject.
Definition at line 24 of file SplatAnimation.h.
References ProtogenProject::AddParameter(), ProtogenProject::AddViseme(), Viseme::AH, Viseme::AR, IEasyEaseAnimator::Cosine, Viseme::EE, Viseme::ER, Viseme::OO, pM, Viseme::SS, and Viseme::UH.
Referenced by SplatAnimation().
|
inlineoverrideprivatevirtual |
Callback invoked when the Oscilloscope face is enabled/updated.
This method is pure virtual and must be implemented by the derived class to define custom behavior upon enabling or updating the Oscilloscope face.
Implements ProtogenProject.
Definition at line 121 of file SplatAnimation.h.
References deltaDisplayBackground, hRainbow, and ledStripBackground.
Definition at line 170 of file SplatAnimation.h.
References Angry(), ProtogenProject::AudioReactiveGradientFace(), Confused(), Default(), Disappointed(), Excited(), FullCircle(), Heart(), HollowCircle(), ProtogenProject::IsBooped(), ProtogenProject::OscilloscopeFace(), Sleepy(), and ProtogenProject::SpectrumAnalyzerFace().
Referenced by Update().
|
inlineprivate |
Definition at line 105 of file SplatAnimation.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::AddParameterFrame(), and ProtogenProject::CBLUE.
Referenced by SelectFace().
|
inlineoverrideprivatevirtual |
Callback invoked when the Spectrum Analyzer face is enabled/updated.
This method is pure virtual and must be implemented by the derived class to define custom behavior upon enabling or updating the Spectrum Analyzer face.
Implements ProtogenProject.
Definition at line 111 of file SplatAnimation.h.
References deltaDisplayBackground, hRainbow, and ledStripBackground.
Updates the project state based on the given ratio.
This method is intended to be overridden by derived classes to define specific update logic for animations or state transitions.
ratio | A float representing the interpolation ratio for updates. |
Implements Project.
Definition at line 148 of file SplatAnimation.h.
References ProtogenProject::AlignObjectFace(), controller, Menu::GetAccentBrightness(), Menu::GetBrightness(), Menu::GetFaceState(), ProtogenProject::GetWiggleOffset(), hRainbow, pM, SelectFace(), HUB75Controller::SetAccentBrightness(), HUB75Controller::SetBrightness(), HorizontalRainbow::Update(), and ProtogenProject::UpdateFace().
|
private |
Definition at line 15 of file SplatAnimation.h.
|
private |
Definition at line 16 of file SplatAnimation.h.
Referenced by Update().
|
private |
Definition at line 18 of file SplatAnimation.h.
Referenced by AudioReactiveGradientCallback(), OscilloscopeCallback(), SpectrumAnalyzerCallback(), and SplatAnimation().
|
private |
Definition at line 22 of file SplatAnimation.h.
Referenced by SplatAnimation().
|
private |
Definition at line 20 of file SplatAnimation.h.
Referenced by AudioReactiveGradientCallback(), Confused(), Default(), Disappointed(), Excited(), FullCircle(), Heart(), HollowCircle(), OscilloscopeCallback(), SpectrumAnalyzerCallback(), SplatAnimation(), and Update().
|
private |
Definition at line 19 of file SplatAnimation.h.
Referenced by AudioReactiveGradientCallback(), Default(), OscilloscopeCallback(), SpectrumAnalyzerCallback(), and SplatAnimation().
|
private |
Definition at line 17 of file SplatAnimation.h.
Referenced by LinkControlParameters(), SplatAnimation(), and Update().