|
Blender
V2.93
|
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 | CLOTH_FORCE_SPRING_GOAL |
| #define | CLOTH_FORCE_EFFECTORS |
| #define | MAX_HAIR_GRID_RES 256 |
Typedefs | |
| typedef struct ImplicitSolverResult | ImplicitSolverResult |
| #define CLOTH_FORCE_DRAG |
Definition at line 42 of file implicit.h.
| #define CLOTH_FORCE_EFFECTORS |
Definition at line 47 of file implicit.h.
| #define CLOTH_FORCE_GRAVITY |
Definition at line 41 of file implicit.h.
| #define CLOTH_FORCE_SPRING_BEND |
Definition at line 45 of file implicit.h.
| #define CLOTH_FORCE_SPRING_GOAL |
Definition at line 46 of file implicit.h.
| #define CLOTH_FORCE_SPRING_SHEAR |
Definition at line 44 of file implicit.h.
| #define CLOTH_FORCE_SPRING_STRUCTURAL |
Definition at line 43 of file implicit.h.
| #define CLOTH_ROOT_FRAME /* enable use of root frame coordinate transform */ |
Definition at line 39 of file implicit.h.
| #define IMPLICIT_SOLVER_BLENDER |
Definition at line 37 of file implicit.h.
| #define MAX_HAIR_GRID_RES 256 |
Definition at line 203 of file implicit.h.
| 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 365 of file hair_volume.cpp.
References HairGridVert::density, HairGrid::gmax, HairGrid::gmin, hair_grid_point_valid(), hair_grid_weights(), HairGrid::inv_cellsize, madd_v3_v3fl(), HairGrid::res, v, HairGridVert::velocity, HairGrid::verts, and x.
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 1114 of file hair_volume.cpp.
References HairGrid::cellsize, copy_v3_v3(), float(), floor_int(), HairGrid::gmax, HairGrid::gmin, hair_grid_size(), HairGrid::inv_cellsize, MAX_HAIR_GRID_RES, MEM_callocN, HairGrid::res, size(), sub_v3_v3v3(), and HairGrid::verts.
Referenced by cloth_continuum_step().
| void SIM_hair_volume_free_vertex_grid | ( | struct HairGrid * | grid | ) |
Definition at line 1171 of file hair_volume.cpp.
References MEM_freeN, and HairGrid::verts.
Referenced by cloth_continuum_step().
| void SIM_hair_volume_grid_clear | ( | struct HairGrid * | grid | ) |
Definition at line 294 of file hair_volume.cpp.
References HairGridVert::density, hair_grid_size(), HairGrid::res, HairGridVert::samples, size(), HairGridVert::velocity, HairGridVert::velocity_smooth, HairGrid::verts, 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 1181 of file hair_volume.cpp.
References HairGrid::cellsize, copy_v3_v3(), copy_v3_v3_int(), HairGrid::gmax, HairGrid::gmin, and HairGrid::res.
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 247 of file hair_volume.cpp.
References HairGrid::gmin, hair_grid_interpolate(), HairGrid::inv_cellsize, HairGrid::res, HairGrid::verts, and x.
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] | ||
| ) |
Definition at line 267 of file hair_volume.cpp.
References add_v3_v3(), copy_v3_v3(), HairGrid::gmin, hair_grid_interpolate(), interp_v3_v3v3(), HairGrid::inv_cellsize, HairGrid::res, sub_v3_v3v3(), v, HairGrid::verts, and x.
Referenced by cloth_continuum_step().
| void SIM_hair_volume_normalize_vertex_grid | ( | struct HairGrid * | grid | ) |
Definition at line 687 of file hair_volume.cpp.
References HairGridVert::density, hair_grid_size(), mul_v3_fl(), HairGrid::res, size(), HairGridVert::velocity, and HairGrid::verts.
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 717 of file hair_volume.cpp.
References A, add_v3_v3v3(), B, BKE_sim_debug_data_add_circle, BLI_assert, HairGrid::cellsize, CLAMPIS, col, HairGridVert::density, density_threshold, float(), HairGrid::gmin, 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, HairGrid::res, sub_v3_v3v3(), HairGridVert::velocity, HairGridVert::velocity_smooth, HairGrid::verts, 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] | ||
| ) |
Definition at line 208 of file hair_volume.cpp.
References HairGrid::gmin, hair_grid_interpolate(), I, HairGrid::inv_cellsize, madd_v3_v3fl(), mul_m3_fl(), mul_v3_fl(), mul_v3_v3fl(), normalize_v3(), HairGrid::res, sub_m3_m3m3(), sub_v3_v3(), v, HairGrid::verts, x, 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 1315 of file implicit_blender.c.
References data, 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 1322 of file implicit_blender.c.
References add_v3_v3(), copy_m3_m3(), data, 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 1343 of file implicit_blender.c.
References add_v3_v3(), copy_m3_m3(), data, 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 1201 of file implicit_blender.c.
References cp_lfvector(), and data.
Referenced by SIM_cloth_solve().
| void SIM_mass_spring_clear_constraints | ( | struct Implicit_Data * | data | ) |
Definition at line 1306 of file implicit_blender.c.
References data, unit_m3(), and zero_v3().
Referenced by cloth_setup_constraints().
| void SIM_mass_spring_clear_forces | ( | struct Implicit_Data * | data | ) |
Definition at line 1361 of file implicit_blender.c.
References data, init_bfmatrix(), ZERO, and zero_lfvector().
Referenced by SIM_cloth_solve().
| void SIM_mass_spring_force_drag | ( | struct Implicit_Data * | data, |
| float | drag | ||
| ) |
Definition at line 1436 of file implicit_blender.c.
References add_m3_m3m3(), copy_m3_m3(), data, 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] | ||
| ) |
Definition at line 1632 of file implicit_blender.c.
References add_v3_v3(), data, edge_wind_vertex(), length(), normalize_v3(), sub_v3_v3v3(), v1, 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] | ||
| ) |
Definition at line 1451 of file implicit_blender.c.
References add_m3_m3m3(), add_v3_v3(), data, 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] | ||
| ) |
Definition at line 1520 of file implicit_blender.c.
References add_v3_v3(), blender::compositor::area(), calc_nor_area_tri(), data, mul_v3_fl(), nor, v1, 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] | ||
| ) |
Definition at line 1480 of file implicit_blender.c.
References blender::compositor::area(), calc_nor_area_tri(), data, dot_v3v3(), madd_v3_v3fl(), mul_v3_fl(), nor, v1, 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] | ||
| ) |
Definition at line 1426 of file implicit_blender.c.
References add_v3_v3(), data, 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 1564 of file implicit_blender.c.
References blender::compositor::area(), calc_nor_area_tri(), copy_v3_fl3(), data, madd_v3_v3fl(), mul_v3_fl(), nor, v1, 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 | ||
| ) |
Definition at line 1371 of file implicit_blender.c.
References add_m3_m3m3(), add_v3_v3(), copy_m3_m3(), cross_m3_v3m3(), cross_v3_identity(), cross_v3_v3v3(), data, 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 | ||
| ) |
Definition at line 1964 of file implicit_blender.c.
References add_v3_v3(), add_v3_v3v3(), angle(), data, 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 | ||
| ) |
Definition at line 1858 of file implicit_blender.c.
References apply_spring(), data, 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 | ||
| ) |
Definition at line 2185 of file implicit_blender.c.
References add_m3_m3m3(), add_v3_v3(), copy_m3_m3(), copy_v3_v3(), data, 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 | ||
| ) |
Definition at line 2334 of file implicit_blender.c.
References add_m3_m3m3(), add_v3_v3(), ALMOST_ZERO, data, 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 | ||
| ) |
Definition at line 1797 of file implicit_blender.c.
References apply_spring(), data, 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] | ||
| ) |
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 1243 of file implicit_blender.c.
References data, root_to_world_v3(), v, and x.
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 1266 of file implicit_blender.c.
References data, root_to_world_v3(), and x.
Referenced by cloth_solve_collisions().
| void SIM_mass_spring_get_new_velocity | ( | struct Implicit_Data * | data, |
| int | index, | ||
| float | v[3] | ||
| ) |
Definition at line 1276 of file implicit_blender.c.
References data, 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 1256 of file implicit_blender.c.
References data, root_to_world_v3(), and x.
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 1261 of file implicit_blender.c.
References data, 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 1224 of file implicit_blender.c.
References data, v, world_to_root_v3(), and x.
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 1271 of file implicit_blender.c.
References data, world_to_root_v3(), and x.
| void SIM_mass_spring_set_new_velocity | ( | struct Implicit_Data * | data, |
| int | index, | ||
| const float | v[3] | ||
| ) |
Definition at line 1281 of file implicit_blender.c.
References data, 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 1233 of file implicit_blender.c.
References data, world_to_root_v3(), and x.
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 1214 of file implicit_blender.c.
References copy_m3_m3(), data, 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 1238 of file implicit_blender.c.
References data, 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 1208 of file implicit_blender.c.
References data, mul_m3_fl(), and unit_m3().
Referenced by SIM_cloth_solver_init().
| bool SIM_mass_spring_solve_positions | ( | struct Implicit_Data * | data, |
| float | dt | ||
| ) |
Definition at line 1191 of file implicit_blender.c.
References add_lfvector_lfvectorS(), and data.
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 1154 of file implicit_blender.c.
References add_lfvector_lfvector(), add_lfvectorS_lfvectorS(), cg_filtered(), cp_bfmatrix(), create_lfvector(), data, del_lfvector(), mul_bfmatrix_lfvector(), PIL_check_seconds_timer(), result, 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 1557 of file implicit_blender.c.
References calc_nor_area_tri(), data, nor, v1, 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 1551 of file implicit_blender.c.
References data, v1, v2, and volume_tri_tetrahedron_signed_v3_6x().
Referenced by cloth_calc_volume().