OpenGLスレ Part14at TECH
OpenGLスレ Part14 - 暇つぶし2ch613:名無しさん@そうだ選挙に行こう
10/07/10 12:28:21
glScaledの直後に入れた挙動です
gluLookAtなしだと、投影出来ています。
直行投影にみえます。
gluLookAtを入れると、オブジェクト全体が単色で染まってしまいます。
実際のカメラの動画をテクスチャしているのですが、実際のカメラを向ける方向によって色や明度は変わりますが、像は見られずいずれもオブジェクト全体が単色で埋められてしまいます。
gluLookAtの第3引数までをキーボードで調整しても変わりません。

614:名無しさん@そうだ選挙に行こう
10/07/10 18:54:10
最初は投影マップのサンプルを調べて丸ごとコピペとかしてみれば
projective texture opengl example
あたりでググるとopenGL.orgやsgiの97年ごろのデモがヒットするみたいよ

でも、もうそういうのもシェーダーでやる時代だと思うけど

615:名無しさん@そうだ選挙に行こう
10/07/11 12:25:29
症状とソースから原因は分かりませんか(´・ω・`)

616:名無しさん@そうだ選挙に行こう
10/07/11 13:56:06
わからないねぇ
色が変わってる=テクスチャの1部だけが引き伸ばされて投影されてる
だろうから多分お前のパラメーターミス
どんなモデルに投影してるのかもわからないし答えようがない
デバックして欲しいっていうなら全ソース出せよ

617:デフォルトの名無しさん
10/07/12 00:25:31
わかった 上げてみる
URLリンク(www.dotup.org)

動かすにはUSBカメラとOpenCVが必要
投影するモデルは右クリックで変えれる

618:デフォルトの名無しさん
10/07/12 03:00:54
keyboardFuncで変数の値を変えてもreshapeFuncは呼ばれないような気がするんだけど
変数操作した後ちょっとウィンドウサイズ変えたら出てきたりして


619:デフォルトの名無しさん
10/07/12 14:37:19
テクスチャの投影方向として使うなら、テクスチャ行列にgluLookAtを使うべきだと思うけど。
うまくいかなかったのは、テクスチャ座標が (0, 1) 範囲なのを忘れている気がする。

620:デフォルトの名無しさん
10/07/13 00:28:36
>>618
本当にその通りだ
ウィンドウサイズ変えたら反映された
じゃあ呼び出され続けるupdateTexture関数内に
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
gluLookAt( right_t - left_t , up_t - down_t, in_t - out_t, 0, 0, 0, 0, 0, 1 );
glMatrixMode(GL_MODELVIEW);
入れたら投影の方向も変えれるようになったよ

ところでこのプログラムすごい重いんだけど、悪いコードに気がついてたら教えてください

621:デフォルトの名無しさん
10/07/13 00:32:10
>>619
>>609のglScaledの後ってことだよね
最初はそれにしてたけど、うまくいかないから試行錯誤してたときのを貼ってしまった
すまない
その時の挙動は>>613

622:デフォルトの名無しさん
10/07/13 20:29:36
glutで文字出したいのですが、画面の隅に出したいのです。
そのためにはカレントラスタ位置を画面隅に設定すればいい。

ということで、画面隅にあたる座標を求めたいのですが、
これは視錐台の頂点の座標を求める、
ということとほぼ同じですよね。

どういう手順で求めたらいいでしょう?
glGetでGL_PROJECTION_MATRIXを取得して
連立方程式を解く感じでやればいいんでしょうか。
てゆうか、もっと簡単な方法はないでしょうか、、、

623:デフォルトの名無しさん
10/07/13 22:04:13
課題の季節か

>>620
デバッグビルドしてんじゃね。
コードはtmp_imgのあたりとか釣りかなと思うほど無駄みたいだけど、どうなのか。
他もいろいろありそうだがopenCVはスレ違いかな

>>622
MATRIXの影響を受けたくないならglPushMatrixしてglLoadIdentityすればいいが、
画面の隅に出したいだけならglRasterPos*の代わりにglWindowPos*を使えば簡単

624:デフォルトの名無しさん
10/07/14 17:21:23
教えていただきたいのですが、1枚のテクスチャに複数の画像データを
載せて(?)、描画することは可能でしょうか?

例えば、上下2分割の画像があるとして、テクスチャに先に上部の画像を
載せて、次いで下部の画像を載せ、最終的にDrawするようなイメージです。

2枚のテクスチャを利用すれば、いいのでしょうが、1枚で済むので
あれば、1枚で処理したく思いまして・・・。

glTexImage2D()と、glTexSubImage2D()をうまく使えばできるので
しょうか・・・。

625:デフォルトの名無しさん
10/07/14 19:04:42
日本語でお願いします

626:デフォルトの名無しさん
10/07/14 19:07:13
>>624
無駄な努力するより正しい手順で単純な方法を使うべきだぞ


627:デフォルトの名無しさん
10/07/14 20:12:10
>>624
glTexSubImage2D()をうまく使えばできるよ

628:デフォルトの名無しさん
10/07/14 21:05:53
GLSLに関する質問です。
GLSLで配列を宣言する場合、組み込み型の場合は

float array[3] = float[3](1.0, 2.0, 3.0);

のように書くと初期化出来ますが、構造体の場合、

TestStruct array[3] = TestStruct[3](TestStruct(...), ...);

としてもcast not allowedとエラーが出てしまいます。
構造体配列では、上のような初期化の仕方は出来ないのでしょうか?

629:デフォルトの名無しさん
10/07/14 22:03:49
そんな初期化の仕方のできる言語がどこにあるんだ?

630:デフォルトの名無しさん
10/07/15 03:23:57
>>623
遅レスだけどtmp_imgはモルフォロジー演算のブラックハットとかを試したときの消し忘れ
スレチスマソ

631:デフォルトの名無しさん
10/07/15 06:00:38
>>623
でけた~!
ありがとうございました。
ようやっとprintf文によるパラメータ表示から開放されます。
nyaosはエスケープシーケンス対応だってゆうし、
それで妥協するか、と考え始めていたところでした。

632:622
10/07/15 06:21:06
>>623
でけた~!
ありがとうございました。
ようやっとprintf文によるパラメータ表示から開放されます。
nyaosはエスケープシーケンス対応だってゆうし、
それで妥協するか、と考え始めていたところでした。


633:デフォルトの名無しさん
10/07/15 06:29:11
だいじなことなので(ry

634:デフォルトの名無しさん
10/07/15 08:16:10
>>629
やっぱり出来ないですか orz
構造体は

TestStruct test = TestStruct(...);

で初期化できるので、これ使えば構造体配列の各要素も初期化できるのかなと思ったのですが…
地道にmainで初期化することにします。
ありがとうございました。

635:622
10/07/15 08:24:18
すみましぇんX(

636:デフォルトの名無しさん
10/07/16 22:39:38
OSMesaを使おうと思うと、segmentation faultが出てしまいます。
例えば、
URLリンク(www.koders.com)
のサンプルコードだと290行目、

#include <stdio.h>
#include "GL/osmesa.h"

int main()
{
GLubyte* buf = new GLubyte[4];
OSMesaContext ctx = OSMesaCreateContext( GL_RGBA, NULL );
OSMesaMakeCurrent( ctx, buf, GL_UNSIGNED_BYTE, 1, 1 );
glClearColor(1.0, 1.0, 1.0, 1.0);
OSMesaDestroyContext(ctx);
}

を実行してみるとglClearColorのところでsegmentation faultとなります。

これは根本的なところでどこか使い方を勘違いしているのでしょうか?

637:636
10/07/17 00:17:28
自己解決しました。

libOSMesaだけで十分なのにlibGLをリンクしてしまっていたのが原因でした。

638:デフォルトの名無しさん
10/07/17 14:16:23
GLSL って % ないのな。int 用の mod も無いし、他の人どうしてるのかな? 引き算?

639:デフォルトの名無しさん
10/07/17 15:44:32
int hoge = int( mod( float( 10 ), float( 4 ) ) );
とかできなかった?

640:デフォルトの名無しさん
10/07/17 19:21:35
出来ました。でも変数使うとかなり妙なことが。

int(mod(float(14), 3.0)) は確かに 2 を返すのに、
int a = 14;
int(mod(float(a), 3.0)) は 1 を返す。

環境のせいかとも思ったが、
GL_VERSION = 2.0 ATI-1.6.16
GL_RENDERER = ATI Radeon X1600 OpenGL Engine
でも
GL_VERSION = 2.1 NVIDIA-1.6.10
GL_RENDERER = NVIDIA GeForce 9400M OpenGL Engine
でも同じ結果。訳が分からん。

641:デフォルトの名無しさん
10/07/19 22:40:30
相変わらずラデのGLドライバは腐ってやがるな
糞が

642:デフォルトの名無しさん
10/07/19 22:54:31
GT4xxベースのQuadroはまだですか?

643:デフォルトの名無しさん
10/07/20 15:42:24
まだ出てなかったんだ。
Quadroで儲け出してると思ってたけど。

644:デフォルトの名無しさん
10/07/21 20:17:18
複数テクスチャで構成したモデルで、拡大表示などその一部分しか画面上に描画されない場合、画面上に描画されるテクスチャ名(ID)を取得する事はできますか?
テクスチャ描画直前にコールバックされるなど

645:デフォルトの名無しさん
10/07/22 01:06:32
occlusion queryでやるのは?

646:デフォルトの名無しさん
10/07/22 04:03:09
>>645
644です。
ありがとー、早速使わせて頂きます。


647:デフォルトの名無しさん
10/07/22 08:07:52
xcodeでiphoneSDKの
OpenGL雛形を利用してテクスチャ描画しようとしているのですが

テクスチャ作成も成功していて
TEXTURE_COOD_ARRAYも指定しているのですが

白いまま、テクスチャの柄が表示されません。

テクスチャ表示に
他に何か設定することありますか?


648:デフォルトの名無しさん
10/07/22 09:22:58
自己解決
iphoneって
テクスチャの幅が2のべき乗じゃないとだめでした

649:デフォルトの名無しさん
10/07/25 02:34:31
URLリンク(wisdom.sakura.ne.jp)

ここのサンプルなんですが
なんでBの値が~rでいいんですか?
255-rと同じ結果になると思うんですが
どういうことなんですか?

650:デフォルトの名無しさん
10/07/25 02:53:32
自己解決した
GLubyteでキャストしたらなんか意味わかった

651:デフォルトの名無しさん
10/07/25 10:57:55
プラネタリウムのようなソフトを作っています。
天球の中心にカメラを置いて、注視点をぐりぐり移動させる所でつまずいています。

今やっているのはglRotateで±1°ずつ回転させて(角度変数も用意して増減させる)
実装しています。この場合だとぐりぐり移動はできるのですが現在どの角度を向いているか
が正しく取得できません。(斜め移動すると表示と値がずれる)

プラネタリウム(というよりは星座早見盤)をつくるのに今見ている角度を正しく
取得しなければならないのですが、いい方法はありますか?

652:デフォルトの名無しさん
10/07/25 11:03:56
mCamera->setOrientation(Quaternion::IDENTITY);
mCamera->rotate(Vector3::UNIT_Y, Radian(mTheta));
mCamera->pitch(Radian(mPhi));


653:デフォルトの名無しさん
10/07/25 16:03:07
回転を四元数で管理

654:デフォルトの名無しさん
10/07/25 17:28:28
LoadIdentityの代わりに、単位行列をピヴォットした行列をロードするだけでZ-Upとかに対応できたりするんでしょうか?

655:デフォルトの名無しさん
10/07/25 22:06:55
OpenGL用の行列やベクトル、クォータニオンなんかのライブラリでオススメあれば教えて下さい。
DirectXのライブラリみたいにSIMD使った最適化までしてくれたら嬉しいです。


656:デフォルトの名無しさん
10/07/25 22:38:24
Bullet の LinearMath

657:デフォルトの名無しさん
10/07/25 23:15:50
>>652
Cで書いていて、かつかじったばっかりなので何をやってるのか理解できませんでした。
すみません。

>>653
検索したら参考ページが出てきたので頑張ってみます。
ありがとうございました。

658:デフォルトの名無しさん
10/07/26 00:37:24
床井さんのところ
URLリンク(marina.sys.wakayama-u.ac.jp)
のサンプルで、クォータニオン使ったのがあったはず。

659:デフォルトの名無しさん
10/07/26 00:56:20
>>651
単に回転する順番とかが間違ってるだけなんじゃないのかな
クォータニオンとか導入しないとならない問題じゃないと思うんだが

660:デフォルトの名無しさん
10/07/26 02:55:33
普通に天球の極座標も理解出来てないと思う。


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