Я начал игру на основе кубика three.js и имел некоторые проблемы с прозрачностью рендеринга в блоках.Можно ли остановить эти лица от рендеринга?
Я загружая блоки из файла JSON, где структура каждого выглядит следующим образом:
{
'sprite': 'water.png',
'collides': false,
'moves': false,
'transparent': true
}
Затем создание текстур в моем визуализаторе от их спрайтов и прозрачного значения.
var texture = THREE.ImageUtils.loadTexture('/img/' +
_materials[i].sprite);
var properties = {
map: texture
};
if(_materials[i].transparent) {
properties.opacity = 0.3;
properties.transparent = true;
}
materials[i] = new THREE.MeshBasicMaterial(properties);
И предыдущее определение для воды выглядит следующим образом.
Вы можете видеть лица других блоков воды, через те, которые находятся выше и рядом с ними. Возможно ли предотвратить это?
Вам понадобится скрытое устранение лица, чтобы вы вообще не проходили внутренние лица к рендерингу или только визуализировали прозрачное лицо, самое близкое к камере. –
Если бы это был я, я бы просто визуализировал верхние грани , Как @ratchetfreak сказал. – Vallentin
Если вы не можете назначить отдельные лица в кубе разных материалов, вы можете нарисовать воду за два прохода. На первом проходе отключить цвет записи и включить запись глубины, а во втором пропустить разрешить запись цвета, но отключить запись глубины и использовать тест глубины: 'GL_LEQUAL'. Это должно устранить все, кроме верхнего слоя воды, хотя из-за радостей с плавающей запятой вам может потребоваться небольшое смещение глубины на одном из ваших проходов, чтобы это работало. –