2015-07-20 4 views
1

Я пытаюсь использовать thee.js только для обновления zbuffer (я использую preserveDrawingBuffer для создания эффекта трассировки). Однако я не могу найти какой-либо способ только запись в Zbuffer со стандартными материалами, до сих пор я пытался:Как написать zbuffer только с тэгом. Js

  • установки материал visible лжи, которая останавливает рендеринг объекта.
  • установка opacity на 0.0, что означает, что ничего не получается.

Есть ли «стандартный» способ сделать это, или мне нужно использовать пользовательский шейдер фрагмента?

+0

проверить эту (вид-оф-старый) обсуждение: https://github.com/mrdoob/three.js/issues/1750. в любом случае, когда вы устанавливаете непрозрачность 0 или visible = false, объект вообще не будет отображаться, поэтому он даже не попадет в z-буфер. вы можете попытаться дать действительно низкую непрозрачность вместо абсолютного 0 или использовать невидимую текстуру (текстура 1x1 с невидимым пикселем) вместо установки непрозрачности материала. то он отобразит, но не изменит фактический цвет. но это хаки, которые я бы рекомендовал найти правильный путь. –

ответ

3

Вы можете визуализировать буфер глубины только с использованием следующего шаблона.

renderer.context.colorMask(false, false, false, false); // don't update color buffer 
renderer.render(scene1, camera); // first scene 

renderer.context.colorMask(true, true, true, true); 
renderer.render(scene2, camera); // second scene 

Three.js R.71

+0

Спасибо за это - я его не тестировал, но выглядит отлично – Chris