SlideShare a Scribd company logo
3D3D勉強会勉強会 第第11回回
3D3Dプログラミングのススメプログラミングのススメ
~~33次元空間における座標変換~次元空間における座標変換~
株式会社インフィニットループ株式会社インフィニットループ
齊藤齊藤 一誠一誠
・・自己紹介自己紹介
・・自己紹介自己紹介
名前名前 齊藤齊藤 一誠一誠
・・自己紹介自己紹介
名前名前 齊藤齊藤 一誠一誠
元コンシューマゲーム開発者元コンシューマゲーム開発者
・・自己紹介自己紹介
名前名前 齊藤齊藤 一誠一誠
元コンシューマゲーム開発者元コンシューマゲーム開発者
開発経験のあるプラットフォームは開発経験のあるプラットフォームはPS2PS2・・PSPPSP・・PS3PS3
・・自己紹介自己紹介
名前名前 齊藤齊藤 一誠一誠
元コンシューマゲーム開発者元コンシューマゲーム開発者
開発経験のあるプラットフォームは開発経験のあるプラットフォームはPS2PS2・・PSPPSP・・PS3PS3
3D3Dプログラミングはプログラミングはそこそこそこそこできるはずできるはず
・・自己紹介自己紹介
名前名前 齊藤齊藤 一誠一誠
元コンシューマゲーム開発者元コンシューマゲーム開発者
開発経験のあるプラットフォームは開発経験のあるプラットフォームはPS2PS2・・PSPPSP・・PS3PS3
3D3Dプログラミングはプログラミングはそこそこそこそこできるはずできるはず
ということで、前置きとしてということで、前置きとして3D3Dプログラミング入門のプログラミング入門の
心得のようなものをお話していきます。心得のようなものをお話していきます。
3D3Dの勉強を始めるにあたっての心理的障壁の勉強を始めるにあたっての心理的障壁
3D3Dの勉強を始めるにあたっての心理的障壁の勉強を始めるにあたっての心理的障壁
11..むずそう(小並感)むずそう(小並感)
3D3Dの勉強を始めるにあたっての心理的障壁の勉強を始めるにあたっての心理的障壁
11..むずそう(小並感)むずそう(小並感)
・・3D3Dって高度な数学の知識が必要なんでしょう?って高度な数学の知識が必要なんでしょう?
3D3Dの勉強を始めるにあたっての心理的障壁の勉強を始めるにあたっての心理的障壁
11..むずそう(小並感)むずそう(小並感)
・・3D3Dって高度な数学の知識が必要なんでしょう?って高度な数学の知識が必要なんでしょう?
・数学とか高校レベルで止まってるし文系だったしもう忘れたし・・・・数学とか高校レベルで止まってるし文系だったしもう忘れたし・・・
3D3Dの勉強を始めるにあたっての心理的障壁の勉強を始めるにあたっての心理的障壁
11..むずそう(小並感)むずそう(小並感)
・・3D3Dって高度な数学の知識が必要なんでしょう?って高度な数学の知識が必要なんでしょう?
・数学とか高校レベルで止まってるし文系だったしもう忘れたし・・・・数学とか高校レベルで止まってるし文系だったしもう忘れたし・・・
・そもそも何から勉強し始めたらいいのかわからない・・・・そもそも何から勉強し始めたらいいのかわからない・・・
3D3Dプログラミングを始めるのにプログラミングを始めるのに
数学力は必要なのか数学力は必要なのか
3D3Dプログラミングを始めるのにプログラミングを始めるのに
数学力は必要なのか数学力は必要なのか
・・3D3Dプログラミングを始めた頃の私の数学力についてプログラミングを始めた頃の私の数学力について
3D3Dプログラミングを始めるのにプログラミングを始めるのに
数学力は必要なのか数学力は必要なのか
・・3D3Dプログラミングを始めた頃の私の数学力についてプログラミングを始めた頃の私の数学力について
・高校では普通科の文系コース・高校では普通科の文系コース ・・・・・・ 数学数学CCやってないやってない
3D3Dプログラミングを始めるのにプログラミングを始めるのに
数学力は必要なのか数学力は必要なのか
・・3D3Dプログラミングを始めた頃の私の数学力についてプログラミングを始めた頃の私の数学力について
・高校では普通科の文系コース・高校では普通科の文系コース ・・・・・・ 数学数学CCやってないやってない
・・数学のテストで赤点とった事も無くはない(小声)数学のテストで赤点とった事も無くはない(小声)
3D3Dプログラミングを始めるのにプログラミングを始めるのに
数学力は必要なのか数学力は必要なのか
・・3D3Dプログラミングを始めた頃の私の数学力についてプログラミングを始めた頃の私の数学力について
・高校では普通科の文系コース・高校では普通科の文系コース ・・・・・・ 数学数学CCやってないやってない
・・数学のテストで赤点とった事も無くはない(小声)数学のテストで赤点とった事も無くはない(小声)
・高校卒業してすぐ専門学校へ・高校卒業してすぐ専門学校へ ・・・・・・ 大学数学やってない大学数学やってない
でもなんとか頑張って人並みにはでもなんとか頑張って人並みには3D3Dプログラミングプログラミング
出来るようになれた。出来るようになれた。
でもなんとか頑張って人並みにはでもなんとか頑張って人並みには3D3Dプログラミングプログラミング
出来るようになれた。出来るようになれた。
つまり知識は今から付けても遅くはない。つまり知識は今から付けても遅くはない。
でもなんとか頑張って人並みにはでもなんとか頑張って人並みには3D3Dプログラミングプログラミング
出来るようになれた。出来るようになれた。
つまり知識は今から付けても遅くはない。つまり知識は今から付けても遅くはない。
最初は本を読んで知識を詰め込むより、サンプル等最初は本を読んで知識を詰め込むより、サンプル等
をいじってプログラムに触ることを重視する。をいじってプログラムに触ることを重視する。
でもなんとか頑張って人並みにはでもなんとか頑張って人並みには3D3Dプログラミングプログラミング
出来るようになれた。出来るようになれた。
つまり知識は今から付けても遅くはない。つまり知識は今から付けても遅くはない。
最初は本を読んで知識を詰め込むより、サンプル等最初は本を読んで知識を詰め込むより、サンプル等
をいじってプログラムに触ることを重視する。をいじってプログラムに触ることを重視する。
分からない事が発生したら勉強する。分からない事が発生したら勉強する。
3D3Dの勉強を始めるにあたっての心理的障壁の勉強を始めるにあたっての心理的障壁
11..むずそう(小並感)むずそう(小並感)
・・3D3Dって高度な数学の知識が必要なんでしょう?って高度な数学の知識が必要なんでしょう?
・数学とか高校レベルで止まってるし文系だったしもう忘れたし・・・・数学とか高校レベルで止まってるし文系だったしもう忘れたし・・・
・そもそも何から勉強し始めたらいいのかわからない・・・・そもそも何から勉強し始めたらいいのかわからない・・・
22..始めてみたけどすぐ挫折した始めてみたけどすぐ挫折した
3D3Dの勉強を始めるにあたっての心理的障壁の勉強を始めるにあたっての心理的障壁
11..むずそう(小並感)むずそう(小並感)
・・3D3Dって高度な数学の知識が必要なんでしょう?って高度な数学の知識が必要なんでしょう?
・数学とか高校レベルで止まってるし文系だったしもう忘れたし・・・・数学とか高校レベルで止まってるし文系だったしもう忘れたし・・・
・そもそも何から勉強し始めたらいいのかわからない・・・・そもそも何から勉強し始めたらいいのかわからない・・・
22..始めてみたけどすぐ挫折した始めてみたけどすぐ挫折した
・何かの講座を見て箱を1個表示しただけで満足して終わってしまった・・・・何かの講座を見て箱を1個表示しただけで満足して終わってしまった・・・
3D3Dの勉強を始めるにあたっての心理的障壁の勉強を始めるにあたっての心理的障壁
11..むずそう(小並感)むずそう(小並感)
・・3D3Dって高度な数学の知識が必要なんでしょう?って高度な数学の知識が必要なんでしょう?
・数学とか高校レベルで止まってるし文系だったしもう忘れたし・・・・数学とか高校レベルで止まってるし文系だったしもう忘れたし・・・
・そもそも何から勉強し始めたらいいのかわからない・・・・そもそも何から勉強し始めたらいいのかわからない・・・
22..始めてみたけどすぐ挫折した始めてみたけどすぐ挫折した
・何かの講座を見て箱を1個表示しただけで満足して終わってしまった・・・・何かの講座を見て箱を1個表示しただけで満足して終わってしまった・・・
・満足ゆく見た目になるまで凄く時間がかかりそうで心が折れた・満足ゆく見た目になるまで凄く時間がかかりそうで心が折れた
モチベーションの保ち方モチベーションの保ち方
モチベーションの保ち方モチベーションの保ち方
小目標を決める小目標を決める
・目標なしに勉強し続けるのは辛い。あと区切りを作れる。・目標なしに勉強し続けるのは辛い。あと区切りを作れる。
モチベーションの保ち方モチベーションの保ち方
小目標を決める小目標を決める
・目標なしに勉強し続けるのは辛い。あと区切りを作れる。・目標なしに勉強し続けるのは辛い。あと区切りを作れる。
出来るところまで進める出来るところまで進める
・とりあえず自分の持ってる知識で出来るとこまで進めてみる。・とりあえず自分の持ってる知識で出来るとこまで進めてみる。
モチベーションの保ち方モチベーションの保ち方
小目標を決める小目標を決める
・目標なしに勉強し続けるのは辛い。あと区切りを作れる。・目標なしに勉強し続けるのは辛い。あと区切りを作れる。
出来るところまで進める出来るところまで進める
・とりあえず自分の持ってる知識で出来るとこまで進めてみる。・とりあえず自分の持ってる知識で出来るとこまで進めてみる。
わからなくなったらその時に調べるわからなくなったらその時に調べる
・何に使うかわからない知識を勉強するのは辛い。・何に使うかわからない知識を勉強するのは辛い。
モチベーションの保ち方モチベーションの保ち方
小目標を決める小目標を決める
・目標なしに勉強し続けるのは辛い。あと区切りを作れる。・目標なしに勉強し続けるのは辛い。あと区切りを作れる。
出来るところまで進める出来るところまで進める
・とりあえず自分の持ってる知識で出来るとこまで進めてみる。・とりあえず自分の持ってる知識で出来るとこまで進めてみる。
わからなくなったらその時に調べるわからなくなったらその時に調べる
・何に使うかわからない知識を勉強するのは辛い。・何に使うかわからない知識を勉強するのは辛い。
無理しない無理しない
・前提知識が複数必要なものなどは各要素を個別に理解してからでもいい。・前提知識が複数必要なものなどは各要素を個別に理解してからでもいい。
無理せず後回しする。無理せず後回しする。
モチベーションの保ち方モチベーションの保ち方
小目標を決める小目標を決める
・目標なしに勉強し続けるのは辛い。あと区切りを作れる。・目標なしに勉強し続けるのは辛い。あと区切りを作れる。
出来るところまで進める出来るところまで進める
・とりあえず自分の持ってる知識で出来るとこまで進めてみる。・とりあえず自分の持ってる知識で出来るとこまで進めてみる。
わからなくなったらその時に調べるわからなくなったらその時に調べる
・何に使うかわからない知識を勉強するのは辛い。・何に使うかわからない知識を勉強するのは辛い。
無理しない無理しない
・前提知識が複数必要なものなどは各要素を個別に理解してからでもいい。・前提知識が複数必要なものなどは各要素を個別に理解してからでもいい。
無理せず後回しする。無理せず後回しする。
目標を達成したら新たな目標を決める目標を達成したら新たな目標を決める
・別のプログラムを作る・別のプログラムを作るoror現在のプログラムへの機能追加等、現在のプログラムへの機能追加等、
とにかく興味が持てる事を。とにかく興味が持てる事を。
おすすめの勉強法は・・・おすすめの勉強法は・・・
ショボショボくてもくてもいいから何かいいから何か11本ゲーム的なものを作る本ゲーム的なものを作る
おすすめの勉強法は・・・おすすめの勉強法は・・・
ショボショボくてもくてもいいから何かいいから何か11本ゲーム的なものを作る本ゲーム的なものを作る
楽なのはシューティングゲーム楽なのはシューティングゲーム
おすすめの勉強法は・・・おすすめの勉強法は・・・
ショボショボくてもくてもいいから何かいいから何か11本ゲーム的なものを作る本ゲーム的なものを作る
楽なのはシューティングゲーム楽なのはシューティングゲーム
当たり判定は当たり判定は2D2D的でもいい。必要な前提知識が少なめで的でもいい。必要な前提知識が少なめで
入門には最適。入門には最適。
おすすめの勉強法は・・・おすすめの勉強法は・・・
ショボショボくてもくてもいいから何かいいから何か11本ゲーム的なものを作る本ゲーム的なものを作る
楽なのはシューティングゲーム楽なのはシューティングゲーム
当たり判定は当たり判定は2D2D的でもいい。必要な前提知識が少なめで的でもいい。必要な前提知識が少なめで
入門には最適。入門には最適。
凝った事が出来るようになったら色々要素が追加できる。凝った事が出来るようになったら色々要素が追加できる。
ということで前置きはこれぐらいにして・・・ということで前置きはこれぐらいにして・・・
ということで前置きはこれぐらいにして・・・ということで前置きはこれぐらいにして・・・
今回は今回は3D3Dプログラミングにおいて非常に重要な概プログラミングにおいて非常に重要な概
念である「変換行列」について触り程度にお話させ念である「変換行列」について触り程度にお話させ
て頂きます。て頂きます。
ということで前置きはこれぐらいにして・・・ということで前置きはこれぐらいにして・・・
今回は今回は3D3Dプログラミングにおいて非常に重要な概プログラミングにおいて非常に重要な概
念である「変換行列」について触り程度にお話させ念である「変換行列」について触り程度にお話させ
て頂きます。て頂きます。
行列行列・・・・・・英語で言うと英語で言うとMatrixMatrix
そもそも行列ってなんじゃそもそも行列ってなんじゃらほいらほい
そもそも行列ってなんじゃそもそも行列ってなんじゃらほいらほい
2D2D空間では空間ではXX・・YY座標・拡大縮小・回転で大体全て表現できる座標・拡大縮小・回転で大体全て表現できる
そもそも行列ってなんじゃそもそも行列ってなんじゃらほいらほい
2D2D空間では空間ではXX・・YY座標・拡大縮小・回転で大体全て表現できる座標・拡大縮小・回転で大体全て表現できる
また、画面上への反映が容易である(また、画面上への反映が容易である(XX・・YY座標がほぼそのままウィンド座標がほぼそのままウィンド
ウ上の座標になる)ウ上の座標になる)
そもそも行列ってなんじゃそもそも行列ってなんじゃらほいらほい
2D2D空間では空間ではXX・・YY座標・拡大縮小・回転で大体全て表現できる座標・拡大縮小・回転で大体全て表現できる
また、画面上への反映が容易である(また、画面上への反映が容易である(XX・・YY座標がほぼそのままウィンド座標がほぼそのままウィンド
ウ上の座標になる)ウ上の座標になる)
3D3Dではどうなのかではどうなのか
そもそも行列ってなんじゃそもそも行列ってなんじゃらほいらほい
2D2D空間では空間ではXX・・YY座標・拡大縮小・回転で大体全て表現できる座標・拡大縮小・回転で大体全て表現できる
また、画面上への反映が容易である(また、画面上への反映が容易である(XX・・YY座標がほぼそのままウィンド座標がほぼそのままウィンド
ウ上の座標になる)ウ上の座標になる)
3D3Dではどうなのかではどうなのか
そもそもそもそも3D3D空間を画面に描画するまでどのような変換が行われるのか空間を画面に描画するまでどのような変換が行われるのか
まず比較のためにまず比較のために
2D2Dでは大体このような変換順序となるでは大体このような変換順序となる
まず比較のためにまず比較のために
2D2Dでは大体このような変換順序となるでは大体このような変換順序となる
ローカル座標(スプライトの矩形の各頂点の座標とか)ローカル座標(スプライトの矩形の各頂点の座標とか)
まず比較のためにまず比較のために
2D2Dでは大体このような変換順序となるでは大体このような変換順序となる
ローカル座標(スプライトの矩形の各頂点の座標とか)ローカル座標(スプライトの矩形の各頂点の座標とか)
↓↓
ワールド座標(スプライト自体の移動・回転・拡大縮小を適用)ワールド座標(スプライト自体の移動・回転・拡大縮小を適用)
まず比較のためにまず比較のために
2D2Dでは大体このような変換順序となるでは大体このような変換順序となる
ローカル座標(スプライトの矩形の各頂点の座標とか)ローカル座標(スプライトの矩形の各頂点の座標とか)
↓↓
ワールド座標(スプライト自体の移動・回転・拡大縮小を適用)ワールド座標(スプライト自体の移動・回転・拡大縮小を適用)
まず比較のためにまず比較のために
2D2Dでは大体このような変換順序となるでは大体このような変換順序となる
ローカル座標(スプライトの矩形の各頂点の座標とか)ローカル座標(スプライトの矩形の各頂点の座標とか)
↓↓
ワールド座標(スプライト自体の移動・回転・拡大縮小を適用)ワールド座標(スプライト自体の移動・回転・拡大縮小を適用)
↓↓
スクリーン座標(実際の画面上に出力される座標)スクリーン座標(実際の画面上に出力される座標)
そしてそして3D3Dの場合はの場合は
そしてそして3D3Dの場合はの場合は
ローカル座標(ポリゴンの各頂点の座標とか)ローカル座標(ポリゴンの各頂点の座標とか)
そしてそして3D3Dの場合はの場合は
ローカル座標(ポリゴンの各頂点の座標とか)ローカル座標(ポリゴンの各頂点の座標とか)
↓↓
ワールド座標(ポリゴン自体の座標・回転・拡大縮小を適用)ワールド座標(ポリゴン自体の座標・回転・拡大縮小を適用)
そしてそして3D3Dの場合はの場合は
ローカル座標(ポリゴンの各頂点の座標とか)ローカル座標(ポリゴンの各頂点の座標とか)
↓↓
ワールド座標(ポリゴン自体の座標・回転・拡大縮小を適用)ワールド座標(ポリゴン自体の座標・回転・拡大縮小を適用)
↓↓
カメラ座標(ワールド座標をカメラから見た座標へ変換)カメラ座標(ワールド座標をカメラから見た座標へ変換)
そしてそして3D3Dの場合はの場合は
ローカル座標(ポリゴンの各頂点の座標とか)ローカル座標(ポリゴンの各頂点の座標とか)
↓↓
ワールド座標(ポリゴン自体の座標・回転・拡大縮小を適用)ワールド座標(ポリゴン自体の座標・回転・拡大縮小を適用)
↓↓
カメラ座標(ワールド座標をカメラから見た座標へ変換)カメラ座標(ワールド座標をカメラから見た座標へ変換)
↓↓
透視投影座標(遠近感を持たせる座標へ変換)透視投影座標(遠近感を持たせる座標へ変換)
そしてそして3D3Dの場合はの場合は
ローカル座標(ポリゴンの各頂点の座標とか)ローカル座標(ポリゴンの各頂点の座標とか)
↓↓
ワールド座標(ポリゴン自体の座標・回転・拡大縮小を適用)ワールド座標(ポリゴン自体の座標・回転・拡大縮小を適用)
↓↓
カメラ座標(ワールド座標をカメラから見た座標へ変換)カメラ座標(ワールド座標をカメラから見た座標へ変換)
↓↓
透視投影座標(遠近感を持たせる座標へ変換)透視投影座標(遠近感を持たせる座標へ変換)
↓↓
スクリーン座標(実際の画面上に出力される座標へ変換)スクリーン座標(実際の画面上に出力される座標へ変換)
この流れを見ると普通の人はこう思うこの流れを見ると普通の人はこう思う
この流れを見ると普通の人はこう思うこの流れを見ると普通の人はこう思う
なんだか凄く複雑な計算が必要そうなんだか凄く複雑な計算が必要そう
この流れを見ると普通の人はこう思うこの流れを見ると普通の人はこう思う
なんだか凄く複雑な計算が必要そうなんだか凄く複雑な計算が必要そう
確かに、この手順をベタで計算すると大変手間がかかります確かに、この手順をベタで計算すると大変手間がかかります
この流れを見ると普通の人はこう思うこの流れを見ると普通の人はこう思う
なんだか凄く複雑な計算が必要そうなんだか凄く複雑な計算が必要そう
確かに、この手順をベタで計算すると大変手間がかかります確かに、この手順をベタで計算すると大変手間がかかります
最近のゲームではシーン全体で数十万ポリゴンとかザラ最近のゲームではシーン全体で数十万ポリゴンとかザラ
この流れを見ると普通の人はこう思うこの流れを見ると普通の人はこう思う
なんだか凄く複雑な計算が必要そうなんだか凄く複雑な計算が必要そう
確かに、この手順をベタで計算すると大変手間がかかります確かに、この手順をベタで計算すると大変手間がかかります
最近のゲームではシーン全体で数十万ポリゴンとかザラ最近のゲームではシーン全体で数十万ポリゴンとかザラ
このポリゴンの全ての頂点に対して移動・回転・拡大縮小をこのポリゴンの全ての頂点に対して移動・回転・拡大縮小を
この手順通りに適用する・・・どう考えてもヤバイこの手順通りに適用する・・・どう考えてもヤバイ
お待たせしました!お待たせしました!
ここで変換行列の登場です!ここで変換行列の登場です!
お待たせしました!お待たせしました!
ここで変換行列の登場です!ここで変換行列の登場です!
この気の遠くなるような手順を簡単で軽くするために必要なのが変換行この気の遠くなるような手順を簡単で軽くするために必要なのが変換行
列なのです。列なのです。
お待たせしました!お待たせしました!
ここで変換行列の登場です!ここで変換行列の登場です!
この気の遠くなるような手順を簡単で軽くするために必要なのが変換行この気の遠くなるような手順を簡単で軽くするために必要なのが変換行
列なのです。列なのです。
変換行列のデータ構造変換行列のデータ構造
float matrix[4][4];float matrix[4][4]; //// 4x44x4の浮動小数点配列で表されるの浮動小数点配列で表される
お待たせしました!お待たせしました!
ここで変換行列の登場です!ここで変換行列の登場です!
この気の遠くなるような手順を簡単で軽くするために必要なのが変換行この気の遠くなるような手順を簡単で軽くするために必要なのが変換行
列なのです。列なのです。
変換行列のデータ構造変換行列のデータ構造
float matrix[4][4];float matrix[4][4]; //// 4x44x4の浮動小数点配列で表されるの浮動小数点配列で表される
変換行列には変換行列には33次元での移動・拡大縮小・回転の要素を全て詰めること次元での移動・拡大縮小・回転の要素を全て詰めること
ができる!ができる!
お待たせしました!お待たせしました!
ここで変換行列の登場です!ここで変換行列の登場です!
この気の遠くなるような手順を簡単で軽くするために必要なのが変換行この気の遠くなるような手順を簡単で軽くするために必要なのが変換行
列なのです。列なのです。
変換行列のデータ構造変換行列のデータ構造
float matrix[4][4];float matrix[4][4]; //// 4x44x4の浮動小数点配列で表されるの浮動小数点配列で表される
変換行列には変換行列には33次元での移動・拡大縮小・回転の要素を全て詰めること次元での移動・拡大縮小・回転の要素を全て詰めること
ができる!ができる!
行列のどこに何を代入すればいいの?とかの話は長くなるので今回は行列のどこに何を代入すればいいの?とかの話は長くなるので今回は
割愛。割愛。
先ほどの変換手順はローカル座標以外、先ほどの変換手順はローカル座標以外、
全て変換行列で表現できる全て変換行列で表現できる
ローカル座標(ただの座標情報なのでこのままでいい)ローカル座標(ただの座標情報なのでこのままでいい)
↓↓
ワールド座標ワールド座標・・・・・・ワールド変換行列ワールド変換行列
↓↓
カメラ座標カメラ座標・・・・・・カメラ変換行列カメラ変換行列
↓↓
透視投影座標透視投影座標・・・・・・透視投影変換行列透視投影変換行列
↓↓
スクリーン座標スクリーン座標・・・・・・スクリーン変換行列スクリーン変換行列
では、この変換行列をでは、この変換行列を
具体的にどうすればいいのか具体的にどうすればいいのか
とても大事な変換行列の性質とても大事な変換行列の性質
変換行列をローカル座標に掛けると、変換行列に設定されている移動・拡大縮変換行列をローカル座標に掛けると、変換行列に設定されている移動・拡大縮
小・回転が全て適用された座標になる小・回転が全て適用された座標になる
とても大事な変換行列の性質とても大事な変換行列の性質
変換行列をローカル座標に掛けると、変換行列に設定されている移動・拡大縮変換行列をローカル座標に掛けると、変換行列に設定されている移動・拡大縮
小・回転が全て適用された座標になる小・回転が全て適用された座標になる
ローカル座標ローカル座標××ワールド変換行列ワールド変換行列 == ワールド座標ワールド座標
とても大事な変換行列の性質とても大事な変換行列の性質
変換行列をローカル座標に掛けると、変換行列に設定されている移動・拡大縮変換行列をローカル座標に掛けると、変換行列に設定されている移動・拡大縮
小・回転が全て適用された座標になる小・回転が全て適用された座標になる
ローカル座標ローカル座標××ワールド変換行列ワールド変換行列 == ワールド座標ワールド座標
掛け算の順番は掛け算の順番は
http://msdn.microsoft.com/enhttp://msdn.microsoft.com/en--us/library/windows/desktop/bb206269(v=vs.85).aspxus/library/windows/desktop/bb206269(v=vs.85).aspx
とても大事な変換行列の性質とても大事な変換行列の性質
変換行列をローカル座標に掛けると、変換行列に設定されている移動・拡大縮変換行列をローカル座標に掛けると、変換行列に設定されている移動・拡大縮
小・回転が全て適用された座標になる小・回転が全て適用された座標になる
ローカル座標ローカル座標××ワールド変換行列ワールド変換行列 == ワールド座標ワールド座標
掛け算の順番は掛け算の順番は
http://msdn.microsoft.com/enhttp://msdn.microsoft.com/en--us/library/windows/desktop/bb206269(v=vs.85).aspxus/library/windows/desktop/bb206269(v=vs.85).aspx
つまりローカル座標つまりローカル座標××ワールド変換行列ワールド変換行列××カメラ変換行列カメラ変換行列××透視投影変換行列透視投影変換行列
××スクリーン変換行列スクリーン変換行列
== 求めたい最終結果の座標!求めたい最終結果の座標!
変換行列の性質その変換行列の性質その22
行列同士も掛け算できる行列同士も掛け算できる
変換行列の性質その変換行列の性質その22
行列同士も掛け算できる行列同士も掛け算できる
つまりローカル座標に掛ける前にあらかじめつまりローカル座標に掛ける前にあらかじめ
変換行列同士を掛けておくことで更に計算量変換行列同士を掛けておくことで更に計算量
を減らすことが出来る!を減らすことが出来る!
変換行列の性質その変換行列の性質その22
行列同士も掛け算できる行列同士も掛け算できる
つまりローカル座標に掛ける前にあらかじめつまりローカル座標に掛ける前にあらかじめ
変換行列同士を掛けておくことで更に計算量変換行列同士を掛けておくことで更に計算量
を減らすことが出来る!を減らすことが出来る!
変換行列ありがとう!変換行列最高!変換行列ありがとう!変換行列最高!
変換行列の性質その3変換行列の性質その3
((行列1行列1××行列2行列2)と、)と、 ((行列2行列2××行列1行列1)では)では
計算結果が異なる!=交換法則が成り立たない計算結果が異なる!=交換法則が成り立たない
変換行列の性質その3変換行列の性質その3
((行列1行列1××行列2行列2)と、)と、 ((行列2行列2××行列1行列1)では)では
計算結果が異なる!=交換法則が成り立たない計算結果が異なる!=交換法則が成り立たない
これはこれはBLBL作品等におけるカップリングと同様の性質作品等におけるカップリングと同様の性質
であり、掛ける順番には注意が必要であるであり、掛ける順番には注意が必要である
変換行列の性質その3変換行列の性質その3
((行列1行列1××行列2行列2)と、)と、 ((行列2行列2××行列1行列1)では)では
計算結果が異なる!=交換法則が成り立たない計算結果が異なる!=交換法則が成り立たない
これはこれはBLBL作品等におけるカップリングと同様の性質作品等におけるカップリングと同様の性質
であり、掛ける順番には注意が必要であるであり、掛ける順番には注意が必要である
実際のプログラムで動作を確認してみよう!実際のプログラムで動作を確認してみよう!
変換行列の生成方法変換行列の生成方法
変換行列の生成は多くの変換行列の生成は多くの3D3Dライブラリにおいて豊富なヘルパー関数がライブラリにおいて豊富なヘルパー関数が
用意されており、イチから計算する必要はありません。用意されており、イチから計算する必要はありません。
移動行列生成関数(回転・拡大縮小の関数ももちろんある)移動行列生成関数(回転・拡大縮小の関数ももちろんある)
http://msdn.microsoft.com/jahttp://msdn.microsoft.com/ja--jp/library/cc372906.aspxjp/library/cc372906.aspx
カメラ行列生成関数カメラ行列生成関数
http://msdn.microsoft.com/jahttp://msdn.microsoft.com/ja--jp/library/cc372877.aspxjp/library/cc372877.aspx
透視投影変換行列生成関数透視投影変換行列生成関数
http://msdn.microsoft.com/jahttp://msdn.microsoft.com/ja--jp/library/cc372898.aspxjp/library/cc372898.aspx
スクリーン変換行列スクリーン変換行列
ライブラリ初期化時にウィンドウ情報と一緒にセットされるライブラリ初期化時にウィンドウ情報と一緒にセットされる
通常意識する必要なし通常意識する必要なし
まとめまとめ
まとめまとめ
行列こそが行列こそが3D3Dプログラミングの基本!とっても大事!プログラミングの基本!とっても大事!
まとめまとめ
行列こそが行列こそが3D3Dプログラミングの基本!とっても大事!プログラミングの基本!とっても大事!
3D3D描画について、一から全て自分で計算する必要はない!描画について、一から全て自分で計算する必要はない!
まとめまとめ
行列こそが行列こそが3D3Dプログラミングの基本!とっても大事!プログラミングの基本!とっても大事!
3D3D描画について、一から全て自分で計算する必要はない!描画について、一から全て自分で計算する必要はない!
かなり大部分をライブラリでカバーしてくれている。かなり大部分をライブラリでカバーしてくれている。
まとめまとめ
行列こそが行列こそが3D3Dプログラミングの基本!とっても大事!プログラミングの基本!とっても大事!
3D3D描画について、一から全て自分で計算する必要はない!描画について、一から全て自分で計算する必要はない!
かなり大部分をライブラリでカバーしてくれている。かなり大部分をライブラリでカバーしてくれている。
実際の具体的な演算を理解するのは実際の具体的な演算を理解するのは3D3Dプログラミングという概念に慣れプログラミングという概念に慣れ
てからでも遅くはない!てからでも遅くはない!
まとめまとめ
行列こそが行列こそが3D3Dプログラミングの基本!とっても大事!プログラミングの基本!とっても大事!
3D3D描画について、一から全て自分で計算する必要はない!描画について、一から全て自分で計算する必要はない!
かなり大部分をライブラリでカバーしてくれている。かなり大部分をライブラリでカバーしてくれている。
実際の具体的な演算を理解するのは実際の具体的な演算を理解するのは3D3Dプログラミングという概念に慣れプログラミングという概念に慣れ
てからでも遅くはない!てからでも遅くはない!
3D3Dを恐れる必要はない。簡単なを恐れる必要はない。簡単な3D3Dプログラムならそんなに知識は必要プログラムならそんなに知識は必要
ない。ない。
そして最後に私からの提案・・・そして最後に私からの提案・・・
そして最後に私からの提案・・・そして最後に私からの提案・・・
社内社内3D3D勉強会やりませんか?勉強会やりませんか?
そして最後に私からの提案・・・そして最後に私からの提案・・・
社内社内3D3D勉強会やりませんか?勉強会やりませんか?
これからスマホアプリでもこれからスマホアプリでも3D3D描画によるものが更に増えてくる筈。描画によるものが更に増えてくる筈。
そして最後に私からの提案・・・そして最後に私からの提案・・・
社内社内3D3D勉強会やりませんか?勉強会やりませんか?
これからスマホアプリでもこれからスマホアプリでも3D3D描画によるものが更に増えてくる筈。描画によるものが更に増えてくる筈。
今すぐに今すぐに3D3Dアプリ開発に手を出すわけではないにしても、技術の蓄積をアプリ開発に手を出すわけではないにしても、技術の蓄積を
しておくに越したことはない。しておくに越したことはない。
そして最後に私からの提案・・・そして最後に私からの提案・・・
社内社内3D3D勉強会やりませんか?勉強会やりませんか?
これからスマホアプリでもこれからスマホアプリでも3D3D描画によるものが更に増えてくる筈。描画によるものが更に増えてくる筈。
今すぐに今すぐに3D3Dアプリ開発に手を出すわけではないにしても、技術の蓄積をアプリ開発に手を出すわけではないにしても、技術の蓄積を
しておくに越したことはない。しておくに越したことはない。
UnityUnityを利用した開発にも絶対役立つ。なんならを利用した開発にも絶対役立つ。なんならUnityUnity勉強会を含めてし勉強会を含めてし
まってもよい。まってもよい。
そして最後に私からの提案・・・そして最後に私からの提案・・・
社内社内3D3D勉強会やりませんか?勉強会やりませんか?
これからスマホアプリでもこれからスマホアプリでも3D3D描画によるものが更に増えてくる筈。描画によるものが更に増えてくる筈。
今すぐに今すぐに3D3Dアプリ開発に手を出すわけではないにしても、技術の蓄積をアプリ開発に手を出すわけではないにしても、技術の蓄積を
しておくに越したことはない。しておくに越したことはない。
UnityUnityを利用した開発にも絶対役立つ。なんならを利用した開発にも絶対役立つ。なんならUnityUnity勉強会を含めてし勉強会を含めてし
まってもよい。まってもよい。
将来への研究投資として会社からの支援があればと思います。将来への研究投資として会社からの支援があればと思います。
ご清聴ありがとうございました!ご清聴ありがとうございました!

More Related Content

Similar to 3D勉強会 第1回 3Dプログラミングのススメ (10)

PDF
Wtidev0227 tmokita
Tomohiko Okita
 
PPTX
CG2013 08
shiozawa_h
 
PDF
three.js はじめましょ
Hiroaki Okubo
 
PDF
Beginning gl.enchant
Ryo Shimizu
 
PPTX
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
Unity Technologies Japan K.K.
 
PDF
第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もう
Takashi Yoshinaga
 
PDF
週末プログラミングで作るカジュアルゲーム~シューティング編~
Nohina Hidenari
 
PPTX
CG2013 09
shiozawa_h
 
PDF
Flashup13 Basic Training of Flare3D
Katsushi Suzuki
 
PDF
Silverlightで作るマルチタッチアプリケーション 2
Yoshitaka Seo
 
Wtidev0227 tmokita
Tomohiko Okita
 
CG2013 08
shiozawa_h
 
three.js はじめましょ
Hiroaki Okubo
 
Beginning gl.enchant
Ryo Shimizu
 
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
Unity Technologies Japan K.K.
 
第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もう
Takashi Yoshinaga
 
週末プログラミングで作るカジュアルゲーム~シューティング編~
Nohina Hidenari
 
CG2013 09
shiozawa_h
 
Flashup13 Basic Training of Flare3D
Katsushi Suzuki
 
Silverlightで作るマルチタッチアプリケーション 2
Yoshitaka Seo
 

More from infinite_loop (20)

PDF
ChatGPT触ってみた
infinite_loop
 
PDF
社内ソフトスキルを考える
infinite_loop
 
PDF
3Dプリンタって いいね
infinite_loop
 
PDF
VRChatでお酒が注げる飲み物アセットの紹介
infinite_loop
 
PDF
アニメーションとスキニングをBurstで独自実装する.pdf
infinite_loop
 
PDF
I ❤ Virtual Machines 仮想環境をより便利に使うツールたち
infinite_loop
 
PDF
500万行のPHPプロジェクトにおけるログ出力の歩み
infinite_loop
 
PDF
ADRという考えを取り入れてみて
infinite_loop
 
PDF
リファクタリングで実装が○○分短縮した話
infinite_loop
 
PDF
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
 
PDF
楽しいVR空間を作る技術と支える技術 #osc19do
infinite_loop
 
PDF
Start rl with_unity_machine_learning_agents
infinite_loop
 
PDF
UniRx の1歩目
infinite_loop
 
PDF
がんばれ PHP Fiber
infinite_loop
 
PDF
心に残った名前ランキング
infinite_loop
 
PDF
プログラムと名前にまつわる座談会
infinite_loop
 
PDF
名は体を表していますか
infinite_loop
 
PDF
名前の力
infinite_loop
 
PDF
大切な名前[Intro]公開版
infinite_loop
 
PDF
JupyterNotebookとMySQLでゼロからはじめるデータサイエンス
infinite_loop
 
ChatGPT触ってみた
infinite_loop
 
社内ソフトスキルを考える
infinite_loop
 
3Dプリンタって いいね
infinite_loop
 
VRChatでお酒が注げる飲み物アセットの紹介
infinite_loop
 
アニメーションとスキニングをBurstで独自実装する.pdf
infinite_loop
 
I ❤ Virtual Machines 仮想環境をより便利に使うツールたち
infinite_loop
 
500万行のPHPプロジェクトにおけるログ出力の歩み
infinite_loop
 
ADRという考えを取り入れてみて
infinite_loop
 
リファクタリングで実装が○○分短縮した話
infinite_loop
 
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
 
楽しいVR空間を作る技術と支える技術 #osc19do
infinite_loop
 
Start rl with_unity_machine_learning_agents
infinite_loop
 
UniRx の1歩目
infinite_loop
 
がんばれ PHP Fiber
infinite_loop
 
心に残った名前ランキング
infinite_loop
 
プログラムと名前にまつわる座談会
infinite_loop
 
名は体を表していますか
infinite_loop
 
名前の力
infinite_loop
 
大切な名前[Intro]公開版
infinite_loop
 
JupyterNotebookとMySQLでゼロからはじめるデータサイエンス
infinite_loop
 
Ad

Recently uploaded (10)

PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
Ad

3D勉強会 第1回 3Dプログラミングのススメ