【发布时间】:2015-07-21 19:27:13
【问题描述】:
过去一天左右一直在学习 ThreeJS,但是我在着色器方面遇到了困难。
我正在尝试模糊我拥有的几何图形。我尝试将景深与 Three.js 网站上的示例一起使用,但它也使我的前景对象也略微模糊。所以我希望挑出一个对象,然后模糊它。
现在我有了一个使用 LambertMaterial 创建的网格,基本上是这样的:
var material = new THREE.MeshLambertMaterial({
color: 0x5c5c5c,
emissive: 0x000000,
shading: THREE.FlatShading,
transparent: true,
opacity: 1
});
var mesh = new THREE.Mesh(geometryJson, material);
scene.add(mesh);
然后我在网上找到了 2 个着色器(一个用于垂直模糊,一个用于水平模糊)。但是如何在保持上述颜色等设置的同时应用它们?
我尝试使用这样的 ShaderMaterial:
var material = new THREE.ShaderMaterial( {
uniforms: THREE.UniformsUtils.clone( HorizontalBlurShader.uniforms ),
vertexShader: HorizontalBlurShader.vertexShader,
fragmentShader: HorizontalBlurShader.fragmentShader
} );
并且它可以工作(现在我用 UV 导出了我的模型)——但并不像预期的那样。
我的模型现在根据脸部的角度呈现半透明,而不是模糊它。如何使着色器模糊对象,以正确的颜色作为原始材质并同时使用垂直着色器?
【问题讨论】:
-
使用相应的three.js着色器,如示例threejs.org/examples/#webgl_postprocessing_advanced
-
尝试添加着色器但无法正常工作。看看我的小提琴 - jsfiddle.net/VsWb9/3942
-
您的 jsfiddle 在请求 js 资源时得到 404。 (RequestAnimationFrame.js)
-
是的,Jsfiddle 不是最新的示例,所以我删除了它...我将建立一个 git 存储库,其中包含我现在所拥有的供人们查看的内容。
-
@CoreyOgburn 查看我的编辑 - 我添加了一个指向一个实时示例和存储库的链接 - dustinjsilk.com
标签: javascript three.js glsl webgl shader