[Bf-blender-cvs] [db69568] openvdb: Quick fix for openvdb::ArithmeticError being thrown on frame 1.

Kévin Dietrich noreply at git.blender.org
Fri Jun 5 14:08:48 CEST 2015


Commit: db695688e9dd6f335ec3b72e77f12bda59cf853d
Author: Kévin Dietrich
Date:   Wed Jun 3 19:43:18 2015 +0200
Branches: openvdb
https://developer.blender.org/rBdb695688e9dd6f335ec3b72e77f12bda59cf853d

Quick fix for openvdb::ArithmeticError being thrown on frame 1.

Issue is that the smoke simulator stores a zero'd object matrix on frame
1 which makes OpenVDB throw because the matrix is then non-affine.

Patch by @lukastoenne.

===================================================================

M	source/blender/blenkernel/intern/smoke.c

===================================================================

diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index d922bc8..b8cf5aa 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -3340,6 +3340,20 @@ void smokeModifier_OpenVDB_export(SmokeModifierData *smd, Scene *scene, Object *
 		cache_filename(filename, cache->path, cache->name, relbase, fr);
 
 		smokeModifier_process(smd, scene, ob, dm, false);
+
+		/* XXX hack: for some reason the smoke sim stores zero matrix for frame 1 */
+		{
+			PTCacheID pid;
+			int ptcache_start, ptcache_end;
+			float ptcache_timescale;
+			BKE_ptcache_id_from_smoke(&pid, ob, smd);
+			BKE_ptcache_id_time(&pid, scene, fr, &ptcache_start, &ptcache_end, &ptcache_timescale);
+
+			if (fr == ptcache_start) {
+				unit_m4(sds->obmat);
+			}
+		}
+
 		OpenVDB_write_fluid_settings(sds, cache->writer);
 		OpenVDB_export_smoke(sds, cache->writer);




More information about the Bf-blender-cvs mailing list