Java - 使用高度图创建世界碰撞 (JBullet)
Java - Create world collision with Heightmap (JBullet)
我正在尝试使用 Jogl、Jbullet 和 OpenSimplexNoise (OSN) 创建一个无限可玩的世界。
我正在用 OSN 生成世界,渲染成功,但我不知道如何将它添加到 world/collision 系统。
我找到了 btHeightfieldTerrainShape class,但未在 Java 中实现。
我也尝试过使用 BvhTriangleMeshShape,但我不明白它是如何工作的。
我有 3 个生成值:
- int smooth: 一米内的分割数
- int viewDistance: 在一个轴上绘制的块数
- int chunkSize: 上的个数
一米一米
我正在使用此代码生成高度图:
/**
* Generate all height in the chunk p[cx][cy].
*/
private float[][] genPerlinMap(int[] p) {
float[][] pts = new float[chunkSize*smooth+1][chunkSize*smooth+1];
for(int i1=0;i1<chunkSize*smooth+1;i1++){
for(int i2=0;i2<chunkSize*smooth+1;i2++){
pts[i1][i2] = (float) (osp.eval(
(p[0]*chunkSize+i1/(float)(smooth))/(float) (mapSize),
(p[1]*chunkSize+i2/(float)(smooth))/(float) (mapSize)
)+1)*0.5f*mapSize;
}
}
return pts;
}
有人知道如何添加吗?
我找到了一个解决方案:使用 https://github.com/bubblecloud/jbullet (jbullet from github) with the code here: https://github.com/bubblecloud/jbullet/commit/a5da8cdc679e998ef3a8605ee9b3cd5f94d71fee .
感谢 gouessej 的 jbullet github link :)
我正在尝试使用 Jogl、Jbullet 和 OpenSimplexNoise (OSN) 创建一个无限可玩的世界。 我正在用 OSN 生成世界,渲染成功,但我不知道如何将它添加到 world/collision 系统。
我找到了 btHeightfieldTerrainShape class,但未在 Java 中实现。 我也尝试过使用 BvhTriangleMeshShape,但我不明白它是如何工作的。
我有 3 个生成值:
- int smooth: 一米内的分割数
- int viewDistance: 在一个轴上绘制的块数
- int chunkSize: 上的个数 一米一米
我正在使用此代码生成高度图:
/**
* Generate all height in the chunk p[cx][cy].
*/
private float[][] genPerlinMap(int[] p) {
float[][] pts = new float[chunkSize*smooth+1][chunkSize*smooth+1];
for(int i1=0;i1<chunkSize*smooth+1;i1++){
for(int i2=0;i2<chunkSize*smooth+1;i2++){
pts[i1][i2] = (float) (osp.eval(
(p[0]*chunkSize+i1/(float)(smooth))/(float) (mapSize),
(p[1]*chunkSize+i2/(float)(smooth))/(float) (mapSize)
)+1)*0.5f*mapSize;
}
}
return pts;
}
有人知道如何添加吗?
我找到了一个解决方案:使用 https://github.com/bubblecloud/jbullet (jbullet from github) with the code here: https://github.com/bubblecloud/jbullet/commit/a5da8cdc679e998ef3a8605ee9b3cd5f94d71fee .
感谢 gouessej 的 jbullet github link :)