Program Listing for File SceneParameterObjects.h
↰ Return to documentation for file (SPlisHSPlasH/Utilities/SceneParameterObjects.h)
#ifndef __SceneParameterObjects_h__
#define __SceneParameterObjects_h__
#include "SPlisHSPlasH/Common.h"
#include <vector>
#include <array>
#include "ParameterObject.h"
namespace Utilities
{
class FluidBlockParameterObject : public GenParam::ParameterObject
{
public:
std::string id;
Vector3r boxMin;
Vector3r boxMax;
Vector3r translation;
Vector3r scale;
std::string visMeshFile;
unsigned char mode;
Vector3r initialVelocity;
Vector3r initialAngularVelocity;
FluidBlockParameterObject()
{
// Default values
id = "Fluid";
visMeshFile = "";
boxMin = Vector3r::Zero();
boxMax = Vector3r::Zero();
mode = 0;
translation = Vector3r::Zero();
scale = Vector3r::Ones();
initialVelocity = Vector3r::Zero();
initialAngularVelocity = Vector3r::Zero();
}
FluidBlockParameterObject(std::string id_, std::string visMeshFile_, Vector3r boxMin_, Vector3r boxMax_, unsigned char mode_, Vector3r translation_, Vector3r scale_,
Vector3r initialVelocity_, Vector3r initialAngularVelocity_)
{
// Default values
id = id_;
boxMin = boxMin_;
boxMax = boxMax_;
translation = translation_;
scale = scale_;
visMeshFile = visMeshFile_;
mode = mode_;
initialVelocity = initialVelocity_;
initialAngularVelocity = initialAngularVelocity_;
}
static int FLUID_BLOCK_ID;
static int FLUID_BLOCK_BOX_MINX;
static int FLUID_BLOCK_BOX_MAXX;
static int FLUID_BLOCK_TRANSLATION;
static int FLUID_BLOCK_SCALE;
static int FLUID_BLOCK_VISMESH;
static int FLUID_BLOCK_MODE;
static int FLUID_BLOCK_INITIAL_VEL;
static int FLUID_BLOCK_INITIAL_ANGVEL;
virtual void initParameters();
};
class FluidModelParameterObject : public GenParam::ParameterObject
{
public:
std::string id;
std::string visMeshFile;
std::string samplesFile;
Vector3r translation;
Vector3r scale;
unsigned char mode;
Vector3r initialVelocity;
Vector3r initialAngularVelocity;
Vector3r axis;
Real angle;
bool invert;
std::array<unsigned int, 3> resolutionSDF;
FluidModelParameterObject()
{
// Default values
id = "Fluid";
translation = Vector3r::Zero();
axis = Vector3r(1, 0, 0);
angle = 0.0;
samplesFile = "";
invert = false;
resolutionSDF = { 20, 20, 20 };
scale = Vector3r::Ones();
visMeshFile = "";
mode = 0;
initialVelocity = Vector3r::Zero();
initialAngularVelocity = Vector3r::Zero();
}
FluidModelParameterObject(std::string id_, std::string visMeshFile_, std::string samplesFile_, Vector3r translation_, Vector3r axis_, Real angle_, Vector3r scale_,
Vector3r initialVelocity_, Vector3r initialAngularVelocity_, unsigned char mode_, bool invert_, std::array<unsigned int, 3> resolutionSDF_)
{
// Default values
id = id_;
translation = translation_;
axis = axis_;
angle = angle_;
samplesFile = samplesFile_;
invert = invert_;
resolutionSDF = resolutionSDF_;
scale = scale_;
visMeshFile = visMeshFile_;
mode = mode_;
initialVelocity = initialVelocity_;
initialAngularVelocity = initialAngularVelocity_;
}
static int FLUID_MODEL_ID;
static int FLUID_MODEL_TRANSLATION;
static int FLUID_MODEL_SCALE;
static int FLUID_MODEL_VISMESH;
static int FLUID_MODEL_MODE;
static int FLUID_MODEL_INITIAL_VEL;
static int FLUID_MODEL_INITIAL_ANGVEL;
static int FLUID_MODEL_SAMPLES_FILE;
static int FLUID_MODEL_ROTAXIS;
static int FLUID_MODEL_ROTANGLE;
static int FLUID_MODEL_INVERT;
static int FLUID_MODEL_RESSDF;
virtual void initParameters();
};
class EmitterParameterObject : public GenParam::ParameterObject
{
public:
std::string id;
unsigned int width;
unsigned int height;
Vector3r x;
Real velocity; // emission velocity
Vector3r axis;
Real angle;
Real emitStartTime;
Real emitEndTime;
unsigned int type; // type: 0 = rectangular, 1 = circle
EmitterParameterObject()
{
// Default values
id = "Fluid";
width = 5;
height = 5;
x = Vector3r::Zero();
velocity = 1.0;
axis = Vector3r(0, 0, 1);
angle = 0.0;
emitStartTime = 0.0;
emitEndTime = std::numeric_limits<Real>::max();
type = 0;
}
EmitterParameterObject(std::string id_, unsigned int width_, unsigned int height_, Vector3r x_, Real velocity_, Vector3r axis_,
Real angle_, Real emitStartTime_, Real emitEndTime_, unsigned int type_)
{
id = id_;
width = width_;
height = height_;
x = x_;
velocity = velocity_;
axis = axis_;
angle = angle_;
emitStartTime = emitStartTime_;
emitEndTime = emitEndTime_;
type = type_;
}
static int EMITTER_ID;
static int EMITTER_WIDTH;
static int EMITTER_HEIGHT;
static int EMITTER_POSITION;
static int EMITTER_VELOCITY;
static int EMITTER_ROTAXIS;
static int EMITTER_ROTANGLE;
static int EMITTER_STARTTIME;
static int EMITTER_ENDTIME;
static int EMITTER_TYPE;
virtual void initParameters();
};
class AnimationFieldParameterObject : public GenParam::ParameterObject
{
public:
std::string particleFieldName;
std::string expression[3];
unsigned int shapeType;
Vector3r translation;
Vector3r axis;
Real angle;
Vector3r scale;
Real startTime;
Real endTime;
AnimationFieldParameterObject()
{
// Default values
particleFieldName = "";
expression[0] = "";
expression[1] = "";
expression[2] = "";
// 0=Box, 1=Cylinder
shapeType = 0;
// time when emission starts and stops
startTime = 0;
endTime = std::numeric_limits<Real>::max();
scale = Vector3r::Ones();
// shape position
translation = Vector3r::Zero();
// rotation
// default direction without rotation is +x
axis = Vector3r(1.0, 0.0, 0.0);
angle = 0.0;
}
AnimationFieldParameterObject(std::string particleFieldName_, std::string expressionX_, std::string expressionY_, std::string expressionZ_,
unsigned int shapeType_, Vector3r translation_, Vector3r axis_, Real angle_, Vector3r scale_, Real startTime_, Real endTime_)
{
particleFieldName = particleFieldName_;
expression[0] = expressionX_;
expression[1] = expressionY_;
expression[2] = expressionZ_;
shapeType = shapeType_;
startTime = startTime_;
endTime = endTime_;
scale = scale_;
translation = translation_;
axis = axis_;
angle = angle_;
}
static int ANIMATIONFIELD_PARTICLE_FIELD;
static int ANIMATIONFIELD_EXPR_X;
static int ANIMATIONFIELD_EXPR_Y;
static int ANIMATIONFIELD_EXPR_Z;
static int ANIMATIONFIELD_SHAPETYPE;
static int ANIMATIONFIELD_TRANSLATION;
static int ANIMATIONFIELD_ROTAXIS;
static int ANIMATIONFIELD_ROTANGLE;
static int ANIMATIONFIELD_SCALE;
static int ANIMATIONFIELD_STARTTIME;
static int ANIMATIONFIELD_ENDTIME;
virtual void initParameters();
};
class MaterialParameterObject : public GenParam::ParameterObject
{
public:
std::string id;
std::string colorField;
unsigned int colorMapType;
Real minVal;
Real maxVal;
bool visible;
unsigned int maxEmitterParticles;
bool emitterReuseParticles;
Vector3r emitterBoxMin;
Vector3r emitterBoxMax;
MaterialParameterObject()
{
// Default values
id = "Fluid";
minVal = 0.0;
maxVal = 10.0;
visible = true;
colorField = "velocity";
colorMapType = 1;
maxEmitterParticles = 10000;
emitterReuseParticles = false;
emitterBoxMin = Vector3r(-1.0, -1.0, -1.0);
emitterBoxMax = Vector3r(1.0, 1.0, 1.0);
}
MaterialParameterObject(std::string id_, std::string colorField_, unsigned int colorMapType_, Real minVal_, Real maxVal_, bool visible_,
unsigned int maxEmitterParticles_, bool emitterReuseParticles_, Vector3r emitterBoxMin_, Vector3r emitterBoxMax_)
{
id = id_;
minVal = minVal_;
maxVal = maxVal_;
visible = visible_;
colorField = colorField_;
colorMapType = colorMapType_;
maxEmitterParticles = maxEmitterParticles_;
emitterReuseParticles = emitterReuseParticles_;
emitterBoxMin = emitterBoxMin_;
emitterBoxMax = emitterBoxMax_;
}
static int MATERIAL_ID;
static int MATERIAL_MIN_VAL;
static int MATERIAL_MAX_VAL;
static int MATERIAL_VISIBLE;
static int MATERIAL_COLOR_FIELD;
static int MATERIAL_COLOR_MAP;
static int MATERIAL_MAX_EMITTER_PARTICLES;
static int MATERIAL_EMITTER_REUSE;
static int MATERIAL_EMITTER_BOX_MIN;
static int MATERIAL_EMITTER_BOX_MAX;
virtual void initParameters();
};
class BoundaryParameterObject : public GenParam::ParameterObject
{
public:
std::string samplesFile;
std::string meshFile;
Vector3r translation;
Vector3r axis;
Real angle;
Vector3r scale;
bool dynamic;
bool isWall;
Vector4r color;
std::string mapFile;
bool mapInvert;
Real mapThickness;
Eigen::Matrix<unsigned int, 3, 1, Eigen::DontAlign> mapResolution;
unsigned int samplingMode;
bool isAnimated;
BoundaryParameterObject()
{
// Default values
samplesFile = "";
meshFile = "";
translation = Vector3r::Zero();
axis = Vector3r(1, 0, 0);
angle = 0.0;
scale = Vector3r::Ones();
dynamic = false;
isWall = false;
color = Vector4r(1.0, 0.0, 0.0, 0.0);
samplingMode = 0;
isAnimated = false;
// Maps
mapFile = "";
mapInvert = false;
mapThickness = 0.0;
mapResolution = Eigen::Matrix<unsigned int, 3, 1>(20, 20, 20);
}
BoundaryParameterObject(std::string samplesFile_, std::string meshFile_, Vector3r translation_, Vector3r axis_, Real angle_, Vector3r scale_,
bool dynamic_, bool isWall_, Vector4r color_, std::string mapFile_, bool mapInvert_,
Real mapThickness_, Eigen::Matrix<unsigned int, 3, 1, Eigen::DontAlign> mapResolution_, unsigned int samplingMode_, bool isAnimated_)
{
samplesFile = samplesFile_;
meshFile = meshFile_;
translation = translation_;
axis = axis_;
angle = angle_;
scale = scale_;
dynamic = dynamic_;
isWall = isWall_;
color = color_;
samplingMode = samplingMode_;
isAnimated = isAnimated_;
// Maps
mapFile = mapFile_;
mapInvert = mapInvert_;
mapThickness = mapThickness_;
mapResolution = mapResolution_;
}
static int BOUNDARY_SAMPLES_FILE;
static int BOUNDARY_MESH_FILE;
static int BOUNDARY_TRANSLATION;
static int BOUNDARY_AXIS;
static int BOUNDARY_ANGLE;
static int BOUNDARY_SCALE;
static int BOUNDARY_DYNAMIC;
static int BOUNDARY_IS_WALL;
static int BOUNDARY_COLOR;
static int BOUNDARY_MAP_FILE;
static int BOUNDARY_MAP_INVERT;
static int BOUNDARY_MAP_THICKNESS;
static int BOUNDARY_MAP_RESOLUTION;
static int BOUNDARY_SAMPLING_MODE;
static int BOUNDARY_IS_ANIMATED;
virtual void initParameters();
};
}
#endif