TWaver - 专注UI技术

http://twaver.servasoft.com/
posts - 171, comments - 191, trackbacks - 0, articles - 2
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

TWaver 3D特效系列之环境映射

Posted on 2015-01-28 15:26 TWaver 阅读(1514) 评论(2)  编辑  收藏

随着TWaver3D的快速发展,越来越多的各种功能都在不断加强,包括性能的极大提升(可以参考这里),3D编辑器的易用性和功能持续增强(欢迎大家申请试用),各种特效的增加,特效是本文的主角。

对于UI技术的不断发展和越来越挑剔的用户,各种特殊的效果已经变成了一种必不可少的需求了;或许你正在为客户提出的需求而苦恼,不过不用担心,用TWaver3D正好可以解决这些苦恼。用时下流行的一句话说:有TWaver3D,就是这么任性。

本文要讲的是环境映射。

如果你不理解什么是环境映射,也没有关系,其实你就可以把这个效果想象成现实世界中得镜子,镜子可以把周边的环境映射出来,而且随着观察角度的不同,映射的内容也不同。

在TWaver3D中,实现并不难,几行代码即可。如下,我们先放一个天空盒,代码很简单,用cube加六张贴图即可:

1
2
3
var skybox = new mono.Cube(5000,5000,5000);
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,并设置环境映射

1
2
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都增加到场景中,最终的效果如下:

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

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

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

最终的效果图:

twaver_envmap_2

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

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

改动后的效果图:
twaver_envmap_3

最后来个实际例子:
twaver-skybox-glass-building


评论

# re: TWaver 3D特效系列之环境映射  回复  更多评论   

2015-01-28 19:12 by 京山游侠
不错,好东西。

# re: TWaver 3D特效系列之环境映射  回复  更多评论   

2015-01-30 14:37 by 原创文学
厉害厉害。。。。

只有注册用户登录后才能发表评论。


网站导航: