CSS3 Matrix3D変換を使用してキャンバスに画像を描画する方法があるかどうかを知りたいと思います。使用されているコンテキストは、スタックされたレイヤーをレンダリングするために使用される2D
と、その上にmatrix3D
で変換されたイメージレイヤーです(キャンバスに描画することはできませんでした)。CSS3 matrix3Dをキャンバス2D要素に描画する
基本的に私が達成したいのは、transform: matrix3d(0.87, 0, 0.5, -0.00025, 0, 1, 0, 0, -0.5, 0, 0.87, 0, 0, 550, 0, 1)
を2Dコンテキストで描画キャンバスに変換することです。
可能ですか?今のところ、私はキャンバスの上のCSS3レイヤーでかなりうまくいますが、私が開発しているアプリケーションでは、キャンバスを実際のイメージファイル(ユーザーに送信される)にエクスポートする必要があります。
ここに、私の現在の変換レイヤの表示方法を示すスニペットがあります。だから、ここでの目標は、実際にキャンバスに「プレースホルダ」変換画像をレンダリングすることです将来、読者の要件に合わないかもしれませんが、これを行うことができますハックの1本の経糸があり
#canvas {
background: tomato;
height: 100vh;
width: 100vw;
position: relative;
}
.viewport .transformed-layer {
height: 72%;
position: absolute;
left: 35%;
top: calc(21% - 550px);
-webkit-transform: rotate(-1.5deg) matrix3d(0.87, 0, 0.5, -0.00025, 0, 1, 0, 0, -0.5, 0, 0.87, 0, 0, 550, 0, 1);
transform: rotate(-1.5deg) matrix3d(0.87, 0, 0.5, -0.00025, 0, 1, 0, 0, -0.5, 0, 0.87, 0, 0, 550, 0, 1);
opacity: .9;
}
<div class='viewport'>
<div id='canvas'>This is a div simulating the canvas element with some drawed image</div>
<img class='transformed-layer' src='http://via.placeholder.com/300x300' />
</div>
... SVGのiamgeがその上に描かれた時はいつでもIEの古いバージョンでは、キャンバスを汚染チェックなかったことに注意してくださいキャンバス・コンテキストは、理由のためにその名前に2Dを持ちます。答えは2Dキャンバスで3D変換を使用できないということです。 – Blindman67
ありがとうございます。 CSSは2Dコンテキストでも使用されますが(明示的ではない場合でも)、matrix3Dは3D動作を偽造するために使用できます。私は、2Dキャンバスに似たものがあるかどうか疑問に思っていました。 – 3Dos
3Dトランスフォームについての偽装はありません。また、2Dコンテキストでの3Dレンダリング用のネイティブAPIもありません。あなたはjavascript(それはレンダリング)で行うことができますが、それはピクセル単位であり、遅くなります。キャンバス上で3Dをしたいのであれば、webGLを使うだけです。 – Blindman67