2012-12-05 303 views
3

根據SVG規範,您可以將任意2x3變換矩陣應用於任何元素。將2D圖像變換爲3D平面上的3D投影

http://www.w3.org/TR/SVG/coords.html#TransformAttribute

我想利用這一方法爲3D準投影適用於SVG的圖像以模擬平面圖像的3D投影。

我在javascript中使用矩陣計算將變換和投影應用到3D模型空間座標(x,y,z)到二維圖像空間座標(x',y')中。但爲了將投影應用於SVG中的圖像或文本,我需要將3D矩陣投影到2D變換矩陣。

假設圖像在3D模型空間中的任意平面上,圖像原點被定義爲平面上的3D點,如何將3D投影矩陣轉換爲SVG圖像上的2D變形

回答

0

使用2x3變換進行3D透視投影在數學上是不可能的。這就是所謂的非仿射變換。這裏有更多關於這方面的信息:http://www.oreillynet.com/xml/blog/2006/09/wherefore_art_thou_svg.html

你可以使用javascript對原始數據進行這樣的轉換,並將結果作爲SVG圖像顯示,當然你只能使用SVG來顯示結果圖形 - 你不能從SVG圖像開始。

+0

但是由於圖像本身會出現在場景中的**平面上,我們不能線性投影z域對圖像空間的x/y域的貢獻嗎? – themadcreator

+0

你可以。你不能用2x3矩陣來做,你需要一個4x4矩陣,而SVG本身只能做2x3矩陣變換。 –