日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ONB视见坐标框架

發布時間:2025/6/15 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ONB视见坐标框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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;

?

?

PBRT 2.2.5給出了一個從一個vector 構建一個coordinate system:

v1 是x軸向為圖中的紅色向量,v2是黃色,v3藍色.

?

vector v1 = set(1,0,0); v@v1 = normalize(v1);if(abs(v1.x) > abs(v1.y)){float invLen = 1.f / sqrt(v1.x * v1.x + v1.z*v1.z);v@v2 = set(-v1.z * invLen , 0.f , v1.x*invLen);} else {float invLen = 1.f / sqrt(v1.y * v1.y + v1.z*v1.z);v@v2 = set(0.0f, v1.z * invLen , -v1.y*invLen); }v@v3 = cross(@v1,@v2);

?

轉載于:https://www.cnblogs.com/gearslogy/p/11011550.html

總結

以上是生活随笔為你收集整理的ONB视见坐标框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。