Точность данных Mapbox высоты - PullRequest
0 голосов
/ 25 февраля 2019

Я создал простое приложение three.js, которое отображает листы карты в 3D.Каждая плитка представляет собой отдельную сетку (плоскость с 10 сегментами высоты и 10 ширины), в которой используется THREE.ShaderMaterial.Для доступа к данным высот я использовал Mapbox tileset .Две плитки png (высота и цвет) передаются в простой шейдер, который декодирует значение высоты:

<script id="vertexShader" type="x-shader/x-vertex">
uniform sampler2D bump;
uniform sampler2D map;

varying float vAmount;
varying vec2 vUv;

void main()
{
    vUv = uv;
    vec4 bumpData = texture2D( bump, uv );
    vAmount = bumpData.x;

    float height = (-0.4 + (bumpData.x * 256.0 * 256.0 + bumpData.y * 256.0 + bumpData.z)/1024.0);

    vec3 newPosition = position;
    newPosition.z = height;

    gl_Position = projectionMatrix * modelViewMatrix * vec4( newPosition, 1.0 );
}
</script>
<script id="fragmentShader" type="x-shader/x-vertex">
uniform sampler2D bump;
uniform sampler2D map;

varying vec2 vUv;

varying float vAmount;

void main()
{
    if(vAmount == 0.0) {
        discard;
    }

    vec4 tile = texture2D(map, vUv);
    gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0) + tile;
}
</script>

screenshot Однако кажется, что соседние плитки имеют немного разные значения высотыпо краям.Я пытался использовать THREE.NearestFilter для текстур, но это не имело никакого эффекта.Есть ли способ избавиться от этих белых полос?

...