webgl によるデータ可視化入門 - kobe university...レポート課題...

22
WebGL によるデータ * 大学 システム 2014.07.15 * X0212014 Kageyama (Kobe Univ.) Visualization 2014.07.15 1 / 22

Upload: others

Post on 23-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

WebGLによるデータ可視化入門∗

全体のまとめ

陰山 聡

神戸大学 システム情報学研究科 計算科学専攻

2014.07.15

∗情報可視化論 X021(2014年前期) 情報知能演習室Kageyama (Kobe Univ.) Visualization 2014.07.15 1 / 22

Page 2: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

3D CGライブラリ

演習

レポート課題

Kageyama (Kobe Univ.) Visualization 2014.07.15 2 / 22

Page 3: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

全体のまとめ

Kageyama (Kobe Univ.) Visualization 2014.07.15 3 / 22

Page 4: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

シェーダとシェーディング言語: GLSL

OpenGLシェーディング言語(OpenGL SL, GLSL)4.0

GPUを使うための言語

CGソースコード = OpenGLソースコード+ GLSL(フラグメントシェーダ)ソースコード+ GLSL(頂点シェーダ)ソースコード

Kageyama (Kobe Univ.) Visualization 2014.07.15 4 / 22

Page 5: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

WebGLとは

WebBL = シェーダを使い、HTML5の canvasに、JavaScriptで 3D CGを書くための API

Kageyama (Kobe Univ.) Visualization 2014.07.15 5 / 22

Page 6: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

WebGLの特徴

• クロスプラットフォーム• オープンスタンダード• Webで GPUを使ったレンダリングが可能• 開発・利用が容易: プラグイン不要• ソースコードが見える• グラフィックス(OpenGL)と UI(ウィンドウ管理やイベント処理)の分離が明白

Kageyama (Kobe Univ.) Visualization 2014.07.15 6 / 22

Page 7: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

WebGLのグラフィックスパイプラインWeb アプリ

HTML + CSS + JavaScript + シェーダソースコード + オブジェクトデータ

WebGL

JavaScript API

頂点シェーダ

プリミティブ組み立て

ラスタ化

フラグメントシェーダ

シザーテスト

マルチサンプリング

ステンシルテスト

デプステスト

アルファブレンディング

ディザリング

WebGL用描画バッファ

スクリーン

cavasの他の画像

Kageyama (Kobe Univ.) Visualization 2014.07.15 7 / 22

Page 8: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

シェーダ頂点シェーダ(バーテックスシェーダ)とフラグメントシェーダ

Web アプリ

HTML + CSS + JavaScript + シェーダソースコード + オブジェクトデータ

WebGL

JavaScript API

頂点シェーダ

プリミティブ組み立て

ラスタ化

フラグメントシェーダ

Kageyama (Kobe Univ.) Visualization 2014.07.15 8 / 22

Page 9: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

WebGLアプリケーション

Webアプリ = HTML + CSS + JavaScript

WebGLアプリ = HTML + CSS + JavaScript + シェーダ言語(OpenGLSL)

Kageyama (Kobe Univ.) Visualization 2014.07.15 9 / 22

Page 10: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

頂点シェーダ• 各頂点に対して処理を行う• 並列処理• n個の頂点があれば n個の頂点シェーダプロセッサを同時に実行させる

Kageyama (Kobe Univ.) Visualization 2014.07.15 10 / 22

Page 11: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

頂点シェーダの入出力データ

頂点シェーダ

頂点シェーダ用ソースコード

(GLSL)

ユーザ定義uniform変数

(変換行列、光源位置)

頂点attribute変数

(座標、色など)

組み込み変数

gl_Position

gl_FrontFacing

g_lPointSize

ユーザ定義の

varying変数

Kageyama (Kobe Univ.) Visualization 2014.07.15 11 / 22

Page 12: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

フラグメントシェーダの入出力全てのフラグメントで並列処理。シェーディング言語でプログラム。

フラグメント

シェーダ

フラグメントシェーダ用

ソースコード (GLSL)

ユーザ定義varying変数

組み込み変数

gl_Position

gl_FrontFacing

g_lPointSize

組み込み変数

gl_FragColor

ユニフォーム変数

テクスチャ用サンプラ

Kageyama (Kobe Univ.) Visualization 2014.07.15 12 / 22

Page 13: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

varying変数の補間• 頂点シェーダ からフラグメントシェーダへは varying変数を通じて情報を送る。

• 各フラグメントの varying変数値は自動的に線形補間される。

varyingValue_2

varyingValue_3

varyingValue_1

Kageyama (Kobe Univ.) Visualization 2014.07.15 13 / 22

Page 14: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

全体のまとめ

WebGLでの 3D描画プログラム

• 頂点データの生成と転送• 法線データの生成と転送• テクスチャデータの生成と転送• 物体の座標変換(4行 4列)• 材質(反射)特性設定• 照明設定• 射影変換(4行 4列)

・・・面倒

Kageyama (Kobe Univ.) Visualization 2014.07.15 14 / 22

Page 15: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

3D CG ライブラリ

3D CGライブラリ

Kageyama (Kobe Univ.) Visualization 2014.07.15 15 / 22

Page 16: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

3D CG ライブラリ

WebGL用 JavaScriptライブラリ

WebGLのラッパ

• Three.js†

• Away3D TypeScript

• Babylon.js

†http://threejs.orgKageyama (Kobe Univ.) Visualization 2014.07.15 16 / 22

Page 17: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

3D CG ライブラリ

Three.js sample

回転する直方体

サンプルコード

three js sample cube.js

必要なライブラリ: three.min.js

Kageyama (Kobe Univ.) Visualization 2014.07.15 17 / 22

Page 18: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

3D CG ライブラリ

<html>

<head>

<title>My first Three.js app</title>

<style>canvas { width: 100%; height: 100% }</style>

</head>

<body>

<script src="js/three.min.js"></script>

<script>

var scene = new THREE.Scene();

var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);

var renderer = new THREE.WebGLRenderer();

renderer.setSize(window.innerWidth, window.innerHeight);

document.body.appendChild(renderer.domElement);

var geometry = new THREE.CubeGeometry(1,1,1);

var material = new THREE.MeshBasicMaterial({color: 0x00ff00});

var cube = new THREE.Mesh(geometry, material);

Kageyama (Kobe Univ.) Visualization 2014.07.15 18 / 22

Page 19: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

3D CG ライブラリ

scene.add(cube);

camera.position.z = 5;

var render = function () {

requestAnimationFrame(render);

cube.rotation.x += 0.01;

cube.rotation.y += 0.01;

renderer.render(scene, camera);

};

render();

</script>

</body>

</html>

Kageyama (Kobe Univ.) Visualization 2014.07.15 19 / 22

Page 20: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

演習

演習

Kageyama (Kobe Univ.) Visualization 2014.07.15 20 / 22

Page 21: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

レポート課題

レポート課題

Kageyama (Kobe Univ.) Visualization 2014.07.15 21 / 22

Page 22: WebGL によるデータ可視化入門 - Kobe University...レポート課題 照明とテクスチャマッピング、アニメーションを用いたWebGLプロ グラムを作れ。

レポート課題

• 照明とテクスチャマッピング、アニメーションを用いたWebGLプログラムを作れ。

• Three.jsなどのライブラリは使わないこと。• 提出はメールで。添付ファイルは少なくとも2つ‡。

1. レポート PDFファイル: ファイル名: report 05.pdf2. 作成した HTMLファイル: ファイル名:report 05.html

• ファイル名中のアンダースコア( )は半角• ファイル拡張子は htmlとし、htmとしない

• gmailアドレス:kageyama.lecture@...

• メールのタイトル: 情報可視化論 レポート 5

• レポートには以下を記述すること• 学籍番号と氏名• 何を描いたか• 描いた図形のキャプチャ図• 独自のテクスチャや関数などがあればそのファイル• ウェブ公開時、匿名を希望する場合はペンネーム

• 締め切り: 7/21(月)23:59‡アーカイブはしないでください。Kageyama (Kobe Univ.) Visualization 2014.07.15 22 / 22