タグ

openGLに関するmae0510のブックマーク (74)

  • 床井研究室 - 押し出し

    夏休みはどこだ 7月から8月にかけて例年に無く忙しくて(独立法人化の影響?),ついに7月はブログに何も書けませんでした.そればかりか,このままでは8月も何も書けずに終わってしまいそうです.ということで,以前,学生さんにサンプルプログラムを書いてやると約束したまま放置していた「押し出し」について,ちょいと書いてみます. 卒業研究の指導なんかをしていると,毎年,同じようなところで学生さんが引っかかっているのを目にします.でも,たいていはテクスチャマッピングに使う画像ファイルの読み出し方のような,研究の筋とはあんまり関係なさそうなところなんで,自分で解決してくれることを期待してほったらかしにしておきます(当は面倒だからという可能性大).とは言っても,毎年同じところで時間をってしまっているのも効率が悪い気がします.ましてや,このブログはそういう小ネタをストックしていこうと思って作ったんだし…

    床井研究室 - 押し出し
  • GLSLシェーダのQualifier変数タイプ

    GLSLのQualifier変数タイプ GLSLは日語の教科書がまだ少ないので、分かったことを書いておこうと思っていました。今回は、GLSLで初めてプログラムする場合、分かりにくい点の一つに変数のQuailifierプリフィックスがあるので、簡単に説明します。GLSLで使用される変数タイプにおいて、C言語等にはない種類としてQualifier(日語でなんと訳せばよいのかよく分かりません)があります。C言語にないのは当たり前で、シェーダ間、及びシェーダ-OpenGL間で渡す変数のタイプ宣言だからです。GLSLの仕様書や分厚い英語のリファレンスを見ると、次に示す4種類のQualifier変数があります。 OpenGLプログラムから渡す変数です。 頂点ごとに変化する値を渡すことができます。ビルトインのattribute変数としては、gl_Vertex, gl_Normalなどがあります。ユー

  • HTML version -

    OpenGL Shader Builderなどに関するメモ ここに書かれたメモの正確性は保証しません。 OpenGL用ツ−ル ■OpenGL Shader Builder, OpenGL Profiler ,OpenGL Driver Monitor Apple の説明ページ (iTunes , iPhoto , iMovie , Grageband ) iLife , iWorks Appleworks 、まだ足りないものは2Dグラフィックツール と 3Dモデリングツールのような気がする。 Panther から、OpenGL 関係のツールがついていたのに気がついたのはTigerが発売された後になってからだった。 日語化されていないのがつらいところ。Apple は 手軽に3Dアプリを開発できるように、まとめてほしいな。 これらは、Xcodeをインストールした際 /Developer/Ap

  • GLSLシェーダによるカートゥーンレンダリング

    今日は、GLSLによるカートゥーンを紹介しようと思います。割と簡単にでき、それなりに見栄えがするからです。その応用として、輪郭線も描画します。 カートゥーンの原理 カートゥーンはセルアニメ調のレンダリングです。左下の図に示すように、頂点vにおいて、法線と光源ベクトル(頂点から光源へのベクトル)との内積(照度)を、右下の図のようなテクスチャのs座標に当てはめることで簡単に実現できます。 更に、次の図の左のように、視線ベクトルと法線の内積を考えると、輪郭となる部分はほぼ0になります。そのため、その内積をt座標に割り当てることで、輪郭線を実現できます。 s座標もt座標も単位ベクトル同士の内積で計算できますが、その範囲は-1~1になるため、テクスチャマッピング(glTexParameterによる指定)をクランプに設定する必要があります。 バーテックスシェーダ(頂点シェーダ) 今回は、頂点シェーダで

  • The Lessons | Learning WebGL

    I’ve been creating a series of lessons as a way of teaching myself WebGL. The first ten are based on the well-known NeHe OpenGL tutorials, but I’ve diverged since then. Here are the ones so far. If English isn’t your first language, you might like these translations of the lessons: Chinese: 课程中文版 Spanish: español Japanese: 日語でのレッスン Lesson 0: Getting Started shows you how to download, install and

  • Frequently Asked Questions

    今までにあった質問 質問1:マウスを使ってオブジェクトを選択するには? 質問2:マウスでクリックした場所の3次元位置を求めるには? 質問3:透視変換の場合にウィンドウをリサイズしても表示図形の大きさが変らないようにするには? 質問4:IsoTrak や SuperGlobe からデータを取ると,表示がぎこちなくなるのですが? 質問5:視点を移動するのではなく,物体をぐるぐる回す方法は? 質問6:円柱はどうやって描くんですか? 質問7:glFrustum() を使って正確な立体視を行う方法は? 質問1 マウスを使ってオブジェクトを選択するには? 回答1 セレクションを使えば, マウス(あるいはスクリーン上の領域) がどのオブジェクトを指して(含んで) いるのかを調べることができます. glRenderMode(GL_SELECT) を実行してセレクションモードに入ると, オブジェクトを描画し

  • 現在の行列の値を取得する - 強火で進め

    OpenGLではプロジェクション(射影)変換行列(GL_PROJECTION)、モデル座標変換行列(GL_MODELVIEW)など複数の行列を使います。 どの行列で検証しても良いのですがここでは主に使用する行列である、モデル座標変換行列の値を取得してみます。 プログラムの主な部分は以下の様になります。 GLfloat m[16]; glMatrixMode(GL_MODELVIEW); // 正規化したとき glLoadIdentity(); glGetFloatv(GL_MODELVIEW_MATRIX, m); printf("正規化\n"); printf("m[0]:% 7.5f m[4]:% 7.5f m[8] :% 7.5f m[12]:% 7.5f\n", m[0], m[4], m[8], m[12]); printf("m[1]:% 7.5f m[5]:% 7.5f m[

    現在の行列の値を取得する - 強火で進め
  • じぇっつ どっと ねっと » Blog Archive » Android SDK m5-rc15 で OpenGL

    Android SDK (android-sdk_m5-rc15_windows) に入っている OpenGL のサンプルコードがビルドできませんでした。 で、下記のような方法でとりあえずプリミティブ出せたのでコード残しておきます。

  • OpenGLの座標系

    座標系の理解なくして3DCGなし OpenGLを用いて3次元CGを描く場合、特にシェーダを自分で書く場合は、 座標系の理解が必須である。 OpenGLではレンダリングパイプラインの進行に伴って 様々な座標系が登場する。 オブジェクト座標系 (object coordinate system) オブジェクト座標系はモデリングの際に対象物の頂点座標や 法線を指定するための座標系である。 原点は対象物のバウンディングボックスの一頂点か、 対象物重心付近に置かれることが多い。 対象物の形状を捉えやすい方向に x, y, z 軸が設定される。 例えば、花瓶の形状をモデリングするためには、 花瓶の底面中央を原点にし、鉛直上向きを z 軸正方向とする オブジェクト座標系を設定するのが都合よい。 オブジェクト座標系はモデリング座標系(modeling coordinate system) あるいはローカル

  • 3D Programming Selection Tutorial

  • Processing Discourse - OpenGL + rotate() + mouse over

  • ピックアップ処理

    マウスで3D物体を選択しよう ピック処理とは ピック(選択)処理 マウス等で3Dの物体を選択(ピックアップ)するのが目的です。選択することにより、指定したものの位置を移動したり、変形する等の対話操作が可能になります。 ピックの手法 物体をピックをするには、まず、マウスでクリックした点を中心にピックアップ領域を設定します。次に、選択モードとよぶ特殊なモードを設定してから、ピックしたい物体(点、 線、面)を表示します。すると、ピックアップ領域に表示された物体が選択バッファに登録されます。この選択バッファに登録された図形がピックされたことになります。 ピック処理を行う関数を調べよう 選択バッファの設定 ピックした結果を保存するバッファをglSelectBuffer()で設定します。 GLuint selbuf[BUFFERSIZE]; glSelectBuff

  • Java Tips - Another picking example in JOGL

    Picking is demonstrated in this program. In rendering mode, three overlapping rectangles are drawn. When the left mouse button is pressed, selection mode is entered with the picking matrix. Rectangles which are drawn under the cursor position are "picked." Pay special attention to the depth value range, which is returned. The example is ported from C examples in the OpenGL Programming Guide (known

  • sonson@Picture&Software - [OpenGL] マウスによる頂点編集

    マウスピッキングで頂点を編集する 処理の流れは,こうなります.(マウスでピックしたものは手前のものであると仮定する) マウスでピッキングする. ピックしたオブジェクトの識別番号を取得する. ピックしたウィンドウ座標と,ピクセルのデプスバッファからCGの3次元座標を求める. 得られた3次元座標データをオブジェクト識別番号を元にフィードバックする. ピックしたオブジェクトの識別番号の取得は"マウスピッキング"セクションを参考にしてください. glReadPixelsでデプスバッファを読み取る 描画されたオブジェクトをクリックします.通常の描画方法であれば,そのオブジェクトは当然最も手前にあるものになります.このときデプスバッファを使用しているならばすべてのピクセルに対して深さ情報が付加されています.そして,OpenGLではその深さ情報を元に世界座標での3次元座標を算出することが可能です.こ

  • マウスによる選択のしくみ

    OpenGLで表示されているシーンのオブジェクトをマウスを使って選択する処理は、OpenGLに用意されている選択バッファ(Selection Buffer)を使って実現できるが、使い方が少々ややこしく、ちゃんと動くようになるまでにかなり梃子摺ったのでここにメモを残しておく。 マウスによる選択のしくみ マウスを使って、3次元空間に描画されたものを選択するという動作は、だいたい次のように実現されていると理解している。(間違っているかもしれない) 画面に表示はしないものの、基的には3次元空間をレンダリングする。その際に現在のマウスポインタのある場所を中心として、小さな覗き穴を作る。ここに見えているものが選択されるオブジェクトということになる。どのオブジェクトが選択されたかは、描画する一連の図形に名前をつけておくことで、複雑な形でも特定のオブジェクトが描画されたかどうかが分かる。 この覗き穴を使

  • sonson@Picture&Software - [OpenGL] マウスピッキング

    マウスピッキング・処理の流れ ここではマウスの座標からポリゴンを識別することも目的にします.アプリケーションとしてインタフェースを作るためには欠かせないものです.さらにはマウスにこだわらなくても様々な応用範囲が考えられます. OpenGLでは,このセレクション用のAPIがあらかじめ用意されており,簡単に実現することが可能です.処理の流れは,下の流れになります. セレクションモードへ移行する. ポリゴンに識別名をつけながら描画する. OpenGLから返されたセレクション情報を整理する. ポリゴン識別完成. 2次元の画面から,3次元のポリゴンを識別する 実際の処理の仕組みは少しややこしいです. OpenGLで描画された世界は3次元です.しかしながら,マウスによって得られる情報は2次元です.つまりマウスからは特定のポリゴンを一意に指定することは不可能であるということになります.イメージは下

  • Jogl

    JOGL はまだ公式に完成したものではなく、まだ発展途上にあります。 eclipse を使用しなくても JOGL を使用できますが、環境変数の設定で面倒なことを しないといけないので eclipse を使用するほうがよいと思います。 eclipse を使用する場合には SWT を使用するほうがよいかも知れませんが、これは当面扱いません。 私にとって、少しややこしくなりすぎるのでとりあえず JOGL のみを扱います。 JOGL アプレットを作成することが目標です。 OpenGL を java で動かすための、ライブラリーには幾つかの種類があるようです。 しかし、アプレットにも対応しているのは JOGL だけではないかと思います。 JOGL に難点があるとすれば、JOGL がネイティブ・コード (OS 依存) を 使用することです。そのため、JOGL アプレットは作成はできる

  • JOGLにゃの描画処理にゃをペチペチとにゃ - SofiyaCatのプログラム日記

    リスニャ〜を実装するようにゃにして、初期化とかにゃ描画を実装ですにゃ。 アニメにゃは、普通にゃはanime〜ってにゃのを使うっぽいにゃですけど、面倒にゃので直接display()メソッドにゃを呼び出して無理やり描画させるようにゃにですにゃ。 スワップを手動にゃにしたかったにゃのですけどにゃ、Windowモードにゃでは駄目にゃのかにゃ? 上手くできにゃかったですにゃ。 フルスクリーンにゃにすれば上手くいくにゃのかにゃ? この辺にゃは、宿題ですにゃね。 「動けば正義にゃ〜」ってことにゃで、変にゃ使い方にゃは愛嬌ですにゃ。*1 import java.awt.*; import javax.swing.*; import javax.media.opengl.*; import com.sun.opengl.util.GLUT; class infcat_jogl extends GLJPane

    JOGLにゃの描画処理にゃをペチペチとにゃ - SofiyaCatのプログラム日記
  • www.gpgpu.org :: View topic - First port of HelloGPU_GLSL (C++) to Java

    Posted: Mon Nov 21, 2005 3:15 am    Post subject: First port of HelloGPU_GLSL (C++) to Java Hey guys, manage to port HelloGPU, GLSL version to Java using jogl (https://jogl.dev.java.net/) and the porting is pretty straight forward. Currently I am using the JSR-231 Beta 01 version import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Frame; import javax.media.opengl.GL; imp

  • 床井研究室 - 屈折マッピング

    橋 古いノートパソコンの増設メモリが和歌山で手に入らなかったので,先日,奥さんと一緒に大阪の日橋にある中古パソコンショップに行きました. その後,日橋から難波に向かう途中に,メイド喫茶を見つけました.奥さんは「メイド喫茶がある!」と異様に反応していました.それをちょうど出勤してきた店員さんと思しきお姉さんに見とがめられ,「どうぞ〜,いらっしゃいませ〜」と声をかけられてしまいました.田舎者のオジサンはひきつりながら会釈を返しつつ,テンションが上がったオバサンを引きずって,その場を退散したのでした.しかし,お姉さんすっごくきれいだった.タレントさんみたい. 次に,奥さんのたっての希望で,四つ橋線で肥後橋へ.そして 30 分ほど行列に並んだ後,ついに, Mon chou chou の堂島ロールゲット!,Get!,げっとぉぉぉ!!!! 和歌山のデパートでも数量限定で販売していたことが何回か

    床井研究室 - 屈折マッピング