JAVA — JMonkeyEngine — получение информации о сцене

Я работаю над JMonkeyEngine 3.0.

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

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

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

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

person Skatty    schedule 12.12.2013    source источник


Ответы (1)


У меня была та же проблема, что и у вас, после изучения местности в официальном Руководстве для начинающих для 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 в JME IDE

В качестве последнего примечания может быть полезно использовать обход узлов через код для отладки определенных проблем, эта ссылка очень помогла мне в решении задачи: Дополнительная документация JME, обход узла

person Henrik Lindgren    schedule 05.12.2014