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

DNA_cloth_types.h « makesdna « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 39a110d6ad47e049217ee36218a346988a3e0f3c (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
/*
 * ***** BEGIN GPL LICENSE BLOCK *****
 *
 * 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) 2006 by NaN Holding BV.
 * All rights reserved.
 *
 * The Original Code is: all of this file.
 *
 * Contributor(s): Daniel (Genscher)
 *
 * ***** END GPL LICENSE BLOCK *****
 */

/** \file DNA_cloth_types.h
 *  \ingroup DNA
 */

#ifndef __DNA_CLOTH_TYPES_H__
#define __DNA_CLOTH_TYPES_H__

#include "DNA_defs.h"

/**
 * This struct contains all the global data required to run a simulation.
 * At the time of this writing, this structure contains data appropriate
 * to run a simulation as described in Deformation Constraints in a
 * Mass-Spring Model to Describe Rigid Cloth Behavior by Xavier Provot.
 *
 * I've tried to keep similar, if not exact names for the variables as
 * are presented in the paper.  Where I've changed the concept slightly,
 * as in stepsPerFrame compared to the time step in the paper, I've used
 * variables with different names to minimize confusion.
 */

typedef struct ClothSimSettings {
	struct	LinkNode *cache; /* UNUSED atm */
	float 	mingoal; 	/* see SB */
	float	Cdis DNA_DEPRECATED;	/* Mechanical damping of springs. */
	float	Cvi;		/* Viscous/fluid damping.			*/
	float	gravity[3];	/* Gravity/external force vector.		*/
	float	dt;		/* This is the duration of our time step, computed.	*/
	float	mass;		/* The mass of the entire cloth.		*/
	float	structural DNA_DEPRECATED;	/* Structural spring stiffness. */
	float	shear;		/* Shear spring stiffness.			*/
	float	bending;	/* Flexion spring stiffness.			*/
	float	max_bend; 	/* max bending scaling value, min is "bending" */
	float	max_struct DNA_DEPRECATED;	/* max structural scaling value, min is "structural" */
	float	max_shear; 	/* max shear scaling value */
	float	max_sewing; 	/* max sewing force */
	float 	avg_spring_len; /* used for normalized springs */
	float 	timescale; /* parameter how fast cloth runs */
	float	time_scale; /* multiplies cloth speed */
	float	maxgoal; 	/* see SB */
	float	eff_force_scale;/* Scaling of effector forces (see softbody_calc_forces).*/
	float	eff_wind_scale;	/* Scaling of effector wind (see softbody_calc_forces).	*/
	float 	sim_time_old;
	float	defgoal;
	float	goalspring;
	float	goalfrict;
	float	velocity_smooth; /* smoothing of velocities for hair */
	float	density_target;		/* minimum density for hair */
	float	density_strength;	/* influence of hair density */
	float	collider_friction; /* friction with colliders */
	float	vel_damping DNA_DEPRECATED;	/* damp the velocity to speed up getting to the resting position */
	float	shrink_min;  /* min amount to shrink cloth by 0.0f (no shrink) - 1.0f (shrink to nothing) */
	float	shrink_max;  /* max amount to shrink cloth by 0.0f (no shrink) - 1.0f (shrink to nothing) */

	/* XXX various hair stuff
	 * should really be separate, this struct is a horrible mess already
	 */
	float	bending_damping;	/* damping of bending springs */
	float	voxel_cell_size;    /* size of voxel grid cells for continuum dynamics */
	int		pad;

	int 	stepsPerFrame;	/* Number of time steps per frame.		*/
	int	flags;		/* flags, see CSIMSETT_FLAGS enum above.	*/
	int	preroll  DNA_DEPRECATED;	/* How many frames of simulation to do before we start.	*/
	int	maxspringlen; 	/* in percent!; if tearing enabled, a spring will get cut */
	short	solver_type; 	/* which solver should be used?		txold	*/
	short	vgroup_bend;	/* vertex group for scaling bending stiffness */
	short	vgroup_mass;	/* optional vertexgroup name for assigning weight.*/
	short	vgroup_struct;  /* vertex group for scaling structural stiffness */
	short	vgroup_shrink;  /* vertex group for shrinking cloth */
	short	shapekey_rest;  /* vertex group for scaling structural stiffness */
	short	presets; /* used for presets on GUI */
	short 	reset;

	char pad0[4];
	struct EffectorWeights *effector_weights;

	short	bending_model;
	short	vgroup_shear;		/* Vertex group for scaling structural stiffness. */
	float	tension;
	float	compression;
	float	max_tension;
	float	max_compression;
	float	tension_damp;		/* Mechanical damping of tension springs. */
	float	compression_damp;	/* Mechanical damping of compression springs. */
	float	shear_damp;			/* Mechanical damping of shear springs. */
} ClothSimSettings;


typedef struct ClothCollSettings {
	struct	LinkNode *collision_list; /* e.g. pointer to temp memory for collisions */
	float	epsilon;		/* min distance for collisions.		*/
	float	self_friction;		/* Fiction/damping with self contact. */
	float	friction;		/* Friction/damping applied on contact with other object.*/
	float	damping;	/* Collision restitution on contact with other object.*/
	float 	selfepsilon; 		/* for selfcollision */
	float repel_force DNA_DEPRECATED;
	float distance_repel DNA_DEPRECATED;
	int	flags;			/* collision flags defined in BKE_cloth.h */
	short	self_loop_count DNA_DEPRECATED;	/* How many iterations for the selfcollision loop */
	short	loop_count;		/* How many iterations for the collision loop.		*/
	int pad;
	struct Collection *group;	/* Only use colliders from this group of objects */
	short	vgroup_selfcol; /* vgroup to paint which vertices are used for self collisions */
	short pad2[3];
	float	clamp;		/* Impulse clamp for object collisions. */
	float	self_clamp;	/* Impulse clamp for self collisions. */
} ClothCollSettings;


#endif