概要
cssを使って立体的なアニメーションを再現しようと考え、perspectiveというスタイルを試していた際に気になった点です。
色々と試していた時に、perspective値が小さいときにY軸90°回転させても
明らかに90°も回っていないように見えることが分かりました。
また、perspectiveによって、z>0が大きくz<0が小さくなることは存じ上げておりますが
具体的にはどの程度ゆがむのでしょうか?
どの程度の値にすればよいのか、その参考にさせていただければと存じます。
整理すると質問内容は下記の2点になります。
- Y軸90°回転させた時、90°程回転しているように見えない理由と対策
- perspective値の変化によって、どのような仕組みでゆがむ度合いが計算されるのか
試してみたこと
下記が私が実際に試してみたコードです。
(pugとscssで書かれていますが、肝の部分はCSSさえご存じであれば問題ないと存じます)
[仕様]
- 4つの要素にそれぞれのperspective値を設定し、Y軸回転させることでその歪み度合いを確認する
- それぞれには、persepctive値として「0px, 10000px, 1000px, 500px」を設定する
- 元の図形からの変形(回転)度合いを確認するため、元の位置に黒枠を配置する
これを見ると、やはり設定値の90°程回転してはいないように見えます…
特にperspective値が小さい一番下は顕著ですね。
推測
回転角度が小さい理由は調べても出てまいりませんでした…
ゆがむ度合いの理屈としては、自分なりに下記のような仕組みではないかとイメージしました。
ただ、これだと
- 回転角度が小さい理由が説明つかない
- 高さにも歪みが出るモデルになってしまっている
という2点で誤ってると思われます。
※描画イメージが上下反転してしまっていますね…申し訳ございません!
perspective値が小さいほど、オブジェクトとライトのようなもの(妄想)の距離が近く
その分z>0とz<0の違いが大きく評価される。
反対にperspective値が大きいほど、z>0とz<0の違いが微小に評価される。
というモデルです。
説明の仕方はどのような形でも問題ございませんが(いただけるだけでとてもありがたいです!)
計算式ではなく、このようなシンプルなモデルだと非常に助かります…
以上、どうぞよろしくお願いいたします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/04 03:38