Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorMai Lavelle <lavelle@gmail.com>2015-04-13 12:14:43 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2015-04-13 12:17:00 +0300
commit176ed5bfe280ef2151f93c0940d54498aaf00d71 (patch)
treebc2a4dcdd093fb785f6a7b997c7c8691ec083cbb /source
parent6fbf05f326911d10e6227837f8b5de1d86f950b2 (diff)
Fix hair random rotation limited to 180 degrees
The issue was caused by phase being limited from 0 to 1, which gave only 0..M_PI distribution which is not good enough for good randomness. Now the phase is being randomized across full 0..2*M_PI range.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_blender.h2
-rw-r--r--source/blender/blenkernel/intern/particle.c2
-rw-r--r--source/blender/blenkernel/intern/particle_system.c2
-rw-r--r--source/blender/blenloader/intern/versioning_270.c8
4 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index 86576f9a11b..f5e7643085a 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -42,7 +42,7 @@ extern "C" {
* and keep comment above the defines.
* Use STRINGIFY() rather than defining with quotes */
#define BLENDER_VERSION 274
-#define BLENDER_SUBVERSION 4
+#define BLENDER_SUBVERSION 5
/* Several breakages with 270, e.g. constraint deg vs rad */
#define BLENDER_MINVERSION 270
#define BLENDER_MINSUBVERSION 5
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 6c354c59d7a..0e200c73918 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -4100,7 +4100,7 @@ void psys_get_dupli_path_transform(ParticleSimulationData *sim, ParticleData *pa
float q_phase[4];
float phasefac = psys->part->phasefac;
if (psys->part->randphasefac != 0.0f)
- phasefac += psys->part->randphasefac * psys_frand(psys, (pa - psys->particles) + 20);
+ phasefac += psys->part->randphasefac * psys_frand(psys, (pa - psys->particles) + 20) * 2.0f;
axis_angle_to_quat(q_phase, vec, phasefac * (float)M_PI);
mul_qt_v3(q_phase, side);
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index 5a263e24fc4..0439e56c294 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -928,7 +928,7 @@ void psys_get_birth_coords(ParticleSimulationData *sim, ParticleData *pa, Partic
/* rotation phase */
phasefac = part->phasefac;
if (part->randphasefac != 0.0f)
- phasefac += part->randphasefac * psys_frand(psys, p + 20);
+ phasefac += part->randphasefac * psys_frand(psys, p + 20) * 2.0f;
axis_angle_to_quat( q_phase,x_vec, phasefac*(float)M_PI);
/* combine base rotation & phase */
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c
index 1b91d3d869e..49e81b1cfff 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -799,4 +799,12 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main)
}
}
}
+
+ if (!MAIN_VERSION_ATLEAST(main, 274, 5)) {
+ /* Particle random phase range doubled. */
+ ParticleSettings *part;
+ for (part = main->particle.first; part; part = part->id.next) {
+ part->randphasefac *= 0.5f;
+ }
+ }
}