当我们使用平行投影时如何得到射线和射线的方程,以及如何推导这个方程?平行投影射线的方程
0
A
回答
0
在传统的光线跟踪中,您使用的是始于您的视点的光线。对于每个像素,您可以计算它在相机前面的虚拟屏幕上的位置,并通过该像素拍摄光线。
设pO为视点,d为摄像机的方向,r为指向右侧的矢量,u为矢量指向的向量。令w为水平屏幕中的像素数量,h为垂直像素数量。
用于射线通过任何像素x去的参数方程中,y是则:
射线= PO + T *归一化(d +(X - 0.5瓦特)/0.5w * R +(Y - 0.5 h)/0.5h * u)
其中t是参数。
对于平行投影,移动虚拟屏幕到原点,并计算在x,y是光线的原点,然后使用相同的方向d为每条射线:
射线= (p0 +(x - 0.5w)/0.5w * r +(y - 0.5h)/0.5h * u)+ t * d
0
对于透视投影,您有一个眼睛的起源,方向,向右和向上的向量。然后,通过缩放向右和向上矢量,从眼睛原点向虚拟屏幕中的每个像素运行矢量。
在平行投影中,您对屏幕上的点执行相同的计算,但您的原点会变成该点,并且您对每条射线使用相同的方向。
+0
可否请您用数学术语解释? – debonair
相关问题
- 1. 了解three.js射线投影
- 2. three.js所平面不投射阴影
- 3. Hibernate标准投射投影
- 4. 3D投影映射
- 5. Matplotlib底图在立体投影上绘制两个平行线
- 6. 通过自定义相机投影矩阵进行光线投射
- 7. 正交投影线
- 8. Google投影崩溃停止投射
- 9. 以投影方式投影FrameLayout
- 10. C++ - 动态阴影投射
- 11. THREE.JS不会投射阴影
- 12. glotho zox平面投影
- 13. 将轴投影到平面
- 14. 在three.js中移动平行于投影平面的物体
- 15. Unity3D光线投射错误方向c#
- 16. 使用Underscore平面映射和投影数组
- 17. OpenCV中曲线的垂直和水平投影
- 18. 线性投影库C#
- 19. 使用CSG树进行光线投射
- 20. SpEL:映射列表元素的投影
- 21. CGContextSetShadowWithColor把上的文字投射阴影
- 22. 用于投影映射的替代Kinect
- 23. three.js所投射阴影的麻烦
- 24. 点投影到yx旋转的平面
- 25. 图像的水平和垂直投影
- 26. Linq的平均查询和投影
- 27. 平面投影的约束尺寸
- 28. D3 + Three.js:格线投影 - 无法将投影应用于刻度
- 29. 投影屏幕坐标到世界坐标轴射线
- 30. 高效投影2D平面到1D线上
这个问题似乎是题外话题,因为它是关于几何。 –
看看:http://scratchapixel.com/lessons/3d-advanced-lessons/perspective-and-orthographic-projection-matrix/它包含你所需要的,不需要在这里复制。 BTW。在互联网上进行一点搜索肯定会为您提供答案。 – user18490