用于在three.js中实现后期处理效果。该类管理了产生最终视觉效果的后期处理过程链。 后期处理过程根据它们添加/插入的顺序来执行,最后一个过程会被自动渲染到屏幕上。
构造函数
EffectComposer( renderer
例子
outlinePass
需要引入:
<script src="./js/postprocessing/EffectComposer.js"></script>
<script src="./js/postprocessing/OutlinePass.js"></script>
<script src="./js/postprocessing/RenderPass.js"></script>
<script src="./js/postprocessing/ShaderPass.js"></script>
<script src="./js/shaders/CopyShader.js"></script>
方法如下:
function initEffectComposer(){
composer = new THREE.EffectComposer( renderer );
const renderPass = new THREE.RenderPass( scene, camera );
composer.addPass( renderPass );
outlinePass = new THREE.OutlinePass( new THREE.Vector2( window.innerWidth, window.innerHeight ), scene, camera );
composer.addPass( outlinePass );
outlinePass.edgeStrength = Number( 5 );//边缘长度
outlinePass.edgeGlow = Number( 1 );//边缘辉光
outlinePass.edgeThickness = Number( 3.6 );//边缘厚度 值越小越明显
outlinePass.pulsePeriod = Number( 2.9 ); //一闪一闪周期
outlinePass.visibleEdgeColor.set( 0xffff00 );//没有被遮挡的outline的颜色
outlinePass.hiddenEdgeColor.set( 0xff0000 );//被遮挡的outline的颜色
}
在render方法中添加:
composer.render();
对于需要使用outlinePass 的mesh对象,以数组的形式传入,如:
outlinePass.selectedObjects = [intersects[0].object];
效果图: