ProtoTracer  1.0
Real-time 3D rendering and animation engine
Loading...
Searching...
No Matches
AceAnimation Class Reference

#include <AceAnimation.h>

Inheritance diagram for AceAnimation:
Collaboration diagram for AceAnimation:

Public Member Functions

 AceAnimation ()
 
void Update (float ratio) override
 Updates the project state based on the given ratio.
 
- Public Member Functions inherited from ProtogenProject
 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.
 
virtual void SpectrumAnalyzerCallback ()=0
 Callback invoked when the Spectrum Analyzer face is enabled/updated.
 
virtual void AudioReactiveGradientCallback ()=0
 Callback invoked when the Audio Reactive Gradient face is enabled/updated.
 
virtual void OscilloscopeCallback ()=0
 Callback invoked when the Oscilloscope face is enabled/updated.
 
- Public Member Functions inherited from Project
 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 Smirk ()
 
void Blush ()
 
void Content ()
 
void Surprised ()
 
void Seriously ()
 
void Angry ()
 
void Scrunchy ()
 
void Happy ()
 
void Crash ()
 

Private Attributes

WS35SplitCameraManager cameras
 
WS35Controller controller = WS35Controller(&cameras, 50)
 
AceFace pM
 
AceCrash crash
 
AceCrashBackground crashBackground
 
SimpleMaterial lBlueMaterial = SimpleMaterial(RGBColor(0, 25, 32))
 
SimpleMaterial whiteMaterial = SimpleMaterial(RGBColor(255, 255, 255))
 
SimpleMaterial blackMaterial = SimpleMaterial(RGBColor(0, 0, 0))
 
MaterialAnimator< 2 > crashMaterial
 
MaterialAnimator< 2 > crashBackgroundMaterial
 
const __FlashStringHelperfaceArray [12] = {F("DEFAULT"), F("SMIRK"), F("CONTENT"), F("SRPRISE"), F("SRSLY"), F("ANGRY"), F("SCRUNCHY"), F("HAPPY"), F("CRASH"), F("AUDIO1"), F("AUDIO2"), F("AUDIO3")}
 

Additional Inherited Members

- Protected Types inherited from ProtogenProject
enum  Color {
  CBASE , CYELLOW , CORANGE , CWHITE ,
  CGREEN , CPURPLE , CRED , CBLUE ,
  CRAINBOW , CRAINBOWNOISE , CHORIZONTALRAINBOW , CBLACK
}
 Enumeration of different color states for the face material. More...
 
- Protected Member Functions inherited from ProtogenProject
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.
 
ObjectAlignGetObjectAlign ()
 Gets the generic ObjectAlign instance.
 
ObjectAlignGetObjectAlignFace ()
 Gets the ObjectAlign instance for the face camera.
 
ObjectAlignGetObjectAlignRear ()
 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.
 
MaterialGetFaceMaterial ()
 Retrieves the current face material animator.
 
MaterialGetBackgroundMaterial ()
 Retrieves the current background material animator.
 
- Protected Member Functions inherited from Project
void RenderStartTimer ()
 Starts the render timer for measuring render performance.
 
void RenderEndTimer ()
 Stops the render timer and records the elapsed time.
 
- Protected Attributes inherited from ProtogenProject
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.
 
- Protected Attributes inherited from Project
CameraManagercameras
 Pointer to the CameraManager for managing cameras.
 
Controllercontroller
 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.
 

Detailed Description

Definition at line 13 of file AceAnimation.h.

Constructor & Destructor Documentation

◆ AceAnimation()

Member Function Documentation

◆ Angry()

void Angry ( )
inlineprivate

Definition at line 82 of file AceAnimation.h.

References ProtogenProject::AddParameterFrame().

Referenced by Update().

◆ Blush()

void Blush ( )
inlineprivate

◆ Content()

void Content ( )
inlineprivate

Definition at line 69 of file AceAnimation.h.

References ProtogenProject::AddParameterFrame(), and ProtogenProject::DisableBlinking().

Referenced by Update().

◆ Crash()

◆ Default()

void Default ( )
inlineprivate

Definition at line 58 of file AceAnimation.h.

Referenced by Update().

◆ Happy()

void Happy ( )
inlineprivate

Definition at line 91 of file AceAnimation.h.

References ProtogenProject::AddParameterFrame(), and ProtogenProject::DisableBlinking().

Referenced by Update().

◆ LinkControlParameters()

◆ Scrunchy()

void Scrunchy ( )
inlineprivate

Definition at line 86 of file AceAnimation.h.

References ProtogenProject::AddParameterFrame(), and ProtogenProject::DisableBlinking().

Referenced by Update().

◆ Seriously()

void Seriously ( )
inlineprivate

Definition at line 78 of file AceAnimation.h.

References ProtogenProject::AddParameterFrame().

Referenced by Update().

◆ Smirk()

void Smirk ( )
inlineprivate

Definition at line 60 of file AceAnimation.h.

References ProtogenProject::AddParameterFrame().

Referenced by Update().

◆ Surprised()

void Surprised ( )
inlineprivate

Definition at line 74 of file AceAnimation.h.

References ProtogenProject::AddParameterFrame().

Referenced by Update().

◆ Update()

Member Data Documentation

◆ blackMaterial

SimpleMaterial blackMaterial = SimpleMaterial(RGBColor(0, 0, 0))
private

Definition at line 24 of file AceAnimation.h.

Referenced by LinkControlParameters().

◆ cameras

WS35SplitCameraManager cameras
private

Definition at line 15 of file AceAnimation.h.

◆ controller

WS35Controller controller = WS35Controller(&cameras, 50)
private

Definition at line 16 of file AceAnimation.h.

Referenced by Update().

◆ crash

AceCrash crash
private

Definition at line 19 of file AceAnimation.h.

Referenced by AceAnimation(), and Update().

◆ crashBackground

AceCrashBackground crashBackground
private

Definition at line 20 of file AceAnimation.h.

Referenced by AceAnimation(), and Update().

◆ crashBackgroundMaterial

MaterialAnimator<2> crashBackgroundMaterial
private

Definition at line 27 of file AceAnimation.h.

Referenced by AceAnimation(), Crash(), LinkControlParameters(), and Update().

◆ crashMaterial

MaterialAnimator<2> crashMaterial
private

Definition at line 26 of file AceAnimation.h.

Referenced by AceAnimation(), Crash(), LinkControlParameters(), and Update().

◆ faceArray

const __FlashStringHelper* faceArray[12] = {F("DEFAULT"), F("SMIRK"), F("CONTENT"), F("SRPRISE"), F("SRSLY"), F("ANGRY"), F("SCRUNCHY"), F("HAPPY"), F("CRASH"), F("AUDIO1"), F("AUDIO2"), F("AUDIO3")}
private

Definition at line 29 of file AceAnimation.h.

Referenced by AceAnimation().

◆ lBlueMaterial

SimpleMaterial lBlueMaterial = SimpleMaterial(RGBColor(0, 25, 32))
private

Definition at line 22 of file AceAnimation.h.

Referenced by Crash(), LinkControlParameters(), and Update().

◆ pM

AceFace pM
private

Definition at line 18 of file AceAnimation.h.

Referenced by AceAnimation(), LinkControlParameters(), and Update().

◆ whiteMaterial

SimpleMaterial whiteMaterial = SimpleMaterial(RGBColor(255, 255, 255))
private

Definition at line 23 of file AceAnimation.h.

Referenced by Crash(), LinkControlParameters(), and Update().


The documentation for this class was generated from the following file: