Three.js CSS3是否忽略projectonMatrix属性?
我正在用Three.js做增强现实,最近我尝试结合WebGL和CSS3渲染来同时渲染3D内容和DOM对象(主要用于视频播放)。我已经开始学习教程,但我无法使用CSS获得正确的可视化效果(尽管WebGL工作正常) 基本上,在执行AR时,我们必须将两个矩阵应用于场景:投影矩阵和摄影机矩阵。投影矩阵(主行)通常如下所示:Three.js CSS3是否忽略projectonMatrix属性?,three.js,Three.js,我正在用Three.js做增强现实,最近我尝试结合WebGL和CSS3渲染来同时渲染3D内容和DOM对象(主要用于视频播放)。我已经开始学习教程,但我无法使用CSS获得正确的可视化效果(尽管WebGL工作正常) 基本上,在执行AR时,我们必须将两个矩阵应用于场景:投影矩阵和摄影机矩阵。投影矩阵(主行)通常如下所示: var projectionMatrix = [ 1.820090055466, 0, -0.000550820783, 0,
var projectionMatrix = [ 1.820090055466, 0, -0.000550820783, 0,
0, 3.227676868439, -0.036605358124, 0,
0, 0, -1.000199913979,-0.200020000339,
0, 0, -1, 0
];
相机矩阵(row MARGER)表示表示虚拟世界中相机变换的刚性3D变换(R | t合成):
var cameraMatrix = [ 0.790828585625,0.296402275562,-0.535477280617,-0.309822082520,
-0.612037420273,0.382129371166,-0.692378044128,-0.447699964046,
-0.000600785017,0.875284433365,0.483608126640,-0.637073278427,
0.000000000000,0.000000000000,0.000000000000,1.000000000000];
使用WebGL,将这些矩阵应用于管道非常容易:
self.wglCamera.matrixAutoUpdate = false;
self.wglCamera.projectionMatrix.set(
pm[0], pm[1], pm[2], pm[3],
pm[4], pm[5], pm[6], pm[7],
pm[8], pm[9], pm[10], pm[11],
pm[12], pm[13], pm[14], pm[15]);
self.wglCamera.matrix.set(
cm[0], cm[1], cm[2], cm[3],
cm[4], cm[5], cm[6], cm[7],
cm[8], cm[9], cm[10], cm[11],
cm[12], cm[13], cm[14], cm[15]);
当我对CSS3摄影机执行相同操作时,得到的渲染结果()不正确:
有两个问题:
- 红色纹理(CSS3Object)非均匀缩放(实际上是正方形)
- 它总是位于屏幕中心,但它应该位于蓝色网格的位置
// https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CSS3DRenderer.js#L225
this.render = function ( scene, camera ) {
var fov = 0.5 / Math.tan( THREE.Math.degToRad( camera.fov * 0.5 ) ) * _height;
...
camera.matrixWorldInverse.getInverse( camera.matrixWorld );
// Why we don't use camera.projection Matrix here?
var style = "translate3d(0,0," + fov + "px)" + getCameraCSSMatrix( camera.matrixWorldInverse ) +
" translate3d(" + _widthHalf + "px," + _heightHalf + "px, 0)";
...
};
如果是,我如何才能达到预期的结果
我已经尝试将PM*CM传递给camera matrix,但这两个问题仍然存在。主要是我更担心被忽略的平移,因为旋转看起来不错
如果有任何想法/建议,我将不胜感激!谢谢。哦!是的,它确实忽略了projectionMatrix。我们应该调查一下。。。