3dcg

OpenGLで一番高速な描画命令は?

一番高速な描画方法はなんでしょうか?まぁまず一番低速な描画命令は float* verarray = new float[9]; glBegin(GL_TRIANGLE); glVertex3fv(&verarray[0])^Z; glVertex3fv(&verarray[3]); glVertex3fv(&verarray[6]); glEnd() ですね。理由は 三角形の頂点毎…

Objective-Cで3dsデータビューワーつくろうシリーズ その3

その2で書いた通り,読み込んだ3dsファイルから頂点数とポリゴン数を表示するようにした。今回のプログラムは3DCGというよりはCocoaというかObjective-cの機能がメイン。 ポリゴン数と頂点数を出力するのはキーバリューコーディングとよばれる機能を使った…

Objective-Cで3dsデータビューワーつくろうシリーズ その2

昨日の夜,そして今日会社から帰ってきてからと合計5時間ぐらいなやんだような。。。 前回のブログで書いた通り形状の拡大縮小やテーブル(CocoaではTableViewという)に部品情報を表示するというのにチャレンジ。 何になやんだかといえばCocoaでのTableView…

Objective-Cで3dsデータビューワーつくろうシリーズ その1

MacというかObjective-cでのOpenGLもそろそろ慣れてきた。ということでシンプルな3Dデータビューワーを作ることに。とりあえず OpenGLで3D描画 3D Studio MAXのデータをロード 形状データを回転 という機能まで完成。 下の写真はインリアのデータベースから…

gDEBuggerを触ってみた

OpenGLの機能を使ったプログラムに対して,パフォーマンスチェックができるソフトgDEBuggerを試しました。gDEBuggerについては http://www.nvidia.co.jp/object/gdebugger.htmlやhttp://www.gremedy.com/を参照してください。Windows,Mac,Linuxそれぞれで…

オイラーの多面体定理

2009-06-18 - malibu-bulldogの日記の日記の続きです。備忘録もかねてまずオイラーの多面体定理の説明を。この定理は3DCGの分野でも有名なもので,多面体の頂点の数をV,面の数をF,辺の数をEとすると V - E + F = 2という関係式になります。例えば このよう…

基本中の基本

3Dの形状を表すメッシュ情報が閉じているか(穴みたいなのが開いてないか?)の判定。メッシュ情報というのは面で構成されていて,たとえば三角形などだ。 つまり空間上に三角形を頂点を共有させながら並べる。でその三角形で閉じた空間が出来ているのかどう…

豚に尻尾を生やす

仕事が一段落したと思ったら結婚式の準備で大忙し…。大変だー。やることてんこ盛りです。 音楽決めたり,二次会の進行決めたり,引き出物とか挨拶とか…。 うわぁぁって感じです。そんな中奥様がエンディングムービーなるものを作るとか言い出し…。 そしてそ…

テストデータを作ってみた

公私共にチューブみたいな空洞になっている円柱が必要になったのでちょっと作ってみた。 (肩こりが…)こんな感じのデータです。 メッシュ密度はこんなかんじでしょうか。 ちゃんと中は空洞です!

トライアングルストリップのスタート選択方法

トライアングルストリップ(以下,単にストリップと書きます)の基本的な作り方や説明は トライアングルストリップの作り方 その1 - malibu-bulldogの日記 トライアングルストリップの作り方 その2 - malibu-bulldogの日記 に書いた。基本的な処理の流れは …

データ公開

データを気軽にダウンロードできるようにしてみる - malibu-bulldogの日記に続き,フリーなデータをもう一つ公開します。以前紹介した豚のデータです。フォーマットは3dsです。 URLは http://stripexperiment.googlecode.com/files/pig.3ds どうぞご自由にお…

データを気軽にダウンロードできるようにしてみる

Google Code Archive - Long-term storage for Google Code Project Hosting.でテストデータをダウンロード出きるようにしてみた。 こっちのGoogle Code Archive - Long-term storage for Google Code Project Hosting.を見てもらえれば,3ds形式のデータが…

自作実験3Dデータ

INRIAという外国の研究所が様々な3DデータやINRIA独自のメッシュデータを公開してくれているんだけど。 まぁ正確には3Dデータはいろんなサイトから集めてきているだけなんだけど。 ちなみにそのサイトは http://www-c.inria.fr/gamma/download/download.php …

トライアングルストリップの作り方 その2

3DCGの描画速度を向上させる有効な手段としてトライアングルストリップ(以下ストリップと)というのがある。 2008-03-09 - malibu-bulldogの日記 にデータ構造の基本を書きました。要は複数の三角形に対して辺を共有するなら座標変換等の計算を省略できるよ…

スペクトル分解を実際に行ってみる

2008-05-31 - malibu-bulldogの日記 の続きです。ラプラシアン行列から作り出した固有値と固有ベクトル。このうち固有値は実対称行列なのですべて実数になり、ラプラシアンマトリックスの性質上最小の固有値は0というのは前回の日記で書きました。 さて、イ…

グラフ理論の備忘録

Wikipediaで読んだ内容をちょこちょこっとメモ 同型グラフ 二つのグラフGとG'の間に、頂点と辺が一対一で対応する関係、があればG'をGの同型グラフという Planar Graph 平面上の頂点集合とそれを交差無く結ぶ辺の集合からなる平面グラフと同型のグラフ。 つ…

ベクトルにラプラシアン行列を掛けてみる

ここ数日でラプラシアン行列について勉強したこと グラフ グラフはG (V , E) と定義されます。 この時、Vはグラフを構成する点の集合で、Eは点の連結情報。 Eは辺とよばれますね。点に関しては一意な整数を付けてあげるのが普通みたいですね。 この辺にもし…

グラフのスペクトル分解

ここ最近、イエール大学のDanさんという方の講義ノートを読むのが日課です。事の発端は、以前書いた日記で触れた頂点キャッシュの問題です。 2008-05-23 - malibu-bulldogの日記で、頂点キャッシュを有効利用するためのデータ構築を調べてみると、CGのデータ…

頂点キャッシュ

頂点キャッシュとは、3DCGデータを処理してディスプレイに出力するハードウェアのグラフィックボードについているキャッシュの事です。最近のグラフィックボードはPre T&L と Post T&L、そしてPrimitive Assemblyという三つのキャッシュがあります。T&Lとい…

トライアングルストリップの作り方 その1

前回の日記に引き続きトライアングルストリップネタを。画像に書いてあるような4つの三角形をトライアングルストリップとしてつくる場合を考えてみます。三角形は左回りであると仮定します。まず、左端の三角形 0-1-2をグラフィックパイプライン(座標変換…

テクスチャ座標

今日は3dsファイルのロード機能を修正し、テクスチャ座標を読めるようにしました。データがバイナリなんでログとにらめっこしながら、おバカなミスに悩まされました…。写真はテクスチャ有でロードしたエンジェルフィッシュの3DCGデータです。データはこのペ…

3dsのローダー部分

今日は3dsのロードプログラムを少し掘り下げて調査してみました。 具体的にはマテリアル情報のロード部分ですね。実験的に作ったプログラムを公開します。 3dsの各チャンクを見て、オブジェクト単位での頂点や面、ubの総数を読む事とマテリアルの情報を読む…

とても便利なデータベースを発見

フランスのメッシュ研究所のINRIA(すごく有名らしく会社の上司はしっていましたが…)さんがやっている3Dデータのデータベースを発見。これ、いろんなサイトのダウンロード可能な3Dデータが沢山登録されている! http://www-c.inria.fr/gamma/disclaimer.php …

3dsのフォーマットが詳しくのっているWebページ

プラグインは作ったことあるけど、ファイルフォーマットまでは覚えていないのでとりあえず3d studio maxのフォーマットを調べるためにGoogle。するとこんなページが Your Page Titleイタリアの人みたいだけどすごーい。これは便利。しかも英語も読みやすいの…

objファイルを読めるようにしたんだけど

気合い入れて一日で作りました、objファイルの読み込み機能。 でもテクスチャの機能を入れていないので簡単に作れちゃうし、一日はちょっとかかりすぎかな。さてさて、ネットでデータをダウンロードしてたら気づいたんだけど…ちゃんと調べてからにすればよか…

すっかり忘れていた…三角関数の合成公式

詳細は合成公式

セレクション機能 gluPickMatrixの中身

googleのコード検索で見つかったソースです。備忘録の為日記に書きます。 void gluPickMatrix(GLfloat x, GLfloat y,GLfloat width, GLfloat height, GLint viewport[4]) { float sx, sy; float tx, ty; // from OGL_Sample code library // /* Translate an…

トライアングルストリップ

3DCGの業界では、描画を高速化するための方法は、大雑把に次のふたつに分類されます。 描画する図形データを最適化する 描画する必要のない図形データを見分ける このうちトライアングルストリップはデータの最適化にあたります。 ここ二、三日はトライアン…

ストリップコンバーターの作成

作成しているパッチビューワーに関しては メッシュデータの読み込み メッシュの階層構造を表示切替 スケーリングやライティングON、OFFの切替 FPSの表示 ついでにGTKでちょろちょろいろんな機能 など盛り込んでいきました。で、そろそろGUIの機能や表示機能…

メッシュの階層構造

現在作っているパッチビューワーは外部からメッシュデータを読み込んで、OpenGLを使って描画するソフトです。内部的にメッシュデータに階層構造を持たせてはあったものの、最初に作った外部からファイル読みこみ機能は階層構造まで読みこまなかったので、パ…