diff options
Diffstat (limited to 'intern/smoke')
-rw-r--r-- | intern/smoke/extern/smoke_API.h | 4 | ||||
-rw-r--r-- | intern/smoke/intern/WTURBULENCE.cpp | 18 | ||||
-rw-r--r-- | intern/smoke/intern/WTURBULENCE.h | 4 | ||||
-rw-r--r-- | intern/smoke/intern/smoke_API.cpp | 8 |
4 files changed, 13 insertions, 21 deletions
diff --git a/intern/smoke/extern/smoke_API.h b/intern/smoke/extern/smoke_API.h index 98c63f08fbd..08dbded176e 100644 --- a/intern/smoke/extern/smoke_API.h +++ b/intern/smoke/extern/smoke_API.h @@ -74,7 +74,7 @@ size_t smoke_get_index2d(int x, int max_x, int y); void smoke_dissolve(struct FLUID_3D *fluid, int speed, int log); // wavelet turbulence functions -struct WTURBULENCE *smoke_turbulence_init(int *res, int amplify, int noisetype, int use_fire, int use_colors); +struct WTURBULENCE *smoke_turbulence_init(int *res, int amplify, int noisetype, const char *noisefile_path, int use_fire, int use_colors); void smoke_turbulence_free(struct WTURBULENCE *wt); void smoke_turbulence_step(struct WTURBULENCE *wt, struct FLUID_3D *fluid); @@ -89,7 +89,7 @@ float *smoke_turbulence_get_fuel(struct WTURBULENCE *wt); float *smoke_turbulence_get_react(struct WTURBULENCE *wt); void smoke_turbulence_get_res(struct WTURBULENCE *wt, int *res); int smoke_turbulence_get_cells(struct WTURBULENCE *wt); -void smoke_turbulence_set_noise(struct WTURBULENCE *wt, int type); +void smoke_turbulence_set_noise(struct WTURBULENCE *wt, int type, const char *noisefile_path); void smoke_initWaveletBlenderRNA(struct WTURBULENCE *wt, float *strength); void smoke_dissolve_wavelet(struct WTURBULENCE *wt, int speed, int log); diff --git a/intern/smoke/intern/WTURBULENCE.cpp b/intern/smoke/intern/WTURBULENCE.cpp index efc6c19a4c5..3d712d2124a 100644 --- a/intern/smoke/intern/WTURBULENCE.cpp +++ b/intern/smoke/intern/WTURBULENCE.cpp @@ -51,7 +51,7 @@ static const float persistence = 0.56123f; ////////////////////////////////////////////////////////////////////// // constructor ////////////////////////////////////////////////////////////////////// -WTURBULENCE::WTURBULENCE(int xResSm, int yResSm, int zResSm, int amplify, int noisetype, int init_fire, int init_colors) +WTURBULENCE::WTURBULENCE(int xResSm, int yResSm, int zResSm, int amplify, int noisetype, const char *noisefile_path, int init_fire, int init_colors) { // if noise magnitude is below this threshold, its contribution // is negilgible, so stop evaluating new octaves @@ -131,15 +131,7 @@ WTURBULENCE::WTURBULENCE(int xResSm, int yResSm, int zResSm, int amplify, int no // noise tiles _noiseTile = new float[noiseTileSize * noiseTileSize * noiseTileSize]; - /* - std::string noiseTileFilename = std::string("noise.wavelets"); - generateTile_WAVELET(_noiseTile, noiseTileFilename); - */ - setNoise(noisetype); - /* - std::string noiseTileFilename = std::string("noise.fft"); - generatTile_FFT(_noiseTile, noiseTileFilename); - */ + setNoise(noisetype, noisefile_path); } void WTURBULENCE::initFire() @@ -216,13 +208,13 @@ WTURBULENCE::~WTURBULENCE() { // type (1<<1) = FFT / 4 // type (1<<2) = curl / 8 ////////////////////////////////////////////////////////////////////// -void WTURBULENCE::setNoise(int type) +void WTURBULENCE::setNoise(int type, const char *noisefile_path) { if(type == (1<<1)) // FFT { #ifdef WITH_FFTW3 // needs fft - std::string noiseTileFilename = std::string("noise.fft"); + std::string noiseTileFilename = std::string(noisefile_path) + std::string("noise.fft"); generatTile_FFT(_noiseTile, noiseTileFilename); return; #else @@ -237,7 +229,7 @@ void WTURBULENCE::setNoise(int type) } #endif - std::string noiseTileFilename = std::string("noise.wavelets"); + std::string noiseTileFilename = std::string(noisefile_path) + std::string("noise.wavelets"); generateTile_WAVELET(_noiseTile, noiseTileFilename); } diff --git a/intern/smoke/intern/WTURBULENCE.h b/intern/smoke/intern/WTURBULENCE.h index 4e76466bde5..36635325f62 100644 --- a/intern/smoke/intern/WTURBULENCE.h +++ b/intern/smoke/intern/WTURBULENCE.h @@ -36,7 +36,7 @@ struct WTURBULENCE { public: // both config files can be NULL, altCfg might override values from noiseCfg - WTURBULENCE(int xResSm, int yResSm, int zResSm, int amplify, int noisetype, int init_fire, int init_colors); + WTURBULENCE(int xResSm, int yResSm, int zResSm, int amplify, int noisetype, const char *noisefile_path, int init_fire, int init_colors); /// destructor virtual ~WTURBULENCE(); @@ -44,7 +44,7 @@ struct WTURBULENCE void initFire(); void initColors(float init_r, float init_g, float init_b); - void setNoise(int type); + void setNoise(int type, const char *noisefile_path); void initBlenderRNA(float *strength); // step more readable version -- no rotation correction diff --git a/intern/smoke/intern/smoke_API.cpp b/intern/smoke/intern/smoke_API.cpp index 67f1ea29533..e25dff00d23 100644 --- a/intern/smoke/intern/smoke_API.cpp +++ b/intern/smoke/intern/smoke_API.cpp @@ -44,10 +44,10 @@ extern "C" FLUID_3D *smoke_init(int *res, float dx, float dtdef, int use_heat, i return fluid; } -extern "C" WTURBULENCE *smoke_turbulence_init(int *res, int amplify, int noisetype, int use_fire, int use_colors) +extern "C" WTURBULENCE *smoke_turbulence_init(int *res, int amplify, int noisetype, const char *noisefile_path, int use_fire, int use_colors) { if (amplify) - return new WTURBULENCE(res[0],res[1],res[2], amplify, noisetype, use_fire, use_colors); + return new WTURBULENCE(res[0],res[1],res[2], amplify, noisetype, noisefile_path, use_fire, use_colors); else return NULL; } @@ -436,9 +436,9 @@ extern "C" unsigned char *smoke_get_obstacle_anim(FLUID_3D *fluid) } #endif -extern "C" void smoke_turbulence_set_noise(WTURBULENCE *wt, int type) +extern "C" void smoke_turbulence_set_noise(WTURBULENCE *wt, int type, const char *noisefile_path) { - wt->setNoise(type); + wt->setNoise(type, noisefile_path); } extern "C" void flame_get_spectrum(unsigned char *spec, int width, float t1, float t2) |