three.js плоская буферная геометрия UVS

Я пытаюсь создать плоскость буферной геометрии, но у меня проблемы с координатами uv. Я пытался следовать Correct UV-mapping Three.js, но не понял правильный результат.

УФ-код ниже. Я также сохранил весь код геометрии буфера по адресу http://jsfiddle.net/94xaL/.

Я был бы очень признателен за намек на то, что я делаю неправильно здесь!

Спасибо!

    var uvs = terrainGeom.attributes.uv.array;
    var gridX = gridY = TERRAIN_RES - 1;
    for ( iy = 0; iy < gridY; iy++ ) {
        for ( ix = 0; ix < gridX; ix++ ) {

            var i = (iy * gridY + ix) * 12;

            //0,0
            uvs[ i ] = ix / gridX
            uvs[ i + 1 ] = iy / gridY;

            //0,1
            uvs[ i + 2 ] = ix / gridX
            uvs[ i + 3 ] = ( iy + 1 ) / gridY;

            //1,0
            uvs[ i + 4 ] = ( ix + 1 ) / gridX
            uvs[ i + 5 ] = iy / gridY;

            //0,1
            uvs[ i + 6 ] = ix / gridX
            uvs[ i + 7 ] = ( iy + 1 ) / gridY;

            //1,1
            uvs[ i + 8 ] = ( ix + 1 ) / gridX
            uvs[ i + 9 ] = ( iy + 1 ) / gridY;

            //1,0
            uvs[ i + 10 ] = ( ix + 1 ) / gridX
            uvs[ i + 11 ] = iy / gridY;
        }
    }

person Doidel    schedule 13.04.2014    source источник
comment
отредактируйте свой jsfiddle, чтобы у вас был визуальный вывод; даже если неправильно.   -  person gaitat    schedule 13.04.2014
comment
Здесь: jsfiddle.net/94xaL/1 Я пытался, но уже слишком поздно вечером для отладки jsfiddle тоже. Однако я загрузил все это здесь: lizkats.com/temp/shaderBlack/examples/skulpt_terrain. html   -  person Doidel    schedule 14.04.2014
comment
Я создал плоскую буферную геометрию (в соответствии с тем, как BufferGeometryUtils преобразует PlaneGeometry в BufferGeometry), и теперь все работает, но это ужасно: из-за способа создания граней одни и те же вершины определяются до 8 раз. Есть ли способ избежать этого, например. сообщая буферной геометрии правило, как строить лица? Я добавлю свое решение в качестве ответа позже   -  person Doidel    schedule 16.04.2014


Ответы (1)


Последняя версия three.js в ветке dev теперь строит плоскости с помощью BufferGeometry: https://github.com/mrdoob/three.js/blob/dev/src/extras/geometries/PlaneGeometry.js

Если вы все еще хотите построить свой собственный, вы можете получить вдохновение там.

person Doidel    schedule 16.04.2014