Jump to content

Search the Community

Showing results for tags 'detail mask'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Welcome to UNIGINE Forums
    • News & Announcements
    • Getting started
  • Development
    • Content Creation
    • World Design
    • Rendering
    • Animation
    • Physics, Navigation and Path Finding
    • UI Systems
    • Sound & Video
    • Editor
    • C++ Programming
    • C# Programming
    • Networking
    • Sim IG (Image Generator)
    • VR Discussions
    • General
  • Improving UNIGINE
    • Documentation
    • Feedback for UNIGINE team
    • Bug Reports
    • Unigine SDK Beta feedback
  • Community
    • Add-on Store (https://store.unigine.com/)
    • Showcase
    • Collaboration
    • Tools, Plugins, Materials & Tutorials
    • General Discussions
  • Legacy
    • UnigineScript

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Found 1 result

  1. Резюмирую то, что освоил. Надеюсь новичкам поможет. Движок поддерживает 20 масок, в которые уже добавляются детали (1024 если не ошибаюсь). Хранилище масок поделено на 5 блоков. В каждый блок складывается четырёх канальная картинка RGBA, получаем 5 * 4 = 20 масок. Все маски нужно инициализировать во время генерации файла lmap, тогда же, когда добавляем данные альбедо и высот. Tо есть в метод: OnCreatorCreate(Unigine::LandscapeMapFileCreatorPtr creator, Unigine::LandscapeImagesPtr images, int x, int y) Для каждого блока инициализируется отдельный массив данных! getMask(индекс блока) copy(картинка откуда берутся данные, канал где лежит маска, канал картинки откуда берём данные) getMask(1)->copy(sourceImage, 1, 2) Получаем первый блок, который хранит маски с пятой по девятую. Первый канал(G), в котором лежит шестая маска. Присваиваем второй канал(В) картинки, из который забираем пиксели: { ImagePtr newImage; newImage = Image::create(); newImage->create2DArray(4096, 4096, 1, Image::FORMAT_RGBA8); Image::Pixel pixel; for (int sourceY = 0; sourceY < 4096; sourceY++) { for (int sourceX = 0; sourceX < 4096; sourceX++) { pixel.i.r = 255; pixel.i.g = 0; pixel.i.b = 0; pixel.i.a = 0; newImage->set2DArray(sourceY, sourceX, 0, pixel); } } ImagePtr mask = Image::create(); mask->load("source/sourceRGBA.dds"); images->getMask(0)->create2DArray(lmapTileResolutionX, lmapTileResolutionY, 1, Image::FORMAT_RGBA8); images->getMask(0)->copy(mask, 0, 0); images->getOpacityMask(0)->create2DArray(lmapTileResolutionX, lmapTileResolutionY, 1, Image::FORMAT_RGBA8); images->getOpacityMask(0)->copy(newImage, 0, 0); images->getMask(0)->copy(mask, 1, 1); images->getOpacityMask(0)->copy(newImage, 1, 0); images->getMask(0)->copy(mask, 2, 2); images->getOpacityMask(0)->copy(newImage, 2, 0); images->getMask(0)->copy(mask, 3, 3); images->getOpacityMask(0)->copy(newImage, 3, 0); images->getMask(1)->create2DArray(lmapTileResolutionX, lmapTileResolutionY, 1, Image::FORMAT_RGBA8); images->getMask(1)->copy(mask, 0, 0); images->getOpacityMask(1)->create2DArray(lmapTileResolutionX, lmapTileResolutionY, 1, Image::FORMAT_RGBA8); images->getOpacityMask(1)->copy(newImage, 0, 0); images->getMask(1)->copy(mask, 1, 1); images->getOpacityMask(1)->copy(newImage, 1, 0); images->getMask(1)->copy(mask, 2, 2); images->getOpacityMask(1)->copy(newImage, 2, 0); images->getMask(1)->copy(mask, 3, 3); images->getOpacityMask(1)->copy(newImage, 3, 0); } Надеюсь ничего не упустил. Большое спасибо danvern за оперативную помощь. -------------------------------------------------------------------------------- Добрый день. Не могли бы вы помочь с добавлением маски к террейну. Загружается террейн: lmap = LandscapeLayerMap::create(); lmap->setParent(Landscape::getActiveTerrain()); lmap->setPath(lmapName); lmap->setName(lmapName.get()); lmap->setSize(Math::Vec2(4096,4096)); lmap->setHeightScale(1.0f); lmap->setWorldPosition(Math::Vec3::ZERO); lmap->setWorldRotation(Math::quat(Math::vec3::UP, 45.0f)); Создаётся и описывается маска: TerrainDetailMaskPtr maskDetail; //Код... TerrainDetailPtr detailTerrain; detailTerrain->setDetailMask(maskDetail); А как detailTerrain к террейну применить? С Уважением Константин. П.С. Если позволит время, сделайте пожалуйста небольшой пример для карты 2х2 тайла создание маски, присвоение маске картинки, записи маски в файл карты.
×
×
  • Create New...