[Bf-blender-cvs] [395b914] hair_system: Hair debug function which copies voxel data to a C struct based on solver data.

Lukas Tönne noreply at git.blender.org
Sun Aug 24 18:55:05 CEST 2014


Commit: 395b914b3adf82e114d814323cb6b80d99e832e2
Author: Lukas Tönne
Date:   Sun Aug 24 16:47:51 2014 +0200
Branches: hair_system
https://developer.blender.org/rB395b914b3adf82e114d814323cb6b80d99e832e2

Hair debug function which copies voxel data to a C struct based on
solver data.

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

M	source/blender/hair/HAIR_debug_types.h
M	source/blender/hair/intern/HAIR_debug.cpp
M	source/blender/hair/intern/HAIR_debug.h
M	source/blender/hair/intern/HAIR_volume.h

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

diff --git a/source/blender/hair/HAIR_debug_types.h b/source/blender/hair/HAIR_debug_types.h
index e98fc2b..787328b 100644
--- a/source/blender/hair/HAIR_debug_types.h
+++ b/source/blender/hair/HAIR_debug_types.h
@@ -49,6 +49,16 @@ typedef enum eHAIR_SolverDebugElement_Type {
 	HAIR_DEBUG_ELEM_VECTOR,
 } eHAIR_SolverDebugElement_Type;
 
+typedef struct HAIR_SolverDebugVoxel {
+	float r;
+} HAIR_SolverDebugVoxel;
+
+typedef struct HAIR_SolverDebugVolume {
+	HAIR_SolverDebugVoxel *data;
+	int size_x, size_y, size_z;
+	float dimensions[3];
+} HAIR_SolverDebugVolume;
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/source/blender/hair/intern/HAIR_debug.cpp b/source/blender/hair/intern/HAIR_debug.cpp
index 03f23df..ff7e345 100644
--- a/source/blender/hair/intern/HAIR_debug.cpp
+++ b/source/blender/hair/intern/HAIR_debug.cpp
@@ -27,6 +27,7 @@
 #include <cstring>
 
 #include "HAIR_debug.h"
+#include "HAIR_volume.h"
 
 HAIR_NAMESPACE_BEGIN
 
@@ -36,4 +37,21 @@ ThreadMutex Debug::mutex;
 Debug::Elements Debug::elements;
 #endif
 
+HAIR_SolverDebugVolume *Debug::volume(Volume *vol)
+{
+	HAIR_SolverDebugVolume *dvol = (HAIR_SolverDebugVolume *)MEM_callocN(sizeof(HAIR_SolverDebugVolume), "hair debug volume");
+	
+	dvol->size_x = vol->size_x();
+	dvol->size_y = vol->size_y();
+	dvol->size_z = vol->size_z();
+	
+	dvol->dimensions[0] = dvol->dimensions[1] = dvol->dimensions[2] = 10.0f;
+	
+	int totsize = vol->size_x() * vol->size_y() * vol->size_z();
+	dvol->data = (HAIR_SolverDebugVoxel *)MEM_mallocN(sizeof(HAIR_SolverDebugVoxel) * totsize, "hair debug voxel data");
+	for (int i = 0; i < totsize; ++i) {
+		dvol->data[i].r = vol->randomstuff.data()[i];
+	}
+}
+
 HAIR_NAMESPACE_END
diff --git a/source/blender/hair/intern/HAIR_debug.h b/source/blender/hair/intern/HAIR_debug.h
index da94036..1bc39e3 100644
--- a/source/blender/hair/intern/HAIR_debug.h
+++ b/source/blender/hair/intern/HAIR_debug.h
@@ -45,6 +45,7 @@ HAIR_NAMESPACE_BEGIN
 #endif
 
 struct SolverData;
+struct Volume;
 
 struct Debug {
 	typedef std::vector<HAIR_SolverDebugElement> Elements;
@@ -146,6 +147,8 @@ struct Debug {
 #endif
 	}
 	
+	static HAIR_SolverDebugVolume *volume(Volume *vol);
+	
 	static bool active;
 #ifdef HAIR_DEBUG
 	static ThreadMutex mutex;
diff --git a/source/blender/hair/intern/HAIR_volume.h b/source/blender/hair/intern/HAIR_volume.h
index 525beba..40212a6 100644
--- a/source/blender/hair/intern/HAIR_volume.h
+++ b/source/blender/hair/intern/HAIR_volume.h
@@ -108,12 +108,15 @@ typedef VolumeAttribute<float3> VolumeAttributeFloat3;
 struct Volume {
 	Volume();
 	
+	int size_x() const { return m_size_x; }
+	int size_y() const { return m_size_y; }
+	int size_z() const { return m_size_z; }
 	void resize(int x, int y, int z);
 	
 	VolumeAttributeFloat randomstuff;
 	
 private:
-	int size_x, size_y, size_z;
+	int m_size_x, m_size_y, m_size_z;
 };
 
 HAIR_NAMESPACE_END




More information about the Bf-blender-cvs mailing list