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

#include <ProtogenHUB75Project.h>

Inheritance diagram for ProtogenHUB75Project:
Collaboration diagram for ProtogenHUB75Project:

Public Member Functions

 ProtogenHUB75Project ()
 
void Update (float ratio) override
 Updates the project state based on the given ratio.
 
void SelectFace (uint8_t code)
 
void SelectFaceFromMorse (uint8_t code)
 
- 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.
 
- 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 Angry ()
 
void Sad ()
 
void Surprised ()
 
void Doubt ()
 
void Frown ()
 
void LookUp ()
 
void LookDown ()
 
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)
 
NukudeFace pM
 
DeltaDisplayBackground deltaDisplayBackground
 
const __FlashStringHelperfaceArray [10] = {F("DEFAULT"), F("ANGRY"), F("DOUBT"), F("FROWN"), F("LOOKUP"), F("SAD"), 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 10 of file ProtogenHUB75Project.h.

Constructor & Destructor Documentation

◆ ProtogenHUB75Project()

Member Function Documentation

◆ Angry()

◆ AudioReactiveGradientCallback()

void AudioReactiveGradientCallback ( )
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 80 of file ProtogenHUB75Project.h.

References ProtogenProject::AddMaterialFrame(), and ProtogenProject::CHORIZONTALRAINBOW.

◆ Default()

void Default ( )
inlineprivate

Definition at line 41 of file ProtogenHUB75Project.h.

Referenced by SelectFace(), and SelectFaceFromMorse().

◆ Doubt()

void Doubt ( )
inlineprivate

Definition at line 60 of file ProtogenHUB75Project.h.

References ProtogenProject::AddParameterFrame().

Referenced by SelectFace(), and SelectFaceFromMorse().

◆ Frown()

void Frown ( )
inlineprivate

Definition at line 64 of file ProtogenHUB75Project.h.

References ProtogenProject::AddParameterFrame().

Referenced by SelectFace(), and SelectFaceFromMorse().

◆ LinkControlParameters()

void LinkControlParameters ( )
inlineoverrideprivatevirtual

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

Implements ProtogenProject.

Definition at line 19 of file ProtogenHUB75Project.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 ProtogenHUB75Project().

◆ LookDown()

void LookDown ( )
inlineprivate

Definition at line 72 of file ProtogenHUB75Project.h.

References ProtogenProject::AddParameterFrame().

Referenced by SelectFaceFromMorse().

◆ LookUp()

void LookUp ( )
inlineprivate

Definition at line 68 of file ProtogenHUB75Project.h.

References ProtogenProject::AddParameterFrame().

Referenced by SelectFace(), and SelectFaceFromMorse().

◆ OscilloscopeCallback()

void OscilloscopeCallback ( )
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 84 of file ProtogenHUB75Project.h.

References ProtogenProject::AddMaterialFrame(), and ProtogenProject::CHORIZONTALRAINBOW.

◆ Sad()

◆ SelectFace()

◆ SelectFaceFromMorse()

◆ SpectrumAnalyzerCallback()

void SpectrumAnalyzerCallback ( )
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 76 of file ProtogenHUB75Project.h.

References ProtogenProject::AddMaterialFrame(), and ProtogenProject::CHORIZONTALRAINBOW.

◆ Surprised()

◆ Update()

void Update ( float  ratio)
inlineoverridevirtual

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.

Parameters
ratioA float representing the interpolation ratio for updates.

Implements Project.

Definition at line 106 of file ProtogenHUB75Project.h.

References ProtogenProject::AlignObjectFace(), controller, Menu::GetAccentBrightness(), Menu::GetBrightness(), Menu::GetFaceState(), ProtogenProject::GetWiggleOffset(), pM, SelectFace(), SelectFaceFromMorse(), HUB75Controller::SetAccentBrightness(), HUB75Controller::SetBrightness(), and ProtogenProject::UpdateFace().

Member Data Documentation

◆ cameras

HUB75DeltaCameraManager cameras
private

Definition at line 12 of file ProtogenHUB75Project.h.

◆ controller

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

Definition at line 13 of file ProtogenHUB75Project.h.

Referenced by Update().

◆ deltaDisplayBackground

DeltaDisplayBackground deltaDisplayBackground
private

Definition at line 15 of file ProtogenHUB75Project.h.

Referenced by ProtogenHUB75Project().

◆ faceArray

const __FlashStringHelper* faceArray[10] = {F("DEFAULT"), F("ANGRY"), F("DOUBT"), F("FROWN"), F("LOOKUP"), F("SAD"), F("AUDIO1"), F("AUDIO2"), F("AUDIO3")}
private

Definition at line 17 of file ProtogenHUB75Project.h.

Referenced by ProtogenHUB75Project().

◆ pM

NukudeFace pM
private

Definition at line 14 of file ProtogenHUB75Project.h.

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


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