Blender V4.3
particle_child.cc File Reference
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BLI_noise.h"
#include "DNA_material_types.h"
#include "DNA_object_types.h"
#include "BKE_colortools.hh"
#include "BKE_particle.h"
#include "particle_private.h"

Go to the source code of this file.

Classes

struct  ParticlePathIterator
 

Functions

static void psys_path_iter_get (ParticlePathIterator *iter, ParticleCacheKey *keys, int totkeys, ParticleCacheKey *parent, int index)
 
static void do_kink_spiral_deform (ParticleKey *state, const float dir[3], const float kink[3], float time, float freq, float shape, float amplitude, const float spiral_start[3])
 
static void do_kink_spiral (ParticleThreadContext *ctx, ParticleTexture *ptex, const float parent_orco[3], ChildParticle *cpa, const float orco[3], float hairmat[4][4], ParticleCacheKey *keys, ParticleCacheKey *parent_keys, int *r_totkeys, float *r_max_length)
 
static bool check_path_length (int k, ParticleCacheKey *keys, ParticleCacheKey *key, float max_length, float step_length, float *cur_length, float dvec[3])
 
void psys_apply_child_modifiers (ParticleThreadContext *ctx, ListBase *, ChildParticle *cpa, ParticleTexture *ptex, const float orco[3], float hairmat[4][4], ParticleCacheKey *keys, ParticleCacheKey *parent_keys, const float parent_orco[3])
 
void do_kink (ParticleKey *state, const float par_co[3], const float par_vel[3], const float par_rot[4], float time, float freq, float shape, float amplitude, float flat, short type, short axis, const float obmat[4][4], int smooth_start)
 
static float do_clump_level (float result[3], const float co[3], const float par_co[3], float time, float clumpfac, float clumppow, float pa_clump, const CurveMapping *clumpcurve)
 
float do_clump (ParticleKey *state, const float par_co[3], float time, const float orco_offset[3], float clumpfac, float clumppow, float pa_clump, bool use_clump_noise, float clump_noise_size, const CurveMapping *clumpcurve)
 
static void do_rough (const float loc[3], const float mat[4][4], float t, float fac, float size, float thres, ParticleKey *state)
 
static void do_rough_end (const float loc[3], const float mat[4][4], float t, float fac, float shape, ParticleKey *state)
 
static void do_rough_curve (const float loc[3], const float mat[4][4], float time, float fac, float size, CurveMapping *roughcurve, ParticleKey *state)
 
static int twist_num_segments (const ParticleChildModifierContext *modifier_ctx)
 
static void twist_get_axis (const ParticleChildModifierContext *modifier_ctx, const float time, float r_axis[3])
 
static float BKE_curvemapping_integrate_clamped (const CurveMapping *curve, float start, float end, float step)
 
static void do_twist (const ParticleChildModifierContext *modifier_ctx, ParticleKey *state, const float time)
 
void do_child_modifiers (const ParticleChildModifierContext *modifier_ctx, float mat[4][4], ParticleKey *state, float t)
 

Function Documentation

◆ BKE_curvemapping_integrate_clamped()

static float BKE_curvemapping_integrate_clamped ( const CurveMapping * curve,
float start,
float end,
float step )
static

Definition at line 729 of file particle_child.cc.

References BKE_curvemapping_evaluateF(), and clamp_f().

Referenced by do_twist().

◆ check_path_length()

static bool check_path_length ( int k,
ParticleCacheKey * keys,
ParticleCacheKey * key,
float max_length,
float step_length,
float * cur_length,
float dvec[3] )
static

◆ do_child_modifiers()

◆ do_clump()

float do_clump ( ParticleKey * state,
const float par_co[3],
float time,
const float orco_offset[3],
float clumpfac,
float clumppow,
float pa_clump,
bool use_clump_noise,
float clump_noise_size,
const CurveMapping * clumpcurve )

◆ do_clump_level()

static float do_clump_level ( float result[3],
const float co[3],
const float par_co[3],
float time,
float clumpfac,
float clumppow,
float pa_clump,
const CurveMapping * clumpcurve )
static

Definition at line 558 of file particle_child.cc.

References BKE_curvemapping_evaluateF(), clamp_f(), float, interp_v3_v3v3(), and pow().

Referenced by do_clump().

◆ do_kink()

◆ do_kink_spiral()

◆ do_kink_spiral_deform()

static void do_kink_spiral_deform ( ParticleKey * state,
const float dir[3],
const float kink[3],
float time,
float freq,
float shape,
float amplitude,
const float spiral_start[3] )
static

◆ do_rough()

static void do_rough ( const float loc[3],
const float mat[4][4],
float t,
float fac,
float size,
float thres,
ParticleKey * state )
static

◆ do_rough_curve()

static void do_rough_curve ( const float loc[3],
const float mat[4][4],
float time,
float fac,
float size,
CurveMapping * roughcurve,
ParticleKey * state )
static

◆ do_rough_end()

static void do_rough_end ( const float loc[3],
const float mat[4][4],
float t,
float fac,
float shape,
ParticleKey * state )
static

Definition at line 660 of file particle_child.cc.

References copy_v2_v2(), float, madd_v3_v3fl(), mul_v2_fl(), pow(), and state.

Referenced by do_child_modifiers().

◆ do_twist()

◆ psys_apply_child_modifiers()

◆ psys_path_iter_get()

◆ twist_get_axis()

static void twist_get_axis ( const ParticleChildModifierContext * modifier_ctx,
const float time,
float r_axis[3] )
static

◆ twist_num_segments()