Three.js - использование видовых экранов и EffectComposer вместе
0 Lee Stemkoski [2013-10-31 21:46:00]
Недавно я создал демоверсию Three.js, которая отображает сцену, а затем устанавливает окно просмотра в меньшую часть окна и отображает сцену из служебной камеры, создавая эффект стиля мини-карты; код доступен по адресу:
http://stemkoski.github.io/Three.js/Viewports-Minimap.html
Соответствующий фрагмент кода:
// w = window width, h = window height, mapWidth = minimap width, mapHeight = minimap height
renderer.setViewport( 0, 0, w, h );
renderer.clear();
// full scene with perspective camera
renderer.render( scene, camera );
// minimap with orthogonal camera
renderer.setViewport( 0, h - mapHeight, mapWidth, mapHeight );
renderer.render( scene, mapCamera );
... и это работает как шарм.
Теперь я хочу расширить этот пример, добавив некоторую постобработку на сцену; Я настроил THREE.EffectComposer
названный composer
, добавил соответствующие THREE.EffectComposer
рендеринга, и я переключил renderer.render( scene, camera )
в код выше с composer.render()
, но теперь миникарта исчезает; см. http://stemkoski.github.io/Three.js/Viewports-Minimap-Effects.html для живого примера.
Как я могу исправить этот пример? В частности, существуют ли настройки в EffectComposer
которые необходимо настроить для совместной работы с визуализацией вида? Или еще лучше, можно ли добавить второй композитор RenderPass к композитору, который позволяет нам использовать видовое окно?
javascript three.js
1 ответ
1 Решение WestLangley [2013-11-02 00:01:00]
Вы, кажется, меняете код, так как я сначала посмотрел на него, но, основываясь на вашем исходном вопросе, вам нужно очистить буфер глубины, прежде чем отображать мини-карту.
renderer.clear( false, true, false );
renderer.render( scene, mapCamera );
Если ваш код работал без этого, я думаю, вам просто повезло.
Кроме того, OrthographicCamera.near
должно быть положительным числом, поэтому ближайшая плоскость находится перед камерой. Верните орфографическую камеру немного и установите близкую плоскость в разумное положительное значение.
OrthographicCamera.left
(.right/.top/.bottom
) должен находиться в мировых координатах - не зависит от размера окна в пикселях.
three.js r.62