jaaaaa Posted September 9, 2020 Share Posted September 9, 2020 (edited) Hi Everyone, I'm trying to move a LandscapeLayerMap up or down along the z-Axis. This can't be done via LandscapeLayerMap::setWorldPosition() because of how the terrain system works as far as I understand. Changing the z-component of the LandscapeLayerMap in the editor has no effect. I achieved the desired effect in the editor using the import settings for the height map. Left: default import settings, base of terrain is located at z = 0; Right: "moving" LandscapeLayerMap to z = -5 Is this the correct way to do it? How can this be achieved via API? I tried to use LandscapeMapFileCreator and LandscapeMapFileSettings as described in Working with Landscape Terrain via Code, however I could not find corresponding functions to manipulate the Min/Max values. I even tried remapping the values of the heightmap myself while loading it according to the Tutorial Working with Landscape Terrain via Code but setting negative values to the height map breaks it. Any help is appreciated. Kind regards Edited September 9, 2020 by ipg_jallmenroeder Link to comment
morbid Posted September 10, 2020 Share Posted September 10, 2020 Hi, Yes, Landscape layer can't be moved along Z axis due to the object's nature. It can't automatically lerp a space between two data layers. Do you mean that LandscapeLayerMap::setHeightScale with negative value breaks the terrain? Thanks. 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
jaaaaa Posted September 10, 2020 Author Share Posted September 10, 2020 (edited) Hi @morbid, thanks for your reply. Here are my import settings: As I understand it, LandscapeLayerMap::setHeightScale corresponds to the height scale, marked in green. What I want to change via API are the Min and Max values for height import, marked in red. I did not find API functions to set those values so I tried to remap the heightmap myself. If I read the Documentation correctly, the Height Min and Max values are used to remap the values from the heightmap. So with my import settings above, the normalized heightmap with values in [0,1] is remapped to [-2,-1]. To achieve this behaviour without setting the Height Min and Max values (as I dont know how) I tried to remap the 32F values of the height texture myself, but changing the heightmap values to something negative apparently breaks the heightmap. I am looking for a way to either set those Height Min/Max values marked in red via API before importing or to perform the remapping of the heightmap according to those values myself. Did my problem become clearer now? Thanks for looking into this! If somethings unclear, I'm happy to answer questions. Kind regards Edited September 10, 2020 by ipg_jallmenroeder Link to comment
morbid Posted September 11, 2020 Share Posted September 11, 2020 Thank you, Unfortunately, Min/Max height is not exposed in the API, it's a part of an import process performed by the editor. This operation still can be handled manually, we can share a code snippet with you: float *pixels = reinterpret_cast<float *>(image->getPixels()); size_t num_pixels = size_t(image->getWidth()) * size_t(image->getHeight()); float range = import_params.height_max - import_params.height_min; for (size_t i = 0; i < num_pixels; ++i) pixels[i] = import_params.height_min + (pixels[i] * range); Let me know if this helps. 1 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
jaaaaa Posted September 11, 2020 Author Share Posted September 11, 2020 Hi @morbid, thanks for the support! The shared code did the trick! I tried the same a slightly different way before, turns out it was just a texture format missmatch. I loaded a DDS texture (because I had nothing better at hand) and decompressed it to RGBA8, which then was wrongly interpreted as a float. This is what ultimately broke the heightmap. It would be neat to have a corresponding API call for the height Min/Max import settings in the future. Kind regards Link to comment
Recommended Posts