不知道大家有没有听过或者是看过《黑客帝国》这部电影,紧张讲的是看似正常的显示天下实际上是由一个名为”矩阵”的打算机人工智能系统掌握的,主角三人走上了抗争矩阵征途的故事。这部影片系列一共有三部,被大家公认的评为十大经典科幻电影之一,最早的一部是于1999年3月31日在美国上映,算是比较早的一部谱写人于及其关系的电影。大家有兴趣的话可以利用空闲韶光去看一下。
在这部影片中, 有一个非常经典的画面效果
对不起, 不是这张, 而是这张
叫做代码雨,大家可以通过百度看一下代码雨的动态效果。而在电影中,所有的现实中的东西都是由一串串代码组成的, 比如这样。
本日, 我就要带领大家制作这样的效果。这个效果叫做ASCII码字化效果(文本画),非常大略。
首先须要我们须要在页面头部引入AsciiEffect文件,这个文件我已经上传到我的github上了, 大家可以通过这个地址去下载
https://github.com/Daisy-YW/threeJS/blob/master/js/asciiEffect.js
<script src="./js/asciiEffect.js"></script>
接下来我们须要修正一下JS主体部分的末了几行, 下面这句话的意思是在#WebGL_output这个DOM节点中添加我们渲染器中的dom元素
$("#WebGL_output").append(renderer.domElement);
我们须要将它改为
//利用ASCII改编渲染器中原本的效果
var effect = new THREE.AsciiEffect( renderer );
// ASCII渲染效果的尺寸是浏览器的尺寸
effect.setSize( window.innerWidth,window.innerHeight );
// 在#WebGL_output中渲染改编为ASCII效果的DOM节点
$("#WebGL_output").append(effect.domElement);
由于我们的案例中, 球体和立方体都是加了动态效果的, 以是我们还须要在render循环中改变一下我们的代码。由于我们renderer已经被ASCII进行了改编, 以是在末了的render函数中我们须要将
renderer.render( scene,camera )
改为: effect.render( scene,camera )
重新打开你们的页面,便是下面这种效果
是不是很大略很好玩呢?
本次学习就到这里,如果大家有什么问题都可以积极留言,或者是下载我的代码进行研究哦!
地址如下:
https://github.com/Daisy-YW/threeJS/blob/master/05-threeJS-AsciiEffect%E6%95%88%E6%9E%9C.html
我们下次再见喽