我是靠谱客的博主 虚幻路人,最近开发中收集的这篇文章主要介绍投影变换 到 uv坐标 xy/w ---齐次坐标,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

float3 vScreenPos = In.ClipPos.xyz;

vScreenPos /= In.ClipPos.w;

vScreenPos.xy += 1.f;

vScreenPos.xy *= 0.5f;

vScreenPos.y = 1.f - vScreenPos.y;

这个是shader里从vertex最后那个pos 里取 uv的算法

pos是指经过了 world view proj的变换得到的 齐次坐标(x,y,z,w)

我之前 一直不明白 为什么 要xy/w

后来 我认为是这样的  齐次坐标系 是为了 将 P‘=M1 *P+M2  (点P P' 变换矩阵M1 M2)

这种变换 统一到 一个矩阵里表示 就加了一维 使其 把变换统一到 相乘

进行 world view 变换时 w那里一直是一所以可以把 xyz1->xyz想成空间中的点  做各种变换

  但是 proj之后 w就不是1了   好像 world view 时M2的系数是1 proj时 M2的系数不是1了(这里表述不严谨 大体是这个意思)

   这样 就不能再把 点*Matrix的点当成 空间中对应位置的点 来想象 位置了 这步 就只是个计算 所以最后 要把w除去  以把P‘单独 提出来

/w只是计算中的一步 没有几何意义

理解起来 参见 齐次方程 x+y=0              (A)

               非齐次方程 x + y =b    (B)

B的解=A的通解+特解

为什么  x=xh

最后

以上就是虚幻路人为你收集整理的投影变换 到 uv坐标 xy/w ---齐次坐标的全部内容,希望文章能够帮你解决投影变换 到 uv坐标 xy/w ---齐次坐标所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部