three.js: Отдаленные пейзажи
Как правильно сделать панорамный "задник" в игре? Создаю 4 плоскости с геометрией PlaneGeometry с 4 разными текстурами, материалы:THREE.MeshLambertMaterial({map: skyTexture1, color:0xffffff, ambient:0xffffff, specular:0xffffff, transparent: false}), затем skyTexture2, 3 и 4.
Проблема в том, что на стыках плоскостей видно, что на каждой плоскости цвет неба разный, хотя в графическом редакторе был задан одинаковый. Отключение освещения (Directional Light) не помогло, все равно заметна граница. Видел пример "three.js skybox", но там используется куб с пестрой текстурой, на которой, как я понял, просто не видны эти переходы. Можно попробовать сделать задники сферой, но в игре используется квадратная карта, поэтому сферу придется сделать слишком большой и текстура для нее получится тоже огромная. Есть ли способ заставить эти плоскости отображаться на сцене одинаково, то есть, в их оригинальных цветах и яркости? ![]() ![]() |
Проблема временно решена за счет использования общего фонового цвета сцены и прозрачности "задников" (png) в области неба. Для того, чтобы из-за особенностей webGL blending "задники" не выскакивали вперед других объектов, им присвоено более "глубокое" значение рендеринга: plane.renderDepth=1. Но это работает на билде three.js r69. На последующих - другая система задания порядка рендеринга.
Цитата:
![]() ![]() Однако, решение в виде независимости "задников" от общего освещения сцены по-прежнему было бы интереснее. |
Часовой пояс GMT +3, время: 20:28. |