質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

4042閲覧

glm系のmatとlookAtが理解できない

Tololololo

総合スコア118

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/10/19 06:16

編集2018/10/19 06:18

C++

1#include <glm/glm.hpp>

このglmモジュールにmatとlookAt関数がありますが、これらが意味していることがわかりません。

###まずmatから
matにはmat2 ~ mat4まであり、4x4行列であることはなんとなく理解しています。
以下の画像のことで間違いはないでしょうか。
イメージ説明
また、以下のような使い方はできますか?
結果も教えて欲しいです。

C++

1mat4(1.0) ///1 対角行列になるのかな? 2mat4(1.0,2.0) ///2 2~3は全部三角行列か何か? 3mat4(1.0,2.0,3.0) ///3 4mat4(1.0,2.0,3.0,4.0) ///4

###lookAt
これがなんなのか全くわからないです。

C++

1gym::mat4 a = glm::lookAt(glm::vec3(14,6,4), glm::vec3(0,1,0), glm::vec3(0,1,0));

vecはベクトルらしいのですが、見た所vec3x3のような式であり、結果はmat3になるような気がします。
なぜこれがmat4として変数に入れられるのかがわかりません。
それとも、このlookAtには足りない部分を全て0として置き換える機能でもあるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

matにはmat2 ~ mat4まであり、4x4行列であることはなんとなく理解しています。
以下の画像のことで間違いはないでしょうか。

その認識であっています。

また、以下のような使い方はできますか?
結果も教えて欲しいです。

実際試してみれば、わかることだと思いますが、1 ~ 4つの引数をとるようなコンストラクタは mat4 にはありません。
vector の間違いではないでしょうか?

cpp

1#include <iostream> 2 3#include <glm/glm.hpp> 4#define GLM_ENABLE_EXPERIMENTAL 5#include <glm/gtx/string_cast.hpp> 6 7 8int main() 9{ 10 glm::vec1 mat1(1.0); 11 glm::vec2 mat2(1.0, 2.0); 12 glm::vec3 mat3(1.0, 2.0, 3.0); 13 glm::vec4 mat4(1.0, 2.0, 3.0, 4.0); 14 15 std::cout << glm::to_string(mat1) << std::endl; 16 std::cout << glm::to_string(mat2) << std::endl; 17 std::cout << glm::to_string(mat3) << std::endl; 18 std::cout << glm::to_string(mat4) << std::endl; 19} 20
vec1(1.000000) vec2(1.000000, 2.000000) vec3(1.000000, 2.000000, 3.000000) vec4(1.000000, 2.000000, 3.000000, 4.000000)

これがなんなのか全くわからないです。
gym::mat4 a = glm::lookAt(glm::vec3(14,6,4), glm::vec3(0,1,0), glm::vec3(0,1,0));

第1引数がカメラの位置、第2引数がカメラを向ける位置、第3引数がカメラの上方向を表すベクトルです。
世界座標をカメラを中心とした座標に変換するのに使用します。

式の導出は以下を参考にしてください。

lookat 行列

なぜこれがmat4として変数に入れられるのかがわかりません。

lookat 行列は 4x4 行列です。

投稿2018/10/19 06:34

編集2018/10/19 06:35
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問