Blender V4.3
implicit_blender.cc File Reference
#include "implicit.h"
#include "MEM_guardedalloc.h"
#include "DNA_object_force_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_texture_types.h"
#include "BLI_math_geom.h"
#include "BLI_math_matrix.h"
#include "BLI_math_vector.h"
#include "BLI_utildefines.h"
#include "BKE_cloth.hh"
#include "BKE_collision.h"
#include "BKE_effect.h"
#include "SIM_mass_spring.h"

Go to the source code of this file.

Classes

struct  fmatrix3x3
struct  Implicit_Data

Typedefs

typedef float lfVector[3]

Functions

DO_INLINE void mul_fvector_S (float to[3], const float from[3], float scalar)
DO_INLINE void mul_fvectorT_fvector (float to[3][3], const float vectorA[3], const float vectorB[3])
DO_INLINE void mul_fvectorT_fvectorS (float to[3][3], float vectorA[3], float vectorB[3], float aS)
DO_INLINE lfVectorcreate_lfvector (uint verts)
DO_INLINE void del_lfvector (float(*fLongVector)[3])
DO_INLINE void cp_lfvector (float(*to)[3], float(*from)[3], uint verts)
DO_INLINE void init_lfvector (float(*fLongVector)[3], const float vector[3], uint verts)
DO_INLINE void zero_lfvector (float(*to)[3], uint verts)
DO_INLINE void mul_lfvectorS (float(*to)[3], float(*fLongVector)[3], float scalar, uint verts)
DO_INLINE void submul_lfvectorS (float(*to)[3], float(*fLongVector)[3], float scalar, uint verts)
DO_INLINE float dot_lfvector (float(*fLongVectorA)[3], float(*fLongVectorB)[3], uint verts)
DO_INLINE void add_lfvector_lfvector (float(*to)[3], float(*fLongVectorA)[3], float(*fLongVectorB)[3], uint verts)
DO_INLINE void add_lfvector_lfvectorS (float(*to)[3], float(*fLongVectorA)[3], float(*fLongVectorB)[3], float bS, uint verts)
DO_INLINE void add_lfvectorS_lfvectorS (float(*to)[3], float(*fLongVectorA)[3], float aS, float(*fLongVectorB)[3], float bS, uint verts)
DO_INLINE void sub_lfvector_lfvectorS (float(*to)[3], float(*fLongVectorA)[3], float(*fLongVectorB)[3], float bS, uint verts)
DO_INLINE void sub_lfvector_lfvector (float(*to)[3], float(*fLongVectorA)[3], float(*fLongVectorB)[3], uint verts)
DO_INLINE void cp_fmatrix (float to[3][3], const float from[3][3])
DO_INLINE void initdiag_fmatrixS (float to[3][3], float aS)
DO_INLINE void mul_fmatrix_S (float matrix[3][3], float scalar)
DO_INLINE void mul_fvector_fmatrix (float *to, const float *from, const float matrix[3][3])
DO_INLINE void mul_fmatrix_fvector (float *to, const float matrix[3][3], const float from[3])
DO_INLINE void add_fmatrix_fmatrix (float to[3][3], const float matrixA[3][3], const float matrixB[3][3])
DO_INLINE void subadd_fmatrixS_fmatrixS (float to[3][3], const float matrixA[3][3], float aS, const float matrixB[3][3], float bS)
DO_INLINE void sub_fmatrix_fmatrix (float to[3][3], const float matrixA[3][3], const float matrixB[3][3])
DO_INLINE void muladd_fmatrix_fvector (float to[3], const float matrix[3][3], const float from[3])
DO_INLINE void muladd_fmatrixT_fvector (float to[3], const float matrix[3][3], const float from[3])
BLI_INLINE void outerproduct (float r[3][3], const float a[3], const float b[3])
BLI_INLINE void cross_m3_v3m3 (float r[3][3], const float v[3], const float m[3][3])
BLI_INLINE void cross_v3_identity (float r[3][3], const float v[3])
BLI_INLINE void madd_m3_m3fl (float r[3][3], const float m[3][3], float f)
BLI_INLINE void init_fmatrix (fmatrix3x3 *matrix, int r, int c)
DO_INLINE fmatrix3x3create_bfmatrix (uint verts, uint springs)
DO_INLINE void del_bfmatrix (fmatrix3x3 *matrix)
DO_INLINE void cp_bfmatrix (fmatrix3x3 *to, fmatrix3x3 *from)
DO_INLINE void init_bfmatrix (fmatrix3x3 *matrix, float m3[3][3])
DO_INLINE void initdiag_bfmatrix (fmatrix3x3 *matrix, float m3[3][3])
DO_INLINE void mul_bfmatrix_lfvector (float(*to)[3], fmatrix3x3 *from, lfVector *fLongVector)
DO_INLINE void subadd_bfmatrixS_bfmatrixS (fmatrix3x3 *to, fmatrix3x3 *from, float aS, fmatrix3x3 *matrix, float bS)
Implicit_DataSIM_mass_spring_solver_create (int numverts, int numsprings)
void SIM_mass_spring_solver_free (Implicit_Data *id)
BLI_INLINE void world_to_root_v3 (Implicit_Data *data, int index, float r[3], const float v[3])
BLI_INLINE void root_to_world_v3 (Implicit_Data *data, int index, float r[3], const float v[3])
BLI_INLINE void world_to_root_m3 (Implicit_Data *data, int index, float r[3][3], const float m[3][3])
BLI_INLINE void root_to_world_m3 (Implicit_Data *data, int index, float r[3][3], const float m[3][3])
DO_INLINE void filter (lfVector *V, fmatrix3x3 *S)
static int cg_filtered (lfVector *ldV, fmatrix3x3 *lA, lfVector *lB, lfVector *z, fmatrix3x3 *S, ImplicitSolverResult *result)
bool SIM_mass_spring_solve_velocities (Implicit_Data *data, float dt, ImplicitSolverResult *result)
bool SIM_mass_spring_solve_positions (Implicit_Data *data, float dt)
void SIM_mass_spring_apply_result (Implicit_Data *data)
void SIM_mass_spring_set_vertex_mass (Implicit_Data *data, int index, float mass)
void SIM_mass_spring_set_rest_transform (Implicit_Data *data, int index, float tfm[3][3])
void SIM_mass_spring_set_motion_state (Implicit_Data *data, int index, const float x[3], const float v[3])
void SIM_mass_spring_set_position (Implicit_Data *data, int index, const float x[3])
void SIM_mass_spring_set_velocity (Implicit_Data *data, int index, const float v[3])
void SIM_mass_spring_get_motion_state (Implicit_Data *data, int index, float x[3], float v[3])
void SIM_mass_spring_get_position (Implicit_Data *data, int index, float x[3])
void SIM_mass_spring_get_velocity (Implicit_Data *data, int index, float v[3])
void SIM_mass_spring_get_new_position (Implicit_Data *data, int index, float x[3])
void SIM_mass_spring_set_new_position (Implicit_Data *data, int index, const float x[3])
void SIM_mass_spring_get_new_velocity (Implicit_Data *data, int index, float v[3])
void SIM_mass_spring_set_new_velocity (Implicit_Data *data, int index, const float v[3])
static int SIM_mass_spring_add_block (Implicit_Data *data, int v1, int v2)
void SIM_mass_spring_clear_constraints (Implicit_Data *data)
void SIM_mass_spring_add_constraint_ndof0 (Implicit_Data *data, int index, const float dV[3])
void SIM_mass_spring_add_constraint_ndof1 (Implicit_Data *data, int index, const float c1[3], const float c2[3], const float dV[3])
void SIM_mass_spring_add_constraint_ndof2 (Implicit_Data *data, int index, const float c1[3], const float dV[3])
void SIM_mass_spring_clear_forces (Implicit_Data *data)
void SIM_mass_spring_force_reference_frame (Implicit_Data *data, int index, const float acceleration[3], const float omega[3], const float domega_dt[3], float mass)
void SIM_mass_spring_force_gravity (Implicit_Data *data, int index, float mass, const float g[3])
void SIM_mass_spring_force_drag (Implicit_Data *data, float drag)
void SIM_mass_spring_force_extern (Implicit_Data *data, int i, const float f[3], float dfdx[3][3], float dfdv[3][3])
static float calc_nor_area_tri (float nor[3], const float v1[3], const float v2[3], const float v3[3])
void SIM_mass_spring_force_face_wind (Implicit_Data *data, int v1, int v2, int v3, const float(*winvec)[3])
void SIM_mass_spring_force_face_extern (Implicit_Data *data, int v1, int v2, int v3, const float(*forcevec)[3])
float SIM_tri_tetra_volume_signed_6x (Implicit_Data *data, int v1, int v2, int v3)
float SIM_tri_area (Implicit_Data *data, int v1, int v2, int v3)
void SIM_mass_spring_force_pressure (Implicit_Data *data, int v1, int v2, int v3, float common_pressure, const float *vertex_pressure, const float weights[3])
static void edge_wind_vertex (const float dir[3], float length, float radius, const float wind[3], float f[3], float[3][3], float[3][3])
void SIM_mass_spring_force_edge_wind (Implicit_Data *data, int v1, int v2, float radius1, float radius2, const float(*winvec)[3])
void SIM_mass_spring_force_vertex_wind (Implicit_Data *data, int v, float, const float(*winvec)[3])
BLI_INLINE void dfdx_spring (float to[3][3], const float dir[3], float length, float L, float k)
BLI_INLINE void dfdv_damp (float to[3][3], const float dir[3], float damping)
BLI_INLINE float fb (float length, float L)
BLI_INLINE float fbderiv (float length, float L)
BLI_INLINE float fbstar (float length, float L, float kb, float cb)
BLI_INLINE float fbstar_jacobi (float length, float L, float kb, float cb)
BLI_INLINE bool spring_length (Implicit_Data *data, int i, int j, float r_extent[3], float r_dir[3], float *r_length, float r_vel[3])
BLI_INLINE void apply_spring (Implicit_Data *data, int i, int j, const float f[3], const float dfdx[3][3], const float dfdv[3][3])
bool SIM_mass_spring_force_spring_linear (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)
bool SIM_mass_spring_force_spring_bending (Implicit_Data *data, int i, int j, float restlen, float kb, float cb)
BLI_INLINE void poly_avg (lfVector *data, const int *inds, int len, float r_avg[3])
BLI_INLINE void poly_norm (lfVector *data, int i, int j, int *inds, int len, float r_dir[3])
BLI_INLINE void edge_avg (lfVector *data, int i, int j, float r_avg[3])
BLI_INLINE void edge_norm (lfVector *data, int i, int j, float r_dir[3])
BLI_INLINE float bend_angle (const float dir_a[3], const float dir_b[3], const float dir_e[3])
BLI_INLINE void spring_angle (Implicit_Data *data, int i, int j, int *i_a, int *i_b, int len_a, int len_b, float r_dir_a[3], float r_dir_b[3], float *r_angle, float r_vel_a[3], float r_vel_b[3])
bool SIM_mass_spring_force_spring_angular (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)
BLI_INLINE void spring_grad_dir (Implicit_Data *data, int i, int j, float edge[3], float dir[3], float grad_dir[3][3])
BLI_INLINE void spring_hairbend_forces (Implicit_Data *data, int i, int j, int k, const float goal[3], float stiffness, float damping, int q, const float dx[3], const float dv[3], float r_f[3])
BLI_INLINE void spring_hairbend_estimate_dfdx (Implicit_Data *data, int i, int j, int k, const float goal[3], float stiffness, float damping, int q, float dfdx[3][3])
BLI_INLINE void spring_hairbend_estimate_dfdv (Implicit_Data *data, int i, int j, int k, const float goal[3], float stiffness, float damping, int q, float dfdv[3][3])
bool SIM_mass_spring_force_spring_bending_hair (Implicit_Data *data, int i, int j, int k, const float target[3], float stiffness, float damping)
bool SIM_mass_spring_force_spring_goal (Implicit_Data *data, int i, const float goal_x[3], const float goal_v[3], float stiffness, float damping)

Variables

static float I [3][3] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}
static float ZERO [3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}

Typedef Documentation

◆ lfVector

typedef float lfVector[3]

Definition at line 62 of file implicit_blender.cc.

Function Documentation

◆ add_fmatrix_fmatrix()

DO_INLINE void add_fmatrix_fmatrix ( float to[3][3],
const float matrixA[3][3],
const float matrixB[3][3] )

Definition at line 419 of file implicit_blender.cc.

References add_v3_v3v3(), and DO_INLINE.

◆ add_lfvector_lfvector()

DO_INLINE void add_lfvector_lfvector ( float(*) to[3],
float(*) fLongVectorA[3],
float(*) fLongVectorB[3],
uint verts )

Definition at line 189 of file implicit_blender.cc.

References add_v3_v3v3(), DO_INLINE, and verts.

Referenced by mul_bfmatrix_lfvector(), and SIM_mass_spring_solve_velocities().

◆ add_lfvector_lfvectorS()

DO_INLINE void add_lfvector_lfvectorS ( float(*) to[3],
float(*) fLongVectorA[3],
float(*) fLongVectorB[3],
float bS,
uint verts )

Definition at line 201 of file implicit_blender.cc.

References DO_INLINE, VECADDS, and verts.

Referenced by cg_filtered(), and SIM_mass_spring_solve_positions().

◆ add_lfvectorS_lfvectorS()

DO_INLINE void add_lfvectorS_lfvectorS ( float(*) to[3],
float(*) fLongVectorA[3],
float aS,
float(*) fLongVectorB[3],
float bS,
uint verts )

Definition at line 211 of file implicit_blender.cc.

References DO_INLINE, VECADDSS, and verts.

Referenced by SIM_mass_spring_solve_velocities().

◆ apply_spring()

BLI_INLINE void apply_spring ( Implicit_Data * data,
int i,
int j,
const float f[3],
const float dfdx[3][3],
const float dfdv[3][3] )

◆ bend_angle()

BLI_INLINE float bend_angle ( const float dir_a[3],
const float dir_b[3],
const float dir_e[3] )

Definition at line 1887 of file implicit_blender.cc.

References atan2f, BLI_INLINE, cos(), cross_v3_v3v3(), and dot_v3v3().

Referenced by spring_angle().

◆ calc_nor_area_tri()

float calc_nor_area_tri ( float nor[3],
const float v1[3],
const float v2[3],
const float v3[3] )
static

◆ cg_filtered()

◆ cp_bfmatrix()

DO_INLINE void cp_bfmatrix ( fmatrix3x3 * to,
fmatrix3x3 * from )

Definition at line 553 of file implicit_blender.cc.

References DO_INLINE.

Referenced by SIM_mass_spring_solve_velocities().

◆ cp_fmatrix()

DO_INLINE void cp_fmatrix ( float to[3][3],
const float from[3][3] )

Definition at line 335 of file implicit_blender.cc.

References copy_v3_v3(), and DO_INLINE.

Referenced by init_bfmatrix(), initdiag_bfmatrix(), and initdiag_fmatrixS().

◆ cp_lfvector()

DO_INLINE void cp_lfvector ( float(*) to[3],
float(*) from[3],
uint verts )

Definition at line 138 of file implicit_blender.cc.

References DO_INLINE, and verts.

Referenced by cg_filtered(), and SIM_mass_spring_apply_result().

◆ create_bfmatrix()

DO_INLINE fmatrix3x3 * create_bfmatrix ( uint verts,
uint springs )

◆ create_lfvector()

◆ cross_m3_v3m3()

BLI_INLINE void cross_m3_v3m3 ( float r[3][3],
const float v[3],
const float m[3][3] )

Definition at line 470 of file implicit_blender.cc.

References BLI_INLINE, cross_v3_v3v3(), and v.

Referenced by SIM_mass_spring_force_reference_frame().

◆ cross_v3_identity()

BLI_INLINE void cross_v3_identity ( float r[3][3],
const float v[3] )

Definition at line 477 of file implicit_blender.cc.

References BLI_INLINE, and v.

Referenced by SIM_mass_spring_force_reference_frame().

◆ del_bfmatrix()

DO_INLINE void del_bfmatrix ( fmatrix3x3 * matrix)

Definition at line 545 of file implicit_blender.cc.

References DO_INLINE, and MEM_freeN().

Referenced by SIM_mass_spring_solver_free().

◆ del_lfvector()

DO_INLINE void del_lfvector ( float(*) fLongVector[3])

◆ dfdv_damp()

BLI_INLINE void dfdv_damp ( float to[3][3],
const float dir[3],
float damping )

◆ dfdx_spring()

BLI_INLINE void dfdx_spring ( float to[3][3],
const float dir[3],
float length,
float L,
float k )

◆ dot_lfvector()

DO_INLINE float dot_lfvector ( float(*) fLongVectorA[3],
float(*) fLongVectorB[3],
uint verts )

Definition at line 174 of file implicit_blender.cc.

References DO_INLINE, dot_v3v3(), and verts.

Referenced by cg_filtered().

◆ edge_avg()

BLI_INLINE void edge_avg ( lfVector * data,
int i,
int j,
float r_avg[3] )

Definition at line 1874 of file implicit_blender.cc.

References BLI_INLINE, and data.

Referenced by spring_angle().

◆ edge_norm()

BLI_INLINE void edge_norm ( lfVector * data,
int i,
int j,
float r_dir[3] )

Definition at line 1881 of file implicit_blender.cc.

References BLI_INLINE, data, normalize_v3(), and sub_v3_v3v3().

Referenced by spring_angle().

◆ edge_wind_vertex()

void edge_wind_vertex ( const float dir[3],
float length,
float radius,
const float wind[3],
float f[3],
float [3][3],
float [3][3] )
static

◆ fb()

BLI_INLINE float fb ( float length,
float L )

Definition at line 1668 of file implicit_blender.cc.

References BLI_INLINE, L, length(), and x.

Referenced by blender::gpu::Texture::attach_to(), EPA< btConvexTemplate >::bind(), gjkepa2_impl::EPA::bind(), BM_edge_calc_rotate(), BM_edge_rotate(), BM_edge_rotate_check(), BPyGPUFrameBuffer_CreatePyObject(), buf_rectfill_area(), blender::gpu::GLTexture::check_feedback_loop(), blender::gpu::GLTexture::clear(), blender::gpu::MTLTexture::clear(), convertJoints(), blender::gpu::Texture::detach_from(), blender::gpu::detect_mip_render_workaround(), ED_region_do_draw(), edbm_edge_rotate_selected_exec(), blender::gpu::MTLContext::ensure_depth_stencil_state(), blender::draw::command::Clear::execute(), blender::draw::command::ClearMulti::execute(), blender::workbench::StencilViewWorkaround::extract(), fbstar(), fbstar_jacobi(), GPU_framebuffer_bind_loadstore(), GPU_framebuffer_clear_color(), GPU_framebuffer_clear_color_depth(), GPU_framebuffer_clear_color_depth_stencil(), GPU_framebuffer_clear_depth(), GPU_framebuffer_clear_depth_stencil(), GPU_framebuffer_clear_stencil(), GPU_framebuffer_config_array(), GPU_framebuffer_push(), GPU_framebuffer_texture_attach(), GPU_framebuffer_texture_cubeface_attach(), GPU_framebuffer_texture_detach(), GPU_framebuffer_texture_layer_attach(), GPU_offscreen_bind(), GPU_offscreen_create(), GPU_offscreen_unbind(), gpu_select_pick_load_id(), blender::gpu::tests::gpu_shader_lib_test(), GPU_viewport_bind_from_offscreen(), internalInitMultipleJoints(), lineart_bounding_area_triangle_intersect(), pygpu_framebuffer_free_if_possible(), pygpu_framebuffer_stack_pop_and_restore_or_error(), pygpu_framebuffer_stack_push_and_bind_or_error(), pygpu_state_active_framebuffer_get(), blender::gpu::Texture::read(), blender::gpu::MTLRenderPassState::reset_state(), sequencer_ibuf_get(), blender::draw::test_draw_pass_all_commands(), blender::gpu::tests::ShaderSpecializationConst::validate(), write_render_color_output(), write_render_z_output(), and writeBackJoints().

◆ fbderiv()

BLI_INLINE float fbderiv ( float length,
float L )

Definition at line 1677 of file implicit_blender.cc.

References BLI_INLINE, L, length(), and x.

Referenced by fbstar_jacobi().

◆ fbstar()

BLI_INLINE float fbstar ( float length,
float L,
float kb,
float cb )

◆ fbstar_jacobi()

BLI_INLINE float fbstar_jacobi ( float length,
float L,
float kb,
float cb )

◆ filter()

DO_INLINE void filter ( lfVector * V,
fmatrix3x3 * S )

Definition at line 743 of file implicit_blender.cc.

References DO_INLINE, mul_m3_v3(), V, and fmatrix3x3::vcount.

Referenced by achannel_setting_flush_widget_cb(), action_channel_region_draw(), action_main_region_draw(), actkeys_channels_get_selected_extents(), actkeys_find_key_at_position(), actkeys_find_list_element_at_position(), actkeys_framejump_exec(), actkeys_is_key_at_position(), actkeys_mselect_channel_only(), actkeys_mselect_column(), actkeys_mselect_single(), actkeys_select_leftright(), actkeys_select_linked_exec(), ANIM_animdata_keyframe_callback(), anim_channels_for_selection(), ANIM_deselect_keys_in_animation_editors(), ANIM_editkeyframes_refresh(), ANIM_frame_channel_y_extents(), ANIM_set_active_channel(), ANIM_sync_animchannels_to_data(), animchannels_clean_empty_exec(), animchannels_delete_exec(), animchannels_enable_exec(), animchannels_group_channels(), animchannels_group_exec(), animchannels_rearrange_exec(), animchannels_ungroup_exec(), blender::bke::attribute_filter_with_skip_ref(), blender::bke::attribute_filter_with_skip_ref(), bake_action_keys(), bake_graph_keys(), blender::math::bicubic_interpolation(), blender::gpu::render_graph::CommandBufferLog::blit_image(), blender::gpu::render_graph::VKCommandBufferInterface::blit_image(), blender::gpu::render_graph::VKCommandBufferWrapper::blit_image(), box_select_action(), box_select_anim_channels(), box_select_graphcurves(), box_select_graphkeys(), box_select_nla_strips(), bpy_bmesh_transform(), cachefile_to_keylist(), cg_filtered(), channels_bake_exec(), clean_action_keys(), clean_graph_keys(), blender::deg::clear_id_nodes_conditional(), click_select_channel_fcurve(), click_select_channel_gplayer(), click_select_channel_group(), columnselect_action_keys(), columnselect_graph_keys(), Eigen::internal::constrained_conjugate_gradient(), blender::bke::id::IDRemapper::contains_mappings_for_any(), convert_keys_to_samples(), convert_samples_to_keys(), copy_action_keys(), copy_graph_keys(), count_fcurves_hidden_by_filter(), create_ghost_curves(), createTransActionData(), createTransGraphEditData(), createTransNlaData(), blender::math::cubic_filter_coefficients(), blender::gpu::debug::DEBUG_FUNC_DECLARE(), delete_action_keys(), delete_graph_keys(), deselect_action_keys(), deselect_all_fcurves(), deselect_graph_keys(), deselect_nla_strips(), draw_nla_main_data(), drivers_editor_show_exec(), duplicate_action_keys(), duplicate_graph_keys(), ED_gpencil_anim_copybuf_copy(), ED_gpencil_anim_copybuf_paste(), ED_nla_postop_refresh(), equalize_graph_keys(), blender::nodes::node_composite_denoise_cc::DenoiseOperation::execute(), filelist_setfilter_options(), blender::ed::asset::filter_matches_asset(), blender::ed::spreadsheet::filter_reorder(), blender::compositor::DenoiseOperation::generate_denoise(), get_active_fcurve_channel(), blender::ed::spreadsheet::get_filter_expand_flag(), get_graph_keyframe_extents(), get_keyframe_extents(), get_nearest_fcurve_verts_list(), get_nlastrip_extents(), glow_blur_bitmap(), graph_channel_region_draw(), graph_draw_curves(), graph_driver_delete_invalid_exec(), graph_fmodifier_add_exec(), graph_fmodifier_paste_exec(), graph_has_selected_control_points(), graph_refresh_fcurve_colors(), graphkeys_channel_view_pick_invoke(), graphkeys_euler_filter_exec(), graphkeys_mselect_column(), graphkeys_select_key_handles(), graphkeys_select_leftright(), graphkeys_select_linked_exec(), graphkeys_smooth_exec(), graphkeys_view_selected_channels_exec(), graphop_editable_keyframes_poll(), graphop_selected_fcurve_poll(), graphop_visible_keyframes_poll(), graphview_curves_hide_exec(), graphview_curves_reveal_exec(), blender::ed::greasepencil::grease_pencil_copy_keyframes(), blender::ed::greasepencil::grease_pencil_paste_keyframes(), IMB_filter_extend(), IMB_scale(), imb_scale_via_transform(), IMB_transform(), initialize_animdata_selection_filter(), initialize_box_select_anim_data(), insert_action_keys(), insert_graph_keys(), is_filtered_asset(), is_filtered_asset_library(), is_filtered_file(), is_filtered_file_name(), is_filtered_file_relpath(), is_filtered_file_type(), is_filtered_hidden(), is_filtered_id_file_type(), is_filtered_lib(), is_filtered_lib_type(), is_filtered_main(), is_filtered_main_assets(), keyframe_jump_exec(), markers_selectkeys_between(), markers_selectkeys_between(), mirror_action_keys(), mirror_graph_keys(), mouse_action_keys(), mouse_anim_channels(), mouse_graph_keys(), mouse_nla_strips(), mouse_nla_tracks(), nla_fmodifier_add_exec(), nla_fmodifier_copy_exec(), nla_fmodifier_paste_exec(), nla_panel_context(), nla_track_region_draw(), nla_tracks_get_selected_extents(), nlaedit_add_meta_exec(), nlaedit_add_sound_exec(), nlaedit_add_tracks_empty(), nlaedit_add_tracks_existing(), nlaedit_add_transition_exec(), nlaedit_apply_scale_exec(), nlaedit_clear_scale_exec(), nlaedit_delete_exec(), nlaedit_delete_tracks_exec(), nlaedit_disable_tweakmode(), nlaedit_duplicate_exec(), nlaedit_enable_tweakmode_exec(), nlaedit_get_editable_tracks(), nlaedit_make_single_user_exec(), nlaedit_move_down_exec(), nlaedit_move_up_exec(), nlaedit_remove_meta_exec(), nlaedit_select_leftright(), nlaedit_snap_exec(), nlaedit_split_exec(), nlaedit_strip_at_region_position(), nlaedit_swap_exec(), nlaedit_sync_actlen_exec(), nlaedit_toggle_mute_exec(), nlatrack_truncate_temporary_tracks(), nlatracks_pushdown_exec(), blender::nodes::node_composite_blur_cc::node_composit_buts_blur(), ob_keyframes_loop(), ob_to_keylist(), paste_action_keys(), paste_graph_keys(), posttrans_action_clean(), prepare_filter_asset_library(), preview_filter_to_idfilter(), rearrange_animchannels_filter_visible(), rearrange_gpencil_channels(), rearrange_grease_pencil_channels(), recalcData_actedit(), recalcData_graphedit(), blender::animrig::reevaluate_fcurve_errors(), region_select_action_keys(), rename_anim_channels(), scene_keyframes_loop(), scene_to_keylist(), screen_ctx_active_editable_fcurve(), screen_ctx_sel_actions_impl(), screen_ctx_sel_edit_fcurves_(), screen_ctx_selected_editable_keyframes(), select_anim_channel_keys(), select_moreless_action_keys(), select_moreless_graph_keys(), sequencer_preprocess_transform_crop(), blender::ed::spreadsheet::set_filter_expand_flag(), seteasing_graph_keys(), setexpo_action_keys(), setexpo_graph_keys(), setflag_anim_channels(), sethandles_action_keys(), sethandles_graph_keys(), setipo_graph_keys(), setkeytype_action_keys(), snap_action_keys(), snap_graph_keys(), special_aftertrans_update__actedit(), special_aftertrans_update__graph(), special_aftertrans_update__nla(), blender::ed::spreadsheet::spreadsheet_filter_panel_draw(), blender::ed::spreadsheet::spreadsheet_filter_panel_draw_header(), sum_selected_keyframes(), summary_keyframes_loop(), summary_to_keylist(), blender::animrig::tests::TEST_F(), blender::animrig::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::asset_system::tests::TEST_F(), blender::imbuf::tests::transform_2x_smaller(), blender::imbuf::tests::transform_fractional_larger(), ui_template_id(), uiTemplateGpencilColorPreview(), uiTemplateGpencilModifier(), uiTemplateID(), uiTemplateIDBrowse(), uiTemplateIDPreview(), uiTemplateIDTabs(), and WM_operator_properties_filesel().

◆ init_bfmatrix()

DO_INLINE void init_bfmatrix ( fmatrix3x3 * matrix,
float m3[3][3] )

◆ init_fmatrix()

BLI_INLINE void init_fmatrix ( fmatrix3x3 * matrix,
int r,
int c )

Definition at line 520 of file implicit_blender.cc.

References BLI_INLINE, fmatrix3x3::c, and fmatrix3x3::r.

Referenced by create_bfmatrix(), and SIM_mass_spring_add_block().

◆ init_lfvector()

DO_INLINE void init_lfvector ( float(*) fLongVector[3],
const float vector[3],
uint verts )

Definition at line 143 of file implicit_blender.cc.

References copy_v3_v3(), DO_INLINE, and verts.

◆ initdiag_bfmatrix()

DO_INLINE void initdiag_bfmatrix ( fmatrix3x3 * matrix,
float m3[3][3] )

◆ initdiag_fmatrixS()

DO_INLINE void initdiag_fmatrixS ( float to[3][3],
float aS )

Definition at line 344 of file implicit_blender.cc.

References cp_fmatrix(), DO_INLINE, and ZERO.

◆ madd_m3_m3fl()

BLI_INLINE void madd_m3_m3fl ( float r[3][3],
const float m[3][3],
float f )

Definition at line 490 of file implicit_blender.cc.

References BLI_INLINE.

Referenced by SIM_mass_spring_force_spring_bending_hair().

◆ mul_bfmatrix_lfvector()

◆ mul_fmatrix_fvector()

DO_INLINE void mul_fmatrix_fvector ( float * to,
const float matrix[3][3],
const float from[3] )

Definition at line 412 of file implicit_blender.cc.

References DO_INLINE, and dot_v3v3().

◆ mul_fmatrix_S()

DO_INLINE void mul_fmatrix_S ( float matrix[3][3],
float scalar )

Definition at line 394 of file implicit_blender.cc.

References DO_INLINE, and mul_fvector_S().

◆ mul_fvector_fmatrix()

DO_INLINE void mul_fvector_fmatrix ( float * to,
const float * from,
const float matrix[3][3] )

Definition at line 403 of file implicit_blender.cc.

References DO_INLINE.

◆ mul_fvector_S()

DO_INLINE void mul_fvector_S ( float to[3],
const float from[3],
float scalar )

Definition at line 77 of file implicit_blender.cc.

References DO_INLINE.

Referenced by mul_fmatrix_S(), mul_fvectorT_fvector(), mul_fvectorT_fvectorS(), and mul_lfvectorS().

◆ mul_fvectorT_fvector()

DO_INLINE void mul_fvectorT_fvector ( float to[3][3],
const float vectorA[3],
const float vectorB[3] )

◆ mul_fvectorT_fvectorS()

DO_INLINE void mul_fvectorT_fvectorS ( float to[3][3],
float vectorA[3],
float vectorB[3],
float aS )

Definition at line 93 of file implicit_blender.cc.

References DO_INLINE, mul_fvector_S(), and mul_fvectorT_fvector().

◆ mul_lfvectorS()

DO_INLINE void mul_lfvectorS ( float(*) to[3],
float(*) fLongVector[3],
float scalar,
uint verts )

Definition at line 156 of file implicit_blender.cc.

References DO_INLINE, mul_fvector_S(), and verts.

◆ muladd_fmatrix_fvector()

DO_INLINE void muladd_fmatrix_fvector ( float to[3],
const float matrix[3][3],
const float from[3] )

Definition at line 449 of file implicit_blender.cc.

References DO_INLINE, and dot_v3v3().

Referenced by mul_bfmatrix_lfvector().

◆ muladd_fmatrixT_fvector()

DO_INLINE void muladd_fmatrixT_fvector ( float to[3],
const float matrix[3][3],
const float from[3] )

Definition at line 456 of file implicit_blender.cc.

References DO_INLINE.

Referenced by mul_bfmatrix_lfvector().

◆ outerproduct()

BLI_INLINE void outerproduct ( float r[3][3],
const float a[3],
const float b[3] )

◆ poly_avg()

BLI_INLINE void poly_avg ( lfVector * data,
const int * inds,
int len,
float r_avg[3] )

Definition at line 1854 of file implicit_blender.cc.

References BLI_INLINE, data, float, len, madd_v3_v3fl(), and zero_v3().

Referenced by poly_norm(), and spring_angle().

◆ poly_norm()

BLI_INLINE void poly_norm ( lfVector * data,
int i,
int j,
int * inds,
int len,
float r_dir[3] )

Definition at line 1865 of file implicit_blender.cc.

References BLI_INLINE, data, len, normal_tri_v3(), and poly_avg().

Referenced by spring_angle().

◆ root_to_world_m3()

BLI_INLINE void root_to_world_m3 ( Implicit_Data * data,
int index,
float r[3][3],
const float m[3][3] )

Definition at line 733 of file implicit_blender.cc.

References BLI_INLINE, data, and mul_m3_m3m3().

◆ root_to_world_v3()

◆ SIM_mass_spring_add_block()

int SIM_mass_spring_add_block ( Implicit_Data * data,
int v1,
int v2 )
static

Definition at line 1254 of file implicit_blender.cc.

References BLI_assert, data, init_fmatrix(), M, and v2.

Referenced by apply_spring(), and SIM_mass_spring_force_spring_bending_hair().

◆ SIM_mass_spring_add_constraint_ndof0()

void SIM_mass_spring_add_constraint_ndof0 ( Implicit_Data * data,
int index,
const float dV[3] )

Definition at line 1281 of file implicit_blender.cc.

References data, world_to_root_v3(), and zero_m3().

Referenced by cloth_setup_constraints().

◆ SIM_mass_spring_add_constraint_ndof1()

void SIM_mass_spring_add_constraint_ndof1 ( Implicit_Data * data,
int index,
const float c1[3],
const float c2[3],
const float dV[3] )

◆ SIM_mass_spring_add_constraint_ndof2()

void SIM_mass_spring_add_constraint_ndof2 ( Implicit_Data * data,
int index,
const float c1[3],
const float dV[3] )

◆ SIM_mass_spring_apply_result()

void SIM_mass_spring_apply_result ( Implicit_Data * data)

Definition at line 1170 of file implicit_blender.cc.

References cp_lfvector(), and data.

Referenced by SIM_cloth_solve().

◆ SIM_mass_spring_clear_constraints()

void SIM_mass_spring_clear_constraints ( Implicit_Data * data)

Definition at line 1272 of file implicit_blender.cc.

References data, unit_m3(), and zero_v3().

Referenced by cloth_setup_constraints().

◆ SIM_mass_spring_clear_forces()

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 data, init_bfmatrix(), ZERO, and zero_lfvector().

Referenced by SIM_cloth_solve().

◆ SIM_mass_spring_force_drag()

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(), data, I, madd_v3_v3fl(), and mul_m3_fl().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_force_edge_wind()

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(), data, edge_wind_vertex(), length(), normalize_v3(), sub_v3_v3v3(), v2, and world_to_root_v3().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_force_extern()

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(), data, world_to_root_m3(), and world_to_root_v3().

◆ SIM_mass_spring_force_face_extern()

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(), data, mul_v3_fl(), nor, v2, world_to_root_v3(), and zero_v3().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_force_face_wind()

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(), data, dot_v3v3(), madd_v3_v3fl(), mul_v3_fl(), nor, v2, and world_to_root_v3().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_force_gravity()

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(), data, mul_v3_fl(), and world_to_root_v3().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_force_pressure()

void SIM_mass_spring_force_pressure ( 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(), data, madd_v3_v3fl(), mul_v3_fl(), nor, v2, and zero_v3().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_force_reference_frame()

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(), data, mul_m3_fl(), mul_v3_fl(), negate_m3(), sub_v3_v3(), sub_v3_v3v3(), w(), and world_to_root_v3().

◆ SIM_mass_spring_force_spring_angular()

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(), data, dot_v3v3(), mul_v3_v3fl(), spring_angle(), sub_v3_v3(), and x.

Referenced by cloth_calc_spring_force().

◆ SIM_mass_spring_force_spring_bending()

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(), data, fbstar(), fbstar_jacobi(), length(), mul_m3_fl(), mul_v3_v3fl(), outerproduct(), spring_length(), and zero_m3().

Referenced by cloth_calc_spring_force().

◆ SIM_mass_spring_force_spring_bending_hair()

◆ SIM_mass_spring_force_spring_goal()

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 )

◆ SIM_mass_spring_force_spring_linear()

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 )

◆ SIM_mass_spring_force_vertex_wind()

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(), data, mul_v3_v3fl(), v, and world_to_root_v3().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_get_motion_state()

void SIM_mass_spring_get_motion_state ( Implicit_Data * data,
int index,
float x[3],
float v[3] )

◆ SIM_mass_spring_get_new_position()

void SIM_mass_spring_get_new_position ( Implicit_Data * data,
int index,
float x[3] )

Definition at line 1232 of file implicit_blender.cc.

References data, root_to_world_v3(), and x.

Referenced by cloth_solve_collisions().

◆ SIM_mass_spring_get_new_velocity()

void SIM_mass_spring_get_new_velocity ( Implicit_Data * data,
int index,
float v[3] )

◆ SIM_mass_spring_get_position()

void SIM_mass_spring_get_position ( Implicit_Data * data,
int index,
float x[3] )

◆ SIM_mass_spring_get_velocity()

void SIM_mass_spring_get_velocity ( Implicit_Data * data,
int index,
float v[3] )

Definition at line 1227 of file implicit_blender.cc.

References data, root_to_world_v3(), and v.

Referenced by cloth_calc_average_acceleration().

◆ SIM_mass_spring_set_motion_state()

void SIM_mass_spring_set_motion_state ( Implicit_Data * data,
int index,
const float x[3],
const float v[3] )

Definition at line 1193 of file implicit_blender.cc.

References data, v, world_to_root_v3(), and x.

Referenced by SIM_cloth_solver_init(), and SIM_cloth_solver_set_positions().

◆ SIM_mass_spring_set_new_position()

void SIM_mass_spring_set_new_position ( Implicit_Data * data,
int index,
const float x[3] )

Definition at line 1237 of file implicit_blender.cc.

References data, world_to_root_v3(), and x.

◆ SIM_mass_spring_set_new_velocity()

void SIM_mass_spring_set_new_velocity ( Implicit_Data * data,
int index,
const float v[3] )

Definition at line 1247 of file implicit_blender.cc.

References data, v, and world_to_root_v3().

Referenced by cloth_continuum_step(), and cloth_solve_collisions().

◆ SIM_mass_spring_set_position()

void SIM_mass_spring_set_position ( Implicit_Data * data,
int index,
const float x[3] )

Definition at line 1202 of file implicit_blender.cc.

References data, world_to_root_v3(), and x.

Referenced by SIM_cloth_solve().

◆ SIM_mass_spring_set_rest_transform()

void SIM_mass_spring_set_rest_transform ( Implicit_Data * data,
int index,
float tfm[3][3] )

Definition at line 1183 of file implicit_blender.cc.

References copy_m3_m3(), data, and unit_m3().

Referenced by SIM_cloth_solver_set_positions().

◆ SIM_mass_spring_set_velocity()

void SIM_mass_spring_set_velocity ( Implicit_Data * data,
int index,
const float v[3] )

Definition at line 1207 of file implicit_blender.cc.

References data, v, and world_to_root_v3().

Referenced by SIM_cloth_solve().

◆ SIM_mass_spring_set_vertex_mass()

void SIM_mass_spring_set_vertex_mass ( Implicit_Data * data,
int index,
float mass )

Definition at line 1177 of file implicit_blender.cc.

References data, mul_m3_fl(), and unit_m3().

Referenced by SIM_mass_spring_set_implicit_vertex_mass().

◆ SIM_mass_spring_solve_positions()

bool SIM_mass_spring_solve_positions ( Implicit_Data * data,
float dt )

Definition at line 1160 of file implicit_blender.cc.

References add_lfvector_lfvectorS(), and data.

Referenced by cloth_solve_collisions(), and SIM_cloth_solve().

◆ SIM_mass_spring_solve_velocities()

◆ SIM_mass_spring_solver_create()

Implicit_Data * SIM_mass_spring_solver_create ( int numverts,
int numsprings )

◆ SIM_mass_spring_solver_free()

◆ SIM_tri_area()

float SIM_tri_area ( Implicit_Data * data,
int v1,
int v2,
int v3 )

Definition at line 1524 of file implicit_blender.cc.

References calc_nor_area_tri(), data, nor, and v2.

Referenced by cloth_calc_average_pressure().

◆ SIM_tri_tetra_volume_signed_6x()

float SIM_tri_tetra_volume_signed_6x ( Implicit_Data * data,
int v1,
int v2,
int v3 )

Definition at line 1518 of file implicit_blender.cc.

References data, v2, and volume_tri_tetrahedron_signed_v3_6x().

Referenced by cloth_calc_volume().

◆ spring_angle()

BLI_INLINE void spring_angle ( Implicit_Data * data,
int i,
int j,
int * i_a,
int * i_b,
int len_a,
int len_b,
float r_dir_a[3],
float r_dir_b[3],
float * r_angle,
float r_vel_a[3],
float r_vel_b[3] )

◆ spring_grad_dir()

BLI_INLINE void spring_grad_dir ( Implicit_Data * data,
int i,
int j,
float edge[3],
float dir[3],
float grad_dir[3][3] )

◆ spring_hairbend_estimate_dfdv()

BLI_INLINE void spring_hairbend_estimate_dfdv ( Implicit_Data * data,
int i,
int j,
int k,
const float goal[3],
float stiffness,
float damping,
int q,
float dfdv[3][3] )

◆ spring_hairbend_estimate_dfdx()

BLI_INLINE void spring_hairbend_estimate_dfdx ( Implicit_Data * data,
int i,
int j,
int k,
const float goal[3],
float stiffness,
float damping,
int q,
float dfdx[3][3] )

◆ spring_hairbend_forces()

BLI_INLINE void spring_hairbend_forces ( Implicit_Data * data,
int i,
int j,
int k,
const float goal[3],
float stiffness,
float damping,
int q,
const float dx[3],
const float dv[3],
float r_f[3] )

◆ spring_length()

BLI_INLINE bool spring_length ( Implicit_Data * data,
int i,
int j,
float r_extent[3],
float r_dir[3],
float * r_length,
float r_vel[3] )

◆ sub_fmatrix_fmatrix()

DO_INLINE void sub_fmatrix_fmatrix ( float to[3][3],
const float matrixA[3][3],
const float matrixB[3][3] )

Definition at line 436 of file implicit_blender.cc.

References DO_INLINE, and sub_v3_v3v3().

◆ sub_lfvector_lfvector()

DO_INLINE void sub_lfvector_lfvector ( float(*) to[3],
float(*) fLongVectorA[3],
float(*) fLongVectorB[3],
uint verts )

Definition at line 234 of file implicit_blender.cc.

References DO_INLINE, sub_v3_v3v3(), and verts.

Referenced by cg_filtered().

◆ sub_lfvector_lfvectorS()

DO_INLINE void sub_lfvector_lfvectorS ( float(*) to[3],
float(*) fLongVectorA[3],
float(*) fLongVectorB[3],
float bS,
uint verts )

Definition at line 225 of file implicit_blender.cc.

References DO_INLINE, VECSUBS, and verts.

◆ subadd_bfmatrixS_bfmatrixS()

DO_INLINE void subadd_bfmatrixS_bfmatrixS ( fmatrix3x3 * to,
fmatrix3x3 * from,
float aS,
fmatrix3x3 * matrix,
float bS )

◆ subadd_fmatrixS_fmatrixS()

DO_INLINE void subadd_fmatrixS_fmatrixS ( float to[3][3],
const float matrixA[3][3],
float aS,
const float matrixB[3][3],
float bS )

Definition at line 428 of file implicit_blender.cc.

References DO_INLINE, and VECSUBADDSS.

Referenced by subadd_bfmatrixS_bfmatrixS().

◆ submul_lfvectorS()

DO_INLINE void submul_lfvectorS ( float(*) to[3],
float(*) fLongVector[3],
float scalar,
uint verts )

Definition at line 166 of file implicit_blender.cc.

References DO_INLINE, VECSUBMUL, and verts.

◆ world_to_root_m3()

BLI_INLINE void world_to_root_m3 ( Implicit_Data * data,
int index,
float r[3][3],
const float m[3][3] )

Definition at line 722 of file implicit_blender.cc.

References BLI_INLINE, copy_m3_m3(), data, mul_m3_m3m3(), and transpose_m3().

Referenced by SIM_mass_spring_force_extern().

◆ world_to_root_v3()

◆ zero_lfvector()

DO_INLINE void zero_lfvector ( float(*) to[3],
uint verts )

Variable Documentation

◆ I

float I[3][3] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}
static

Definition at line 45 of file implicit_blender.cc.

◆ ZERO

float ZERO[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}
static

Definition at line 46 of file implicit_blender.cc.