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

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

新規登録して質問してみよう
ただいま回答率
85.35%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

Q&A

解決済

1回答

1272閲覧

フレームモデルをだしたい

txty

総合スコア303

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

0グッド

0クリップ

投稿2020/11/16 16:01

編集2022/08/12 14:01

directxに
D3DXMATRIXA16というものがあり TransformMatrix, OffsetMatrix,CombindMatrixなどと名前をつけて
そのまま掛け算で計算しているのですが、openglにはなさそう?なので、ご指摘のとおり4*4の行列で計算するのが、正しいようです。なお行列の一番下は移動にあたると思うのですが、行列の計算が出てくるたびにちまちまいじるのが嫌なので
ひとまず保留することにしました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

directxにD3DXMATRIXA16というものがあり TransformMatrix, OffsetMatrix,CombindMatrixなどと名前をつけてそのまま掛け算で計算しているのですが、openglにはなさそう?

OpenGLではDirectXのD3DXMATRIXA16に該当する部分はありません。自身で実装をお願い致します。

今度から3*3で計算することにしました。なお行列の一番下は移動にあたると思うのですが、行列の計算が出てくるたびにちまちまいじるのが嫌なのでひとまず保留することにしました。(world座標は移動後、回転後、縮小を表す行列だそうです)

3次元のMatrixは4×4にするのが一般的です。3×3なら2次元の元と間違われてしまいます。

計算後の合成行列 //qy=-2.628411560409*qy;のコメントをはずすと、

逆になるのは右手座標系と左手座標系の計算式を間違えているからだと思います。
DirectXは左手座標系を使用しているのに対し、OpenGLでは右手座標系を使用します。
変換等も出来ますので、自身の好きな軸で行くのをお勧めしますが、きちんと変換だけは行って下さい。

投稿2020/11/17 03:46

stdio

総合スコア3307

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

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

txty

2020/11/17 06:46

>3次元のMatrixは4×4にするのが一般的です。 3*3で計算後、4行目を移動とすれば4*4の行列で合ってるでしょうか。 >逆になるのは右手座標系と左手座標系の計算式を間違えているからだと思います。 右手と左手で計算式がどう変わるのか知っていらしたら、教えてください。お願いします。 けっこうマジレスですが、よろしくお願いします。
stdio

2020/11/18 01:15

>3*3で計算後、4行目を移動とすれば4*4の行列で合ってるでしょうか。 全て4×4のMatrixでT=Size×Angle×Posをして下さい。 >右手と左手で計算式がどう変わるのか知っていらしたら、教えてください。お願いします。 http://www.f.waseda.jp/moriya/PUBLIC_HTML/education/classes/infomath6/applet/fractal/coord/ ここを読めばいいのではないでしょうか? マトリックスやベクトルの演算を行う、C++用のモジュールもあったと思うので、探してみるのも手だと思います。それと酷い話になりますが、3Dモデリングを画面に表示するということは、Matrixの知識は「理解していなければならない知識」です。きちんと理解してから望んで下さい。
txty

2020/11/18 05:08 編集

>全て4×4のMatrixでT=Size×Angle×Posをして下さい。 わかりました。探すなり作るなりしようと思います。 知識が足りなくて作れない可能性は、たかいです。 >http://www.f.waseda.jp/moriya/PUBLIC_HTML/education/classes/infomath6/applet/fractal/coord/ リンク先が右手か左手の計算か分かりませんでした。比べているように見えませんが、 、そもそもopenglは右手だから右手でつくるのでしょうか。それとも、右手を左手に落とし込むのでしょうか。 >マトリックスやベクトルの演算を行う、C++用のモジュールもあったと思うので、探してみるのも手だと思います。 できれば名前を教えてほしいです。見つからない可能性が高いです。自分でも探しますが。 >3Dモデリングを画面に表示するということは、Matrixの知識は「理解していなければならない知識」 どこから分かりましたか。Matrixからですか。 glMatrixMode(GL_PROJECTION);glMatrixMode(GL_MODELVIEW);とかもあまり理解できていないで、ちょっと教えて欲しいです。
stdio

2020/11/18 05:32

> openglは右手だから右手でつくるのでしょうか。それとも、右手を左手に落とし込むのでしょうか。 エンジニアによっても異なりますが、右手は数学的で人間的には分かりにくい。左手は人間的で数学的ではないと言われております。慣れた方で良いと思います。 > できれば名前を教えてほしいです。見つからない可能性が高いです。自分でも探しますが。 忘れました。「C++ matrix」とでも検索すれば出ると思いますよ。 > どこから分かりましたか。Matrixからですか。 「右手と左手で計算式がどう変わるのか知っていらしたら、教えてください。」という発言からです。 ここは質問をする場であって、教鞭をとる場所ではないので、Matrixの事は自分でなんとかして下さい。
txty

2020/11/18 05:52

わかりました。ありがとうございます。
fana

2020/11/18 05:53 編集

> //qy=-2.628411560409*qy;のコメントをはずすと、 y成分に負の値を乗じるか乗じないかによってy方向に関して逆向きになるのは至極当たり前だと思うが…
txty

2020/11/18 05:59

>まあそうですね。いろいろあってまともに勉強してないので、しょうがないです。やったあとに、気がつきましたが、もしくは今気がつきました。
fana

2020/11/18 06:05

> OpenGLでは右手座標系を使用します (個人の経験(記憶)なので間違っているかもしれないが) 正規化座標(最後に描画範囲をクリップする世界)は,{X正の方向を右,Y正の方向を上,視点から遠ざかるほど奥行(Z)値が増える}という形になっていて,これは "左手系" と呼べるように思う. なので, そこまでに行き着く途中の世界をどっち系で扱うのが主流(?)かは知らないけれども,最終的にはこの "左手系" での座標に行き着くように考えてやらねばならないのではないかと思う. ※「OpenGL 右手系」とかでググるとそこらへんの話が見つかるみたい.(glu系の関数が反転を担っている?)
txty

2020/11/18 06:35 編集

何やら課題がいくつか見つかったので、調べてみます。openGL 右手系とかも。
txty

2022/07/28 06:04 編集

directx をopenglだから、たぶん、右手 を左手にの間違いのようでした。
stdio

2020/11/18 07:56

頑張って下さい!! 3DモデリングをOpenGLで描画してみたいと思った時点で、君は並みのプログラマの遥か上を行っています!!
txty

2020/11/18 08:38 編集

あれ逆か。わかんね。glmもoperater?もクォターニオンも?も書けそうにないんだが後で質問するかも。 4*4にしようとしている。
fana

2020/11/18 08:45

「現状3*3でやってる → だから問題が生じる」という話ならば,4*4にすることが「修正」となるだろうけど,そういうことが現時点で明瞭になってるんですかね? そういうことではなくて(現在の問題とは無関係に),「せっかくだから俺は実装を4*4にするぜ!」とかいう話なのであれば, 何で3*3じゃいけないんですか? R(3*3)とT(3次元ベクトル)を明確に分けて扱うことも割と良くあると思うのですが,そういう形の実装ではどのような事柄が問題になりますか? 4*4にすると何か良いことがあるんですか? 逆に何か話が難しくなったりとかはしないのですか? …みたいなことに疑問が無い状態でやらないと,単に不明点が増えてしまう結果を生じ得るのでは…とか.(余計なお世話かな)
txty

2022/07/15 23:48 編集

すいません。4*4の行列を使う可能性が高い気がするのですが..判断できないので個人にお任せします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問