Irrlicht изменить размер местности (ширина + высота)

Я хочу изменить размер местности (ширина + высота) в Ирлихте, но я не нашел для этого никакой функции. Я хочу динамическую карту с одной текстурой. Я использую неправильный шаблон / класс для моего случая?

В настоящее время у меня есть это:

scene::ITerrainSceneNode* terrain = sceneManager->addTerrainSceneNode("media/terrain-heightmap.bmp", 0, -1,
    core::vector3df(0.f, -4.f, 0.f),     // position
    core::vector3df(0.f, 0.f, 0.f),     // rotation
    core::vector3df(1.f, 0.f, 1.f),  // scale
    video::SColor (255, 255, 255, 255),   // vertexColor
    5,                  // maxLOD
    scene::ETPS_17,             // patchSize
    4                   // smoothFactor
);

terrain->setMaterialFlag(video::EMF_LIGHTING, false);
terrain->setMaterialTexture(0, driver->getTexture("media/terrain-texture.jpg"));
terrain->setMaterialType(video::EMT_DETAIL_MAP);

Я пытался найти некоторые сеттеры для установки ширины + высоты (размера), но я не нашел никаких методов.

1 ответ

Решение

Вы можете изменить масштаб местности (или любой сетки), используя setScale.

terrain->setScale(vec3df(2.0f, 0.0f, 2.0f));

Когда вы создаете ландшафт, вы передаете масштаб в качестве 3-го параметра. Таким образом, вызов строки выше приведет к тому, что ваш ландшафт будет в два раза больше (растянут) по осям X и Z, чем в вашем фрагменте. Обратите внимание, что y-значение 0.0f в параметре scale сделает вашу местность довольно ровной, поскольку она будет использоваться для масштабирования значений, представленных в вашей карте высот.

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