예제 #1
0
        public async Task <CoordedPart <MySimpleArray <float> > > GeneratePartAsync(MyRectangle queryArea)
        {
            var heightTexture = (await _terrainShapeDb.Query(new TerrainDescriptionQuery()
            {
                QueryArea = queryArea,
                RequestedElementDetails = new List <TerrainDescriptionQueryElementDetail>()
                {
                    new TerrainDescriptionQueryElementDetail()
                    {
                        Type = TerrainDescriptionElementTypeEnum.HEIGHT_ARRAY,
                        Resolution = _resolution
                    }
                }
            })).GetElementOfType(TerrainDescriptionElementTypeEnum.HEIGHT_ARRAY);

            var encodedTexture = await _transformator.PlainToEncodedHeightTextureAsync(
                heightTexture.TokenizedElement.DetailElement.Texture);

            var heightArray = HeightmapUtils.EncodedHeightToArray(encodedTexture);

            return(new CoordedPart <MySimpleArray <float> >()
            {
                Coords = queryArea,
                Part = heightArray
            });
        }
예제 #2
0
        private Task <Texture2D> ChangeHeightTextureToTexture2DAsync(Texture inputTexture)
        {
            var transformator = new TerrainTextureFormatTransformator(_commonExecutor);

            return(transformator.PlainToEncodedHeightTextureAsync(new TextureWithSize()
            {
                Texture = inputTexture,
                Size = new IntVector2(241, 241)
            }));
        }
예제 #3
0
        public void StartX()
        {
            TaskUtils.SetGlobalMultithreading(false);
            MainTexture = SavingFileManager.LoadPngTextureFromFile(@"C:\inz\cont\n49_e019_1arc_v3.png", 3600, 3600,
                                                                   TextureFormat.ARGB32, true, false);

            var plain = _transformator.EncodedHeightTextureToPlainAsync(new TextureWithSize()
            {
                Size    = new IntVector2(3600, 3600),
                Texture = MainTexture
            });

            var decoded = _transformator.PlainToEncodedHeightTextureAsync(new TextureWithSize()
            {
                Size    = new IntVector2(3600, 3600),
                Texture = plain.Result
            });

            SavingFileManager.SaveTextureToPngFile(@"C:\inz\cont\n49_e019_1arc_v4.rfloat.png", decoded.Result);
        }
예제 #4
0
        private void TestHeightNormalization()
        {
            var db = _gameInitializationFields.Retrive <TerrainShapeDbProxy>();

            var translator = GeoCoordsToUnityTranslator.DefaultTranslator;
            //var unityPosition = translator.TranslateToUnity(new GeoCoordinate(49.613, 19.5510));
            var unityPosition = translator.TranslateToUnity(new GeoCoordinate(49.573343, 19.528953));

            var queryArea = new MyRectangle(unityPosition.x - 10, unityPosition.y - 10, 20, 20);

            var uvdHeight = db.Query(new TerrainDescriptionQuery()
            {
                QueryArea = queryArea,
                RequestedElementDetails = new List <TerrainDescriptionQueryElementDetail>()
                {
                    new TerrainDescriptionQueryElementDetail()
                    {
                        Resolution = TerrainCardinalResolution.MAX_RESOLUTION,
                        Type       = TerrainDescriptionElementTypeEnum.HEIGHT_ARRAY
                    }
                }
            }).Result.GetElementOfType(TerrainDescriptionElementTypeEnum.HEIGHT_ARRAY);

            var uvBase             = uvdHeight.UvBase;
            var plainHeightTexture = uvdHeight.TokenizedElement.DetailElement.Texture;

            var transformator  = new TerrainTextureFormatTransformator(new CommonExecutorUTProxy());
            var encodedTexture = transformator.PlainToEncodedHeightTextureAsync(plainHeightTexture).Result;

            var pixelPoint =
                RectangleUtils.CalculateSubPosition(new MyRectangle(0, 0, 241, 241), uvBase.Center);

            var intCenterPoint = new IntVector2(Mathf.RoundToInt(pixelPoint.x), Mathf.RoundToInt(pixelPoint.y));

            var color  = encodedTexture.GetPixel(intCenterPoint.X, intCenterPoint.Y);
            var height = HeightColorTransform.DecodeHeight(color);

            Debug.Log("Normalized Height is: " + height);
        }