小河马 12:04:38
TK,我想问一下,怎么做那种 放大镜效果啊,就是比如有一个望远镜道具,透过望远镜,看到的场景被放大,这需要设置投影矩阵吗?
M3G初学 15:00:34
望远镜不是把摄像机拉近就OK了么
小河马 15:04:00
还有更好的方法吗
M3G初学 15:04:22
这种方法不好么?
KEN 16:37:22
如果是瞄准镜呢?
需要作2次渲染吗?
M3G初学 16:38:00
瞄准镜就是再罩个图片吧
KEN 16:38:45
不是,瞄准镜外面是正常的camera,瞄准镜里面要用拉近的camera投影
M3G初学 16:48:36
会出现同时看见瞄准镜外面和里面的情况么?
KEN 16:50:16
偶只是突然想到 :)
比如某些狙击类的游戏
CS是只渲染放大部分,然后周围mask掉
偶记的有个狙击游戏,狙击镜里面是放大的部分,周围有一部分是普通的情况
汤锴 09:02:51
关于狙击镜的实现:
用Perspective矩阵可以很好地模拟这个效果,不光能模拟放大,而且可以模拟放大的渐变过程,思路是通过余弦函数控制FOV,GL版代码如下:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(cos(tempAng+=0.03f)*10+33, 640.f/480.f, 1, 3000);
glMatrixMode(GL_MODELVIEW);
而所谓"狙击镜里是放大的景象,狙击镜以外是正常的",这就是另一个的思路了,只需先正常渲染场景一次(RenderTarget设置为正常),然后再按照上述方法渲染场景一次(RenderTarget设置为另外一张Texture),然后把这张Texture以覆盖或者混合等方式,渲染回默认的RenderTarget即可。
当然这样做的代价是场景渲染了两遍,不过不可能有更好的做法。