首页 > 其他 > 详细

ONB视见坐标框架

时间:2019-06-12 19:11:50      阅读:152      评论:0      收藏:0      [点我收藏+]

ONB是在渲染器中看到的几个概念,不过这玩意我还是为了放心在houdini可视化了下。

毕竟这玩意其实跟Houdini中copy的正交基完全一个概念。建立up向量,形成正交矩阵.

 

ONB其实就是一个简单的正交基,但是只要是正交基就能表示在他作为 基的情况下的向量。 3个不相关向量 可以 唯一的线性表示任何向量.

作用:

(1),制作投射相机的投射光线方向

(2),lens_shader sampler points : 景深采样点的变换,方便得出    透镜与焦平面   光线投射方向

 

下面主要看如何快速的将一些采样点快速变换到 ONB坐标架下(2):

 

例如红色球是摄像机的目标点(target_point),蓝色点是眼睛的位置(eye)

技术分享图片

蓝色的线可以看成一个向量,但是我们要的方向w是从 <红色点到蓝色的方向> 来建立 ONB坐标架.主要是满足右手坐标架

vector up = set(0,1,0);
vector target_pos = point(1,"P",0);


vector w = normalize(@P - target_pos);
vector u = cross(up,w);
vector v = cross(w,u);

v@ww = w;
v@uu = u;
v@vv = v;

现在可以看到ww,uu,vv向量构建的正交基.

技术分享图片

 

 利用这个正交基可以快速的将采样点变换到这个ONB框架下.例如在 景深 这章。在单位圆(xy平面)的点要变换到这个坐标下:

技术分享图片

 

 技术分享图片

 

vector eye = point(1,"P",0);
vector u = point(1,"uu",0);
vector v = point(1,"vv",0);

@P = eye + u*@P.x  + v*@P.y;

 

ONB视见坐标框架

原文:https://www.cnblogs.com/gearslogy/p/11011550.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!