日々現状維持

日暮れて道はなし

プロフィール

七橋綴(ななつ☆)

Author:七橋綴(ななつ☆)
大学生:♂
2013年―――気づけば今年誕生日を迎えると四捨五入で30歳
地獄の業界、SE業。
NEETになりたい(迫真)

カウンター

宣伝/広告


ブログ内検索

presentsed by nanatu

カレンダー

05 | 2017/06 | 07
- - - - 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 30 -


OpenGL Qt 3D描写 メモ01

もしも検索で流れ着いた方がいたらごめんなさい。
単なるメモ書きです。

QGLWidgetのpaintGL()の部分で物体を描写。
glBegin()で描写のタイプを決めるっぽい。
-GL_TRIANGLES -三角形? テクスチャ付き?
-GL_LINES -3次元画面上にラインを書く。

glBegin(GL_LINES);

(描画のポイントや、色を此処に書く)

glEnd();


基本はこの流れっぽい?

具体的な処理の関数の使い方は
qglColor(Qt::red);
-glBeginからglEndまでに描画する3D物体の色
glVertex3f(x, y, z);
-二点間のポイントの場所を指す。
-つまり線を引く場合は、二回この関数を使う?っぽい。

参考のサイトを一部借用して、QtとOpenGLで書いてみると、

glBegin(GL_LINES);

qglColor(Qt::red);

glVertex3f(-1.0, 0.0, 0.0);
glVertex3f(1.0, 0.0, 0.0);

glEnd();


結果は
x座標

-1.0から+1.0だったから、原点はちょうど真ん中なはず。
じゃあ、Y軸を作ればいいジャマイカって事になる。

//X座標の描写
glBegin(GL_LINES);
qglColor(Qt::red);
glVertex3f(-1.0, 0.0, 0.0);
glVertex3f(1.0, 0.0, 0.0);
glEnd();

//Y座標の描写
glBegin(GL_LINES);
qglColor(Qt::blue);
glVertex3f(0.0, -1.0, 0.0);
glVertex3f(0.0, 1.0, 0.0);
glEnd();


同じように、線を青色にして、今度はY軸のパラメータを変えてみる。
y座標
まぁ、当たり前のように、十字になる。
ということは、Z軸を増やせば・・・・
くどいようだけど、ソース。

//X座標の描写
glBegin(GL_LINES);
qglColor(Qt::red);
glVertex3f(-1.0, 0.0, 0.0);
glVertex3f(1.0, 0.0, 0.0);
glEnd();

//Y座標の描写
glBegin(GL_LINES);
qglColor(Qt::blue);
glVertex3f(0.0, -1.0, 0.0);
glVertex3f(0.0, 1.0, 0.0);
glEnd();

//Z座標の描写
glBegin(GL_LINES);
qglColor(Qt::yellow);
glVertex3f(0.0, 0.0, -1.0);
glVertex3f(0.0, 0.0, 1.0);
glEnd();


今度は黄色にしてみる。完全に思いついた色で構成。
結果。
z-軸01

あれ?変わんない。

って、それもそのはず。
正面から見れば、Z軸ってみれねーじゃん。バッカジャネーノ。
というわけで、視点の角度を変えてみると。
z-軸02

というか、これじゃ、全部付きぬけてるから、グラフっぽくしよう。
ミートソース。

//X座標の描写
glBegin(GL_LINES);
qglColor(Qt::red);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(1.0, 0.0, 0.0);
glEnd();

//Y座標の描写
glBegin(GL_LINES);
qglColor(Qt::blue);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 1.0, 0.0);
glEnd();

//Z座標の描写
glBegin(GL_LINES);
qglColor(Qt::yellow);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 0.0, 1.0);
glEnd();


原点(0,0,0)から、各値に1づつ伸ばせばおk。

xyz

ほらねー。
って、ちょっと見にくい。
この線を太くしたりできないのかなー。

ちなみに、見る角度を変えるには、
glRotatef()
という関数の引値の一番目のangleを変えればできるみたい。
0~360度までと思うのだが、どうなんだろう。調べてみる価値ありあり。

補足というか、なんとやら。
XYZの方向が他の3Dのソフトと違うような気がして、
調べてみると、YとZの座標が違うみたい。
OpenGLでは以下の図の座標配置になる。
xzxz.jpg
スポンサーサイト