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

#include <UnicornZhenjaAnimation.h>

Inheritance diagram for UnicornZhenjaAnimation:
Collaboration diagram for UnicornZhenjaAnimation:

Public Member Functions

 UnicornZhenjaAnimation ()
 
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 Upset ()
 
void Salty ()
 
void Sleepy ()
 
void Sad ()
 
void Loading ()
 
void Dizzy ()
 
void Heart ()
 
void Dead ()
 
void Pupil ()
 
void Static ()
 

Private Attributes

HUB75DeltaCameraManager cameras
 
HUB75Controller controller = HUB75Controller(&cameras, 50, 50)
 
UnicornZhenja pM
 
DeltaDisplayBackground deltaDisplayBackground
 
TVStatic tvStatic
 
HorizontalRainbow horizontalRainbow
 
const __FlashStringHelperfaceArray [14] = {F("DEFAULT"), F("UPSET"), F("SALTY"), F("SLEEPY"), F("SAD"), F("LOADING"), F("DIZZY"), F("HEART"), F("DEAD"), F("PUPIL"), F("STATIC"), 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 12 of file UnicornZhenjaAnimation.h.

Constructor & Destructor Documentation

◆ UnicornZhenjaAnimation()

Member Function Documentation

◆ Dead()

void Dead ( )
inlineprivate

◆ Default()

void Default ( )
inlineprivate

◆ Dizzy()

void Dizzy ( )
inlineprivate

◆ Heart()

void Heart ( )
inlineprivate

◆ LinkControlParameters()

void LinkControlParameters ( )
inlineoverrideprivatevirtual

Links external or user-defined control parameters (pure virtual to be implemented).

Implements ProtogenProject.

Definition at line 24 of file UnicornZhenjaAnimation.h.

References ProtogenProject::AddBlinkParameter(), ProtogenProject::AddParameter(), ProtogenProject::AddViseme(), Viseme::AH, Viseme::AR, IEasyEaseAnimator::Cosine, Viseme::EE, Viseme::ER, Viseme::OO, pM, Viseme::SS, and Viseme::UH.

Referenced by UnicornZhenjaAnimation().

◆ Loading()

void Loading ( )
inlineprivate

◆ Pupil()

void Pupil ( )
inlineprivate

◆ Sad()

void Sad ( )
inlineprivate

◆ Salty()

void Salty ( )
inlineprivate

◆ Sleepy()

void Sleepy ( )
inlineprivate

◆ Static()

◆ Update()

void Update ( float  ratio)
inlineoverridevirtual

◆ Upset()

void Upset ( )
inlineprivate

Member Data Documentation

◆ cameras

HUB75DeltaCameraManager cameras
private

Definition at line 14 of file UnicornZhenjaAnimation.h.

◆ controller

HUB75Controller controller = HUB75Controller(&cameras, 50, 50)
private

Definition at line 15 of file UnicornZhenjaAnimation.h.

Referenced by Update().

◆ deltaDisplayBackground

DeltaDisplayBackground deltaDisplayBackground
private

Definition at line 17 of file UnicornZhenjaAnimation.h.

Referenced by UnicornZhenjaAnimation().

◆ faceArray

const __FlashStringHelper* faceArray[14] = {F("DEFAULT"), F("UPSET"), F("SALTY"), F("SLEEPY"), F("SAD"), F("LOADING"), F("DIZZY"), F("HEART"), F("DEAD"), F("PUPIL"), F("STATIC"), F("AUDIO1"), F("AUDIO2"), F("AUDIO3")}
private

Definition at line 22 of file UnicornZhenjaAnimation.h.

Referenced by UnicornZhenjaAnimation().

◆ horizontalRainbow

HorizontalRainbow horizontalRainbow
private

◆ pM

UnicornZhenja pM
private

Definition at line 16 of file UnicornZhenjaAnimation.h.

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

◆ tvStatic

TVStatic tvStatic
private

Definition at line 18 of file UnicornZhenjaAnimation.h.

Referenced by Static(), UnicornZhenjaAnimation(), and Update().


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