billboard 详解

计算机3D图像相关技术的讨论

billboard 详解

帖子awakening3d » 2017年 8月 29日 15:19

billboard 是经常会用到的一个技术,就是对象一直面对着相机,本质上是在视图空间中的旋转角度固定,这通过 view 矩阵可以很方便实现。由于只涉及旋转,我们只需要修改 billboard 对象自身矩阵的 3x3 部分。代码如下:
代码: 全选
Matrix._11 = view._11; Matrix._12 = view._21; Matrix._13 = view._31;
Matrix._21 = view._12; Matrix._22 = view._22; Matrix._23 = view._32;
Matrix._31 = view._13; Matrix._32 = view._23; Matrix._33 = view._33;

看出来没有,其实就是和 view 矩阵行列互换,因为转置就是逆,所以对象自身矩阵是 view 矩阵的逆,这样视图变换相当于无作用,对象在视图空间中的旋转角度当然就不会变了。

有时候,比如在树的应用上,billboard需要只绕一个 Y 轴旋转。我们只要修改一下上面的矩阵就可以了,因为在 Y 方向不动,我们只要把矩阵里相关于 Y 分量的变换去掉就好了。代码如下:
代码: 全选
Matrix._11 = view._11; Matrix._12 = 0; Matrix._13 = view._31;
Matrix._21 = 0;        Matrix._22 = 1; Matrix._23 = 0;
Matrix._31 = view._13; Matrix._32 = 0; Matrix._33 = view._33;


同理,只绕 X,或 Z 轴旋转的 billboard 矩阵也只要把对应分量的变换去掉:
代码: 全选
Matrix._11 = 1; Matrix._12 = 0;        Matrix._13 = 0;
Matrix._21 = 0; Matrix._22 = view._22; Matrix._23 = view._32;
Matrix._31 = 0; Matrix._32 = view._23; Matrix._33 = view._33;
awakening3d
网站管理员
 
帖子: 150
注册: 2010年 10月 28日 17:39

回到 学习交流

在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客

cron