查看: 819|回复: 0
打印 上一主题 下一主题

[其他] Unity3D技术之相机使用技巧-使用斜视锥体浅析

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38266
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2015-1-31 20:10:31 |只看该作者 |倒序浏览
使用斜视锥体

视锥体默认围绕相机的中心线对称分布,但并非必须。视锥体可以“倾斜”,即一边与中心线的夹角小于对边与中心线的夹角。效果很像被切掉一边的打印照片。这使得图像一边的视图缩在一起,造成观看者离物体可见边很近的效果。例如在赛车游戏中使用时,视锥体的底部边缘被弄平整。让观看者看起来更接近路面,强调速度感。

168.jpg


虽然相机 (camera) 类中没有设置视锥体斜度的函数,但可以通过更改投影矩阵轻松进行:
  1. function SetObliqueness(horizObl: float, vertObl: float;) {
  2.         var mat: Matrix4x4 = camera.projectionMatrix;
  3.         mat[0, 2] = horizObl;
  4.         mat[1, 2] = vertObl;
  5.         camera.projectionMatrix = mat;
  6. }
复制代码
幸好我们不必了解投影矩阵如何利用这一点进行工作。horizObl 值和 vertObl 值分别设置水平和垂直倾斜度。值为零表示不倾斜。值为正数表示向右或向上移动视锥体,使左边或底面变得平坦。值为负数表示向左或向下移动视锥体,使右边或上部变得平坦。如果将该脚本添加到相机 (camera) 中且游戏运行时切换到场景视图可直接看到效果;相机视锥体的线框图描述会随检视器中 horizObl 和 vertObl 值的变化而变化。在一个变量中值为 1 或 -1 表示视锥体的一面相对于中心线完全是扁平的。虽然很少情况下必须使用该范围外的值,但还是有可能的。

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-2 12:57 , Processed in 0.137352 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部