Vasara Posted September 17, 2020 Share Posted September 17, 2020 (edited) Добрый день. В папке с ресурсами 4 файла тайлов карт высот под именами 1, 2, 3, 4. Содержащие в таком же порядки картинки с цифрами. После генерации карты обычным циклом (1 -> 4) получается очень странный результат. Это такая фича, или я чтото делаю не так? С Уважением, Константин. Edited October 7, 2020 by Vasara Link to comment
silent Posted September 17, 2020 Share Posted September 17, 2020 Привет! А можно на код глянуть? Мы как-то писали небольшую компонентну для загрузки террейна, можно посмотреть тут: How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
Vasara Posted September 17, 2020 Author Share Posted September 17, 2020 void LmapCreator::makeTileset() { // filling TileImages timg; String name; int tileIndex = 1; char* bufferName = new char[10]; timg.albedoImagePath = "landscape_grafic_assets/albedo2048.png"; int n_tiles = lmapGridSizeX * lmapGridSizeY; while (tiles.size() < n_tiles) { name = itoa(tileIndex, bufferName, 10); timg.heightImagePath = "landscape_grafic_assets/" + name + ".png"; tileIndex++; tiles.append(timg); } delete[] bufferName; name.clear(); } Остальная часть кода из примера без изменений, там в общем одни колбеки. Link to comment
danvern Posted September 17, 2020 Share Posted September 17, 2020 Здравствуйте, там дело в том что система координат изображения не сопадают с системой координат террейна, для перевода можно воспользоваться вот этими функциями //transform image basis to unigine basis ivec2 transform_to_world(int max_columns, int x, int y) { return {x, max_columns - y - 1}; } bool transform_to_world(const ImagePtr &image) { if (!image) return false; return static_cast<bool>(image->flipY()); } первая переворачивает сетку по Y а вторая изображение 1 Link to comment
Vasara Posted September 17, 2020 Author Share Posted September 17, 2020 25 minutes ago, danvern said: Здравствуйте, там дело в том что система координат изображения не совпадают с системой координат террейна, для перевода можно воспользоваться вот этими функциями Не подскажете как их вызвать, не могу сообразить откуда переменную инициализировать. Link to comment
danvern Posted September 18, 2020 Share Posted September 18, 2020 void create_callback(Unigine::LandscapeMapFileCreatorPtr creator, Unigine::LandscapeImagesPtr images, int x, int y) { const auto &grid = creator->getGrid(); ivec2 coord = transform_to_world(grid.y, x, y); ImagePtr image = Image::create(); if (!image->load(String::format("tileset_%d_%d.png", coord.x, coord.y))) return; transform_to_world(image); images->getAlbedo()->assignFrom(image); } пирмерно как-то вот так 1 Link to comment
Vasara Posted September 18, 2020 Author Share Posted September 18, 2020 Получился вот такой результат. Извините, что пристаю с перламутровыми пуговицами. Хочется получить порядок как в углу картинки. Для любого количества импортируемых тайлов. К примеру 16х16({1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}). Думаю тема актуальная, всё таки традиционнее слева направо, сверху вниз. Link to comment
Vasara Posted September 20, 2020 Author Share Posted September 20, 2020 Данные в 2DArray dds файле Link to comment
danvern Posted September 22, 2020 Share Posted September 22, 2020 On 9/18/2020 at 4:27 PM, Vasara said: Извините, что пристаю с перламутровыми пуговицами. Хочется получить порядок как в углу картинки. Для любого количества импортируемых тайлов. К примеру 16х16({1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}). Думаю тема актуальная, всё таки традиционнее слева направо, сверху вниз. тут сложно кодом ответить так как я незнаю в каком порядке вы отдаете тайлы, но там легко найти нужный результат просто отзеркалить либо X координаты либо Y ну или все вместе :) On 9/20/2020 at 10:44 PM, Vasara said: Данные в 2DArray dds файле не могли бы вы подробнее описать? Link to comment
Vasara Posted September 22, 2020 Author Share Posted September 22, 2020 (edited) 45 minutes ago, danvern said: тут сложно кодом ответить так как я незнаю в каком порядке вы отдаете тайлы Порядок самый простой 1, 2, 3, 4....n while < n do n++. 45 minutes ago, danvern said: не могли бы вы подробнее описать? Карты высот сгенерированы и сохранены как 2D массивы в формате R32F в .dds файлах. (PNG из паинта зеркалит без ошибок) 45 minutes ago, danvern said: легко найти нужный результат просто отзеркалить либо X координаты либо Y ну или все вместе :) Можно конечно, только хотелось бы, чтобы движок сам делал без бубна и плясок. Передал 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16. Получил рендер ({1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}). Квадрат слева направо, сверху вниз. Edited September 22, 2020 by Vasara Link to comment
Recommended Posts