14 #include <unordered_map>
19 using std::unordered_map;
109 return mTotalCellsHigh;
129 return mResXParticle;
133 return mResYParticle;
137 return mResZParticle;
169 return mUpresParticle;
207 return mGuideVelocityX;
211 return mGuideVelocityY;
215 return mGuideVelocityZ;
381 return mPhiObsStaticIn;
393 return mPhiOutStaticIn;
410 return (mMeshNodes && !mMeshNodes->empty()) ? mMeshNodes->size() : 0;
414 return (mMeshNodes && !mMeshNodes->empty()) ? mMeshNodes->size() : 0;
418 return (mMeshTriangles && !mMeshTriangles->empty()) ? mMeshTriangles->size() : 0;
424 if (mMeshNodes && !mMeshNodes->empty()) {
425 assert(i < mMeshNodes->
size());
426 return (*mMeshNodes)[i].pos[0];
433 if (mMeshNodes && !mMeshNodes->empty()) {
434 assert(i < mMeshNodes->
size());
435 return (*mMeshNodes)[i].pos[1];
442 if (mMeshNodes && !mMeshNodes->empty()) {
443 assert(i < mMeshNodes->
size());
444 return (*mMeshNodes)[i].pos[2];
452 if (mMeshNodes && !mMeshNodes->empty()) {
453 assert(i < mMeshNodes->
size());
454 return (*mMeshNodes)[i].normal[0];
461 if (mMeshNodes && !mMeshNodes->empty()) {
462 assert(i < mMeshNodes->
size());
463 return (*mMeshNodes)[i].normal[1];
470 if (mMeshNodes && !mMeshNodes->empty()) {
471 assert(i < mMeshNodes->
size());
472 return (*mMeshNodes)[i].normal[2];
480 if (mMeshTriangles && !mMeshTriangles->empty()) {
481 assert(i < mMeshTriangles->
size());
482 return (*mMeshTriangles)[i].c[0];
489 if (mMeshTriangles && !mMeshTriangles->empty()) {
490 assert(i < mMeshTriangles->
size());
491 return (*mMeshTriangles)[i].c[1];
498 if (mMeshTriangles && !mMeshTriangles->empty()) {
499 assert(i < mMeshTriangles->
size());
500 return (*mMeshTriangles)[i].c[2];
508 if (mMeshVelocities && !mMeshVelocities->empty()) {
509 assert(i < mMeshVelocities->
size());
510 return (*mMeshVelocities)[i].pos[0];
517 if (mMeshVelocities && !mMeshVelocities->empty()) {
518 assert(i < mMeshVelocities->
size());
519 return (*mMeshVelocities)[i].pos[1];
526 if (mMeshVelocities && !mMeshVelocities->empty()) {
527 assert(i < mMeshVelocities->
size());
528 return (*mMeshVelocities)[i].pos[2];
537 if (mFlipParticleData && !mFlipParticleData->empty()) {
538 assert(i < mFlipParticleData->
size());
539 return (*mFlipParticleData)[i].flag;
546 if (mParticleData && !mParticleData->empty()) {
547 assert(i < mParticleData->
size());
548 return (*mParticleData)[i].flag;
556 if (mFlipParticleData && !mFlipParticleData->empty()) {
557 assert(i < mFlipParticleData->
size());
558 return (*mFlipParticleData)[i].pos[0];
565 if (mFlipParticleData && !mFlipParticleData->empty()) {
566 assert(i < mFlipParticleData->
size());
567 return (*mFlipParticleData)[i].pos[1];
574 if (mFlipParticleData && !mFlipParticleData->empty()) {
575 assert(i < mFlipParticleData->
size());
576 return (*mFlipParticleData)[i].pos[2];
584 if (mParticleData && !mParticleData->empty()) {
585 assert(i < mParticleData->
size());
586 return (*mParticleData)[i].pos[0];
593 if (mParticleData && !mParticleData->empty()) {
594 assert(i < mParticleData->
size());
595 return (*mParticleData)[i].pos[1];
602 if (mParticleData && !mParticleData->empty()) {
603 assert(i < mParticleData->
size());
604 return (*mParticleData)[i].pos[2];
612 if (mFlipParticleVelocity && !mFlipParticleVelocity->empty()) {
613 assert(i < mFlipParticleVelocity->
size());
614 return (*mFlipParticleVelocity)[i].pos[0];
621 if (mFlipParticleVelocity && !mFlipParticleVelocity->empty()) {
622 assert(i < mFlipParticleVelocity->
size());
623 return (*mFlipParticleVelocity)[i].pos[1];
630 if (mFlipParticleVelocity && !mFlipParticleVelocity->empty()) {
631 assert(i < mFlipParticleVelocity->
size());
632 return (*mFlipParticleVelocity)[i].pos[2];
640 if (mParticleVelocity && !mParticleVelocity->empty()) {
641 assert(i < mParticleVelocity->
size());
642 return (*mParticleVelocity)[i].pos[0];
649 if (mParticleVelocity && !mParticleVelocity->empty()) {
650 assert(i < mParticleVelocity->
size());
651 return (*mParticleVelocity)[i].pos[1];
658 if (mParticleVelocity && !mParticleVelocity->empty()) {
659 assert(i < mParticleVelocity->
size());
660 return (*mParticleVelocity)[i].pos[2];
667 return (mFlipParticleData && !mFlipParticleData->empty()) ?
668 (
float *)&mFlipParticleData->front() :
673 return (mParticleData && !mParticleData->empty()) ? (
float *)&mParticleData->front() :
nullptr;
678 return (mFlipParticleVelocity && !mFlipParticleVelocity->empty()) ?
679 (
float *)&mFlipParticleVelocity->front() :
684 return (mParticleVelocity && !mParticleVelocity->empty()) ?
685 (
float *)&mParticleVelocity->front() :
690 return (mParticleLife && !mParticleLife->empty()) ? (
float *)&mParticleLife->front() :
nullptr;
695 return (mFlipParticleData && !mFlipParticleData->empty()) ? mFlipParticleData->size() : 0;
699 return (mParticleData && !mParticleData->empty()) ? mParticleData->size() : 0;
704 return mFlipFromFile;
708 return mMeshFromFile;
712 return mParticlesFromFile;
725 size_t mTotalCellsHigh;
726 size_t mTotalCellsMesh;
727 size_t mTotalCellsParticles;
729 unordered_map<string, string> mRNAMap;
732 const int mCurrentID;
739 bool mUsingFractions;
744 bool mUsingDiffusion;
745 bool mUsingViscosity;
756 bool mParticlesFromFile;
786 float *mGuideVelocityX;
787 float *mGuideVelocityY;
788 float *mGuideVelocityZ;
836 float *mPhiObsStaticIn;
839 float *mPhiOutStaticIn;
861 void initializeMantaflow();
862 void terminateMantaflow();
864 string getRealValue(
const string &varName);
865 string parseLine(
const string &line);
866 string parseScript(
const string &setup_string,
FluidModifierData *fmd =
nullptr);
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a vector
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
bool exportSmokeScript(struct FluidModifierData *fmd)
float * getFlipParticleData()
int getTriangleXAt(int i)
float * getFlipParticleVelocity()
float * getGuideVelocityZ()
float getVertexZAt(int i)
float getFlipParticlePositionXAt(int i)
float * getGuideVelocityX()
bool bakeNoise(FluidModifierData *fmd, int framenr)
bool writeNoise(FluidModifierData *fmd, int framenr)
float getSndParticlePositionXAt(int i)
bool initFireHigh(struct FluidModifierData *fmd=nullptr)
bool hasNoise(FluidModifierData *fmd, int framenr)
bool exportLiquidScript(struct FluidModifierData *fmd)
bool readData(FluidModifierData *fmd, int framenr, bool resumable)
int getNumFlipParticles()
bool initOutflow(FluidModifierData *fmd=nullptr)
float getNormalZAt(int i)
float * getGuideVelocityY()
float getSndParticleVelocityYAt(int i)
bool writeConfiguration(FluidModifierData *fmd, int framenr)
float getSndParticleVelocityXAt(int i)
int getSndParticleFlagAt(int i)
float * getPhiObsStaticIn()
bool initFire(struct FluidModifierData *fmd=nullptr)
bool writeData(FluidModifierData *fmd, int framenr)
float getVertVelXAt(int i)
float getSndParticlePositionZAt(int i)
float getVertVelYAt(int i)
float getFlipParticleVelocityYAt(int i)
bool needsRealloc(FluidModifierData *fmd)
bool readParticles(FluidModifierData *fmd, int framenr, bool resumable)
bool readMesh(FluidModifierData *fmd, int framenr)
bool readGuiding(FluidModifierData *fmd, int framenr, bool sourceDomain)
bool initLiquidViscosity(FluidModifierData *fmd=nullptr)
float getSndParticlePositionYAt(int i)
bool bakeMesh(FluidModifierData *fmd, int framenr)
bool initLiquid(FluidModifierData *fmd=nullptr)
bool initFractions(FluidModifierData *fmd=nullptr)
bool initLiquidMesh(FluidModifierData *fmd=nullptr)
float getVertexXAt(int i)
bool hasMesh(FluidModifierData *fmd, int framenr)
float * getSndParticleVelocity()
int getTriangleZAt(int i)
float getNormalXAt(int i)
bool initGuiding(FluidModifierData *fmd=nullptr)
bool readConfiguration(FluidModifierData *fmd, int framenr)
int getFlipParticleFlagAt(int i)
float getFlipParticleVelocityXAt(int i)
bool bakeGuiding(FluidModifierData *fmd, int framenr)
size_t getTotalCellsHigh()
float getSndParticleVelocityZAt(int i)
float getFlipParticleVelocityZAt(int i)
static atomic< int > solverID
struct MANTA::Triangle Triangle
bool hasParticles(FluidModifierData *fmd, int framenr)
bool initColorsHigh(struct FluidModifierData *fmd=nullptr)
bool initObstacle(FluidModifierData *fmd=nullptr)
bool initColors(struct FluidModifierData *fmd=nullptr)
bool readNoise(FluidModifierData *fmd, int framenr, bool resumable)
float getVertVelZAt(int i)
int getTriangleYAt(int i)
bool initSndParts(FluidModifierData *fmd=nullptr)
float * getSndParticleLife()
bool initCurvature(FluidModifierData *fmd=nullptr)
bool hasGuiding(FluidModifierData *fmd, int framenr, bool sourceDomain)
bool initHeat(struct FluidModifierData *fmd=nullptr)
bool bakeParticles(FluidModifierData *fmd, int framenr)
MANTA(int *res, struct FluidModifierData *fmd)
float * getPhiOutStaticIn()
bool bakeData(FluidModifierData *fmd, int framenr)
float getNormalYAt(int i)
bool initInVelocity(FluidModifierData *fmd=nullptr)
void updatePointers(FluidModifierData *fmd, bool flush=false)
float getFlipParticlePositionYAt(int i)
struct MANTA::PData pData
bool hasData(FluidModifierData *fmd, int framenr)
float getVertexYAt(int i)
bool updateVariables(FluidModifierData *fmd)
float getFlipParticlePositionZAt(int i)
bool hasConfig(FluidModifierData *fmd, int framenr)
bool initLiquidSndParts(FluidModifierData *fmd=nullptr)
bool usingParticleFromFile()
float * getSndParticleData()