CAVE11ぐらい

昨日はCAVE

引継ぎ用のプログラムを実行してましたがそのなかで面白かったものが一つ

NeHe Productions : lesson23 Sphere Mapping Quadrics In OpenGL

これの環境マップもどきが見事にCAVEで動きました。2Dで見ると見慣れた効果ですが、CAVEで見るとまた新鮮で感動します。

すばらしい

投稿者 robosheep : 2006年03月02日 10:08 | トラックバック

frame updateは全部のマシンがやってるんだね

 CAVElibの処理プロセスは、ComputeプロセスとDisplayプロセスに大きく分けられる。Computeプロセスはフレームの最初に実行され、メモリのシェアにより全てのPC、Displayプロセスで同じシーンが計算される。Computeプロセスはそれぞれのマシンで同じ計算が行われている。これは無駄だと思う。

 僕はこのComputeプロセスをCAVE-Control(スクリーンと繋がっていない、統括用PC)でも計算できると思っていたが、どうやらそれは簡単にはできないっぽい。だから次に考えるのはComputeプロセスで行われる処理を4つに分けて、それぞれのマシンで別な計算をする、ということになる。

投稿者 robosheep : 2006年01月25日 16:03 | トラックバック

CAVE掃除

 今日はCAVEの掃除をしてきた。とはいえ、うん百万もする鏡とかスクリーンを僕らが雑巾とかで拭くと逝ってしまわれるので、床掃除機かけたりPCとか軽く拭く程度。

 まぁ今年もご苦労様でした、来年もよろしくCAVEさん。頼むからあんまり壊れんでくれ・・・。

投稿者 robosheep : 2005年12月22日 13:20 | トラックバック

CAVE10

 かなり久しぶりのCAVE。調子が悪かったり、教授の都合とかでぜんぜん使えませんでした。ほんと何とかしてほしいっすTT。今日はCAVEの基本的な機能のテストとエノンマップ表示プログラムの教示実験でした。

<今日やったこと>
・CAVEのプロセスに関するテストを実施、それにより以下のことが判明
1.frameUpdate関数内ではCAVEMasterDisplayでもCAVEMasterWallでも変数が共有されていてもされていなくても、すべてのスクリーンで同じ演算結果が表示される。
2.mainのwhileループ内でも変数が共有されていてもいなくてもすべてのディスプレイで同じ計算結果になる。

・CAVEのナビゲーション関数のテストを実施、以下の結果を得る。
1.NavLock, NavUnlock関数は使っても使わなくても結果が同じだった
2.NavLoadIdentityを使うやり方、使わないやり方の両方ができる。
3.ナビゲーション座標とワールド座標では微妙に位置が違った。

・エノンマップ表示プログラムを表示テスト、うまく表示できたが13周期でもフレームレートが遅くなっていた。FPSの表示がうまくいかなかったので詳しくは分からなかったが、シュミレーションモードでは13周期で約40フレーム毎秒,15周期では約15フレーム毎秒だった。実際にCAVEで見るときにはもっと遅くなっていると思われる。

投稿者 robosheep : 2005年12月21日 20:20 | トラックバック

CAVEメンテ

 今日はCAVEだー、と思ったらまたメンテですTT。ビデオカード(Wildcat)が不調らしい

まじ、デリケートだ・・・・・

投稿者 robosheep : 2005年12月06日 18:12 | トラックバック

CAVE9

今日はレースゲームプログラムと3Dデータ読み込みプログラムがちゃんと動いた、バンザーイ!しかも、担当の教授が「土日も自分がいるときに使ってもいいよ」とメアド交換、ヤッター! 今日はいい日だー

<今日やったこと>
・レースゲームプログラムがVS.netが入っていないPCで動かなかった問題解決、無事表示できました。

・同じ問題で動かなかった3Dデータ表示プログラムもうまくいきました。

今日は他にもCAVEの動作を確認するプログラムをいくつか動かしてみる予定でしたが、残りの時間は担当の教授にこのプログラムを見てもらうことに使いました。なんせ、ビジュアルのインパクトは今までで最大なので。教授ともいろんな話をして、楽しんでもらえたようです。

明日は、研究課題を表示するプログラムの改良、これも楽しみ。

投稿者 robosheep : 2005年11月25日 20:32 | トラックバック

CAVE8

 今日は久しぶりのCAVEだったのに1時間も使えなかった・・・。会議の結果、僕にCAVEを一人で使用できる権限を与えてもらったはずなのだが、管理の方の教授は二人以上でないと駄目だと考えているらしい。高価な機械だし、デリケートなので心配するのは分かるが、研究がぜんぜん進まない。もっとCAVE使いたい・・・。

とりあえず今日の結果

・jpeg読み込みライブラリを使ったプログラムがコンパイルできない問題が少し解決。プロパティ->c/c++->コード生成->ランタイムライブラリを変えたら、コンパイルできた。最初は(別な学生が設定したものだが)マルチスレッドDLLになっていたが、デバックモードだったのでマルチスレッド デバック DLLにした。それからCAVEライブラリもlibcave_ogl_mt_MD.libからlibcave_ogl_mt_MDd.libに変更。

・上のプログラムでコンパイルはできたが、3番目のPC(側面描画用)でMSVCP71D.dllがありませんというエラーメッセージが出て、実行できなかった。コントロール(1番目の)PCにはVC++.netが入っているので、.NET Framework SDKもインストールされているが、他のPCには入っていないためこのような事態になったものと考えられる。

・ナビゲーション関数がどう働いているのか調べるプログラムを作って実行。原因不明のエラーで停止。

投稿者 robosheep : 2005年11月18日 19:10 | トラックバック

CAVE7

 あー 疲れた、さすがに6時間あの部屋はつらい。空気は悪いし、5台のCRTと3D酔い発生器からの攻撃力が予想以上に強い。ということで、7回目いってみよう。

 今日はレースプログラムと3Dデータ表示、それからいままでの問題直したやつに、音とJoyPadのテストまでやろうとしてたので、ウキウキでした。最初は・・・。

<今日やったこと>

・ブレンドがうまくいかない問題解決。Depth Testに加えglDepthFuncをGL_ALWAYSにしたら、直った。普通にOpenGLでの僕のミスです。

・4次元上の点を表示するプログラム成功。ワンド(コントローラ)の位置座標の範囲が分かったら、ほぼ問題解決しました。

・迷路を表示するプログラムで、ゲームの進行を”開始画面”、”ゲーム”、”終了画面”に分けて、開始画面、ゲームを別なファイルにしたものを作りました。それはその状態ではコンパイルできず、結局開始画面を削除しました。

・CAVEで下プロジェクタに投影される映像が正しくない問題解決。やっぱりglLoadIdentityはCAVEでは使っちゃ駄目みたいです。代わりにglPushMatrix、glPopMatrixを使いました。

・迷路プログラムでglLoadIdentityを使わなかったときに、開始位置がおかしくなる問題解決。結局、開始位置が変なのではなく、迷路全体が小さすぎて位置がおかしく見えるだけでした。迷路を10倍ぐらいにしたら。普通に見えるようになりました。

・迷路は普通に表示できるようになりましたが。CAVEの4つの画面で微妙に位置がずれているのを発見。よく見ると、それぞれの画面で別な移動&当たり判定プロセスが動いているみたいです。(ありえん・・・。)

・上の問題が解決するかもと思い、OpenGLの行列変換関数(glRotate, etc...)などを使わずに、CAVENav~関数だけで移動・回転を行なうようにしようとしましたが、どうやってもうまくいかず。位置がずれたり、移動がおかしかったりしてました。(わからん・・・)

・迷路を改造したレースゲームのプログラムをコンパイルできず!Windows用に作ったプログラムさえ、同じ意味不明なエラーを吐いて、コンパイルされません。原因はJPEGファイルを読み込むライブラリにあるようです。画像は全部BMP使えってことでしょうか?・・・。

・レースゲームと同じ理由により、3Dデータを読み込むプログラムもコンパイルできずTT。今日一番楽しみにしてたのはこの2つだったのに・・・・。

・音、出ました。そりゃそうだWindows起動音してたし、いつも。

・JoyPad認識、んでJoyToKeyを使ってキーボード等の入力に変えて、CAVEでそれをつかまえることで、JoyPadでコントロールできるようになりましたー、やったー。USB延長ケーブル使えば距離の問題も解決。みんなが慣れ親しんだ、ゲームコントローラーの方がやっぱ使いやすいです。


 こんなんで、右の杭を打つと左の杭が出るがごとく、過去のバグを直したら新たなバグが発生しました。まともなプログラム動かせるのは、いつになることやら。

投稿者 robosheep : 2005年11月08日 20:42 | コメント (1) | トラックバック

そういえば、CAVEでの当たり判定についてもっと考えなくてはいけないことに気づきました。
というのもCAVEはOpenGL単位で10*10の立方体を現実の装置と結び付けています。つまり、視点を中心に小さな範囲で当たり判定を行っても、装置の中で人間が隅に移動してしまえば通れないはずの壁を抜けてしまうのです。

投稿者 robosheep : 2005年11月11日 20:26

3Dファイルの読み込み

http://www.morrowland.com/apron/tut_gl.php

 ここのサイトのプログラム参考にして、とりあえず3Dファイルの読み込み成功。しかし、Blenderとか利用できる3DCGソフトのデータはまだ読み込めん。ということで、サイトのサンプルデータしかロードできてないので、アップはしません。


 あと衝動買いで、衝突判定の本買っちまいました。明日には届くだろう。データのロードもうまくいったし、次は当たり判定ですよやっぱり。


 しかし、どう見てもゲーム作りだよな・・・・。まぁ研究もやってるし、教授も喜んでるし、大学に貢献してるんで問題ない!

投稿者 robosheep : 2005年11月06日 17:35 | コメント (1) | トラックバック

衝突判定の本、今日届いたー やほー。あー ゆっくりよみてぇー

投稿者 robo sheep : 2005年11月08日 21:24

レースゲームを作りたい

3drace01.jpg

3DRace01.zip

ということで、次のサンプル。ってただ迷路を大きくして加速度つけただけなんだけどね・・・。
まぁ最初ってことで。

<操作方法>
マウス左:加速、ゲームスタート
マウス右:減速
マウスで画面上:上移動
マウスで画面下:下移動
マウスで画面右:右回転
マウスで画面左:左回転

投稿者 robosheep : 2005年11月05日 18:59 | コメント (1) | トラックバック

なんか家のPCでやったら動かないし・・・。

投稿者 robosheep : 2005年11月06日 01:53

CAVE6

 今日は一時間しかなかったよー まぁ記録

・迷路は、床プロジェクターの描画問題以外は正常に動きました、やったー。でもそれはCAVEのモデルビュー行列関数を使わずに、OpenGLのものをそのまま使った結果でした。

・床のプロジェクターに正面の画面が映る問題もほとんど解決。ナビゲーションに関してはOpenGLのモデルビュー行列関数を使わずに、CAVENavLoadIdentity, CAVENavTranslate, CAVENavRot, ... etcなどCAVE専用のものを使うと、うまくいくっぽいです。特にCAVENavLoadIdentityを使ってなかったのが原因で、これをつかうとすると必然的に平行移動などは描画のたびに初期化される。今までのサンプルの使い方、つまり行列の初期化をせずにどんどん重ねていくという方法は適当ではないのだろうか?・・・・。

・glutライブラリーを使って文字表示成功、しかしCAVEでのウィンドウサイズの扱いがいまいち分からない。

・ワンド(コントローラ)の物理座標とナビゲーションワールド座標は−5〜5の範囲だということが判明(物理座標とワールド座標同じってどうゆうことですか?)

投稿者 robosheep : 2005年11月04日 18:53 | コメント (1) | トラックバック

glLoadIdentityを使ってはいけない、しかし代わりにglPushMatrix, glPopMatrixを使うと、OpenGLの行列変換関数も使えるっぽいです。CAVENav関数はOpenGLの関数と微妙に違うので扱いにくいです。これを使う意味はあるんだろうか?

投稿者 robo sheep : 2005年11月05日 10:55

CAVE5回目

 昨日はCAVE5回目、昨日のことをまとめてみる。

・CAVEでは正確に各プロジェクターの画像を表示するために、OpenGLで使われるビューイングの関数を破棄する。なので、描画範囲を変更する時にはglPerspectiveなどではなく、CAVENear, CAVEFarという独自の変数を利用する。

・ブレンドがうまくいかないのは、デプステストをしていなかったせいだと考えていたが、違った。未だ原因不明。

・glutライブラリーがインストールされていなかった、次回入れよう。

・glutが使えなかったのでglutBitmapCharacterを使えなく、これを使い文字を描画しようとしていたので、文字が表示できなかった。

・文字が表示できないので、ワンド(コントローラ)の位置を使って、サンプルを回転させるプログラムで、ワンドの位置座標値の幅が分からなかった。

・迷路プログラムでCAVE移植プログラムが不完全だったため、デバックに多くの時間を浪費。CAVEと普通のOpenGLでは変換行列(平行移動、回転など)の仕様が異なるため、その違いをちゃんと考慮してプログラムしないといけない。

・中央しか歩けないように調節した迷路のプログラムは、回転した時に3D酔いしそうになる。オエっぷ

・CAVEで下に表示される画像に、何故か正面に表示されるような情景が映っていた。(正面の画像とは微妙に違う)

 というわけで、星のプログラムは表示範囲は解決したものの、ブレンドのバグは直らず。4次元物体の表示プログラムはワンドの範囲が分からなかったため、回転する時に消えてしまうバグが直らず。迷路プログラムは移植時の基本的なバグに悩まされ、変換行列の違いのためまともに移動することができずに終了。問題がたくさん残った。とりあえず、現在の迷路プログラムをちゃんとゲームとして完成させたいところだ。

投稿者 robosheep : 2005年11月03日 13:52 | トラックバック

CAVE 4回目

 今日やったこと

・実写テクスチャを貼った、床、箱を表示
それだけですが、今までと比べるとかなりリアルでした。

・4次元上の点を表示
点や線を使っているからか、表示はされるのですが、なぜかうまくいきませんでした。

うっしゃー 次迷路、迷路w

投稿者 robosheep : 2005年10月28日 17:38 | トラックバック

CAVEで何を作ろう?

 現在、高度3次元可視化装置を研究で使っているわけですが、研究課題の方はかなり余裕があります。しかし、せっかくなので研究以外のものを作って装置で遊びたいなと考えています。(装置の利用の可能性を広げる意味でも)

なので何か良いアイデアがないか募集します。どんなものでもいいんですが、立体視にする意義があるものだとなお良いです。

<現在考え中のもの>
・3次元迷路
・シューティングゲーム
・銀河系を表示
・特殊相対論的効果
・メガデモ

時間も限られているので多くのプログラムを作るのは難しいですが、面白いアイデアがあれば優先的に作りたいと思ってます。あまり難しいことを考えてしまうと良いアイデアが浮かばなかったり、僕のと似たようなものになってしまうので、気軽にどんどん書き込んでください。CAVEの機能を無駄使いして、ナンセンスなものを作るってのもアリです。専門的な知識とかはまったく要りません。むしろ無いほうが、奇抜なアイデアが浮かぶかも?

(お米とか一粒ずつ描画して、マトリックスのようにスローで、ちゃぶ台返しをシュミレートとか・・・・・(意味不明)

投稿者 robosheep : 2005年10月26日 20:20 | トラックバック

CAVE 3回目

 CAVE行ってきました、前回のリベンジです。僕も少しずつ慣れてきたからか、だんだん言うことを聞くようになってきました。満天の星を表示でき、今回は満足のいく結果が得られました。

・テクスチャーを読み込まなかった問題を解決
AUX_RGBImageRecを使うのに、プロパティ->リンカ->入力->追加の依存ファイルでglaux.libを追加して、をインクルードするだけでした、反省。

・点や線が使えなかった問題を解決
MatrixModeをデフォルトのまま使ったら、描画されるようになりました。

・描画範囲の問題は未解決
gluPerspectiveで描画範囲を広げるプログラムを作りましたが、大きく変更しても見た目の描画範囲がまったく変りませんでした。こんどはグリットとか表示して確認してみます。

・Fog(霧)の実装成功
特に問題もなく、実装できました。

・条件付ながらOpenGLコードの分離に成功
mainとOpenGLのコードを分離して、Windows用プログラムのOpenGLの部分だけ移動・コンパイルすればCAVE用プログラムが作れるようにするもの。まだ完全でないのでOpenGLのコードを変更しなければなりませんでしたが、概ね成功。


<次の目標>
・点データを読み込んで表示するプログラムを実行
・そのプログラムで4次元データを扱えるように変更
・コントローラーによる操作の変更
・OpenGLコードを変更せずにCAVEでコンパイル・実行できるようにする
・ついでに何か別な志向のものが作れればいいな(迷路とか)

投稿者 robosheep : 2005年10月26日 19:54 | トラックバック

CAVE出向2回目

 今日、CAVEに行ってきました、まだ2回目です。今回はプログラムを持っての遠征です。とりあえず問題点を列挙

・コンパイルできないので、CAVEに関係ないエラーすら見落としてしまい、それを直すのに時間がかかる。
・傾向の違いで、さらなるバグが発生。デバックしながら実行とかもできないので、原因が見つかりにくい。
・テクスチャーが読み込めなかった。
・点が表示できなかった。
・描画される範囲が、あまり広くない。
・部屋が狭いのに加え、大きくてデリケートなCAVEに気を配らなきゃいけないので、あそこで長時間コーディングするのは無理。
・教授がついていないと部屋が使えないので、頻繁にCAVEに行くことができない。
・ネットが使えないとコーディング中に調べたいこととかが分からない。

後半はもう何度も言ってることなんですが、たのむからなんとかしてください・・・。
結局、今日はテクスチャも貼っていない立方体を、10万個ほど表示しただけに終わりました。

なかなか難しい子ですが、描画されればいい奴なんです、ホントに。

投稿者 robosheep : 2005年10月19日 18:45 | コメント (4) | トラックバック

コンパイル出来ないのは辛そうですね・・・

そんな時は、廊下にこっそり無線LAN-APを設置した上でノートPCを持ち込んで、研究室PCにRemoteDesktop。研究室PCにさえ辿り着ければ、ちっとは作業しやすいかも・・・

投稿者 TYTAL : 2005年10月19日 20:33

んーそれも面白そうですね。

 昨日は確認できなかったんですが、CAVE室にCAVEのPCとは別にウィルスチェック用らしきネット繋がったマシンがあったんで、それ使えれば少しは・・・。

 Willcom持ってるんで、ノートに繋いでネットプラン追加してやろうかとも思った・・・。

投稿者 robo sheep : 2005年10月20日 08:53

入ってたプログラムの「ローラーコースター」やらを体験してきましたが、まるで操作ができませんでした。

…見学した3年勢の評価はあまりよろしくないようです。

投稿者 あせろら : 2005年10月21日 08:15

物は良いのですが、サンプルが酷いです。

ちなみにローラーコースターは自分で作ったコースを走れる設定だったみたいです。名前は忘れましたが日本語に直すと”吐き気”みたいな名前で、その名の通り3D酔い発生器でしたが。

ここは、僕がよいサンプルを・・・・できればいいな。
FPSが作りたい。

投稿者 robo sheep : 2005年10月21日 08:29

一応数学科なので力学的に

 1月の学会発表ではCAVEを使った力学的対象、複素2次元のエノンマップをやるといってました。なんのことだか理解していないんですが、そんな難しくないとのことです。

んでそれをやるために作っておくもの。
1.CAVEでどのぐらいの数の点をどういう形式で、処理落ちがあまりなく描画できるのか調べる。そのために、4次元でランダムに生成した点を4次元で回転させた後、それを描画するテスト用プログラムを作る。

2.コーディング場所と、コンパイル&実行場所が離れているうえに、後者は頻繁に利用できない。なので、メインとOpenGLのソースファイルを分離して、CAVEのmainをWindowsのmainに置き換えても動くようなものを作る。これは難しくない。これができればCAVEに行かなくてもコンパイルとプレビューができる。

3.エノンマップの計算用プログラム。これは点の座標を計算し出力するだけのもの。んで出力結果をOpenGLに読み込む。

4.3DCGソフトのデータを読み込んで描画するプログラム。研究にはあまり関係ないけど、これがあればCGソフトの恩恵に与れます。

投稿者 robosheep : 2005年10月18日 22:07 | トラックバック

CAVEのサンプル

 CAVEに入っていたサンプルプログラムを追記に書き込みました。

 これは赤い球を表示するだけなので単純ですが、他のサンプルも単純です。つまり、CAVEに関する処理にはほとんど気を使わずに、OpenGLのコードに集中できます。現在はこれらのサンプルを元に前回作った星のプログラムを作り、環境の簡単な負荷テストをしようと考えています。

#include
#include

void init_gl(void);
void draw(void);
GLUquadricObj *sphereObj;

int main(int argc,char **argv) {
/* Initialize the CAVE */
CAVEConfigure(&argc,argv,NULL);
/* Give the library a pointer to the GL initialization function */
CAVEInitApplication(init_gl,0);
/* Give the library a pointer to the drawing function */
CAVEDisplay(draw,0);
/* Create the multiple processes/threads and start the display loop */
CAVEInit();

/* Wait for the escape key to be hit */
while (!CAVEgetbutton(CAVE_ESCKEY)) {
/* Nap so that this busy loop doesn't waste CPU time reset timeval struct every time for linux compatibility */
CAVEUSleep(10);
}

/* Clean up & exit */
CAVEExit();
return 0;
}

void init_gl(void) {
float redMaterial[] = { 1, 0, 0, 1 };
/* Enable light source 0 */
glEnable(GL_LIGHT0);
/* Set material to color both front and back face to a diffuse red */
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, redMaterial);
/* Create a glu quadric object */
sphereObj = gluNewQuadric();
}

void draw(void) {
/* Set clear color to black and clear both the screen and the zbuffer */
glClearColor(0., 0., 0., 0.);
glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT);
/* Turn lighting on */
glEnable(GL_LIGHTING);
/* Draw a sphere */
glPushMatrix();
glTranslatef(0.0, 4.0, -4.0);
/* Draw a sphere using GLU quadric object. Radius = 1, Slices = 8. Stacks = 8 */
gluSphere(sphereObj, 1.0, 8, 8);
glPopMatrix();
/* Turn lighting off */
glDisable(GL_LIGHTING);
}

投稿者 robosheep : 2005年10月15日 12:46 | トラックバック

Starsその3

 移動速度を遅くしていたので気づかなかったのですが、処理落ちしていることが分かったので修正しました。他にもいくつか追加。

・ビルボード(ポリゴンが常に視点方向を向く)を実装して、カメラの角度を変えても星が同じく見えるようにしました。
・I/K/J/Lキーで上下左右にカメラの向きを変更できるようにしました。(進行方向は変りません)
・A/Sキーをなくして、PageUP/PageDownで加速/減速にしました。
・上下左右矢印キーも移動から加速/減速に変更
・GキーでFogのタイプを変更
・星の数最大数4万個、初期状態では1万個
・宇宙の範囲を変更し、手前にずらしました。(後ろを向いても星が見えるように)
・その他微調整

Stars03.zip


 ビルボードについてはとても面白いやり方をしているので、興味深いです。

M=
[a0, a4, a8, a12]
[a1, a5, a9, a13]
[a2, a6, a10, a14]
[a3, a7, a11, a15]

right = [a0,a4,a8]
up =[a1,a5,a9]

モデルビュー行列の一部を、目的のポリゴンの右方向ベクトルと上方向ベクトルにすることで、視点を向くようにしています。なんでこうなるかはいまいちわかっていません、ごめんなさい。

関連リンク:

Billboarding Tutorial:http://www.lighthouse3d.com/opengl/billboarding/index.php?billInt

Faster but not so easy:http://www.lighthouse3d.com/opengl/billboarding/index.php?billCheat2

投稿者 robosheep : 2005年09月19日 19:52 | トラックバック

星間遊泳その2

 ちょっと改良しました

lesson9501.jpg


改良点
・前のバージョンでは一定区間にしか星がなかったので、星がループして”宇宙の果て”をなくしました。(3次元球面?)
・星の色を実際のものに近くしました(まだ不完全)
・Tキーによる明るさを変更機能をなくしました
・星の大きさに幅を持たせました
・Fogを使用して、遠くにある星ほど暗くなるようにしました(分かりにくいですが)
・Aキー Sキーで加速、減速ができるようにしました
・その他、いろんな値を微調整
・星の最大数を10万個にしました(起動と終了が遅くなりました)

stars02.zip

投稿者 robosheep : 2005年09月18日 20:35 | トラックバック

星間遊泳

 QVICのサンプル用に作った試作OpenGLです。

lesson93ll01.jpg

 星を小さくして、数を多くしてみました、いい感じです。これを立体視で見れる環境にいる私は非常に幸せ者だなと思います。

 実際は、星と星の間の距離は目の間の距離よりもとても広く、しかもこんな速度だと相対論的効果が現れるので、このように見えることはありません。ありえない風景をCGで作ってるだけですが、子供の頃の夢の一つが叶うようで、とってもワクワクしてます。


 OpenGLの実行ファイルを置いておきます。星の数が多いので環境に合わせて3つほど用意しました。
星の数、最大5千個:stars01s.zip
星の数、最大1万個:stars01l.zipe
星の数、最大5万個:stars01ll.zip

操作方法は以下の通りです。
矢印キー上下左右:上下左右に平行移動
PageUp:後進
PageDown:前進
Xキー:星の数減少
Zキー:星の数増加
Tキー:光量UPのON/OFF

動かない場合や動作状況など教えていただければ幸いです。

関連リンク:

NeHe:http://nehe.gamedev.net/
Lesson09:http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=09

投稿者 robosheep : 2005年09月18日 16:28 | トラックバック

星のサンプルプログラム

 CAVE型VRシステムQVICのサンプルプログラムの試作品を作りました。とはいってもまだQVICで動かせるようにはしていません。OpenGLのコードをちょっと変えただけです。

lesson9201.jpg

 上下左右前後に移動できます。星がポリゴン一枚だとバレるので、まだ方向転換はできません。目標には程遠いですが、とりあえず。

これが元にしたサンプルプログラムです。

関連リンク:

NeHe:http://nehe.gamedev.net/
Lesson09:http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=09

投稿者 robosheep : 2005年09月17日 20:29 | トラックバック

QVIC(CAVE型VRシステム)のCPU

Xeon 3.2GHz Dual

ジオン?すみませんこれも知りません。(結構パソコン詳しくない・・・・。
とりあえずPC Watchの去年の記事を抜粋


〜一部省略〜
 64bit対応CPUとしてはすでにItanium 2が先行しているが、同社ではXeonは主に低価格で高いパフォーマンスを発揮するフロントエンドワークステーション、Itanium 2は基幹データベースサーバーや科学技術計算向けと位置づけている。
 29日に行なわれた製品発表会では、デュアルXeonシステムと、Pentium 4システムによるレンダリングパフォーマンスの比較デモが行なわれるなど、CG作成におけるデュアルプロセッサプラットフォームの優位性がさかんに強調された。  

 やはりこれもCGに関係してるようです。CGに強いCPUとOpenGLに強いビデオカード。詳しくない僕には最強のタッグに見えてしまいます。

関連リンク:
PC Watch:http://pc.watch.impress.co.jp/
PC Watchの記事、インテル、全面刷新を行なった新Xeonプロセッサ:http://pc.watch.impress.co.jp/docs/2004/0629/intel2.htm

投稿者 robosheep : 2005年08月03日 13:35 | トラックバック

QVIC(CAVE型VRシステム)のビデオカード

 QVICに使われているマシンのビデオカードはWildcat REALiZM 800だということが分かりました。前の記事で「詳しい説明は受けていない」と言いましたが、それでは面白くないので、QVICについて少しずつ調べいくつもりです。

 まずは描画の要、ビデオカードです。これの如何よって、実際に投影されるイメージの質がかなり上下するので、かなり重要なところです。これはWildcat REALiZM 800だということが判明しました。ん?Wildcat?・・・・・・知らない・・・・・・。しかし、たまたま一緒にいた同じ研究室の人が知ってました。ちょうどCGWORLD8月号で紹介されていたとか、しかもOpenGLに関してはかなり高性能だという話!!

 さっそくCGWORLD2005年8月号の記事を抜粋してみます。

 TE6は、3DLabsのグラフィックボード「Wildcat Realizm 800」のNEC版と考えればよい。グラフィックスプロセッサとして「Wild Cat Realizm」を2基搭載し、それらの負荷分散の最適化やバーテックスシェーダなどの機能を備えるVSU(Vertex/Scalability Unit)プロセッサを一基積むというハードウェア構成は同一だ。製品名がNEC独自のものになっているのは、ドライバソフトを同社が独自にカスタマイズしていることに因る。
 ビデオメモリは512MBで、これは512ビット幅のGDDR3バスで接続されている。また、描画命令やレンダリング時の頂点データなどをバッファリングする3DLabsの独自のテクノロジー「DirectBurst」用メモリが128MB実装されている
〜一部省略〜
 SPECviewperf 8.1と3DMark03によるベンチマークテストでは、このボードの特徴が現われた。OpenGLの処理を行なうSPECviewperfでは滑らかすぎるほどの高速な描画を行ない、高い性能を発揮していることがすぐにわかった。
 一方、DirectX9の処理を行なう3DMark03では、描画能力そのものは十分なレベルにあるものの、時折ぎこちない動きを見せることがあった。搭載しているグラフィックプロセッサがOpenGLの処理を得意としていることが、実際のテストからも明らかになったと言える。

 この記事はWildcat Realizm 800のものではなく、そのNEC版であるTE6のものですが、その性能はWildcatのものとほとんど変らないと思います。次回はこのビデオカードのさらに詳しい性能を書いていく予定です。

関連リンク;
CGWORLD;http://www.wgn.co.jp/cgw/top/cgwr.cgi

3DLabs:http://www.3dlabs.com/
Wildcat Realizm 800:http://www.3dlabs.com/products/product.asp?prod=293

投稿者 robosheep : 2005年08月01日 22:51 | トラックバック

今日はQVICの説明を受けました。

 今日は、大学に配備された高度3次元可視化システムQVIC(Quadrangular Variational Immersive Chamber)の説明を受けに行きました。もちろん見るのも初めてです。

 さて、システムの内容とか詳しい話に移りたいところですが、今日はあまり詳細な話は聞けませんでした。というのも、説明をしていただいた教授もまだまだ手探り状態らしく、一応サンプルプログラムが動く、という程度までしか進んでいないそうです。

 いろんな事情もあり、本格始動は8月中旬からになりそうです。それまではOpenGLを勉強するつもりです。

関連リンク:
CAVEの説明:http://www.cave.vt.edu/

投稿者 robosheep : 2005年08月01日 22:36 | トラックバック

CAVE型VRシステム

 研究でCAVE型VRシステム(以下QVIC)を使うことになりそうです。
 CAVEとは怒首領蜂などで有名なシューティングゲームのメーカー、ではなく小さな部屋のような形をしたVR(バーチャル・リアリティ)システムのことです。正面、側面2つ、床面の4つのスクリーンに、左右の目に対応する画像を交互に投影し、使用者は専用のメガネをつけます。これによってCGを立体的に認識することができます。

 現在はそのシステムのマニュアルなどを読んでいるところです。QVICはOpenGLに対応していて、専用のライブラリを使うと、ほとんど普通のOpenGLプログラムを作るように、CAVE用のシーンを作ることができます。マニュアルはCAVEの使用法とサンプルコードなどです。僕はOpenGLを触ったことがあるので、マニュアルを読んだ限りでは、思ってたよりも簡単に使えそうです。

 まだ見たことはありませんが、明日このシステムの説明を受けることになっています。CGは好きなので、今から非常に楽しみです。

関連リンク:
CAVEの説明:http://www.cave.vt.edu/

投稿者 robosheep : 2005年07月31日 16:06 | トラックバック