Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Javascript 提取-webkit转换矩阵3D值_Javascript_Html_Graphics_Css_3d - Fatal编程技术网

Javascript 提取-webkit转换矩阵3D值

Javascript 提取-webkit转换矩阵3D值,javascript,html,graphics,css,3d,Javascript,Html,Graphics,Css,3d,我正在尝试使用(2d上下文)渲染3D形状,这意味着我必须执行一些手动投影变换 能够从CSS中检索3D转换矩阵值将对我有很大帮助 这能做到吗 如果不是,如何构造由-webkit perspective origin执行的转换?我已经计算出了仅针对透视图的转换,但透视图原点在x=y=0,情况并非总是如此 我意识到这种特殊情况(原点位于某个点x、y、z的透视图)可能是一个简单的x、y、z平移,紧接着是透视变换(或者反过来),但理想的答案是提取实际4x4 3D矩阵的方法。如果我有矩阵,我就不再需要重新跟

我正在尝试使用
(2d上下文)渲染3D形状,这意味着我必须执行一些手动投影变换

能够从CSS中检索3D转换矩阵值将对我有很大帮助

这能做到吗

如果不是,如何构造由-webkit perspective origin执行的转换?我已经计算出了仅针对透视图的转换,但透视图原点在x=y=0,情况并非总是如此

我意识到这种特殊情况(原点位于某个点x、y、z的透视图)可能是一个简单的x、y、z平移,紧接着是透视变换(或者反过来),但理想的答案是提取实际4x4 3D矩阵的方法。如果我有矩阵,我就不再需要重新跟踪变换CSS3元素的步骤,以便将相同的变换应用到几何体,我打算使用
进行渲染

我在这里查看()以供参考,但它们似乎没有描述在应用不同的可能转换时分配给矩阵的实际值。我认为应该有一些规格表,有这样的细节。我似乎还记得在什么地方瞥见过它(矩阵定义有很多trig函数)


编辑:我发现了浏览器执行转换步骤的更深入的概述。没有回答我的问题,但它确实让我离暂时的目标更近了一步。

可以通过getComputedStyle检索元素的变换矩阵。以下是一个例子:

另一种方法是使用WebKitCSSMatrix接口。它非常方便,它为对象提供了矩阵值和一些方法:

糟糕的是WebKitCSSMatrix没有在其他浏览器中实现

希望了解如何将3d转换实现到画布。在three.js是一个很好的窥视的地方。他们做到了,你可以在那里看到各种矩阵函数


祝你好运

因此,似乎分配给每个元素的矩阵值是它与其父元素之间的相对变换。我想除了手动将矩阵相乘之外,没有办法得到累积变换?我花了一段时间才弄明白这一点。getComputedStyle输出的3d矩阵不包括变换原点x、y平移。我正接近我想要的位置…我认为你应该根据变换原点(X,Y,Z)和透视图乘以矩阵。变换原点是一个2D值。甚至可能无法将变换原点设置为z=0,但实际实现并不太困难:您可以使用z转换的元素进行嵌套。您有-webkit-transform-origin-z和moz-transform-origin,它们接受第三个值(x,y,x)