使ってますか? css matrix3d

45
使ってますか? CSS matrix3d

Upload: kazuya-hiruma

Post on 23-Jun-2015

822 views

Category:

Technology


0 download

DESCRIPTION

CSSのmatrix3dについてのお話。

TRANSCRIPT

Page 1: 使ってますか? CSS matrix3d

使ってますか? CSS matrix3d

Page 2: 使ってますか? CSS matrix3d

比留間 和也HTMLファイ部/人事部

https://twitter.com/edo_m18 http://qiita.com/edo_m18

Page 3: 使ってますか? CSS matrix3d

matrix3dは 使ってますか?

Page 4: 使ってますか? CSS matrix3d

matrix3dのイメージ

Page 5: 使ってますか? CSS matrix3d

• 引数多い

• 行列とか聞きなれない

• 適当に値入れても想像通り動かない

Page 6: 使ってますか? CSS matrix3d
Page 7: 使ってますか? CSS matrix3d

30°回転させただけで数値がたくさん

Page 8: 使ってますか? CSS matrix3d

((((;゚Д゚))))

Page 9: 使ってますか? CSS matrix3d

でもtransform-functionを使えば 手軽に3Dの効果が得られる

Page 10: 使ってますか? CSS matrix3d

• rotate() / rotate3d()

• translate() / translate3d()

• scale() / scale3d()

Demo

Page 11: 使ってますか? CSS matrix3d

ゲームも作れる

Page 12: 使ってますか? CSS matrix3d

CSS3Dで実現したルービック・キューブ

Page 13: 使ってますか? CSS matrix3d

でも・・・

Page 14: 使ってますか? CSS matrix3d

ユーザの操作を逐一適用していくと・・

Page 15: 使ってますか? CSS matrix3d

2回回転を適用

Page 16: 使ってますか? CSS matrix3d

24回適用・・・((((;゚Д゚))))

Page 17: 使ってますか? CSS matrix3d

延々と増えていく…

Page 18: 使ってますか? CSS matrix3d

(゚∀゚)!!

Page 19: 使ってますか? CSS matrix3d

回転自体をまとめちゃえばいいんじゃね?(゚∀゚)

Page 20: 使ってますか? CSS matrix3d

BUT!!

Page 21: 使ってますか? CSS matrix3d

適用する順番が違うと結果が異なる

Page 22: 使ってますか? CSS matrix3d

http://jsdo.it/edo_m18/1EGy

Page 23: 使ってますか? CSS matrix3d

( ꒪⌓꒪)…

Page 24: 使ってますか? CSS matrix3d

なんとかひとつにまとめられないかな・・・

Page 25: 使ってますか? CSS matrix3d

できます

Page 26: 使ってますか? CSS matrix3d

そう、行列ならね (振り出しに戻る)

Page 27: 使ってますか? CSS matrix3d

行列には回転や平行移動を表す決まった形がある

Page 28: 使ってますか? CSS matrix3d

平行移動を表す行列

Page 29: 使ってますか? CSS matrix3d

拡大・縮小を表す行列

Page 30: 使ってますか? CSS matrix3d

X軸に対する回転を表す行列

Page 31: 使ってますか? CSS matrix3d

Y軸に対する回転を表す行列

Page 32: 使ってますか? CSS matrix3d

Z軸に対する回転を表す行列

Page 33: 使ってますか? CSS matrix3d

行列を掛け算すると ひとつの行列になる

Page 34: 使ってますか? CSS matrix3d

| 1 5 9 13 | | 11 15 19 23 | | 370 482 594 706 | | 2 6 10 14 | x | 12 16 20 24 | = | 420 548 676 804 | | 3 7 11 15 | | 13 17 21 25 | | 470 614 758 902 | | 4 8 12 16 | | 14 18 22 26 | | 520 680 840 1000 |

Page 35: 使ってますか? CSS matrix3d

つまり

Page 36: 使ってますか? CSS matrix3d

ひとつの行列で 複数の結果を表すことができる

Page 37: 使ってますか? CSS matrix3d

ktkr(゚∀゚)!!

Page 38: 使ってますか? CSS matrix3d

ただ、行列の計算は 結構めんどう

Page 39: 使ってますか? CSS matrix3d

行列の計算はライブラリに 任せちゃいましょう

Page 40: 使ってますか? CSS matrix3d

行列関連のライブラリ• ewgl-matricesWebGL 用の超高速行列ライブラリ

• glMatrix高性能WebGLアプリ製作の為の、行列とベクトルのJavaScriptライブラリ

• mjsWebGL用に最適化されたベクトルと行列の計算を行うJavaScriptライブラリ

• Sylvesterベクトルや行列を操作する為のオープンソースライブラリ。WebGL用として最適化されたものではありませんが、非常に堅牢です。

Page 41: 使ってますか? CSS matrix3d

ちなみに

Page 42: 使ってますか? CSS matrix3d

独自ライブラリを公開中

https://github.com/edom18/MathJS

Page 43: 使ってますか? CSS matrix3d

こんな感じで使います

Page 44: 使ってますか? CSS matrix3d

var target = document.getElementById(‘test2'); !var rMatrix = mat4.rotate(mat4(), 90, vec3(0, 0, 1)); var tMatrix = mat4.translate(mat4(), vec3(200, 0, 0)); var resultMatrix = mat4.multiply(rMatrix, tMatrix); target.style.transform = mat4.toCSSMatrixString(resultMatrix);

Demo

Page 45: 使ってますか? CSS matrix3d

ご静聴ありがとうございました