java - 如何使用子弹HeightfieldTerrainShape

标签 java bulletphysics jbullet

我正在努力寻找如何使用 JBullet 物理库中的 HeightfieldTerrainShape。如我所见,有 2 个构造函数可用:

public HeightfieldTerrainShape(int heightStickWidth, int heightStickLength, byte[] heightfieldData,
            float heightScale, float minHeight, float maxHeight, int upAxis, PHY_ScalarType heightDataType,
            boolean flipQuadEdges)

public HeightfieldTerrainShape(int heightStickWidth, int heightStickLength, byte[] heightfieldData,
        float maxHeight, int upAxis, boolean useFloatData, boolean flipQuadEdges)

heightScaleminHeightmaxHeightupAxis 是不言自明的。但是“heightStick”到底是什么?我如何确定它的宽度和长度? heightfieldData 需要什么格式?我假设这只是 float 的字节缓冲区?

最佳答案

第一个函数

public HeightfieldTerrainShape(int heightStickWidth, int heightStickLength, byte[] heightfieldData, float heightScale, float minHeight, float maxHeight, int upAxis, PHY_ScalarType heightDataType, boolean flipQuadEdges)

根据文档 https://pybullet.org/Bullet/BulletFull/classbtHeightfieldTerrainShape.html#a90d823ba5f44871a0bcfce0174177223 是首选.

通过文档(和 cpp 代码),它似乎代表您正在定义的表面(地形)的原子矩形表面的矩形尺寸。

例如,如果您的宽度和高度为 1,地形为 10 x 10(x 和 y),则将有 10 x 10 = 100 个这样的矩形代表您的地形。

关于java - 如何使用子弹HeightfieldTerrainShape,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56246243/

相关文章:

java - 如何通过 Unix 输入重定向将文件作为数组输入到我的 java 程序中?

java - actionPerformed 替换容器内容

bulletphysics - "step"在 stepSimulation 中是什么意思,它的参数在 Bullet Physics 中是什么意思?

java - 如何在jBullet中创建 "BoxShape"?

java - 打开应用程序时是否会加载所有 .java 文件?

java - List 中基于另一个元素的最大值

c++ - btCompoundShape 添加了额外的形状

c++ - 基于 int 的短掩码在 C++ 库 Bullet 中如何工作?

java - 使用 Jbullet 进行 3D java 碰撞检测