首先,我搜索了关于btHeightfieldTerrainShape的信息,然后我意识到构造函数不需要任何普通数据。它是通过地形高度指数数据来计算法线的吗?
第二,参数void*heightfieldData有什么形式吗?我知道一定是heightDataType-array,但一定有x-z坐标之类的,但只有数组。这个有公式吗?
数组格式取决于PHY_ScalarType参数,并且将按此方式进行集成。
它可以是
- 无符号字符(值*高度比例(
- short(value*heightScale(
- float(忽略heightScale(
Array是一个简单的";2d图像";其中每个值表示该点的高程,某种形式的虚拟网格/2d地图。
使用设置分辨率
int heightStickWidth,
int heightStickLength,
在构造函数中。
所以你的数组的大小必须是heightStickWidth*HeightStick Length元素
在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(
另外,不要忘记,该类型形状的项目符号不会复制您的数组,因此您需要确保在形状仍处于活动状态时不要删除它。