![]() |
ProtoTracer
1.0
Real-time 3D rendering and animation engine
|
#include <DrGonzoTest.h>
Public Member Functions | |
DrGonzoTest () | |
void | Update (float ratio) override |
Updates the project state based on the given ratio. | |
![]() | |
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. | |
![]() | |
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 () |
Private Attributes | |
HUB75DeltaCameraManager | cameras |
HUB75Controller | controller = HUB75Controller(&cameras, 50, 50) |
NukudeFace | pM |
DrGonzoFace | pM2 |
DeltaDisplayBackground | deltaDisplayBackground |
const __FlashStringHelper * | faceArray [10] = {F("DEFAULT"), F("ANGRY"), F("DOUBT"), F("FROWN"), F("LOOKUP"), F("SAD"), 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 DrGonzoTest.h.
|
inline |
Definition at line 81 of file DrGonzoTest.h.
References Scene::AddObject(), deltaDisplayBackground, faceArray, ProtogenProject::GetFaceMaterial(), ProtogenProject::hud, LinkControlParameters(), pM, Project::scene, HeadsUpDisplay::SetFaceArray(), ProtogenProject::SetMenuOffset(), ProtogenProject::SetMenuSize(), ProtogenProject::SetMenuWiggleSpeed(), and ProtogenProject::SetWiggleSpeed().
|
inlineprivate |
Definition at line 47 of file DrGonzoTest.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::AddParameterFrame(), and ProtogenProject::CRED.
Referenced by Update().
|
inlineprivate |
Definition at line 45 of file DrGonzoTest.h.
Referenced by Update().
|
inlineprivate |
Definition at line 64 of file DrGonzoTest.h.
References ProtogenProject::AddParameterFrame().
Referenced by Update().
|
inlineprivate |
Definition at line 68 of file DrGonzoTest.h.
References ProtogenProject::AddParameterFrame().
Referenced by Update().
|
inlineoverrideprivatevirtual |
Links external or user-defined control parameters (pure virtual to be implemented).
Implements ProtogenProject.
Definition at line 23 of file DrGonzoTest.h.
References ProtogenProject::AddBlinkParameter(), ProtogenProject::AddParameter(), ProtogenProject::AddViseme(), Viseme::AH, Viseme::AR, Viseme::EE, Viseme::ER, Viseme::OO, pM, Viseme::SS, and Viseme::UH.
Referenced by DrGonzoTest().
|
inlineprivate |
Definition at line 76 of file DrGonzoTest.h.
References ProtogenProject::AddParameterFrame().
|
inlineprivate |
Definition at line 72 of file DrGonzoTest.h.
References ProtogenProject::AddParameterFrame().
Referenced by Update().
|
inlineprivate |
Definition at line 52 of file DrGonzoTest.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::AddParameterFrame(), and ProtogenProject::CBLUE.
Referenced by Update().
|
inlineprivate |
Definition at line 58 of file DrGonzoTest.h.
References ProtogenProject::AddMaterialFrame(), ProtogenProject::AddParameterFrame(), and ProtogenProject::CRAINBOW.
Referenced by Update().
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 98 of file DrGonzoTest.h.
References ProtogenProject::AlignObject(), Angry(), ProtogenProject::AudioReactiveGradientFace(), controller, Default(), Doubt(), Frown(), Menu::GetAccentBrightness(), Menu::GetBrightness(), Menu::GetFaceState(), ProtogenProject::GetWiggleOffset(), ProtogenProject::IsBooped(), LookUp(), ProtogenProject::OscilloscopeFace(), pM, Sad(), HUB75Controller::SetAccentBrightness(), HUB75Controller::SetBrightness(), ProtogenProject::SpectrumAnalyzerFace(), Surprised(), and ProtogenProject::UpdateFace().
|
private |
Definition at line 15 of file DrGonzoTest.h.
|
private |
Definition at line 16 of file DrGonzoTest.h.
Referenced by Update().
|
private |
Definition at line 19 of file DrGonzoTest.h.
Referenced by DrGonzoTest().
|
private |
Definition at line 21 of file DrGonzoTest.h.
Referenced by DrGonzoTest().
|
private |
Definition at line 17 of file DrGonzoTest.h.
Referenced by DrGonzoTest(), LinkControlParameters(), and Update().
|
private |
Definition at line 18 of file DrGonzoTest.h.