Submit Search
OpenGL 3DCG
1 like
1,848 views
Takenori Nakagawa
ゼミ発表資料03
Technology
Read more
1 of 29
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
More Related Content
PPTX
Cesiumを用いた3次元リアルタイムデータの可視化について
Ryousuke Wayama
PPTX
テストコードの DRY と DAMP
Yusuke Kagata
PDF
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
Hiroshi Yamaguchi
PDF
SLAMチュートリアル大会 Direct Sparse Odometry 紹介
KenTakaki
PPTX
確率ロボティクス第13回
Ryuichi Ueda
PPTX
Go-ICP: グローバル最適(Globally optimal) なICPの解説
Yusuke Sekikawa
PDF
サルでもわかるディープラーニング入門 (2017年) (In Japanese)
Toshihiko Yamakami
PDF
SLAMチュートリアル大会資料(ORB-SLAM)
Masaya Kaneko
Cesiumを用いた3次元リアルタイムデータの可視化について
Ryousuke Wayama
テストコードの DRY と DAMP
Yusuke Kagata
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
Hiroshi Yamaguchi
SLAMチュートリアル大会 Direct Sparse Odometry 紹介
KenTakaki
確率ロボティクス第13回
Ryuichi Ueda
Go-ICP: グローバル最適(Globally optimal) なICPの解説
Yusuke Sekikawa
サルでもわかるディープラーニング入門 (2017年) (In Japanese)
Toshihiko Yamakami
SLAMチュートリアル大会資料(ORB-SLAM)
Masaya Kaneko
What's hot
(20)
PPTX
ImageJを使った画像解析実習〜大量の画像データに対する処理の自動化〜
LPIXEL
PDF
つくばチャレンジ2019技術調査報告
Yoshitaka HARA
PDF
Getting started with MLOps
yusuke shibui
PDF
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII
PDF
ImageJを使った画像解析実習〜数・形態・分布の解析〜
LPIXEL
PPTX
Github Actionsで始めるROS/ROS2のCI
Atsuki Yokota
PPTX
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
PDF
うちのRedmineの使い方(2)
Tomohisa Kusukawa
PDF
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
Yoshitaka HARA
PPTX
ドメイン駆動設計とマイクロサービス
kouki_mitsuishi
PDF
20190307 visualslam summary
Takuya Minagawa
PPTX
Structure from Motion
Ryutaro Yamauchi
PDF
20190825 vins mono
Takuya Minagawa
PPTX
[DL輪読会]Whole-Body Human Pose Estimation in the Wild
Deep Learning JP
PDF
MLOpsの概要と初学者が気をつけたほうが良いこと
Sho Tanaka
PDF
DLL_言語系MicrosoftAIサービス最新情報_202302.pdf
Ayako Omori
PPTX
深層学習とTensorFlow入門
tak9029
PDF
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
Google Cloud Platform - Japan
PDF
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
ImageJを使った画像解析実習〜大量の画像データに対する処理の自動化〜
LPIXEL
つくばチャレンジ2019技術調査報告
Yoshitaka HARA
Getting started with MLOps
yusuke shibui
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII
ImageJを使った画像解析実習〜数・形態・分布の解析〜
LPIXEL
Github Actionsで始めるROS/ROS2のCI
Atsuki Yokota
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
うちのRedmineの使い方(2)
Tomohisa Kusukawa
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
Yoshitaka HARA
ドメイン駆動設計とマイクロサービス
kouki_mitsuishi
20190307 visualslam summary
Takuya Minagawa
Structure from Motion
Ryutaro Yamauchi
20190825 vins mono
Takuya Minagawa
[DL輪読会]Whole-Body Human Pose Estimation in the Wild
Deep Learning JP
MLOpsの概要と初学者が気をつけたほうが良いこと
Sho Tanaka
DLL_言語系MicrosoftAIサービス最新情報_202302.pdf
Ayako Omori
深層学習とTensorFlow入門
tak9029
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
Google Cloud Platform - Japan
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
Ad
Viewers also liked
(20)
PDF
ネイティブ原理主義
Kentarou Mukunasi
PPTX
OpenGLと行列
miyosuda
PDF
Math1 Vector
Keisuke Hata
PDF
今Cinderが熱い! #cinder
KatsuyaENDOH
ODP
The Introduction to Vector Graphics
emaame
DOCX
Rでの対称行列の固有値・固有ベクトルの最適な求め方
wada, kazumi
KEY
SurfaceTextureとシェーダを使って遊んでみる
Tatsuya Matsumoto
PPTX
どこでも動くゲームを作るためのベタープラクティス
5mingame2
PDF
簡単!OpenGL ES 2.0フラグメントシェーダー
Eiji Kamiya
PDF
FiltersでGLSLを楽しく学んじゃおう!
Kazuya Hiruma
PDF
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
PDF
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Hiro H.
PPTX
Live2Dの描画の裏側の話
Naoki Aso
PDF
ピーFIの研究開発現場
Yuya Unno
PPT
視野変換1(基礎編)
康弘 等々力
PDF
GLSLによるシェーダーアートことはじめ
Yoichi Hirata
PDF
Dbts2015 tokyo vector_in_hadoop_vortex
Koji Shinkubo
PDF
数式を綺麗にプログラミングするコツ #spro2013
Shuyo Nakatani
PDF
Tabc vol3 テクニカルアーティストを始めるにあたって
fumoto kazuhiro
PPT
Direct xとopenglの隠蔽実装例
tecopark
ネイティブ原理主義
Kentarou Mukunasi
OpenGLと行列
miyosuda
Math1 Vector
Keisuke Hata
今Cinderが熱い! #cinder
KatsuyaENDOH
The Introduction to Vector Graphics
emaame
Rでの対称行列の固有値・固有ベクトルの最適な求め方
wada, kazumi
SurfaceTextureとシェーダを使って遊んでみる
Tatsuya Matsumoto
どこでも動くゲームを作るためのベタープラクティス
5mingame2
簡単!OpenGL ES 2.0フラグメントシェーダー
Eiji Kamiya
FiltersでGLSLを楽しく学んじゃおう!
Kazuya Hiruma
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Hiro H.
Live2Dの描画の裏側の話
Naoki Aso
ピーFIの研究開発現場
Yuya Unno
視野変換1(基礎編)
康弘 等々力
GLSLによるシェーダーアートことはじめ
Yoichi Hirata
Dbts2015 tokyo vector_in_hadoop_vortex
Koji Shinkubo
数式を綺麗にプログラミングするコツ #spro2013
Shuyo Nakatani
Tabc vol3 テクニカルアーティストを始めるにあたって
fumoto kazuhiro
Direct xとopenglの隠蔽実装例
tecopark
Ad
Similar to OpenGL 3DCG
(7)
PPTX
CG2013 09
shiozawa_h
PPTX
CG2013 08
shiozawa_h
PDF
さらに一歩踏み込んだCSS3の使い方!コツとポイントを理解して 楽しくサイトを彩る方法
rie nabesaka
PDF
Android OpenGL HandsOn
Ikuo Tansho
PPTX
CG2013 06
shiozawa_h
PDF
スマートフォン対応、気をつけたいトラブル JavaScript編
Hiroaki Wakamatsu
PPTX
CG2013 07
shiozawa_h
CG2013 09
shiozawa_h
CG2013 08
shiozawa_h
さらに一歩踏み込んだCSS3の使い方!コツとポイントを理解して 楽しくサイトを彩る方法
rie nabesaka
Android OpenGL HandsOn
Ikuo Tansho
CG2013 06
shiozawa_h
スマートフォン対応、気をつけたいトラブル JavaScript編
Hiroaki Wakamatsu
CG2013 07
shiozawa_h
More from Takenori Nakagawa
(20)
PDF
TensorFlow 入門
Takenori Nakagawa
PDF
機械学習を用いたパターンロック認証の強化手法
Takenori Nakagawa
PDF
Docker で Deep Learning
Takenori Nakagawa
PDF
GitHub Travis-CI Go!
Takenori Nakagawa
PDF
01.app
Takenori Nakagawa
PDF
Service Workers Push API Hands-on
Takenori Nakagawa
PDF
Service Workers
Takenori Nakagawa
PDF
WebGL
Takenori Nakagawa
PDF
01:artificial life
Takenori Nakagawa
PDF
後期05
Takenori Nakagawa
PDF
後期03
Takenori Nakagawa
PDF
後期02
Takenori Nakagawa
PDF
densan2014-late01
Takenori Nakagawa
PDF
phpck
Takenori Nakagawa
PDF
Git 初心者のための GitHub Pages
Takenori Nakagawa
PDF
OpenIL vol.1
Takenori Nakagawa
PPTX
後期講座08
Takenori Nakagawa
PPTX
後期講座07
Takenori Nakagawa
PPTX
後期講座05
Takenori Nakagawa
PPTX
後期講座03
Takenori Nakagawa
TensorFlow 入門
Takenori Nakagawa
機械学習を用いたパターンロック認証の強化手法
Takenori Nakagawa
Docker で Deep Learning
Takenori Nakagawa
GitHub Travis-CI Go!
Takenori Nakagawa
01.app
Takenori Nakagawa
Service Workers Push API Hands-on
Takenori Nakagawa
Service Workers
Takenori Nakagawa
WebGL
Takenori Nakagawa
01:artificial life
Takenori Nakagawa
後期05
Takenori Nakagawa
後期03
Takenori Nakagawa
後期02
Takenori Nakagawa
densan2014-late01
Takenori Nakagawa
phpck
Takenori Nakagawa
Git 初心者のための GitHub Pages
Takenori Nakagawa
OpenIL vol.1
Takenori Nakagawa
後期講座08
Takenori Nakagawa
後期講座07
Takenori Nakagawa
後期講座05
Takenori Nakagawa
後期講座03
Takenori Nakagawa
OpenGL 3DCG
1.
OpenGL で 3DCG 大江ゼミ3年 中川武憲
2.
Agenda ・OpenGL の基礎知識 ・x,y,z 軸の描画 ・三角錐の描画 ・W,A,S,D
で移動 ・マウスでカメラの向きを変更 ・三角錐の自動回転 ・デモ
3.
OpenGL 基礎知識 ・ビューイングパイプライン ・モデリング変換 ・視野変換 ・投射変換 ・ビューポート変換
4.
OpenGL 基礎知識 ビューイング・パイプライン モデリング座標系 …モデルを基準にした座標系 (ローカル座標系) ↓ ↓ モデリング変換 ワールド座標系 …仮想 3D
空間の基準となる座標系 ↓ ↓ 視野変換 ビュー座標系 …視点を基準とした (カメラから見た) 座標系 ↓ ↓ 投射変換 正規化デバイス座標系 … x, y, z がそれぞれ -1~1 の範囲となる座標系 (クリッピング座標系) ↓ ↓ ビューポート変換 ウィンドウ座標系 …左上が原点、右下方向が x, y の正の方向となる2次元の座標系 (スクリーン座標系)
5.
OpenGL 実践
6.
x,y,z 軸の描画 GL_LINES で
(0, 0, 0) から x,y,z それぞれ長さ 100 の線を引く。 各メソッドの解説 glLineWidth(GLfloat width): 線幅を指定 glColor4d: RGBA で色を指定 (GL_LIGHTING が disable の時のみ有効) glBegin(GLenum mode): モードを指定して頂点の追加を開始 glVertex3d: XYZ で座標を指定 glEnd(void): glBegin と対になる頂点グループの終わりを示す
7.
x,y,z 軸の描画 glLineWidth(1); glDisable(GL_LIGHTING); for (int
i = 0; i < 3; i++) { int length = 100; glColor4d((i == 0), (i == 1), (i == 2), 1.0); glBegin(GL_LINES); glVertex3d(0, 0, 0); glVertex3d((i == 0) * length, (i == 1) * length, (i == 2) * length); glEnd(); } glEnable(GL_LIGHTING);
8.
三角錐の描画 三角錐は全ての面が三角形で構成される四面体である。 頂点は4つ、辺の数は6つである。 単純に考えると、 GL_TRIANGLES で4つの三角形を描けば良いが、同じ頂点を3度指定 する必要があり、合計で12個の頂点を打つことになり無駄である。 そこで、
GL_TRIANGLE_STRIP を使って合計6つの頂点で三角錐を描画した。 各メソッドの解説 glNormal3d: XYZ で法線ベクトルを指定する
9.
三角錐の描画 glBegin(GL_TRIANGLE_STRIP); glVertex3d(0, 0, 0);
glNormal3d(0, 0, -1); glVertex3d(4, 0, 0); glNormal3d(0, 0, -1); glVertex3d(0, 0, 3); glNormal3d(0, 0, -1); glVertex3d(0, 2, 0); glNormal3d(0, 0, -1); glVertex3d(0, 0, 0); glNormal3d(0, 0, -1); glVertex3d(4, 0, 0); glNormal3d(0, 0, -1); glEnd();
10.
コードでは伝わりにくい
11.
図解 xz y (0, 2, 0) (4,
0, 0)(0, 0, 3) (0, 0, 0)
12.
図解 xz y (0, 2, 0) (4,
0, 0)(0, 0, 3) (0, 0, 0)
13.
図解 xz y (0, 2, 0) (4,
0, 0)(0, 0, 3) (0, 0, 0)
14.
図解 xz y (0, 2, 0) (4,
0, 0)(0, 0, 3) (0, 0, 0)
15.
図解 xz y (0, 2, 0) (4,
0, 0)(0, 0, 3) (0, 0, 0)
16.
何故それで描画されるのか
17.
三角錐の展開図
18.
三角錐の展開図 (内側→外側) c bd c d a
19.
三角錐の展開図 (外側) c bd c d a GL_TRIANGLE_STRIP
20.
W,A,S,D で移動 キーイベントに応じてワールド変換行列を操作する。
21.
W,A,S,D で移動 void keyboard(unsigned
char key, int x, int y) { printf( "Key Code : %d, Position : %d %dn", key, x, y ); // switch文を用いたキー処理の例(switch-caseを使う場合、breakの書き忘れに注意) double size = 1.0; switch(key) { case 'a': // x 軸正方向へ移動 wm[12] += size; break; case 'd': // x 軸負方向へ移動 wm[12] -= size; break; case 'w': // z 軸正方向へ移動 wm[14] += size; break; case 's': // z 軸負方向へ移動 wm[14] -= size; break; default: printf( "tKey: Other -> %cn", key ); } glutPostRedisplay(); }
22.
マウスでカメラの向きを変更 マウスイベントを拾い、ドラッグした大きさに応じてビュー変換行列を操作する。
23.
マウスでカメラの向きを変更 void mousePressed(int button,
int state, int x, int y) { printf( "Mouse Button: %d, State: %d, Position %d %dn", button, state, x, y ); // mouse down 時 if (! state) { // 座標を記録しておく mouse_pos.x = x; mouse_pos.y = y; } }
24.
マウスでカメラの向きを変更 void mouseDragged(int x,
int y) { printf( "Mouse Drag Position %d %dn", x, y ); pos2d diff = {mouse_pos.x - x, mouse_pos.y - y}; mouse_pos.x = x; mouse_pos.y = y; y_rad += diff.x / window.w * M_PI / 5; x_rad += diff.y / window.h * M_PI / 5; // y 軸回転 vm_y[0] = cos(y_rad); vm_y[2] = -sin(y_rad); vm_y[8] = sin(y_rad); vm_y[10] = cos(y_rad); // x 軸回転 vm_x[5] = cos(x_rad); vm_x[6] = sin(x_rad); vm_x[9] = -sin(x_rad); vm_x[10] = cos(x_rad); // 視点の再計算 resize(window.w, window.h); glutPostRedisplay(); // ウィンドウに再描画命令を送る(ポストする) }
25.
三角錐の自動回転 idle 関数内で定期的にワールド変換行列を操作する。
26.
三角錐の自動回転 void idle() { // y
軸に対して毎度 1 度ずつ右ねじ回転 rad += M_PI / 180; if (rad > M_PI * 2) { rad = 0; } wm[0] = cos(rad); wm[2] = -sin(rad); wm[8] = sin(rad); wm[10] = cos(rad); glutPostRedisplay(); // ウィンドウに再描画命令を送る(ポストする) }
27.
デモ http://git.io/NnYb
28.
描画結果 法線ベクトルの指定 がおかしいので光の 反射が変。
29.
参考資料 ・OpenGL Documentation https://www.opengl.org/sdk/docs/man2/xhtml/ ・(Mac・iPhone)プリミティブについて -
強火で進め http://d.hatena.ne.jp/nakamura001/20081231/1230719279 ・OpenGL が世界を描画する仕組み - けんごのお屋敷 http://tkengo.github.io/blog/2014/12/27/opengl-es-2-2d- knowledge-1/ ・ビジュアル情報演習 http://www.wakayama-u.ac.jp/~wuhy/08_3DCGwithGLUT.html
Download