static void initData(ModifierData *md) { #ifdef WITH_OCEANSIM OceanModifierData *omd = (OceanModifierData *) md; omd->resolution = 7; omd->spatial_size = 50; omd->wave_alignment = 0.0; omd->wind_velocity = 30.0; omd->damp = 0.5; omd->smallest_wave = 0.01; omd->wave_direction = 0.0; omd->depth = 200.0; omd->wave_scale = 1.0; omd->chop_amount = 1.0; omd->foam_coverage = 0.0; omd->seed = 0; omd->time = 1.0; omd->refresh = 0; omd->size = 1.0; omd->repeat_x = 1; omd->repeat_y = 1; modifier_path_init(omd->cachepath, sizeof(omd->cachepath), "cache_ocean"); omd->cached = 0; omd->bakestart = 1; omd->bakeend = 250; omd->oceancache = NULL; omd->foam_fade = 0.98; omd->foamlayername[0] = '\0'; /* layer name empty by default */ omd->ocean = BKE_ocean_add(); init_ocean_modifier(omd); simulate_ocean_modifier(omd); #else /* WITH_OCEANSIM */ /* unused */ (void)md; #endif /* WITH_OCEANSIM */ }
void fluidsim_init(FluidsimModifierData *fluidmd) { #ifdef WITH_MOD_FLUID if (fluidmd) { FluidsimSettings *fss = MEM_callocN(sizeof(FluidsimSettings), "fluidsimsettings"); fluidmd->fss = fss; if (!fss) return; fss->fmd = fluidmd; fss->type = OB_FLUIDSIM_ENABLE; fss->show_advancedoptions = 0; fss->resolutionxyz = 65; fss->previewresxyz = 45; fss->realsize = 0.5; fss->guiDisplayMode = 2; // preview fss->renderDisplayMode = 3; // render fss->viscosityValue = 1.0; fss->viscosityExponent = 6; fss->grav[0] = 0.0; fss->grav[1] = 0.0; fss->grav[2] = -9.81; fss->animStart = 0.0; fss->animEnd = 4.0; fss->animRate = 1.0; fss->gstar = 0.005; // used as normgstar fss->maxRefine = -1; // maxRefine is set according to resolutionxyz during bake // fluid/inflow settings // fss->iniVel --> automatically set to 0 modifier_path_init(fss->surfdataPath, sizeof(fss->surfdataPath), "cache_fluid"); // first init of bounding box // no bounding box needed // todo - reuse default init from elbeem! fss->typeFlags = OB_FSBND_PARTSLIP | OB_FSSG_NOOBS; fss->domainNovecgen = 0; fss->volumeInitType = 1; // volume fss->partSlipValue = 0.2; fss->generateTracers = 0; fss->generateParticles = 0.0; fss->surfaceSmoothing = 1.0; fss->surfaceSubdivs = 0.0; fss->particleInfSize = 0.0; fss->particleInfAlpha = 0.0; // init fluid control settings fss->attractforceStrength = 0.2; fss->attractforceRadius = 0.75; fss->velocityforceStrength = 0.2; fss->velocityforceRadius = 0.75; fss->cpsTimeStart = fss->animStart; fss->cpsTimeEnd = fss->animEnd; fss->cpsQuality = 10.0; // 1.0 / 10.0 => means 0.1 width /* * BAD TODO: this is done in buttons_object.c in the moment * Mesh *mesh = ob->data; * // calculate bounding box * fluid_get_bb(mesh->mvert, mesh->totvert, ob->obmat, fss->bbStart, fss->bbSize); */ fss->meshVelocities = NULL; fss->lastgoodframe = -1; fss->flag |= OB_FLUIDSIM_ACTIVE; } #else (void)fluidmd; /* unused */ #endif return; }