Slide 1

Slide 1 text

Canvas 2D + Vue.js 2020.03.06 FFTT #388 rmorioka で作る インタラクションコントローラー

Slide 2

Slide 2 text

自己紹介 森岡瞭太 Designer @ EC Booster ネトゲにハマって引きこもり気味 趣味で HTML とか CSS とか JS とか書いてる

Slide 3

Slide 3 text

今日する話 そもそも Canvas 2D とは Canvas 2D の基本 作ったものについて 本題

Slide 4

Slide 4 text

今日しない話 Web GL の話 Canvas に関するライブラリーの話 今回は使ってない 数学の話 アニメーションでチラッと sine を使っている程度

Slide 5

Slide 5 text

そもそも Canvas 2D とは

Slide 6

Slide 6 text

Canvas Canvas API や WebGL API によって描画される

Slide 7

Slide 7 text

Canvas API とWebGL API Canvas API 2D グラフィ ックスを描画する 今日扱うのはこっち WebGL API 2D も 3D もいける

Slide 8

Slide 8 text

Canvas 2D の基本

Slide 9

Slide 9 text

getContext('2d') 描画用のプロパティやメソ ッ ドを提供する プロパティ 色や線幅、フ ォン トなどのスタイル メソ ッ ド 実際に図形やテキストを描画する

Slide 10

Slide 10 text

すごくシンプルなデモ ただ緑色の矩形を描画するだけ fillStyle で塗りつぶしのスタイルを指定 fillRect(0, 0, 100, 100) で矩形を描画 引数は右上の座標 (x, y) と幅 (w) と高さ (h)

Slide 11

Slide 11 text

時間経過に応じてアニメーションさせるデモ 緑色の矩形が左右に動く Math.sin( 経過時間 ) * 200 で y 座標を決定 requestAnimationFrame( 描画処理 ) で 描画処理を再帰呼び出し ディ スプレイのリフレッシュレートに合わせて

Slide 12

Slide 12 text

キー入力で動くデモ keydown で座標を操作 requestAnimationFrame( 描画処理 ) で 描画処理を再帰呼び出し

Slide 13

Slide 13 text

基本はこれく らい 他にもテキス トとかパスとか画像とかを描画できる Javascript で渡せるものなんでも使える マウス入力とか音声入力なんかの各種入力 API 使ってデータの可視化したり これらの内容の組み合わせで色々作る

Slide 14

Slide 14 text

作ったものについて

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Prism 各正方形の RGB が変化する R と G はカーソルからの距離 B はサイン波 色は即座には変化しない カーソルに近いものから変化

Slide 17

Slide 17 text

カーソルに近いものから変化させる マウスの座標と正方形の座標を比較して 変化後の色を算出 変化後の色と現在の色の差を マウスと正方形の距離で割って今回の変化量を算出

Slide 18

Slide 18 text

様々なパラメーターがある それぞれの色を変化させる方法 固定値、マウス座標、時間経過など 色の変化の振れ幅 色の変化が波及する速度

Slide 19

Slide 19 text

パラメーターを UI 上で操作できるようにする コードに触らずに最適な演出を探れる 元々はブルーパドルの橋本さんというエンジニアが Adobe MAX で話していたもの デザイナーが演出の調整をするために作った これ自体を見せたら面白そう & 勉強になりそう

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

どうやって作ったのか Nuxt.js 単に一番慣れてるだけで深い意味はない 今考えると素の Vue.js でも良かったかも……? UI ライブラリ等は不使用 一度フルスクラッチすると勉強になるかなと思い

Slide 22

Slide 22 text

主なコンポーネント Pulldown 色の変化方法の選択に使用 Slider 数値系の入力に使用 がっつりスタイル当てるので は不使用

Slide 23

Slide 23 text

コントローラーの自動生成 最初は操作したい変数を増やす度に手で追加 毎回 6 箇所く らいの変更が…… Store から自動生成する形に 変更箇所が Store と Canvas だけに

Slide 24

Slide 24 text

まとめ

Slide 25

Slide 25 text

作ってみてどうだった? Canvas 2D 自体は割と単純 あく まで「どう描画するのか」のみなので 「何を描画するのか」のロジックが肝 ライブラリ不使用のフルスクラッチにチャレンジして かなり良い勉強になった気がする

Slide 26

Slide 26 text

おまけ

Slide 27

Slide 27 text

今後やること1: スケッチの数を増やす ビジュアルプログラミングが楽し くなってきた 単純に作品数は増やしていきたい WebGL にも手を出す p5.js などのライブラリはガンガン使っていく 数学も勉強……する……はず

Slide 28

Slide 28 text

今後やること2: リファクタリング 素人目にも設計がかなり怪しい とりあえず動けば良かろうでここまで作ったため 見てるだけで目眩のする mutation なんかが 単純なタッチ & フィールも詰めきれていない部分が

Slide 29

Slide 29 text

おしまい