随着TWaver3D的快速发展,越来越多的各种功能都在不断加强,包括性能的极大提升(可以参考这里),3D编辑器的易用性和功能持续增强(欢迎大家申请试用),各种特效的增加,特效是本文的主角。 对于UI技术的不断发展和越来越挑剔的用户,各种特殊的效果已经变成了一种必不可少的需求了;或许你正在为客户提出的需求而苦恼,不过不用担心,用TWaver3D正好可以解决这些苦恼。

用时下流行的一句话说:有TWaver3D,就是这么任性。

本文要讲的是环境映射。

如果你不理解什么是环境映射,也没有关系,其实你就可以把这个效果想象成现实世界中得镜子,镜子可以把周边的环境映射出来,而且随着观察角度的不同,映射的内容也不同。在TWaver3D中,实现并不难,几行代码即可。如下,我们先放一个天空盒,代码很简单,用cube加六张贴图即可:

var skybox = new mono.Cube(,,);
skybox.setStyle('m.side','back');
skybox.setStyle('m.texture.image',['./images/posx.jpg','./images/negx.jpg','./images/posy.jpg','./images/negy.jpg','./images/posz.jpg','./images/negz.jpg']);

然后在天空盒里面增加一个小的cube,并设置环境映射

var cube = new mono.Cube(200, 200, 200);
cube.setStyle('m.envmap.image',['./images/posx.jpg','./images/negx.jpg','./images/posy.jpg','./images/negy.jpg','./images/posz.jpg','./images/negz.jpg']);

把skybox和cube都增加到场景中,最终的效果如下:


(gif图片较大,刚开始加载的时候有点卡,请耐心等待)
在实际应用中,这种技术可以实现镜子,有反射效果的地面,墙面等。

当然在很多情况下,真实的物体的表面并不是完全光滑的,而是粗糙的,比如一些建筑物外面的粗糙的毛玻璃等,在TWaver3D里面要实现这种效果,只需要对表面的法线向量加上扰动即可,实现也很简单,准备一张扰动的图,一句代码即可:

cube.setStyle('m.normalmap.image','../demo/images/normalmap.png');

最终的效果图:

当然,如果你觉得上面的扰动比较大,可以通过下面的参数调整:

  cube.setStyle('m.normalScale',new mono.Vec2(0.05,0.05));

改动后的效果图:

最后来个实际例子:

最新文章

  1. JavaScript中的继承
  2. ASP.NET Core – 2300% More Requests Served Per Second
  3. JavaScript 获取数组中最大值、最小值
  4. MySQL 视图的基础操作(五)
  5. ps命令交叉编译
  6. Python 汉字简体和繁体的相互转换
  7. C#多线程的几种实现方法
  8. Python和C++交互
  9. rownum
  10. team geek
  11. ControlStyles(枚举)
  12. 201521123093 java 第一周总结
  13. LeetCode 63. Unique Path II(所有不同路径之二)
  14. Java数据结构和算法(十一)——红黑树
  15. ADC_DMA_TIM
  16. angular与vue的应用对比
  17. apt-get出现的问题
  18. npm 及安装
  19. Nescafe #29 NOIP模拟赛
  20. 20155318 《网络攻防》Exp5 MSF基础应用

热门文章

  1. YTU 2633: P3 数钱是件愉快的事
  2. Swift-AES之加密解密
  3. URAL 1057 数位dp
  4. CentOS常用基础命令大全
  5. POJ2187 Beauty Contest (旋转卡壳算法 求直径)
  6. xshell、xftp最新版下载方法
  7. random模块思维导图
  8. 【SPOJ-GCDEX】GCD Extreme(欧拉函数)
  9. 《从Paxos到ZooKeeper 分布式一致性原理与实践》阅读【Leader选举】
  10. leetcode343 Integer Break