OpenGLスレ Part11at TECH
OpenGLスレ Part11 - 暇つぶし2ch555:デフォルトの名無しさん
08/01/16 14:25:25
>>554
GPGPUのスレしか見つからないが
グラフィックでのシェーダと使い方大分違くないか?

556:デフォルトの名無しさん
08/01/16 23:53:32
あっちで普通のシェーダ聞いたらすれ違い言われた

557:デフォルトの名無しさん
08/01/17 01:28:03
そりゃ当然

558:デフォルトの名無しさん
08/01/17 21:30:29
マウスで画面クリックしたら
3次元座標空間内の点が消える、という処理をしたいのですが


赤い○←クリック α値が0になって
αテストで画面内から消滅。という流れでやろうと思っています。

ただ、どうにもクリックしたオブジェクトの選択方法・クリックによる色・αの変換方法がわからず
どうにもわかりません。

参考サイトとかあったら教えてくださいませんか

559:デフォルトの名無しさん
08/01/17 21:53:02
定期的に同じような質問が来るな。
αで消すよりポリゴンそのものの描画をカットしたほうが楽じゃないか?
ポリゴン選択なら
glRenderMode(GL_SELECT);
gluPickMatrix
あたりで検索するといいよ。

560:デフォルトの名無しさん
08/01/17 23:01:02
>>559
ありがとうございます。

そこらでググって見ましたがいまいち、クリックしたオブジェクトを、消すというのが
どの時点で選択されているのかわからなく

URLリンク(wiki.livedoor.jp)
URLリンク(son-son.sakura.ne.jp)

こちらを参考にしました。
消すのに、描画をカットする方法やαを0にするのがどこをいじくってよいのやら

無数に飛んでくる玉をクリック・クリックで消すというゲームを想定してます。

561:デフォルトの名無しさん
08/01/18 01:42:23
それなら別にマウスピッキングなんかしないで、マウスポインタ座標と玉との距離で
処理すればいいんじゃない? 結構処理時間食うぞ、ピッキング。
他に意図があるなら別だけど。

562:デフォルトの名無しさん
08/01/18 03:20:46
普通にやるならマウス座標とスクリーン座標に変換したオブジェクトのバウンディングスフィアとの衝突判定を
手前のオブジェクトから順に判定して行く感じかな

もはやOpenGL関係ないけど

563:デフォルトの名無しさん
08/01/18 06:12:05
床井さん復活おめ。

564:デフォルトの名無しさん
08/01/18 14:54:14
>>562
>もはやOpenGL関係ないけど
それが普通だよ。OpenGLの仕事は基本的に描画のみ。衝突判定やピッキングは別でやるのが当たり前。
セレクションモードとかは「場合によっては使えなくもない」ってだけの仕組み。

初心者は、無理してOpenGL使うより、適当なシーングラフライブラリを使ったほうがいいと思うんだよなー。
でも敷居の低いシーングラフってなかなか無いんだよなー。

565:デフォルトの名無しさん
08/01/18 16:23:17
javaなら低レベルなJOGLか、高レベルなJava3Dっていう選択肢があるんだけどな。

と、JOGLをRhinoから遊んでる俺が言ってみる。

566:デフォルトの名無しさん
08/01/18 17:37:50
JOGLってなんでGL.glHogeHogeみたくプレフィクスだぶらせてるんだ。
メソッドのglとか定数のGL_とか、クラス名があるんだから不要じゃん?
入力面倒だよ……。

567:デフォルトの名無しさん
08/01/18 17:42:16
定数の GL. は static import すればいい
メソッドのはメンドイね

568:デフォルトの名無しさん
08/01/19 02:43:39
下らない質問なんですが、
戦場の絆みたいなゲームって、
blenderみたいなソフトでモデル(ガンダム)を作って、
その情報を取り込んでOpenGLでプログラミングして動かしているのでしょうか?

569:デフォルトの名無しさん
08/01/19 02:54:16
商業なら独自形式にエクスポートしたりしない?

絆のハード構成は最近のPCと同じ(チップセットがAMDでVGAがGF7800)でOpenGL使ってるからCg使ってるかもしれないけど。

570:デフォルトの名無しさん
08/01/19 03:05:48
>>569
むむ、言ってることが難しくて分からないです。
自分が何でこんなこと思ったのかと言うと、
たとえばもうちょっと簡単な例で、同人ゲームとかで3Dな奴ありますよね。
でも、自分にはOpenGLであんな複雑な人の形を作るなんて、とっても大変だと思うんです。
それで、たとえば何かのCGソフト(blenderとか六角大王とか)で人間の形を作って、
その人間の形を出力して、OpenGLで取り込んでプログラミングして動かすのかなと思ったんです。
実際のところどうやって3Dゲームは人の形を動かしてるんでしょうか?


571:デフォルトの名無しさん
08/01/19 08:35:42
>>570
基本はあってる。

3DCGソフト(ゲームなら、3DSMax、Maya、XSIあたり)でモデリングして、アニメーション付けて、
それを独自形式で適当に吐いて、
プログラムでデータとして読み込む。

後は、それをOpenGLなり、DirectXなりで画面に出力する。

572:デフォルトの名無しさん
08/01/19 09:05:08
>>571
なるほど!
とてもよく分かる説明、ありがとうございます。
ちなみに、モデリングしてアニメーションつける人と
OpenGLなりDirectXで動かす人は普通別なんですよね?

573:デフォルトの名無しさん
08/01/19 12:08:24
普通は別だろう
別である必要はないけど
技術的につらいし作業量的にも無理あるよな

574:デフォルトの名無しさん
08/01/19 12:33:58
そこそこ以上の規模のゲームでは
前者はデザイナー、後者はプログラマーの仕事だよな

575:デフォルトの名無しさん
08/01/19 12:52:20
今時の同人ソフトだってグラフィックデザイナとプログラマは別れてるんじゃないかな?

規模のでかいゲーム屋ならWebの募集要項の種類眺めるだけでも雰囲気つかめるんじゃないの>>572


576:デフォルトの名無しさん
08/01/19 16:55:18
規模によるとしか言えない。1週間も3Dソフト触ればまずまずの絵は出てくるようになるよ。
ただゲームに適したポリーを吐くのは難しいときもある。

577:デフォルトの名無しさん
08/01/19 21:25:19
GLUTによる「手抜き」OpenGL入門読んだら、次に読むべきお勧めの本は何かありますか?
赤本より簡単なやつで。

578:デフォルトの名無しさん
08/01/19 21:30:35
>>577
続きという事なら、これはどうかな。俺もまだ読んでないけど。

GLUTによるOpenGL入門2 テクスチャマッピング
URLリンク(www.kohgakusha.co.jp)

579:デフォルトの名無しさん
08/01/19 21:30:54
とりあえず自分で何か作ってみる、のがいいんじゃないかなぁ
太陽系の模型とか、三次元テトリスとか

580:デフォルトの名無しさん
08/01/19 23:55:33
赤本は分厚いだけで難しくはないだろ。

581:デフォルトの名無しさん
08/01/20 17:37:44
OpenGLで3次元で人体を描画するとしたら
各関節を座標で与えて表示することは可能でしょうか?
現在は例として肩から肘まではxyz座標でそれぞれの軸に何度回転しているかで
描画しているのですが…
よろしくお願いします

582:デフォルトの名無しさん
08/01/20 17:49:17
座標から角度を計算すればいいだろ

583:デフォルトの名無しさん
08/01/22 00:17:40
すいません、質問させて下さい。
今、複数のポリゴンに動画を貼り付けるようなことをやっているのですが、
どうしても8fps位しか出ず、複数のポリゴンと複数の動画を描画すると、0.5fps位になって
しまいます。なにか高速化のヒントだけでもいただけるとうれしいのですが…

テスト時の動画は400*400、処理は大体以下のような感じです。

1、カメラの設定
2、変換座標の設定
3、テクスチャの生成(1つの名前をglTexSubImage2Dで使い回し)
4、ポリゴン描画
1に戻る

584:デフォルトの名無しさん
08/01/22 00:25:19
どこが遅いか調べればいいじゃないか。
エスパーは出張中だ。

585:デフォルトの名無しさん
08/01/22 08:06:43
>>583
動画のデコードが遅いだけじゃないだろうな
動画でなく同じサイズの静止画を毎フレームglTexSubImageで設定してみて
遅いかどうかを確認してみなよ

586:デフォルトの名無しさん
08/01/22 17:01:41
>>585
試したところ、無変形では静止画の方が速くなりました。
ところが、回転や移動をすると、なぜか静止画の方はフレームレートが
半分ぐらいにまで落ちたのに対し、動画の方は変わりませんでした。
これはデコード以外の別なところにもネックがあると考えた方がいいんでしょうか?

587:デフォルトの名無しさん
08/01/22 18:05:51
>>ところが、回転や移動をすると、なぜか静止画の方はフレームレートが
>>半分ぐらいにまで落ちた

これはおかしいな。考えにくい。
プログラムうp。

588:デフォルトの名無しさん
08/01/22 18:31:42
>>587
ちょっといろいろ処理がからみついていて長くなっているのでうpは出来ませんが、モデルビューや
プロジェクションの設定は動画と静止画の時は全く同じ処理で動いてます。
違うとしたら、動画から静止画を切り出すか、静止画をコピーするかの違いしかないのですが、
それは無変形の時に速度差が出てるので原因になってるわけ無いですし…
動画と静止画のサイズは一緒で、800*800ですが、サイズによっては高速に
動くようです。400*400では問題ありませんでした。

589:デフォルトの名無しさん
08/01/22 18:36:51
>> 587
と、今もう一度試したところ、どうやらゴミがついていたようで、それを取ったら
ちゃんと問題なく速度を維持してました。
お騒がせしてすいません orz

590:デフォルトの名無しさん
08/01/22 18:36:55
毎回すべてのデータを送りなおしているとか言って見る。

591:デフォルトの名無しさん
08/01/22 18:37:30
>>589
>>587
安価… orz

592:デフォルトの名無しさん
08/01/22 22:29:40
JOGLとJMFつかってJOGLに動画描画させたことあるが動画のデコードと動画の1フレーム毎にテクスチャオブジェクトに変換する処理に時間食ってるだけだったなぁ。

593:デフォルトの名無しさん
08/01/23 08:22:39
テクスチャデータ設定が遅いのはPixelBufferObjectでなんとかならんかな
PBO2つ作って現在デコードしてるフレームの書き込み用と
テクスチャ設定用でダブルバッファリングするのが速い気がする

594:デフォルトの名無しさん
08/01/23 22:13:25
>> 542

かめれす... 「OpenGLの神髄」買いました.
分かり易くってよいです.コメント参考になりました.ありがとです.

595:デフォルトの名無しさん
08/01/24 15:46:41
NicoAE開発頑張ってね

596:デフォルトの名無しさん
08/01/24 16:51:32
今更だけど個人でコツコツと何年もかけてソフト作るなら
基本的にインターフェース仕様が変わらないGLは相性いいね


GLそのものが衰退しないという前提はあるけど

597:デフォルトの名無しさん
08/01/24 18:18:40
NicoAEの人かっ!!!がんばれー

598:デフォルトの名無しさん
08/01/24 21:51:26
しかしOpenGL 3.0ではガラッと変わるようなことをどこかで見たような……

599:デフォルトの名無しさん
08/01/24 22:04:54
3.0がでて今までのが動かなくなるわけじゃないんならいいんじゃね

600:デフォルトの名無しさん
08/01/25 02:08:55
今までのはそのまま動く予定みたいだな
3.0は従来とは別のコンテキストを作るようになる
両方使ってもコンテキストが別なんで全く別に処理されるって寸法らしい
あと3.0の描画を2.1以前のテクスチャとして使える拡張も用意される…かもしれない

601:デフォルトの名無しさん
08/01/26 16:46:14
初心者です。
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}

void init(void)
{
glClearColor(0.0, 0.0, 1.0, 1.0);
}

int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
init();
なのですが、
init関数で塗りつぶす色を指定しているのに、
その前のglutDisplayFunc(display)で描画をしています。
何故init関数で色を指定する前にglutDisplayFunc(display)を実行しても
ウィンドウが塗りつぶされるのでしょうか?
逆なのではないのでしょうか?

602:デフォルトの名無しさん
08/01/26 17:21:35
glutDisplayFuncはコールバック関数を「登録」する関数です。

603:デフォルトの名無しさん
08/01/26 17:22:13
initよりdisplayが後に実行されてるからだよ。


604:デフォルトの名無しさん
08/01/26 17:23:53
glutなんとかかんとかFunc は、コールバック関数を登録しているだけだから。

実際に登録した関数が実行されるのは、例えば
glutDisplayFunc なら画面の再描画時、
glutMouseFunc ならマウスがクリックされたとき等など。

どの命令でどのタイミングのコールバック関数を登録するかはマニュアルを参照すること。

605:デフォルトの名無しさん
08/01/26 17:23:55
なんですと?
登録する関数?
じゃあ、glutMainLoopが描画してるんですか?

606:デフォルトの名無しさん
08/01/26 17:26:39
MainLoopは名前のとおり中でぐるぐる回ってる。
そのなかでイベントに応じてコールバック関数を呼び出してる。


607:デフォルトの名無しさん
08/01/26 19:00:56
OpenGLというよりコールバック関数の勉強した方がいいんじゃないか?
いまどき、コールバック関数ないのはHSPくらいだぞ。

608:デフォルトの名無しさん
08/01/26 21:39:54
んなこたーない
大量にある

609:デフォルトの名無しさん
08/01/27 02:39:21
>表示図形のサイズをビューポートの大きさにかかわらず一定にするには,
>glOrtho() で指定するの領域の大きさをビューポートの大きさに比例するように設定します.
>例えばワールド座標系の座標軸が上記と同様に l, r, t, b, n, f で与えられており,
>もともとのウィンドウの大きさが W×H, リサイズ後のウィンドウの大きさが w×h なら,
>glOrtho(l * w / W, r * w / W, b * h / H, t * h / H, n, f) とします.
>上のプログラムでは, ワールド座標系の2点 (-1, -1), (1, 1) を対角線とする矩形領域を
>200×200 の大きさのウィンドウに表示した時の表示内容の大きさが常に保たれるよう設定しています.
ここの意味が良くわかりません。
例えばW×H 200×200 (-1,-1) (1,1)をw×h 400×400にすると(-2,-2) (2,2)となって、
ウィンドウのリサイズに比例して表示画像も大きくなるような気がするのですが...


610:デフォルトの名無しさん
08/01/27 03:45:37
>>609
縮尺を一定にしたいという話なんだからそれで正しいだろ

611:デフォルトの名無しさん
08/01/27 08:15:08
GLUTを使って3Dアニメーションを作っているのですが、
現在表示している画面を画像ファイルに吐いてくれるような関数を探してます。
ありましたらぜひ教えてください。

612:609
08/01/27 09:37:39
>>610
やっぱり良くわからないです?
URLリンク(upload.fam.cx)
のようになって、表示される画像の大きさが
ウィンドウをリサイズしたら比例しして大きくなりそうな気がするんですが。

613:デフォルトの名無しさん
08/01/27 10:00:19
>>612
考えてないでやってみるとわかる。

614:609
08/01/27 10:43:14
>>613
すいません。
考えないでやってみて不思議だから考えてるんですけれど...
そんな公式暗記しろみたいな事いわれても


615:デフォルトの名無しさん
08/01/27 11:05:26
>表示図形のサイズをビューポートの大きさにかかわらず一定にする
この文章をどう理解するかという問題のような気がする

616:デフォルトの名無しさん
08/01/27 11:10:35
>>612
おまえが作ったその図を見る限り
「表示図形のサイズをビューポートの大きさにかかわらず一定にする」
がめでたく実現されているようだが、いったい何が問題なんだ?

617:609
08/01/27 11:41:21
>>615,616
すいません。自分の説明の仕方が悪かったみたいです。
URLリンク(upload.fam.cx)
の赤い丸のような状態になるんじゃないかなと思ってるんです。
だって、
「表示図形のサイズをビューポートの大きさにかかわらず一定にする」
というのは、ビューポートに表示される図形の割合がリサイズしても変わらない
という意味ではないのでしょうか?

618:デフォルトの名無しさん
08/01/27 12:45:02
>>617
どこに「割合」なんて書いてあるんだよ。
サイズと言ったらサイズだろ。

619:609
08/01/27 13:00:54
わかった!
今やっと分かったっす。
自分の日本語読解能力な無かったんです。
ありがとうございました。

620:デフォルトの名無しさん
08/01/27 13:55:06
>>619
わかったことをわかりやすく図に示してくれ
俺も不思議になってしまった

621:609
08/01/27 14:27:22
>>620
つまり、そのまんまですよ。
自分の日本語読解能力が低かったんです。
円の大きさがウィンドウリサイズしたときに、
リサイズしたウィンドウの大きさに合わせて大きくなったり小さくなったりする場合が、
(URLリンク(upload.fam.cx)の赤い円の状態)
glOrtho(-w / w , w /w , -h /h , h /h , -1.0, 1.0);
で常に表示される割合が一定で投影される範囲が(-1, -1), (1, 1)に固定。
ウィンドウの大きさにを変えても円の大きさが固定の場合が場合が、
(URLリンク(upload.fam.cx)の黒い円の状態)
glOrtho(l * w / W, r * w / W, b * h / H, t * h / H, -1.0, 1.0);
でウィンドウをリサイズすると、合わせて(-2,-2)(2,2)...と投影される範囲が大きくなるから
逆に考えて円の大きさは変わらない。
みたいな理解で良いんでしょうか?

622:デフォルトの名無しさん
08/01/29 15:37:35
C言語でOpenGLをつかって物体の動く軌跡を描くプログラムをつくるにあたって2つ質問があります。

一つは、
OpenGLでアニメーションをするときにダブルバッファをいれても
アニメーションのコマ毎に物体のオブジェクトが
制止している状態であっても点滅している風になってしまう場合があるのですが
どのように解消すればよいのか。

もう一つは、
軌跡を描くということで再描画の際にも軌跡を表現するオブジェクトは
そのまま残しておかなければならないと思うのですが
この処理はどのようにコーディングすればよいのか。

この2点なのですが、ご教授のほどよろしくお願い致します。

623:デフォルトの名無しさん
08/01/29 17:45:27
>>622
glSwapBuffer()のタイミング。
windowsで使用しているなら、windowsでの再描画系のチェック。

軌跡に関してはopenGL関係ねえ。
適当に軌跡を保持しておけばいいんじゃない?

624:デフォルトの名無しさん
08/01/29 21:54:33
バッファをクリアしないだけで勝手に軌跡にならないか?

625:デフォルトの名無しさん
08/01/29 22:00:15
Zバッファなしで、奥から描画するように上書きすればそれっぽくなるかもね。

626:デフォルトの名無しさん
08/02/02 15:22:29
glBegin(GL_POINTS)を使い、glPointSize(size)で指定したsize*sizeの
四角形を描画したいのですが、四角形にならず円形しか描画されません。
GL_POINT_SMOOTHになってるのかと思い、Disableにしてみましたが
結果は変わりませんでした。

glDisable(GL_POINT_SMOOTH);
glPointSize(10);
glBegin(GL_POINTS);
glVertex2f(x, y);
glEnd();

GL_POINTSで四角形のpixelを描画するにはどうすれば良いのでしょうか?
ご教授を宜しくお願いします。

627:デフォルトの名無しさん
08/02/02 16:09:14
GL_QUADSを使えば済むと思うけど。

どうしてもというなら、円が重なるようにたくさん打てば良いんじゃないか。


628:626
08/02/02 16:41:23
>>585
確かにGL_QUADSでも良いのですが、GL_POINTSの方がポリゴンを描画するよりも高速だったので
GL_POINTSで四角形の点を表示したかったのです。(数万個のパーティクルを扱いたいので)
とりあえずGL_QUADSで処理する事にします。どうもありがとうございました。

昔のグラボで試したところ四角形で点が表示されました。
うーん、ハードウェアの問題なんでしょうか…?ELSA GLADIAC 786GTを使用してます。

629:デフォルトの名無しさん
08/02/02 16:45:26
赤本に描画を高速化するコツが載ってるよ。

630:629
08/02/02 16:52:15
ごめん違った。
赤本じゃなくて、OpenGLの真髄でした。最近出た本です。

631:デフォルトの名無しさん
08/02/04 02:25:38
GLdouble color[7]
for (i=0; i<7; i++)
color[i] = (GLdouble)i/6.0;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
for(i = 0 ; i < 7 ; i ++){
for(j = 0 ; j < 7 ; j ++){
glColor3d(color[i], color[i], color[i]);
glVertex2f(-1.0+i*0.3, -1.0+j*0.3);
glColor3d(1.0, color[i], 0.0);
glVertex2f(-0.8+i*0.3, -1.0+j*0.3);
glColor3d(0.0, 1.0, color[j]);
glVertex2f(-0.8+i*0.3, -0.8+j*0.3);
glColor3d(color[i], 0.0, 1.0);
glVertex2f(-1.0+i*0.3 , -0.8+j*0.3);
}
}
glEnd();
みたいなコードって、
forの中身を
glColor3d(color[i], 0.0, 1.0);
glVertex2f(-1.0+i*0.3 , -0.8+j*0.3);
glColor3d(color[i], color[i], color[i]);
glVertex2f(-1.0+i*0.3, -1.0+j*0.3);
glColor3d(1.0, color[i], 0.0);
glVertex2f(-0.8+i*0.3, -1.0+j*0.3);
glColor3d(0.0, 1.0, color[j]);
glVertex2f(-0.8+i*0.3, -0.8+j*0.3);
と順番をいろいろ入れ替えただけで
描画される形や色が変わるんですけど、同じ場所に同じ色で指定しているのに
なんで順番を変えただけでグレデーションが変わってしまうのでしょうか?


632:デフォルトの名無しさん
08/02/04 02:44:43
7 X 7 のループにしないと再現しないのか?
聞きたいことを再現する最小限のコードを載せてくれよ。
だいたい、グレデーションってどこのよ?

633:デフォルトの名無しさん
08/02/04 11:21:25
>>631
頂点の順序は重要
その順番に繋いで形にするんだから

634:デフォルトの名無しさん
08/02/04 11:45:54
>>631は確かに論点がわかりにくいコードだが、要するに

glColor3d (1)
glVertex2f (1)
glColor3d (2)
glVertex2f (2)
glColor3d (3)
glVertex2f (3)
glColor3d (4)
glVertex2f (4)

の順序を

glColor3d (4)
glVertex2f (4)
glColor3d (1)
glVertex2f (1)
glColor3d (2)
glVertex2f (2)
glColor3d (3)
glVertex2f (3)

に変えたと言ってるわけで、
GL_QUADSの定義からして特に問題はないように見えるんだよね・・・。

635:デフォルトの名無しさん
08/02/04 11:59:08
「順番をいろいろ入れ替えた」 って言ってるから、
やっぱりでたらめにいろいろ入れ替えてるんじゃないのかなぁ

あとは、四角形を内部で三角形2枚に分割して処理してたりすると、
形や色の具合が変わることがあるかもしんない

636:デフォルトの名無しさん
08/02/04 12:08:33
ああ、確かにグーローシェーディングの補間結果は変わってくるな。

637:631
08/02/04 12:25:38
>>632
すいません。
URLリンク(www2.uploda.org)
に再現画像をのせました。
>>633
予測する方法は無いのでしょうか?
>>634
自分の言いたい事を分かりやすくいって頂いて有り難うございます。

えっと小さな四角形をグラデーションでたくさん表示したいなと思ったんですが、
プログラムを書いてる最中に「このグラデーションで表示したい」と思って
プログラムを書いているのに思っている物と違う物が表示されてしまって、
順番をかえると思った物が表示される事に気づきました。
色と点は同じ指定しているのに、順番を変えるだけで表示される画像が
かわってしまうので、最終的に表示される画像がどのようなグラデーションになるか、
法則?(色の補完の法則?)みたいなものは無いのでしょうか?

638:デフォルトの名無しさん
08/02/04 12:35:08
GL_QUADSやめてGL_TRIANGLESで描くようにすればいいかと

639:デフォルトの名無しさん
08/02/04 15:57:50
glVertexいじらずに色の順番だけ変えればいいじゃん

640:デフォルトの名無しさん
08/02/04 16:33:41
ポイントスプライトとかじゃだめなの?

641:デフォルトの名無しさん
08/02/04 20:06:26
どうみても学習始めたばかりの人にそれはない

642:デフォルトの名無しさん
08/02/04 20:42:08
床井先生のとこによさげなサンプルがあるよ。
OpenGL point sprite でググったら一番上にでてきた。


643:デフォルトの名無しさん
08/02/04 20:42:46
ageちまった。スマン。

644:デフォルトの名無しさん
08/02/04 22:22:33
GLUTでワールド座標系とデバイス座標系とマウスの座標の質問です。
「デバイス座標系とワールド座標系ではglutMouseFuncに渡されるマウスの座標の上下が反転している 」
というのがいまいち理解できません。
glutMouseFunc(mouse);
void mouse(int button, int state, int x, int y){
static int x0, y0;

switch(button){
case GLUT_LEFT_BUTTON:
if(state == GLUT_UP){
glColor3d(0,0,0);
glBegin(GL_LINES);
glVertex2i(x0,y0);
glVertex2i(x,y);
glEnd();
glFlush();
}else{
x0 = x;
y0 = y;
}
   break;
printf("(%d %d)¥n",x,y);
というプログラムで、
glOrtho(-0.5,w - 0.5,w-0.5,-0.5,-1,1);
とやって上下を逆転させてやると正しく線が引ける事
glOrtho(-0.5,w - 0.5,-0.5,w-0.5,-1,1);
とやると引かれる線の状態が鏡のように反転する事を確認しました。
でもprintf("(%d %d)¥n",x,y);で渡されるxとyは、glOrthoで上下反転してもしなくても、左上が(0,0)で右下は(w,h)であるようです。
それに上下反転させると絵も下のように逆転しそうな気がするのですが...
URLリンク(tune.ache-bang.com)
上のように絵は逆転しないのでしょうか?なぜ上下が反転しているのに、printf("(%d %d)¥n",x,y)で渡される値は正しいのでしょうか?


645:デフォルトの名無しさん
08/02/04 22:24:55
対照物を行ったり来たりさせる代表的なアルゴリズムを教えてくれ!
ifとかつかっても俺の頭では行きっぱなししかできん!

646:デフォルトの名無しさん
08/02/04 22:33:43
sin

647:644
08/02/04 22:38:35
すいません。絵は上下逆転しますね。
でも、マウスをクリックして渡される座標は左上が(0,0)で右下が(w,h)で良くわかりません。
それとプロの方々はこのようにワールド座標系とデバイス座標系が逆転する時は、
わざわざ逆転したとき用にプログラムを書いているのでしょうか?

648:644
08/02/05 01:39:33
分かったぁ。
デバイス座標系では左下が(0,0)なのに、
ワールド座標系では左上が(0,0)になるから、書いた線が鏡に書いたように逆転するんだ!
下の絵のような感じで。
URLリンク(www2.uploda.org)
絵に描けばすぐ分かったのに、なんでグダグダ頭の中で考えてたんだ、自分の馬鹿。

649:デフォルトの名無しさん
08/02/05 04:49:27
よくわかんないけど、自演乙

650:デフォルトの名無しさん
08/02/05 05:16:26
OPENGLでつくったアニメーションをスクリーンセイバーにできますか?
WindowsでVisual C++でつくりました。

651:デフォルトの名無しさん
08/02/05 05:52:05
もちろんできますよ!

652:デフォルトの名無しさん
08/02/05 07:01:29
.exe を .scr にする。
ほらできた!

653:デフォルトの名無しさん
08/02/05 16:35:17
最近勉強始めたんですけど、
OpenGLってHCLの道具として役に立つんですか?


654:デフォルトの名無しさん
08/02/05 17:33:34
塩酸?

655:デフォルトの名無しさん
08/02/05 17:38:45
>>652
ありがとう!できた!でもめちゃくちゃ重くなった!

656:デフォルトの名無しさん
08/02/05 18:31:26
スクリーンセーバーは正しい作り方があるからggr

657:デフォルトの名無しさん
08/02/05 22:37:18
>>653
HCLがなんだかさっぱりわからんけど
OpenGLは3D*描画用*のAPIだ
それが役に立つなら役に立つんじゃね?

658:デフォルトの名無しさん
08/02/06 11:29:26
>657
HCLじゃなくてHCIでした。単なる読み間違いでした。

659:デフォルトの名無しさん
08/02/06 11:50:12
>>658
HCIがなんだかさっぱりわからんけど
OpenGLは3D*描画用*のAPIだ
それが役に立つなら役に立つんじゃね?

660:デフォルトの名無しさん
08/02/06 15:17:41
ワロタ

俺もHCIがよくわからんのでググッタカス
だがわからん

661:デフォルトの名無しさん
08/02/07 22:55:12
Human Computer Interaction とか Interface とかじゃないかなぁとまじれす。そして結論は >659

662:デフォルトの名無しさん
08/02/09 06:34:16
glEnable(GL_COLOR_LOGIC_OP);
glLogicOp(GL_INVERT);
glBegin(GL_LINES);
線を引く
glend();
glDisable(GL_LOGIC_OP);
というプログラムなのですが、
GL_COLOR_LOGIC_OPは「図形の描画の際に,ウィンドウに既に描かれている色と,
これから描こうとする色の間で論理演算を行うことができるようにします」
という解説が有りました。
「GL_INVERT はウィンドウに描かれている内容の, これから描こうとする図形の領域を反転します」
とあります。
つまりコレは、以前引いてある同じ色の線の色を反転して、新しい線をまた反転した色で引くプログラムという
理解で良いのでしょうか?
「ウィンドウに描かれている内容の, これから描こうとする図形の領域を反転します」の意味がいまいち理解できないんです。

663:デフォルトの名無しさん
08/02/09 08:31:55
白地に青で書くと黄色になる。

664:デフォルトの名無しさん
08/02/09 10:51:47
>>662
黒が白に、白が黒になるのが反転
GL_INVERTは「これから描こうとする色」は使われない
「すでに描かれている色」を反転するのみ

>以前引いてある同じ色の線の色を反転して

以前に線を引いてある必要はない
たとえば真っ白のところにGL_INVERTで線を引くと黒い線になる
真っ黒のところにGL_INVERTで線を引くと白い線になる

>>663
それはGL_XORだろう

665:デフォルトの名無しさん
08/02/10 16:33:56
>>662
ちがうよ

666:デフォルトの名無しさん
08/02/15 02:21:24
人間の顔の表面の形状を表した座標点のデータがあるのですが、これをポリゴンを使ってサーフェスモデルみたいにしたいのですが、これってどうやったらいいのでしょうか?

667:デフォルトの名無しさん
08/02/15 03:03:19
手作業でがんがれ!

668:デフォルトの名無しさん
08/02/15 03:17:11
点群をトライアングルメッシュに直してくれるソフトとかあるよ
超高いけど

669:デフォルトの名無しさん
08/02/15 03:19:02
>>668
お金がないので、フリーか、もしくはプログラミングの方法があればお願いします。

670:デフォルトの名無しさん
08/02/15 08:03:56
Delaunay法使ったら?
vtkとかMayaViに逃げるとか。

671:デフォルトの名無しさん
08/02/15 09:52:25
>>670
ありがとうございます!
試してみます。

672:デフォルトの名無しさん
08/02/15 14:06:08
ドロネー図を書く場合って、どんな関数を使えばいいですか?

673:デフォルトの名無しさん
08/02/15 23:30:35
>>672
vtkならサンプルがある。
フルスクラッチで書く技量が無いなら取り敢えず他人のソースを参考にしろ

674:デフォルトの名無しさん
08/02/23 11:48:59
投影と射影って同じ意味ですか?
本を読んで勉強しているのですが、
「射影変換には、射影変換には透視射影と平行射影が~」
または、
「投影変換には大きくわけて、透視投影と平行投影が~」
みたいに、どう見ても同じ無いようなのに、ころころ文によって
射影と投影が使われていてとても疑問なんです。

675:デフォルトの名無しさん
08/02/23 11:55:21
一緒
どっちも projection の訳語

676:デフォルトの名無しさん
08/02/23 13:21:48
トンです。

677:デフォルトの名無しさん
08/02/24 23:44:52
VisualStudio2005でglpngを導入してテクスチャーをやりたいのですが
glpng.hを設定しただけでは上手くコンパイルが通りませんでした。
調べたところd.hatena.ne.jp/minami_SC/20070425/1177462910
のページが出てきて
この通りにやってみたのですが
ここでもコンパイルが通らずエラーを吹いてしまいます。

VisualStudio2005でのglpngを導入方法はできないのでしょうか?
できるのでしたら方法をご教授ください。

678:デフォルトの名無しさん
08/02/25 01:34:10
         |:;:;:;:;:;:;:;:;:;:;:;:;:;:i;:;:;:;:;:;:;:;:;:;:;:;:;|
           |;:;:_:;:_:;:_:;:_;:;_:;:l:;_;:_:;:_:;:_:;:_;:_;|
        |______|_____|
        | 三|  _     _   |三 !
        | 三|  三シ   ヾ三  |三 |
        | 三′  .._     _,,..  i三 |
        ト、ニ| <でiンヽ  ;'i"ィでiン |三.|   エラー内容も貼らずに質問とな!!
        ', iヽ!  、 ‐' /  !、 ーシ |シ,イ
         i,ヽリ    ,' :  !.     |f ノ
         ヾ!    i ,、 ,..、ヽ   lノ
          |      _ _    イ l
            l    ,ィチ‐-‐ヽ  i /、
             ゙i、   ゝ、二フ′ ノ/'"\
              | \  ー一 / /   _,ン'゙\
          ,ィ|、  \     /_,、-'" _,.-''´ `丶、__
       _, イ  | ヽ_ 二=''" _,. -''´  """""´´  ``ー

679:デフォルトの名無しさん
08/02/25 01:54:29
>>677
d.hatena.ne.jp/minami_SC/20070425/1177462910
にある方法は使わずに、VS2005で普通に試してみた。
libc.lib のエラーがでたけど、無視するようにしたら、うまくいったよ。
それ以外のエラーだったら知らん。


680:デフォルトの名無しさん
08/02/25 11:11:49
すみません、エラー内容はこれです。

error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。 LIBCMT.lib

無視する方法とかあるんですか?

681:677.688
08/02/25 11:55:04
自己解決しました

最初の設定が悪かったみたいですorz


682:デフォルトの名無しさん
08/03/03 20:11:07

梅宮辰夫の歌に、シンボルロックいうのがあってな

シンボル
シンボル
外部のシンボルぅぅ~

って

683:デフォルトの名無しさん
08/03/03 20:58:40
なんの誤爆だwww
リンケージの話か??

しかもぐぐったら歌詞違うじゃん

684:デフォルトの名無しさん
08/03/03 21:00:09
ってうあおおぉ勘違いしてんの俺じゃんorz orz orz
くだすれとごっちゃになってたorz

685:デフォルトの名無しさん
08/05/16 11:59:47
OpenGL 3.0


686:デフォルトの名無しさん
08/05/16 14:31:32
出たのかと思ってびっくりしたじゃないか
>Don’t miss the great updates on OpenGL3 at the SIGGRAPH BOF!
あと三ヶ月程待て

687:デフォルトの名無しさん
08/05/16 17:13:21
すみません。話題がないので悪戯してみました。

688:デフォルトの名無しさん
08/05/16 19:01:00
>>687
ショボーン

689:デフォルトの名無しさん
08/05/26 22:55:40
> OpenGL BOF August 13th 6pm - 8pm Wilshire Grand Hotel - Wilshire Room
俺はSIGGRAPH行けないので後は頼んだ…!

690:デフォルトの名無しさん
08/05/28 00:52:45
キューブマップもテクスチャ座標生成も無いOpenGL ES 1.1で
環境マップっぽいことをする方法は……無いよな……

691:デフォルトの名無しさん
08/05/28 10:18:56
つGL_OES_texture_cube_map

692:デフォルトの名無しさん
08/05/28 13:56:26
環境マップするだけなら球状マップかなにかにして
テクスチャ座標だけ自前で毎フレーム計算して渡してやればいいな

しかしES1.1な環境のCPUでそれをやるとなると……

693:デフォルトの名無しさん
08/06/09 19:28:49
OpenGLを使うんじゃなくてmesaみたいにソフトウェアで実装したいのですが、
参考になるソースを紹介していただけないでしょうか?
なるべくシンプルで簡単なのがいいです。
(mesaは大きすぎる)


694:デフォルトの名無しさん
08/06/09 19:53:24
OpenGL関係ねー!!

スキャンライン、レンダリングとかでググってみてください
レイトレで良ければMiniLightとか
URLリンク(www.hxa7241.org)

695:デフォルトの名無しさん
08/06/10 00:04:29
OpenGLやDirectXのようなAPIが出る前に書かれた
3DCGの解説書はだいたい>>693みたいのばっかりだ。

696:デフォルトの名無しさん
08/06/12 19:04:15
垂直同期待ってくれないので、ネットで垂直同期待つ関数をググったら
wglSwapIntervalEXT
という関数があるのはわかりましたが、
それを利用する方法がわかりません
#include <gl/wgl.h>
と書いても存在しないといわれます。
どうすればいいでしょうか?

697:696
08/06/12 19:14:41
事故解決しました

698:697
08/06/12 19:23:12
嘘です。
glewInit();でエラーが出ました。

699:デフォルトの名無しさん
08/06/12 19:42:31
エラーメッセージは?

700:デフォルトの名無しさん
08/06/12 20:31:03
glewInitはウィンドウ作ってから呼ぶんだぜ
glewInit後wglSwapIntervalEXTに1を渡すと同期あり、0を渡すと同期無しになる
しかしデフォルトは1のはずなんでドライバの設定いじってない限りは
同期取るはずなんだが、設定確認した方が良くないか?

701:デフォルトの名無しさん
08/06/12 20:51:49
この間Ubuntuで初めてOpenGLアプリ書いてみたら
VSyncがオフになっててちょっとびっくり

拡張サポートはGLEEの方が個人的に好きです

702:698
08/06/13 14:09:21
>>699
1です。

>>700
ウィンドウ作って呼ぶと行けました。
ありがとうございます。

>同期
glutInitDisplayMode を GLUT_SINGLE で設定してたので非同期でした。
GLUT_DOUBLE で同期しました。のでwglSwapIntervalEXTは、必要なくなりました><

まあ、でもglewは、今後お世話になりそうなので良かったです。
ありがとうございます。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch