gpt4 book ai didi

c# - 设置透视图的缩放值等于透视图

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:51 26 4
gpt4 key购买 nike

我正在构建一个具有两种 View 模式的小型形状编辑器:正交 View 和透视 View 。所以我发现如果透视和正射的缩放值相等(或尽可能相等)会很好。

透视图的缩放值只是通过设置z轴上的位置来实现的。对于正交,我将左角、右角、上角和下角从 0.0 缩放到 X。

是否可以将它们平均缩放?有解决办法吗?

最佳答案

我会将相等的缩放值解释为意味着形状在每种缩放模式下看起来大小相同。由于从透视角度来看,形状各部分的表观尺寸将取决于它们与相机的距离,因此这种“等距缩放”只能在形状内的特定深度处实现。

假设您希望最接近相机的形状部分在两种 View 模式下显示相同。

要从透视图中生成等效的正交 View ,首先要计算形状最近点的视锥体的宽度和高度。

宽度 = tan(fovX) * 距离

高度 = tan (fovY) * 距离

其中 distance 是从相机到形状上最近点的距离,fovX, fovY 是透视模式下视野的水平和垂直角度.

然后您可以将正交 View 矩形设置为 0,0,width,height,假设您将相机置于形状的中心。

要从正交 View 生成等效的透视图,只需反转等式:

距离 = 宽度/tan(fovX)

距离 = 高度/tan(fovY)

然后将相机的 z 值设置为物体上最近的点 - distance,假设您向下看正 z 轴。如果您的相机始终位于原点,您可以设置对象的 z 值,使其最近点的 z 值等于距离。

关于c# - 设置透视图的缩放值等于透视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13483775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com