forked from bartvdbraak/blender
recent changes to particle normal orientation change behavior in a way you might not want (even though in general I think its an improvement).
split this into 2 options, added 'Normal-Tangent' orientation that makes the mesh orient towards the tangent, otherwise it uses Z-Up as before.
This commit is contained in:
parent
c17c2d8059
commit
a1138d2500
@ -1670,7 +1670,7 @@ void psys_get_birth_coordinates(ParticleSimulationData *sim, ParticleData *pa, P
|
||||
const bool use_boids = ((part->phystype == PART_PHYS_BOIDS) &&
|
||||
(pa->boid != NULL));
|
||||
const bool use_tangents = ((use_boids == false) &&
|
||||
((part->tanfac != 0.0f) || (part->rotmode == PART_ROT_NOR)));
|
||||
((part->tanfac != 0.0f) || (part->rotmode == PART_ROT_NOR_TAN)));
|
||||
|
||||
int p = pa - psys->particles;
|
||||
|
||||
@ -1833,6 +1833,7 @@ void psys_get_birth_coordinates(ParticleSimulationData *sim, ParticleData *pa, P
|
||||
/* create vector into which rotation is aligned */
|
||||
switch (part->rotmode) {
|
||||
case PART_ROT_NOR:
|
||||
case PART_ROT_NOR_TAN:
|
||||
copy_v3_v3(rot_vec, nor);
|
||||
use_global_space = false;
|
||||
break;
|
||||
@ -1881,7 +1882,7 @@ void psys_get_birth_coordinates(ParticleSimulationData *sim, ParticleData *pa, P
|
||||
invert_qt_qt(q_imat, q_obmat);
|
||||
|
||||
|
||||
if (part->rotmode != PART_ROT_NOR) {
|
||||
if (part->rotmode != PART_ROT_NOR_TAN) {
|
||||
float rot_vec_local[3];
|
||||
|
||||
/* rot_vec */
|
||||
@ -1893,7 +1894,7 @@ void psys_get_birth_coordinates(ParticleSimulationData *sim, ParticleData *pa, P
|
||||
vec_to_quat(q2, rot_vec_local, OB_POSX, OB_POSZ);
|
||||
}
|
||||
else {
|
||||
/* (part->rotmode == PART_ROT_NOR) */
|
||||
/* (part->rotmode == PART_ROT_NOR_TAN) */
|
||||
float tmat[3][3];
|
||||
|
||||
/* note: utan_local is not taken from 'utan', we calculate from rot_vec/vtan */
|
||||
|
@ -473,6 +473,7 @@ typedef struct ParticleSystem {
|
||||
#define PART_ROT_OB_X 6
|
||||
#define PART_ROT_OB_Y 7
|
||||
#define PART_ROT_OB_Z 8
|
||||
#define PART_ROT_NOR_TAN 9
|
||||
|
||||
/* part->avemode */
|
||||
#define PART_AVE_VELOCITY 1
|
||||
|
@ -1887,6 +1887,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
|
||||
static EnumPropertyItem rot_mode_items[] = {
|
||||
{0, "NONE", 0, "None", ""},
|
||||
{PART_ROT_NOR, "NOR", 0, "Normal", ""},
|
||||
{PART_ROT_NOR_TAN, "NOR_TAN", 0, "Normal-Tangent", ""},
|
||||
{PART_ROT_VEL, "VEL", 0, "Velocity / Hair", ""},
|
||||
{PART_ROT_GLOB_X, "GLOB_X", 0, "Global X", ""},
|
||||
{PART_ROT_GLOB_Y, "GLOB_Y", 0, "Global Y", ""},
|
||||
|
Loading…
Reference in New Issue
Block a user