Canvas 2D + Vue.js で作るインタラクションコントローラー
by
kysn
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
おしまい