3#include "../Animation.h"
4#include "../KeyFrameTrack.h"
5#include "../EasyEaseAnimator.h"
6#include "../../Morph/NukudeFace.h"
7#include "../../Render/Scene.h"
8#include "../../Materials/GradientMaterial.h"
9#include "../../Materials/SimplexNoise.h"
10#include "../../Signals/FunctionGenerator.h"
11#include "../../Sensors/MicrophoneSimple_MAX9814.h"
12#include "../../Sensors/ButtonHandler.h"
13#include "../../Sensors/BoopSensor.h"
14#include "../../Materials/NormalMaterial.h"
15#include "../../Materials/SpiralMaterial.h"
17#include "../../Materials/CombineMaterial.h"
27 RGBColor noiseSpectrum[4] = {
RGBColor(0, 255, 0),
RGBColor(255, 0, 0),
RGBColor(0, 255, 0),
RGBColor(0, 0, 255)};
38 RGBColor rainbowSpectrum[6] = {
RGBColor(255, 0, 0),
RGBColor(255, 255, 0),
RGBColor(0, 255, 0),
RGBColor(0, 255, 255),
RGBColor(0, 0, 255),
RGBColor(255, 0, 255)};
63 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::Anger), NukudeFace::Anger, 30, 0.0f, 1.0f);
64 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::Sadness), NukudeFace::Sadness, 30, 0.0f, 1.0f);
65 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::Surprised), NukudeFace::Surprised, 30, 0.0f, 1.0f);
66 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::Doubt), NukudeFace::Doubt, 30, 0.0f, 1.0f);
67 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::Frown), NukudeFace::Frown, 30, 0.0f, 1.0f);
68 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::LookUp), NukudeFace::LookUp, 30, 0.0f, 1.0f);
69 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::LookDown), NukudeFace::LookDown, 30, 0.0f, 1.0f);
71 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::vrc_v_ou), NukudeFace::vrc_v_ou, 30, 0.0f, 1.0f);
72 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::vrc_v_ee), NukudeFace::vrc_v_ee, 30, 0.0f, 1.0f);
73 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::vrc_v_ff), NukudeFace::vrc_v_ff, 30, 0.0f, 1.0f);
74 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::vrc_v_aa), NukudeFace::vrc_v_aa, 30, 0.0f, 1.0f);
75 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::vrc_v_nn), NukudeFace::vrc_v_nn, 30, 0.0f, 1.0f);
76 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::vrc_v_dd), NukudeFace::vrc_v_dd, 30, 0.0f, 1.0f);
77 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::vrc_v_ih), NukudeFace::vrc_v_ih, 30, 0.0f, 1.0f);
78 eEA.
AddParameter(
pM.GetMorphWeightReference(NukudeFace::vrc_v_pp), NukudeFace::vrc_v_pp, 30, 0.0f, 1.0f);
115 scene->AddObject(
pM.GetObject());
229 return pM.GetObject();
235 bool isBooped =
boop.isBooped();
245 else if (mode == 1)
Angry();
246 else if (mode == 2)
Doubt();
247 else if (mode == 3)
Frown();
248 else if (mode == 4)
LookUp();
252 pM.SetMorphWeight(NukudeFace::BiggerNose, 1.0f);
253 pM.SetMorphWeight(NukudeFace::MoveEye, 1.0f);
264 float linSweep = ratio > 0.5f ? 1.0f - ratio : ratio;
265 float sShift = linSweep * 0.002f + 0.005f;
278 pM.GetObject()->GetTransform()->SetRotation(
Vector3D(0.0f, 0.0f, 0.0f));
279 pM.GetObject()->GetTransform()->SetPosition(
Vector3D(170.0f + x, 10.0f + y, 600.0f));
280 pM.GetObject()->GetTransform()->SetScale(
Vector3D(-1.0f, 0.625f, 0.7f));
282 pM.GetObject()->UpdateTransform();
Combines multiple materials with specified blending methods and opacities.
A template class for implementing advanced animation easing.
void AddParameterFrame(uint16_t dictionaryValue, float value) override
Adds a single frame value for a parameter.
void Update() override
Updates the animator, advancing all animations.
void SetInterpolationMethod(uint16_t dictionaryValue, InterpolationMethod interpMethod) override
Sets the interpolation method for a specific parameter.
void AddParameter(float *parameter, uint16_t dictionaryValue, uint16_t frames, float basis, float goal) override
Adds a parameter to the animator.
A class to generate various waveform functions with customizable parameters.
float Update()
Updates and calculates the next value of the waveform.
Creates a customizable gradient material for rendering.
void HueShift(float hueDeg)
Shifts the hue of the gradient by a specified degree.
void SetGradientPeriod(float gradientPeriod)
Sets the gradient's period of repetition.
@ Cosine
Smooth cosine interpolation.
A template class for managing animations with multiple parameters and keyframes.
void AddParameter(float *parameter)
Adds a parameter to the track.
void Play()
Resumes the animation.
void AddKeyFrame(float time, float value)
Adds a keyframe to the track.
float Update()
Updates the animation track and computes the new parameter value.
Abstract base class for rendering materials.
@ Lighten
Chooses the lighter color.
@ Replace
Replaces the base color.
A simple class for processing microphone signals.
float Update()
Updates the microphone reading and processes the signal.
Represents a 3D object with geometry, material, and transformation data.
Represents an RGB color and provides methods for manipulation.
A material that applies a single, solid RGB color to surfaces.
A material class for rendering Simplex Noise.
void SetScale(Vector3D noiseScale)
Sets the scale for noise generation.
void SetZPosition(float zPosition)
Sets the Z-position for 3D noise generation.
Generates a spiral pattern with configurable properties.
void SetPositionOffset(Vector2D positionOffset)
Sets the position offset for the spiral.
void SetRotationAngle(float rotationAngle)
Sets the rotation angle for the spiral.
void SetBend(float bend)
Sets the bending factor of the spiral arms.
Represents a 2D vector (X, Y) and provides methods for vector arithmetic.
Represents a 3D vector (X, Y, Z) and provides methods for vector arithmetic.
FunctionGenerator fGenMatYMove
SimpleMaterial redMaterial
void UpdateKeyFrameTracks()
EasyEaseAnimator< 20 > eEA
RGBColor rainbowSpectrum[6]
CombineMaterial noiseMaterial
void ChangeInterpolationMethods()
FunctionGenerator fGenMatPos
FunctionGenerator fGenScale
RGBColor noiseSpectrum[4]
FunctionGenerator fGenRotation
void FadeIn(float stepRatio) override
GradientMaterial gradientMat
void FadeOut(float stepRatio) override
FunctionGenerator fGenMatXMove
SpiralMaterial spiralMaterial
void Update(float ratio) override
Material * faceMaterials[2]
GradientMaterial gNoiseMat
RGBColor gradientSpectrum[2]
FunctionGenerator fGenMatBend
CombineMaterial faceMaterial
Material * noiseMaterials[2]