WebGL+Threejs阴影与画质提升,提…
2017-04-21 10:49
260 查看
最初提升的的画质:
图一
提升之后的画质(具体哪个面应该smooth渲染,哪个面应该flat渲染都能清晰标识):
图二
renderer.shadowMapType=THREE.PCFSoftShadowMap;
SoftShadow虽然能让边缘柔和,但只是基于像素颗粒的边缘柔和,在本身分辨率低的阴影里面几乎没有显著的效果。最好的方法还是直接提升分辨率。
打开SoftShadow如图一的效果,关闭SoftShadow后如图三的效果:
图三
可以看到影子内少了很多纹路。于是提高影子分辨率的方法还是这样:
spotLight.shadowMapHeight=2048;
spotLight.shadowMapWidth=2048;
让灯光的影子贴图分辨率提升(据说初始默认值是1024)
然后就是哪个面smooth渲染,哪个面flat渲染的问题。此处的模型使用Blender软件制作的,本身有标记边缘线以区分曲面还是折面的问题。但是发觉用auto
smooth方法是不行的,得用EdgeSplit修改器:
图四
图五:Auto
Smooth方法只能在blender里看到效果,导出js文件后Threejs+WebGL渲染不出效果
有了EdgeSplit,我们就不用费神得靠增加网格的办法来提高渲染平面的flat感觉了,赶紧删掉多余的分割网格:
图六:简直密集恐惧症的网格
图七:放大后还是很密集
图八:精简多了。
网格不能全部删除,由于在平面上打洞了,所以得留些线以符合3D描述,尤其是连接到洞的线,如图八里面的斜线。
图一
提升之后的画质(具体哪个面应该smooth渲染,哪个面应该flat渲染都能清晰标识):
图二
renderer.shadowMapType=THREE.PCFSoftShadowMap;
SoftShadow虽然能让边缘柔和,但只是基于像素颗粒的边缘柔和,在本身分辨率低的阴影里面几乎没有显著的效果。最好的方法还是直接提升分辨率。
打开SoftShadow如图一的效果,关闭SoftShadow后如图三的效果:
图三
可以看到影子内少了很多纹路。于是提高影子分辨率的方法还是这样:
spotLight.shadowMapHeight=2048;
spotLight.shadowMapWidth=2048;
让灯光的影子贴图分辨率提升(据说初始默认值是1024)
然后就是哪个面smooth渲染,哪个面flat渲染的问题。此处的模型使用Blender软件制作的,本身有标记边缘线以区分曲面还是折面的问题。但是发觉用auto
smooth方法是不行的,得用EdgeSplit修改器:
图四
图五:Auto
Smooth方法只能在blender里看到效果,导出js文件后Threejs+WebGL渲染不出效果
有了EdgeSplit,我们就不用费神得靠增加网格的办法来提高渲染平面的flat感觉了,赶紧删掉多余的分割网格:
图六:简直密集恐惧症的网格
图七:放大后还是很密集
图八:精简多了。
网格不能全部删除,由于在平面上打洞了,所以得留些线以符合3D描述,尤其是连接到洞的线,如图八里面的斜线。
相关文章推荐
- Three.js WebGL 绘制流程(一)
- Three.js WebGL 绘制流程(一)
- Webgl之three.js
- webGL,Three.js初识 欢迎大家一起参与讨论...
- WebGL three.js
- Convert a model from Maya to WebGL for use with THREE.js
- three.js、webGL、canvas区别于关联
- 原生态webgl--DEMO,以后可能选择Three.JS来代替了,代码网上找的,参考引用
- Threejs 官网 - 检测使用 three.js 时的 WebGL 和浏览器兼容性(Detecting WebGL and browser compatibility with three.js)
- three js JavaScript编写的WebGL第三方库
- three.js(七) 绘制到WebGLRenderTarget
- 小八——WebGL心路历程(2),一个基于Three.js的webGL程序解析
- Three.js讲解以及WEBGL实例
- Three.js讲解以及WEBGL实例
- 学习笔记Webgl之Three.js (1)
- [Three.js]WebGL心形效果
- HTML5 WebGL Three.js 加载 3D模型文件
- HTML5画布WebGL,文件Three.js控制的锥
- [原]Three.js WebGL 绘制流程(一)
- 结合Blender和Three.js使用WEBGL