Java - Создать мир столкновения с помощью карты высот (JBullet)

Я пытаюсь создать бесконечный игровой мир с Jogl, Jbullet и OpenSimplexNoise (OSN). Я создаю мир с помощью OSN, успешно рендеринг, но я не знаю, как добавить его в систему мир / столкновения.

Я нашел класс btHeightfieldTerrainShape, но он не реализован в 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;
}

Кто-нибудь знает, как это добавить?

1 ответ

Решение

Я нашел решение: используйте https://github.com/bubblecloud/jbullet (jbullet от github) с кодом здесь: https://github.com/bubblecloud/jbullet/commit/a5da8cdc679e998ef3a8605ee9b3cd5f94d71fee.

Спасибо gouessej за ссылку на jbullet github:)

Другие вопросы по тегам