Проблемы создания глубинных изображений в Unity - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу создать несколько изображений глубины и преобразовать значения в реальные расстояния в метрах.

Итак, чтобы добраться до изображений глубины, я использую этот пример:

https://answers.unity.com/questions/877170/render-scene-depth-to-a-texture.html

однако это не очень хорошо работает для меня, так как я не получаю много разных значений.

На данный момент преобразование выполняется следующим образом:

        double step = (_zFar - _zNear) / 255.0;
        for (int h = 0; h < height; h++)
        {
            for (int w = 0; w < width; w++)
            {
                //compute real depth value in meters from the normalized z-buffer [0..1] values
                //z-buffer values are non-linear so have to apply transformation to linearize the distance in world-space coordinates
                float z = 2.0f * _zNear * _zFar /
                        (_zFar + _zNear - (2.0f * tex2d.GetPixel(h,w).a - 1.0f) * (_zFar - _zNear));

                z = (float) (z / step);
                Debug.Log(tex2d.GetPixel(h, w).a + " -> " + z);

                Color c = new Color(z, z, z, z);
                tex2d.SetPixel(h, w, c);
            }
        }

Для zFear & zNear я принимаю значения nearClipPlane и farClipPlane.

На одном рисунке вы видите вывод значений в журнале, а на другом - пример сохраненного изображения.

current image

current image values

...