[Bf-blender-cvs] [f3b06e8b150] functions: taking emitter velocity into account
Jacques Lucke
noreply at git.blender.org
Tue Jul 9 18:01:11 CEST 2019
Commit: f3b06e8b1501181ba3d9f643e3e221541f3f57f8
Author: Jacques Lucke
Date: Tue Jul 9 11:23:06 2019 +0200
Branches: functions
https://developer.blender.org/rBf3b06e8b1501181ba3d9f643e3e221541f3f57f8
taking emitter velocity into account
===================================================================
M source/blender/simulations/bparticles/emitters.cpp
===================================================================
diff --git a/source/blender/simulations/bparticles/emitters.cpp b/source/blender/simulations/bparticles/emitters.cpp
index d1c202faddc..7e71632cbef 100644
--- a/source/blender/simulations/bparticles/emitters.cpp
+++ b/source/blender/simulations/bparticles/emitters.cpp
@@ -76,10 +76,21 @@ class SurfaceEmitter : public Emitter {
float3 normal;
normal_tri_v3(normal, v1, v2, v3);
- float4x4 transform = float4x4::interpolate(m_transform_start, m_transform_end, birth_moment);
+ float epsilon = 0.01f;
+ /* TODO: interpolate decomposed matrices */
+ float4x4 transform_at_birth = float4x4::interpolate(
+ m_transform_start, m_transform_end, birth_moment);
+ float4x4 transform_before_birth = float4x4::interpolate(
+ m_transform_start, m_transform_end, birth_moment - epsilon);
- positions.append(transform.transform_position(pos));
- velocities.append(transform.transform_direction(normal * m_normal_velocity));
+ float3 point_at_birth = transform_at_birth.transform_position(pos);
+ float3 point_before_birth = transform_before_birth.transform_position(pos);
+
+ float3 normal_velocity = transform_at_birth.transform_direction(normal);
+ float3 emitter_velocity = (point_at_birth - point_before_birth) / epsilon;
+
+ positions.append(point_at_birth);
+ velocities.append(normal_velocity * m_normal_velocity + emitter_velocity * 0.3f);
birth_moments.append(birth_moment);
}
More information about the Bf-blender-cvs
mailing list