Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 什么';perspectiveLH和perspectiveFieldOfViewLH之间有什么不同,它们都是从CVV或NDC的角度来看的吗?_Actionscript 3_Flash_Graphics_3d_Stage3d - Fatal编程技术网

Actionscript 3 什么';perspectiveLH和perspectiveFieldOfViewLH之间有什么不同,它们都是从CVV或NDC的角度来看的吗?

Actionscript 3 什么';perspectiveLH和perspectiveFieldOfViewLH之间有什么不同,它们都是从CVV或NDC的角度来看的吗?,actionscript-3,flash,graphics,3d,stage3d,Actionscript 3,Flash,Graphics,3d,Stage3d,对于这两个函数,perspectiveLH和 透视视野LH 首先我可以推导出透视图中使用的矩阵,它是 this.copyRawDataFrom(Vector.<Number>([ 2.0 * zNear / width, 0.0, 0.0, 0.0, 0.0, 2.0 * zNear / height, 0.0, 0.0, 0.0, 0.0, zFar / (zFar - zNear), 1.0, 0.0, 0.0, zNear * zFar / (zNear - zFar), 0.

对于这两个函数,perspectiveLH透视视野LH

首先我可以推导出透视图中使用的矩阵,它是

this.copyRawDataFrom(Vector.<Number>([
2.0 * zNear / width, 0.0, 0.0, 0.0,
0.0, 2.0 * zNear / height, 0.0, 0.0,
0.0, 0.0, zFar / (zFar - zNear), 1.0,
0.0, 0.0, zNear * zFar / (zNear - zFar), 0.0
 ]));
perspectiveFieldOfViewLH矩阵工作正常,但是如果我将矩阵更改为

projectionTransform.perspectiveLH(8006000.11000)

然后就得不到任何图了

但是使用普通透视矩阵或FOV矩阵应该得到相同的结果,对吗

我还对Stage3D渲染管道有点困惑,如果使用这些透视图,会将世界点转换为CVV点,这将导致变形

Doe Stage3D将在光栅化期间将变形图形恢复为法线,或者我需要手动执行此操作。或者我完全错了渲染管道


谢谢

是的。Adobe的矩阵有些混乱。我不想用它们。你可以在这里读到它是如何可能的。 此外,这里有一个正确的矩阵很好的解释。
变形是什么意思?你可以按一定的顺序应用矩阵。透视矩阵排在最后。它被称为模型视图投影。

这里真的没有发生什么神奇的事情。这两个函数创建的矩阵完全相同,它们只接受不同的参数,这取决于您的环境最方便的情况

例如,“透视图”矩阵第二列中的第二项为:

2.0 * zNear / height
这等于“透视视野LH”矩阵的相应术语:

如果将这两者相等,并用所有其他已知值求解高度,则得到:

height = 2.0 * zNear * tan(fovY / 2) = 2.0 * 0.1 * tan(22.5) = 0.0828
请注意,这不是您试图使用的600。您犯的错误是,perspectiveLH函数的宽度和高度不是最终视图的像素,而是描述局部视图平面的尺寸(zNear=0.1)。 一旦你意识到这一点,方程
height=2.0*zNear*tan(fovY/2)
突然变得有意义了

这两个函数实际上只是相同信息的一个表达式

2.0 * zNear / height
1.0 / Math.tan(fieldOfViewY / 2.0)
height = 2.0 * zNear * tan(fovY / 2) = 2.0 * 0.1 * tan(22.5) = 0.0828