Bullet Physics - 关于btHeightfieldTerrainShape的两个问题
Bullet Physics - Two Question about btHeightfieldTerrainShape
首先,我搜索了 btHeightfieldTerrainShape,然后我意识到构造函数不需要任何普通数据。它是通过地形高度 - 索引数据计算法线本身吗?
其次,参数void* heightfieldData有什么形式吗?我知道那必须是 heightDataType - 数组,但必须有 x - z 坐标或其他东西,但只有它得到的只是数组。这个有公式吗?
数组格式取决于 PHY_ScalarType 参数,它会被这样解释。
可以
- unsigned char (value * heightScale)
- 短(值 * heightScale)
- 浮动(heightScale 被忽略)
数组是一个简单的“二维图像”,其中每个值代表该点的高度,某种形式的虚拟 grid/2d 地图。
分辨率设置为
int heightStickWidth,
int heightStickLength,
在构造函数中。
因此您的数组的大小必须为 heightStickWidth*heightStickLength 个元素
在 4x4 网格的情况下,这在视觉上看起来像:
[0.0,-1.0,2.0,3.0,
0.0,2.0,-1.0,-2.0
5.0,10.0,-10.0,-2.0
5.0,10.0,-10.0,-2.0]
仰角轴取决于构造函数中的upAxis参数(0=X,1=Y,2=Z iirc)
另外不要忘记那种类型的形状的子弹,不会复制你的数组,所以你需要确保在你的形状仍然处于活动状态时不要删除它。
首先,我搜索了 btHeightfieldTerrainShape,然后我意识到构造函数不需要任何普通数据。它是通过地形高度 - 索引数据计算法线本身吗?
其次,参数void* heightfieldData有什么形式吗?我知道那必须是 heightDataType - 数组,但必须有 x - z 坐标或其他东西,但只有它得到的只是数组。这个有公式吗?
数组格式取决于 PHY_ScalarType 参数,它会被这样解释。
可以
- unsigned char (value * heightScale)
- 短(值 * heightScale)
- 浮动(heightScale 被忽略)
数组是一个简单的“二维图像”,其中每个值代表该点的高度,某种形式的虚拟 grid/2d 地图。
分辨率设置为
int heightStickWidth,
int heightStickLength,
在构造函数中。
因此您的数组的大小必须为 heightStickWidth*heightStickLength 个元素
在 4x4 网格的情况下,这在视觉上看起来像:
[0.0,-1.0,2.0,3.0,
0.0,2.0,-1.0,-2.0
5.0,10.0,-10.0,-2.0
5.0,10.0,-10.0,-2.0]
仰角轴取决于构造函数中的upAxis参数(0=X,1=Y,2=Z iirc)
另外不要忘记那种类型的形状的子弹,不会复制你的数组,所以你需要确保在你的形状仍然处于活动状态时不要删除它。