Я хочу изменить размер местности (ширина + высота) в Ирлихте, но я не нашел для этого никакой функции. Я хочу динамическую карту с одной текстурой. Я использую неправильный шаблон / класс для моего случая?
В настоящее время у меня есть это:
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);
Я пытался найти некоторые сеттеры для установки ширины + высоты (размера), но я не нашел никаких методов.
Вы можете изменить масштаб местности (или любой сетки), используя setScale.
terrain->setScale(vec3df(2.0f, 0.0f, 2.0f));
Когда вы создаете ландшафт, вы передаете масштаб в качестве 3-го параметра. Таким образом, вызов строки выше приведет к тому, что ваш ландшафт будет в два раза больше (растянут) по осям X и Z, чем в вашем фрагменте. Обратите внимание, что y-значение 0.0f в параметре scale сделает вашу местность довольно ровной, поскольку она будет использоваться для масштабирования значений, представленных в вашей карте высот.
Других решений пока нет …