【问题标题】:Bullet Physics - Two Question about btHeightfieldTerrainShapeBullet Physics - 关于 btHeightfieldTerrainShape 的两个问题
【发布时间】:2021-06-30 08:55:01
【问题描述】:

首先,我搜索了btHeightfieldTerrainShape,然后我意识到构造函数不需要任何普通数据。它是根据地形高度自行计算法线 - 索引数据吗?

其次,参数void* heightfieldData有什么形式吗?我知道必须是 heightDataType - 数组,但必须有 x - z 坐标或其他东西,但只有它得到的只是数组。这个有公式吗?

【问题讨论】:

    标签: game-physics physics-engine bulletphysics


    【解决方案1】:

    数组格式取决于 PHY_ScalarType 参数,它会被这样解释。

    可以

    • 无符号字符(值 * heightScale)
    • 短(值 * heightScale)
    • float(heightScale 被忽略)

    数组是一个简单的“二维图像”,其中每个值代表该点的高程,某种形式的虚拟网格/二维地图。

    分辨率设置为

    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)

    此外,不要忘记该类型形状的项目符号,它不会复制您的数组,因此您需要确保在形状仍处于活动状态时不要将其删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多