深入了解CSS3DRenderer

时间:2018-08-06 14:14:10

标签: css three.js css-transforms projection-matrix

我希望你们都做得很好,即使外面可能很热!

我目前正在与Three.js的CSS3DRenderer一起使用,以结合DOM元素和webGL内容。我设法完成了我想做的所有事情,但现在我对这一切的工作方式感到好奇。

这是源代码的链接:CSS3DRenderer

我了解嵌套div元素(具有透视图的渲染器,具有worldInaka逆视矩阵的相机和具有模型矩阵的对象)的原理是再现矩阵乘积:MVP,以便从3D坐标中获得div在画布上的位置。使用“透视” css属性应用于子元素和变换样式的preserve3D等。这就是我的理解方式。我希望我没错,请不要犹豫纠正我^^。

但是我的问题是关于相机投影矩阵的fov计算以及为什么要用这种方法。 第一行275:

var fov = camera.projectionMatrix.elements[ 5 ] * _heightHalf;
根据我从投影矩阵知道的这个元素,如下: (2 *附近)/(顶部-底部)。它与fov有什么关系?为什么将它乘以渲染domElement的heightHalf?

另外294行:

var cameraCSSMatrix = camera.isOrthographicCamera ?
'scale(' + fov + ')' + getCameraCSSMatrix( camera.matrixWorldInverse ) :
'translateZ(' + fov + 'px)' + getCameraCSSMatrix( camera.matrixWorldInverse );

它使用先前计算的fov将比例尺应用到cameraElement(如果是正交的)或平移(如果是透视相机)。 我不明白为什么要那样做,我想理解。

有人可以阐明这个问题吗?= /?

请您阅读我的帖子:),并为我的英语不好对不起。

0 个答案:

没有答案