从搅拌机的特定内存位置读取数据(结构)
reading data(structure) from specific memory location from blender
我正在尝试做一个blender插件(免费3d程序)这个插件是一个python插件,我将把数据传递给c++来做大量的计算
在python中的方法是这样的:
data.as_pointer()
#.. method:: as_pointer()
#Returns the memory address which holds a pointer to blenders internal data
#:return: int (memory address).
#:rtype: int
#.. note:: This is intended only for advanced script writers who need to
#pass blender data to their own C/Python modules.
我读取的数据是一个列表
>>>>data[0].as_pointer()
152884792
>>>>data[1].as_pointer()
152884992
>>>>data[2].as_pointer()
152885192
等等因此条目大小为200字节,结构为未知
如何在c++中读取这些数据
你必须知道格式。一旦你这样做,你可能会创建一个struct
,并将该指针类型转换为struct
类型并读取它。
编辑:我相信blender有一个API。
我到目前为止做了什么,以及它是如何很好地确定哪些数据是哪些,+比较数据与python内部数据
c++代码:unsigned int p = imported_data; /*mypointer address*/
float* value_float;
unsigned int* value_int;
double* value_double;
char* value_char;
bool* value_bool;
for (int looper = 0;looper <200;looper +=4)
{
value_float = reinterpret_cast<float *>(p + looper);
if(*value_float != 0.0f){
printf("%i value_float = %fn", looper, *value_float);
continue;
}
value_int = reinterpret_cast<unsigned int *>(p + looper);
if(*value_int != 0){
printf("%i value_int = %un", looper, *value_int);
continue;
}
value_double = reinterpret_cast<double *>(p + looper);
if(*value_double != 0.0){
printf("%i value_double = %fn", looper, *value_double);
continue;
}
value_char = reinterpret_cast<char *>(p + looper);
if(*value_char != NULL){
printf("%i value_char = %cn", looper, *value_char);
continue;
}
value_bool = reinterpret_cast<bool *>(p + looper);
if(*value_bool != 0){
printf("%i value_char = %in", looper, *value_bool);
continue;
}
}
,结果如下:
0 value_float = 2.784583
4 value_float = 2.088116
8 value_float = -3.057968
16 value_double = -15656.531250
20 value_float = -6.455599
24 value_float = 1.000000
48 value_double = 134217728.000000
52 value_float = 20.000000
56 value_float = 2.784583
60 value_float = 2.088116
64 value_float = -2.807592
72 value_double = -9227.453125
76 value_float = -6.063199
80 value_float = 1.000000
104 value_double = 100663296.000000
108 value_float = 19.000000
136 value_double = 0.007813
140 value_float = 1.000000
144 value_float = 50.000000
148 value_float = 51.000000
152 value_float = 0.000000
156 value_float = -1.#QNAN0
160 value_float = 0.713105
164 value_float = 0.023383
168 value_float = 0.014281
172 value_float = 0.249231
176 value_double = 0.000000
180 value_float = 0.050000
192 value_double = 0.000000
196 value_float = 0.000000
相关文章:
- C++将文本文件中的数据读取到结构数组中
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 如何将来自文本文件的数据读取到结构的int阵列中
- 如何将不同长度的数据读取到 2D 数组中
- 从TXT文件到C 的结构向量中的数据读取
- 将sqlite原始数据读取到qbyTearray
- 如何将来自输入TXT文件的数据读取到2 C 数组中
- 使用MQQueue将数据读取到缓冲区中时麻烦
- 在 VC++ 中将类数据读取和写入二进制文件
- 将数据从数据读取器终端获取到GUI(QtCreator)
- C 将数据读取到一个结构,但它跳过了我的一个获取线,使该元素空白
- C++将二进制数据读取到结构
- c++我需要将文件中的数据读取到多维数组中,然后用一种数据类型对数组进行排序.怎样
- 对齐数据:速度取决于恒定数据读取的相对采样大小和采样频率
- 如何将文件中的数据读取到数组中
- 如何使用Visual C++应用程序的完整应用程序数据读取Minidump的应用程序数据
- 如何将csv文件数据读取到数组中
- 用C++将格式化的数值数据读取到数组中
- 正在从文件中将数据读取到结构数组中
- 将分离的数据读取到数组结构c++中