将2D图像转换成仿照3D平面上的3D投影

4
根据SVG规范,您可以将任意2x3转换矩阵应用于任何元素。 http://www.w3.org/TR/SVG/coords.html#TransformAttribute 我想利用这种方法在SVG中对图像应用3D透视投影,以模拟平面图像的3D投影。我正在使用javascript中的矩阵计算将3D模型空间坐标(x,y,z)应用到2D图像空间坐标(x',y')中进行变换和投影。但是,为了将投影应用到SVG中的图像或文本中,我需要将3D矩阵投影到2D转换矩阵上。
假设图像在3D模型空间的任意平面上,其中图像原点定义为平面上的3D点,则如何将我的3D投影矩阵转换为SVG图像上的2D变换矩阵
1个回答

0

使用2x3转换进行3D透视投影在数学上是不可能的。这将被称为非仿射变换。关于这方面的更多信息可以在此找到:http://www.oreillynet.com/xml/blog/2006/09/wherefore_art_thou_svg.html

当然,您可以使用JavaScript对原始数据进行此类变换,并将结果显示为SVG图像,但您只能使用SVG显示结果图形 - 您无法从SVG图像开始。


但是由于图像本身会在场景中的一个平面上,我们是否可以将z域的贡献线性投影到图像空间的x/y域中呢? - themadcreator
你是可以的。只是你不能用一个2x3矩阵来做,你需要一个4x4的矩阵,而SVG本身只支持2x3矩阵变换。 - Robert Longson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接