Welcome to mirror list, hosted at ThFree Co, Russian Federation.

DNA_object_fluidsim_types.h « makesdna « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 1198983c8980d33a315fd139fe3df1920a0d7ee8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
/*
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 * The Original Code is Copyright (C) 2004-2005 by Blender Foundation
 * All rights reserved.
 */

/** \file
 * \ingroup DNA
 */

#pragma once

#include "DNA_ID.h"
#include "DNA_defs.h"

#ifdef __cplusplus
extern "C" {
#endif

struct Ipo;

typedef struct FluidVertexVelocity {
  float vel[3];
} FluidVertexVelocity;

typedef struct FluidsimSettings {
  /** For fast RNA access. */
  struct FluidsimModifierData *fmd;
  /* threadcont the calculation is done with */
  int threads;
  char _pad1[4];
  /* domain, fluid or obstacle */
  short type;
  /* Display advanced options in fluid sim tab (on=1, off=0). */
  short show_advancedoptions;

  /* domain object settings */
  /* resolutions */
  short resolutionxyz;
  short previewresxyz;
  /* size of the domain in real units (meters along largest resolution x, y, z extent) */
  float realsize;
  /* show original meshes, preview or final sim */
  short guiDisplayMode;
  short renderDisplayMode;

  /* fluid properties */
  float viscosityValue;
  short viscosityMode DNA_DEPRECATED;
  short viscosityExponent;
  /* gravity strength */
  float grav[3];
  /* anim start end time (in seconds) */
  float animStart, animEnd;
  /* bake start end time (in blender frames) */
  int bakeStart, bakeEnd;
  /* offset for baked frames */
  int frameOffset;
  char _pad2[4];
  /* g star param (LBM compressibility) */
  float gstar;
  /* activate refinement? */
  int maxRefine;

  /* fluid object type settings */
  /* gravity strength */
  float iniVelx, iniVely, iniVelz;

  /* store output path, and file prefix for baked fluid surface */
  /* strlens; 256= FILE_MAXFILE, 768= FILE_MAXDIR */
  char surfdataPath[1024];

  /* store start coords of axis aligned bounding box together with size */
  /* values are inited during derived mesh display */
  float bbStart[3], bbSize[3];

  /* animated params */
  struct Ipo *ipo;

  /* additional flags depending on the type, lower short contains flags
   * to check validity, higher short additional flags */
  short typeFlags;
  /**
   * Switch off velocity generation,
   * volume init type for fluid/obstacles (volume=1, shell=2, both=3).
   */
  char domainNovecgen, volumeInitType;

  /* boundary "stickiness" for part slip values */
  float partSlipValue;

  /* number of tracers to generate */
  int generateTracers;
  /* particle generation - on if >0, then determines amount (experimental...) */
  float generateParticles;
  /* smooth fluid surface? */
  float surfaceSmoothing;
  /** Number of surface subdivisions. */
  int surfaceSubdivs;
  /** GUI flags. */
  int flag;

  /** Particle display - size scaling, and alpha influence. */
  float particleInfSize, particleInfAlpha;
  /* testing vars */
  float farFieldSize;

  /** Vertex velocities of simulated fluid mesh. */
  struct FluidVertexVelocity *meshVelocities;
  /** Number of vertices in simulated fluid mesh. */
  int totvert;

  /* Fluid control settings */
  float cpsTimeStart;
  float cpsTimeEnd;
  float cpsQuality;

  float attractforceStrength;
  float attractforceRadius;
  float velocityforceStrength;
  float velocityforceRadius;

  int lastgoodframe;

  /** Simulation/flow rate control (i.e. old "Fac-Time"). */
  float animRate;
} FluidsimSettings;

/* ob->fluidsimSettings defines */
#define OB_FLUIDSIM_ENABLE 1
#define OB_FLUIDSIM_DOMAIN 2
#define OB_FLUIDSIM_FLUID 4
#define OB_FLUIDSIM_OBSTACLE 8
#define OB_FLUIDSIM_INFLOW 16
#define OB_FLUIDSIM_OUTFLOW 32
#define OB_FLUIDSIM_PARTICLE 64
#define OB_FLUIDSIM_CONTROL 128

#define OB_TYPEFLAG_START 7
#define OB_FSGEO_THIN (1 << (OB_TYPEFLAG_START + 1))
#define OB_FSBND_NOSLIP (1 << (OB_TYPEFLAG_START + 2))
#define OB_FSBND_PARTSLIP (1 << (OB_TYPEFLAG_START + 3))
#define OB_FSBND_FREESLIP (1 << (OB_TYPEFLAG_START + 4))
#define OB_FSINFLOW_LOCALCOORD (1 << (OB_TYPEFLAG_START + 5))

/* surface generation flag (part of enabling chapter 6 of
 * "Free Surface Flows with Moving and Deforming Objects for LBM") */
#define OB_FSSG_NOOBS (1 << (OB_TYPEFLAG_START + 6))

// guiDisplayMode particle flags
#define OB_FSDOM_GEOM 1
#define OB_FSDOM_PREVIEW 2
#define OB_FSDOM_FINAL 3
#define OB_FSPART_BUBBLE (1 << 1)
#define OB_FSPART_DROP (1 << 2)
#define OB_FSPART_NEWPART (1 << 3)
#define OB_FSPART_FLOAT (1 << 4)
#define OB_FSPART_TRACER (1 << 5)

// new fluid bit flags for fss->flags
#define OB_FLUIDSIM_REVERSE (1 << 0)
#define OB_FLUIDSIM_ACTIVE (1 << 1)
#define OB_FLUIDSIM_OVERRIDE_TIME (1 << 2)

#ifdef __cplusplus
}
#endif