|
Blender V4.3
|
Go to the source code of this file.
Classes | |
| struct | ImplicitSolverResult |
Macros | |
| #define | IMPLICIT_SOLVER_BLENDER |
| #define | CLOTH_ROOT_FRAME /* enable use of root frame coordinate transform */ |
| #define | CLOTH_FORCE_GRAVITY |
| #define | CLOTH_FORCE_DRAG |
| #define | CLOTH_FORCE_SPRING_STRUCTURAL |
| #define | CLOTH_FORCE_SPRING_SHEAR |
| #define | CLOTH_FORCE_SPRING_BEND |
| #define | MAX_HAIR_GRID_RES 256 |
Typedefs | |
| typedef struct ImplicitSolverResult | ImplicitSolverResult |
| #define CLOTH_FORCE_DRAG |
Definition at line 27 of file implicit.h.
| #define CLOTH_FORCE_GRAVITY |
Definition at line 26 of file implicit.h.
| #define CLOTH_FORCE_SPRING_BEND |
Definition at line 30 of file implicit.h.
| #define CLOTH_FORCE_SPRING_SHEAR |
Definition at line 29 of file implicit.h.
| #define CLOTH_FORCE_SPRING_STRUCTURAL |
Definition at line 28 of file implicit.h.
| #define CLOTH_ROOT_FRAME /* enable use of root frame coordinate transform */ |
Definition at line 24 of file implicit.h.
| #define IMPLICIT_SOLVER_BLENDER |
Definition at line 22 of file implicit.h.
| #define MAX_HAIR_GRID_RES 256 |
Definition at line 217 of file implicit.h.
Referenced by SIM_hair_volume_create_vertex_grid().
| typedef struct ImplicitSolverResult ImplicitSolverResult |
| BLI_INLINE void implicit_print_matrix_elem | ( | float | v | ) |
| void SIM_hair_volume_add_segment | ( | struct HairGrid * | grid, |
| const float | x1[3], | ||
| const float | v1[3], | ||
| const float | x2[3], | ||
| const float | v2[3], | ||
| const float | x3[3], | ||
| const float | v3[3], | ||
| const float | x4[3], | ||
| const float | v4[3], | ||
| const float | dir1[3], | ||
| const float | dir2[3], | ||
| const float | dir3[3] ) |
Definition at line 624 of file hair_volume.cc.
References float, floor_int(), hair_volume_eval_grid_vertex_sample(), interp_v3_v3v3(), max_ii(), min_ii(), v, and v2.
Referenced by cloth_continuum_add_hair_segments().
Definition at line 355 of file hair_volume.cc.
References hair_grid_point_valid(), hair_grid_weights(), madd_v3_v3fl(), and v.
Referenced by cloth_continuum_fill_grid().
| struct HairGrid * SIM_hair_volume_create_vertex_grid | ( | float | cellsize, |
| const float | gmin[3], | ||
| const float | gmax[3] ) |
Definition at line 1107 of file hair_volume.cc.
References copy_v3_v3(), float, floor_int(), hair_grid_size(), MAX_HAIR_GRID_RES, MEM_callocN, size(), and sub_v3_v3v3().
Referenced by cloth_continuum_step().
| void SIM_hair_volume_free_vertex_grid | ( | struct HairGrid * | grid | ) |
Definition at line 1164 of file hair_volume.cc.
References MEM_freeN().
Referenced by cloth_continuum_step().
| void SIM_hair_volume_grid_clear | ( | struct HairGrid * | grid | ) |
Definition at line 284 of file hair_volume.cc.
References hair_grid_size(), size(), and zero_v3().
| void SIM_hair_volume_grid_geometry | ( | struct HairGrid * | grid, |
| float * | cellsize, | ||
| int | res[3], | ||
| float | gmin[3], | ||
| float | gmax[3] ) |
Definition at line 1174 of file hair_volume.cc.
References copy_v3_v3(), and copy_v3_v3_int().
Referenced by cloth_continuum_fill_grid(), and cloth_continuum_step().
| void SIM_hair_volume_grid_interpolate | ( | struct HairGrid * | grid, |
| const float | x[3], | ||
| float * | density, | ||
| float | velocity[3], | ||
| float | velocity_smooth[3], | ||
| float | density_gradient[3], | ||
| float | velocity_gradient[3][3] ) |
Definition at line 237 of file hair_volume.cc.
References hair_grid_interpolate().
Referenced by cloth_continuum_step().
| void SIM_hair_volume_grid_velocity | ( | struct HairGrid * | grid, |
| const float | x[3], | ||
| const float | v[3], | ||
| float | fluid_factor, | ||
| float | r_v[3] ) |
Effect of fluid simulation grid on velocities. fluid_factor controls blending between PIC (Particle-in-Cell) and FLIP (Fluid-Implicit-Particle) methods (0 = only PIC, 1 = only FLIP)
Definition at line 257 of file hair_volume.cc.
References add_v3_v3(), copy_v3_v3(), hair_grid_interpolate(), interp_v3_v3v3(), sub_v3_v3v3(), and v.
Referenced by cloth_continuum_step().
| void SIM_hair_volume_normalize_vertex_grid | ( | struct HairGrid * | grid | ) |
Definition at line 678 of file hair_volume.cc.
References hair_grid_size(), mul_v3_fl(), and size().
Referenced by cloth_continuum_fill_grid().
| bool SIM_hair_volume_solve_divergence | ( | struct HairGrid * | grid, |
| float | dt, | ||
| float | target_density, | ||
| float | target_strength ) |
Definition at line 708 of file hair_volume.cc.
References A, add_v3_v3v3(), B, BKE_sim_debug_data_add_circle, BKE_sim_debug_data_add_dot, BKE_sim_debug_data_add_vector, BLI_assert, col, HairGridVert::density, density_threshold, float, grid_to_world(), hair_volume_density_divergence(), interp_v3_v3v3(), MARGIN_i0, MARGIN_i1, MARGIN_j0, MARGIN_j1, MARGIN_k0, MARGIN_k1, mul_v3_fl(), NEIGHBOR_MARGIN_i0, NEIGHBOR_MARGIN_i1, NEIGHBOR_MARGIN_j0, NEIGHBOR_MARGIN_j1, NEIGHBOR_MARGIN_k0, NEIGHBOR_MARGIN_k1, sub_v3_v3v3(), HairGridVert::velocity, HairGridVert::velocity_smooth, and zero_v3().
Referenced by cloth_continuum_step().
| void SIM_hair_volume_vertex_grid_forces | ( | struct HairGrid * | grid, |
| const float | x[3], | ||
| const float | v[3], | ||
| float | smoothfac, | ||
| float | pressurefac, | ||
| float | minpressure, | ||
| float | f[3], | ||
| float | dfdx[3][3], | ||
| float | dfdv[3][3] ) |
WARNING: expressing grid effects on velocity as a force is not very stable, due to discontinuities in interpolated values! Better use hybrid approaches such as described in "Detail Preserving Continuum Simulation of Straight Hair" (McAdams, Selle 2009)
Definition at line 198 of file hair_volume.cc.
References hair_grid_interpolate(), I, madd_v3_v3fl(), mul_m3_fl(), mul_v3_fl(), mul_v3_v3fl(), normalize_v3(), sub_m3_m3m3(), sub_v3_v3(), v, zero_m3(), and zero_v3().
| void SIM_mass_spring_add_constraint_ndof0 | ( | struct Implicit_Data * | data, |
| int | index, | ||
| const float | dV[3] ) |
Definition at line 1281 of file implicit_blender.cc.
References world_to_root_v3(), and zero_m3().
Referenced by cloth_setup_constraints().
| void SIM_mass_spring_add_constraint_ndof1 | ( | struct Implicit_Data * | data, |
| int | index, | ||
| const float | c1[3], | ||
| const float | c2[3], | ||
| const float | dV[3] ) |
Definition at line 1288 of file implicit_blender.cc.
References add_v3_v3(), copy_m3_m3(), I, mul_fvectorT_fvector(), sub_m3_m3m3(), and world_to_root_v3().
| void SIM_mass_spring_add_constraint_ndof2 | ( | struct Implicit_Data * | data, |
| int | index, | ||
| const float | c1[3], | ||
| const float | dV[3] ) |
Definition at line 1309 of file implicit_blender.cc.
References add_v3_v3(), copy_m3_m3(), I, mul_fvectorT_fvector(), sub_m3_m3m3(), and world_to_root_v3().
| void SIM_mass_spring_apply_result | ( | struct Implicit_Data * | data | ) |
Definition at line 1170 of file implicit_blender.cc.
References cp_lfvector().
Referenced by SIM_cloth_solve().
| void SIM_mass_spring_clear_constraints | ( | struct Implicit_Data * | data | ) |
Definition at line 1272 of file implicit_blender.cc.
References unit_m3(), and zero_v3().
Referenced by cloth_setup_constraints().
| void SIM_mass_spring_clear_forces | ( | struct Implicit_Data * | data | ) |
Clear the force vector at the beginning of the time step.
Definition at line 1327 of file implicit_blender.cc.
References init_bfmatrix(), ZERO, and zero_lfvector().
Referenced by SIM_cloth_solve().
| void SIM_mass_spring_force_drag | ( | struct Implicit_Data * | data, |
| float | drag ) |
Global drag force (velocity damping).
Definition at line 1402 of file implicit_blender.cc.
References add_m3_m3m3(), copy_m3_m3(), I, madd_v3_v3fl(), and mul_m3_fl().
Referenced by cloth_calc_force().
| void SIM_mass_spring_force_edge_wind | ( | struct Implicit_Data * | data, |
| int | v1, | ||
| int | v2, | ||
| float | radius1, | ||
| float | radius2, | ||
| const float(*) | winvec[3] ) |
Wind force, acting on an edge.
Definition at line 1599 of file implicit_blender.cc.
References add_v3_v3(), edge_wind_vertex(), length(), normalize_v3(), sub_v3_v3v3(), v2, and world_to_root_v3().
Referenced by cloth_calc_force().
| void SIM_mass_spring_force_extern | ( | struct Implicit_Data * | data, |
| int | i, | ||
| const float | f[3], | ||
| float | dfdx[3][3], | ||
| float | dfdv[3][3] ) |
Custom external force.
Definition at line 1417 of file implicit_blender.cc.
References add_m3_m3m3(), add_v3_v3(), world_to_root_m3(), and world_to_root_v3().
| void SIM_mass_spring_force_face_extern | ( | struct Implicit_Data * | data, |
| int | v1, | ||
| int | v2, | ||
| int | v3, | ||
| const float(*) | forcevec[3] ) |
Arbitrary per-unit-area vector force field acting on a face..
Definition at line 1487 of file implicit_blender.cc.
References add_v3_v3(), calc_nor_area_tri(), mul_v3_fl(), nor, v2, world_to_root_v3(), and zero_v3().
Referenced by cloth_calc_force().
| void SIM_mass_spring_force_face_wind | ( | struct Implicit_Data * | data, |
| int | v1, | ||
| int | v2, | ||
| int | v3, | ||
| const float(*) | winvec[3] ) |
Wind force, acting on a face (only generates pressure from the normal component).
Definition at line 1444 of file implicit_blender.cc.
References calc_nor_area_tri(), dot_v3v3(), madd_v3_v3fl(), mul_v3_fl(), nor, v2, and world_to_root_v3().
Referenced by cloth_calc_force().
| void SIM_mass_spring_force_gravity | ( | struct Implicit_Data * | data, |
| int | index, | ||
| float | mass, | ||
| const float | g[3] ) |
Simple uniform gravity force.
Definition at line 1392 of file implicit_blender.cc.
References add_v3_v3(), mul_v3_fl(), and world_to_root_v3().
Referenced by cloth_calc_force().
| void SIM_mass_spring_force_pressure | ( | struct Implicit_Data * | data, |
| int | v1, | ||
| int | v2, | ||
| int | v3, | ||
| float | common_pressure, | ||
| const float * | vertex_pressure, | ||
| const float | weights[3] ) |
Definition at line 1531 of file implicit_blender.cc.
References calc_nor_area_tri(), copy_v3_fl3(), madd_v3_v3fl(), mul_v3_fl(), nor, v2, and zero_v3().
Referenced by cloth_calc_force().
| void SIM_mass_spring_force_reference_frame | ( | struct Implicit_Data * | data, |
| int | index, | ||
| const float | acceleration[3], | ||
| const float | omega[3], | ||
| const float | domega_dt[3], | ||
| float | mass ) |
Fictitious forces introduced by moving coordinate systems.
Definition at line 1337 of file implicit_blender.cc.
References add_m3_m3m3(), add_v3_v3(), copy_m3_m3(), cross_m3_v3m3(), cross_v3_identity(), cross_v3_v3v3(), mul_m3_fl(), mul_v3_fl(), negate_m3(), sub_v3_v3(), sub_v3_v3v3(), w(), and world_to_root_v3().
| bool SIM_mass_spring_force_spring_angular | ( | struct Implicit_Data * | data, |
| int | i, | ||
| int | j, | ||
| int * | i_a, | ||
| int * | i_b, | ||
| int | len_a, | ||
| int | len_b, | ||
| float | restang, | ||
| float | stiffness, | ||
| float | damping ) |
Angular spring force between two polygons.
Definition at line 1931 of file implicit_blender.cc.
References add_v3_v3(), add_v3_v3v3(), angle(), dot_v3v3(), mul_v3_v3fl(), spring_angle(), sub_v3_v3(), and x.
Referenced by cloth_calc_spring_force().
| bool SIM_mass_spring_force_spring_bending | ( | struct Implicit_Data * | data, |
| int | i, | ||
| int | j, | ||
| float | restlen, | ||
| float | kb, | ||
| float | cb ) |
Bending force, forming a triangle at the base of two structural springs.
Definition at line 1825 of file implicit_blender.cc.
References apply_spring(), fbstar(), fbstar_jacobi(), length(), mul_m3_fl(), mul_v3_v3fl(), outerproduct(), spring_length(), and zero_m3().
Referenced by cloth_calc_spring_force().
| bool SIM_mass_spring_force_spring_bending_hair | ( | struct Implicit_Data * | data, |
| int | i, | ||
| int | j, | ||
| int | k, | ||
| const float | target[3], | ||
| float | stiffness, | ||
| float | damping ) |
Angular bending force based on local target vectors.
Definition at line 2149 of file implicit_blender.cc.
References add_m3_m3m3(), add_v3_v3(), copy_m3_m3(), copy_v3_v3(), dot_v3v3(), I, madd_m3_m3fl(), madd_v3_v3fl(), madd_v3_v3v3fl(), mul_v3_v3fl(), negate_m3(), negate_v3_v3(), SIM_mass_spring_add_block(), spring_grad_dir(), spring_hairbend_estimate_dfdv(), spring_hairbend_estimate_dfdx(), spring_hairbend_forces(), sub_m3_m3m3(), sub_v3_v3(), sub_v3_v3v3(), world_to_root_v3(), zero_m3(), and zero_v3().
Referenced by cloth_calc_spring_force().
| bool SIM_mass_spring_force_spring_goal | ( | struct Implicit_Data * | data, |
| int | i, | ||
| const float | goal_x[3], | ||
| const float | goal_v[3], | ||
| float | stiffness, | ||
| float | damping ) |
Global goal spring.
Definition at line 2301 of file implicit_blender.cc.
References add_m3_m3m3(), add_v3_v3(), ALMOST_ZERO, dfdv_damp(), dfdx_spring(), dot_v3v3(), length(), madd_v3_v3fl(), mul_v3_v3fl(), normalize_v3_v3(), sub_v3_v3v3(), and world_to_root_v3().
Referenced by cloth_calc_force().
| bool SIM_mass_spring_force_spring_linear | ( | struct Implicit_Data * | data, |
| int | i, | ||
| int | j, | ||
| float | restlen, | ||
| float | stiffness_tension, | ||
| float | damping_tension, | ||
| float | stiffness_compression, | ||
| float | damping_compression, | ||
| bool | resist_compress, | ||
| bool | new_compress, | ||
| float | clamp_force ) |
Linear spring force between two points.
Definition at line 1765 of file implicit_blender.cc.
References apply_spring(), dfdv_damp(), dfdx_spring(), dot_v3v3(), fbstar(), fbstar_jacobi(), length(), madd_v3_v3fl(), mul_m3_fl(), mul_v3_v3fl(), outerproduct(), and spring_length().
Referenced by cloth_calc_spring_force().
| void SIM_mass_spring_force_vertex_wind | ( | struct Implicit_Data * | data, |
| int | v, | ||
| float | radius, | ||
| const float(*) | winvec[3] ) |
Wind force, acting on a vertex.
Definition at line 1617 of file implicit_blender.cc.
References add_v3_v3(), mul_v3_v3fl(), v, and world_to_root_v3().
Referenced by cloth_calc_force().
| void SIM_mass_spring_get_motion_state | ( | struct Implicit_Data * | data, |
| int | index, | ||
| float | x[3], | ||
| float | v[3] ) |
Definition at line 1212 of file implicit_blender.cc.
References root_to_world_v3(), and v.
Referenced by cloth_calc_force(), cloth_calc_spring_force(), hair_get_boundbox(), and SIM_cloth_solve().
| void SIM_mass_spring_get_new_position | ( | struct Implicit_Data * | data, |
| int | index, | ||
| float | x[3] ) |
Definition at line 1232 of file implicit_blender.cc.
References root_to_world_v3().
Referenced by cloth_solve_collisions().
| void SIM_mass_spring_get_new_velocity | ( | struct Implicit_Data * | data, |
| int | index, | ||
| float | v[3] ) |
Definition at line 1242 of file implicit_blender.cc.
References root_to_world_v3(), and v.
Referenced by cloth_calc_average_acceleration(), cloth_continuum_step(), cloth_get_grid_location(), and cloth_solve_collisions().
| void SIM_mass_spring_get_position | ( | struct Implicit_Data * | data, |
| int | index, | ||
| float | x[3] ) |
Definition at line 1222 of file implicit_blender.cc.
References root_to_world_v3().
Referenced by cloth_calc_pressure_gradient(), cloth_continuum_step(), and cloth_get_grid_location().
| void SIM_mass_spring_get_velocity | ( | struct Implicit_Data * | data, |
| int | index, | ||
| float | v[3] ) |
Definition at line 1227 of file implicit_blender.cc.
References root_to_world_v3(), and v.
Referenced by cloth_calc_average_acceleration().
| void SIM_mass_spring_set_motion_state | ( | struct Implicit_Data * | data, |
| int | index, | ||
| const float | x[3], | ||
| const float | v[3] ) |
Definition at line 1193 of file implicit_blender.cc.
References v, and world_to_root_v3().
Referenced by SIM_cloth_solver_init(), and SIM_cloth_solver_set_positions().
| void SIM_mass_spring_set_new_position | ( | struct Implicit_Data * | data, |
| int | index, | ||
| const float | x[3] ) |
Definition at line 1237 of file implicit_blender.cc.
References world_to_root_v3().
| void SIM_mass_spring_set_new_velocity | ( | struct Implicit_Data * | data, |
| int | index, | ||
| const float | v[3] ) |
Definition at line 1247 of file implicit_blender.cc.
References v, and world_to_root_v3().
Referenced by cloth_continuum_step(), and cloth_solve_collisions().
| void SIM_mass_spring_set_position | ( | struct Implicit_Data * | data, |
| int | index, | ||
| const float | x[3] ) |
Definition at line 1202 of file implicit_blender.cc.
References world_to_root_v3().
Referenced by SIM_cloth_solve().
| void SIM_mass_spring_set_rest_transform | ( | struct Implicit_Data * | data, |
| int | index, | ||
| float | tfm[3][3] ) |
Definition at line 1183 of file implicit_blender.cc.
References copy_m3_m3(), and unit_m3().
Referenced by SIM_cloth_solver_set_positions().
| void SIM_mass_spring_set_velocity | ( | struct Implicit_Data * | data, |
| int | index, | ||
| const float | v[3] ) |
Definition at line 1207 of file implicit_blender.cc.
References v, and world_to_root_v3().
Referenced by SIM_cloth_solve().
| void SIM_mass_spring_set_vertex_mass | ( | struct Implicit_Data * | data, |
| int | index, | ||
| float | mass ) |
Definition at line 1177 of file implicit_blender.cc.
References mul_m3_fl(), and unit_m3().
Referenced by SIM_mass_spring_set_implicit_vertex_mass().
| bool SIM_mass_spring_solve_positions | ( | struct Implicit_Data * | data, |
| float | dt ) |
Definition at line 1160 of file implicit_blender.cc.
References add_lfvector_lfvectorS().
Referenced by cloth_solve_collisions(), and SIM_cloth_solve().
| bool SIM_mass_spring_solve_velocities | ( | struct Implicit_Data * | data, |
| float | dt, | ||
| struct ImplicitSolverResult * | result ) |
Definition at line 1123 of file implicit_blender.cc.
References add_lfvector_lfvector(), add_lfvectorS_lfvectorS(), BLI_time_now_seconds(), cg_filtered(), cp_bfmatrix(), create_lfvector(), del_lfvector(), mul_bfmatrix_lfvector(), printf, SIM_SOLVER_SUCCESS, subadd_bfmatrixS_bfmatrixS(), and zero_lfvector().
Referenced by SIM_cloth_solve().
| float SIM_tri_area | ( | struct Implicit_Data * | data, |
| int | v1, | ||
| int | v2, | ||
| int | v3 ) |
Definition at line 1524 of file implicit_blender.cc.
References calc_nor_area_tri(), nor, and v2.
Referenced by cloth_calc_average_pressure().
| float SIM_tri_tetra_volume_signed_6x | ( | struct Implicit_Data * | data, |
| int | v1, | ||
| int | v2, | ||
| int | v3 ) |
Definition at line 1518 of file implicit_blender.cc.
References v2, and volume_tri_tetrahedron_signed_v3_6x().
Referenced by cloth_calc_volume().