2012-06-01 6 views
3

Я строю мир «вырезания бумаги» в трёх цветах. Все мои модели - простые «плоскости», и я текстурирую их с PNG, у которых есть альфа-каналы, чтобы обрезать плоскость до более приятной формы.в three.js, альфа-канал работает непоследовательно

Странная вещь: прозрачность появляется и исчезает непредсказуемо, исходя из положения плоскости и положения камеры.

Симптом 1: если плоскость частично находится под землей, прозрачность работает, но если я перемещаю ее над землей, прозрачная область заполняется белым.

Симптом 2: создание симптомов 1: если теперь я перемещаю камеру так, чтобы вектор взгляда был почти параллелен плоскости, прозрачность снова начинает работать.

Любые мысли? Похоже, что оптимизация пошла не так или возможно проблема с z-записью? является ли текстура записываться на z независимо от значения альфа? Если бы это было так, я бы не подумал, что это будет чувствительно к положению или углу камеры.

+0

ОК, редакция: моя нынешняя теория заключается в том, что порядок рисования объекта меняется в зависимости от положения камеры и объекта. поэтому мой реальный вопрос становится: имеет ли three.js средство для сортировки объектов с прозрачностью в порядке алгоритма художника? – mmaclaurin

ответ

9

Вам необходимо установить флаг transparent в значение true.

new THREE.MeshBasicMaterial({ map: transparent_map, transparent: true });