2013-12-12 3 views
1

Я работаю над JMonkeyEngine 3.0JAVA - JMonkeyEngine - Получение информации сцены

У меня есть карта в Scene.j3o

Я хотел бы добавить уровень детализации, но я не знаю, как получить геометрия местности. Я нашел несколько кодов, но все они основаны на высоте карты и используют TerrainQuad.

Также я хочу использовать простую систему травы, которая создает 2 квадрата, вращает их, устанавливает материал и клонирует их и добавляет к карте, но я не знаю, как получить высоту ландшафта, вот строка из учебника:

float y = myTerrainQuad.getHeight(new Vector2f(x, z)); 

ответ

0

У меня была такая же проблема, как и вы, следуя учебному посоку по ландшафту в официальной книге для начинающих для JME 3.0. Он начинается с того, что вы создаете ландшафт с контекстными меню IDE на Scene.j3o, но когда они добираются до высоты на местности для размещения деревьев, они переключаются на описание объекта TerrainQuad, как вы говорите.

Я очень счастлив сказать, что мне удалось решить только сейчас путем извлечения TerrainQuad из .j3o, как это:

Spatial terrainGeo = assetManager.loadModel("Scenes/bumpyScene.j3o"); 
TerrainQuad terrainQuad = ((TerrainQuad)((Node)terrainGeo).getChild("terrain-bumpyScene")); 

Geometry someObject = new Geometry("SomeObject", new Box(.1f, .1f, .1f)); 

terrainQuad.getHeight( 
    new Vector2f(someObject.getLocalTranslation().x, someObject.getLocalTranslation().y)); 

В SceneExplorer вы можете увидеть структуру и название вашей сцены. Мастер редактора создает TerrainQuad, как вы можете видеть, в примере мой TerrainQuad находится под узлом с именем «terrain-bumpyScene».

SceneExplorer Window in JME IDE

В последней ноты может быть полезно использовать траверс узлы с помощью кода для отладки определенных проблем, эта связь была очень полезной для меня в решении задачи: JME advanced docs, node traversal

Смежные вопросы