January 29, 2005

シーングラフについてメモ

GNU 3DKit
OpenSceneGraph
OpenSG
Open Inventor
NVSG
LAMP
Irrlicht

投稿者 Takenori : 05:45 PM | コメント (0) | トラックバック

December 25, 2004

ナビゲーションメッシュの導入

単純に、床のメッシュに対して、D3DXIntersectを使って、キャラクターの移動位置のY 1.0から Y -1.0へレイを飛ばして当り判定をすれば、移動範囲を制限できるかと思いきや、g_pMeshFloorがWriteOnlyを指定して生成時されていたため、D3DXIntersect が失敗を返していた。
そこで、ナビゲーションメッシュ専用のメッシュを作り、pMeshFloorと同じものをセット。
これでうまくいくと思ったけど、レイが当たらないと返ってくる。
なぜ?
g_pMeshFloorにテクスチャ座標を設定しているところでブレイクを張り、ポリゴンの座標を見ると、X-Y平面上にポリゴンが生成されていた。
これでは当たるはずがない。
でも、描画時はX-Z平面上に描かれている。
コードを追うと、どうやら描画前にトランスフォームされている様子。
そこで、ナビゲーションメッシュを生成時にトランスフォームすることにした。
トランスフォームは単純に、ポリゴンの各頂点座標をD3DXVec3TransformCoordで、g_pMeshFloorが描画される前に使われるマトリックスで変換するだけ。
でも、g_pMeshFloorが描画される前に使われるマトリックスはD3DXMATRIXA16とか言うやつで、D3DXMATRIXじゃないからだめと言われた。
D3DXMATRIXA16は、効率を上げるために16バイトでアライメントされたD3DXMATRIXだそうだ。 ( SSEとか用ですな。でも、これってDirectX9から追加されたのか? 前からあった? )
で、単純にD3DXMATRIXA16をD3DXMATRIXに代入して、それを渡すようにしたらコンパイルが通った。
レイの当り判定もうまくいった。
が、なぜかまったく移動できない。
IsOutOfBoundsを見ると、論理が逆だった。
関数名からしたら、領域外かどうかを判定するもののようだけど、気分的には領域内にあって移動できるかどうかを判定したいので、気づかなかった。
で、逆にするとうまくいった。
これで、とりあえず平面上は歩けるようになった。

次は、ちょっとg_pMeshFloorが描画される前に使われるマトリックス周りを追いたいところ。ナビゲーションメッシュを外部のファイルから読むためにも。
他にも、CTinyを少し汎用化したい。
徐々に汎用化していかないと。

投稿者 Takenori : 05:08 AM | コメント (0) | トラックバック

December 24, 2004

初期状態の変更

DWORD g_dwFollow = 0xffffffff; を DWORD g_dwFollow = 0; に変更し、1人目のキャラクターの斜め上視点が初期状態になるように変更。
最初にキャラクターが生成されるところで、pTiny->SetUserControl();として、ユーザーコントロールモードが初期状態になるように変更。
これで、起動したらすぐにキャラクターを動かせる状態になる。

移動できる範囲が狭いので、床のメッシュを生成しているところ ( g_pMeshFloorにメッシュを設定しているところ ) を探し、生成されるメッシュを大きくした。
D3DXCreatePolygon の3番目の引数を16にしただけ。
で、実行。
なんか、円盤形になった。移動させてみると・・・ あり? 移動範囲は変わらない。
コードを追ってみると、CTiny.cppのIsOutOfBoundsメソッドで判定している様子。
で、判定式は、if( pV->x < 0.0 || pV->x > 1.0 || pV->z < 0.0 || pV->z > 1.0 ) ・・・ 床を大きくしても移動範囲は変わらないはずだ。
まずはナビゲーションメッシュで移動範囲を設定できるように変更だな。

投稿者 Takenori : 08:35 PM | コメント (0) | トラックバック

元となるサンプルの選択とフォルダの移動

新PCに開発環境も設定できたので、徐々に3Dゲームを開発していくことにした。
で、まずはキャラクターを動かすためのサンプルとしてよさげな物を探す。
MultiAnimationが良さそうだ。
MultiAnimationなら、キャラクターの背後にカメラを設置した状態にし、ユーザーコントロールにチェックを入れると、キーボードでキャラクターを動かすことが出来る。
また、複数のアニメーションをサポートしていて、歩くと走るが入っている。
以上の理由から、MultiAnimationを元に変更を加えていくことにした。

まずは、Sampleフォルダから移動できるように、Commonにあるファイルをプロジェクトのあるフォルダの下にcommonフォルダを作り、プロジェクトが参照しているファイルをコピーした。
そして、フォルダを移動、ビルド。
するとコンパイルとエラー、プロジェクトにはないDXUTMesh.h と DXUTEffectMap.h もヘッダーファイルのみ必要なようだ。
後、プロコンパイル済みヘッダー ファイルを使用するから、プロコンパイル済みヘッダーを作成するに変更した。自動生成や、使わないではなぜかうまくいかなかった。
アイコンのリソースも、前のディレクトリ構成に依存しているので、MultiAnimation.rcを直接編集して、参照するアイコンをプロジェクト下のcommonフォルダのアイコンファイルを参照するようにした。
以上の変更によって、Sampleフォルダ下から移動したところでもビルドが通るようになった。

投稿者 Takenori : 08:21 PM | コメント (0) | トラックバック

December 07, 2004

続RAIDへのOSインストール

検索すると同様の症状に悩んでいる人を発見。
このページ
上述のページではGIGABYTE GA-8ANXP-D Rev2.0だが、GIGABYTE GA-8I925X-G Rev2.0でも同じだと思われるので、同じように試す。
まず、Intelのドライバページから最新バージョンのドライバとフロッピー設定ユーティリティの両方をDL。
フロッピー設定ユーティリティを使ってFDを作る。
マニュアル通りに、インストール途中でF6を押す。
ドライバの入力を促された画面で、FDを入れEnter。
以下の4つが出てくる。
Intel(R) 82801FR SATA RAID Controller
Intel(R) 82801FR SATA AHCI Controller
Intel(R) 82801ER SATA RAID Controller
Intel(R) 6300ESB SATA RAID Controller
この内、一番上のIntel(R) 82801FR SATA RAID Controllerを選択。
後は、そのままインストールを続けると・・・ きた! 以前止まっていた場所を越えてインストールが進んだ。
GIGABYTEめぇー。
ま、なんにせよインストールが進んでよかった良かった。

投稿者 Takenori : 01:12 AM | コメント (0) | トラックバック

新PCのセットアップ

新PCも届き、組み立ても終わったので、コードをつないで電源ON。
なぜかCPUファンが回っていない。
なぜ?
一度電源を切り、ケーブルを確認。
問題なさそう。再度電源を入れたら、普通に回った。
なんだったんだろう?
まあ、いいや。
で、BIOSの設定&RAIDボリュームの作成を行う。
作成が終わったら、インストールするOSのCDをMSDNの中から探す。
WinXP Pro SP1a。これだな。
SP2もあるけど、不評なのでやめておく。
で、プロダクトキーの取得方法を見る。
MSDNのサブスクリプションのページから取得するようだ。
Win2kまでは普通にCDに書かれているのに、WinXPは取得しないといけない。
面倒な話だ。
で、ログインしようとしたら.NET Passportになっていた。
いつの間にか統合されたようだ。
.NET Passportは以前メッセンジャーを使うために登録していたので、それを入力。
が、エラーメッセージが出てきた。
エラーメッセージは英語。いったんログアウトして、.NET PassportからMSDNのIDを追加をクリックするような内容のことが書かれている。
そのままログアウトしたら英語のページに飛んだ。
日本なので、日本語のページじゃないといけない気がしたから、日本語のページに戻ってそれらしきページを探す。
探してもないのでヘルプを見てみるが、.NET PassportにMSDNのIDを統合する方法がイマイチよくわからない。
もう一度エラーメッセージの画面を見てみる。
英語のページで手続きをする。
Fast Nameと書かれていたので、ローマ字で名前を入力したらエラーになった。
登録しているのと違うと書いているようだ。
漢字で入れてみる。
うまくいった!
でも、なんか釈然としないものが・・・ Fast Nameとか書かれた英語ページなのに漢字で名前を入れる・・・ 違和感ありありだ。

登録が成功してログインも出来たので、プロダクトキーの取得を行う。
CDをPCに入れ起動。
インストールが進むが、ハードディスクがないと言われる。
あれ?
マニュアルを読むとRAIDのドライバFDを作って、それを途中で入れないといけないらしい。
その通りにしてFD作成、ドライバを読み込ませるが、またハードディスクがないと言われる。
英語マニュアルやマザーボードのCD内のドキュメントを読んで、何通りか試すが全部ダメ。
なんだ、いったい何がいけないんだ。
RAIDボリュームにOS入れられないのか?
でも、マニュアルにはその方法の説明がある。
なぞだ。
ちなみにマザーボードはGIGABYTE GA-9I925X-G。
誰か教えてくれー。

仕方ない、明日いろいろと検索して試してみるか。

投稿者 Takenori : 12:29 AM | コメント (0) | トラックバック

November 30, 2004

Alias conductors program

3つのレベルがある。内容は、簡単に言うと以下のような感じ。

Conductor
いろいろともらえる。

SemiConductor
ペータ版の提供とテクニカルサポートがない。

Conductor Community
開発情報へのアクセスとAlias logoの使用ができるが、開発ツールやテクニカルサポートはない。

つまり、SDKを手に入れるには、SemiConductorレベルじゃないといけないってこと?
料金は、Conductor $1999, SemiConductor $999, Conductor Community ただ。
10万強ですか。
それは辛い。
後、申し込み用紙にはすごくいろいろと書かないといけない上に、約款も長い。
なんか、FBX SDKどうでも良くなってきたなぁ。
どうしても欲しい時は、MayaとMotionBuilderを買ったほうがいいかも。
一番安いので、Maya ¥266,000、MotionBuilder ¥120,000もするけど。
計約40万。高い。。。
これはちょっと・・・

投稿者 Takenori : 01:54 PM | コメント (0) | トラックバック

FBX SDK返答

---- 以下引用
Sorry for the slow response on your inquiry. We are currently working on integrating the FBX and Open Reality SDK products into the Alias Conductors third party developer program. http://www.alias.com/eng/partners/index.shtml
This transition is not complete yet but should be soon. I would be very happy to provide you with an evaluation copy of the FBX SDK as soon as it becomes available.

I'm also wondering if you can also supply me with some background details regarding your interest in developing for or with the FBX SDK.
---- 引用終わり

要約すると、今統合中、もうちょっとしたらできるから待っとけ。って、感じでしょうか。
で、文中にあるHPを見ると、pdf読んで、メンバー登録の申し込みをしないといけない様子。。。
なかなかSDKもらえないなぁ。

投稿者 Takenori : 01:34 PM | コメント (0) | トラックバック

November 27, 2004

Xファイルが持つ情報

少し調べてみたのでメモ。
Xファイルは、回転、スケール、位置、行列の複数のキーによるアニメーションが可能。
アニメーションはフレームに設定される。
フレームは親子関係構造を持ち、行列とメッシュを持つことが出来る。
スキンウェイト情報は関連するフレームと、その影響を受ける頂点を持つ。

つまり、Xファイルを使うば、ボーンアニメーションと単に物体が動くアニメーションが可能。
ライトやカメラ、モーフは含まれない。
ただし、独自のデータ型が定義出来るので、それによって補うことは可能。

投稿者 Takenori : 10:55 PM | コメント (0) | トラックバック

mikotoでアニメーション

mikoto楽しいです。
とりあえず、歩くアニメを付けてみたけど、楽しい。
プログラム面倒くせーなーと思ってみたり。
でも、やっぱりゲーム中で使いたいので、システムは作らないといけない。
早く新マシンのパーツ届かないかなぁ。

投稿者 Takenori : 10:51 PM | コメント (0) | トラックバック

November 26, 2004

FBXからXファイルへ

FBXからXファイルへする方法をいろいろと調べたが、結局よくわからない。
MotionBuilderの体験版を落としてみても、Exportの項にX形式はない。
さて、どうしたものか?
FBX SDKか、File Formatの仕様書があれば、作れなくもないが、面倒臭い。ってか、なんかあるでしょう?
やっぱり、MayaからXにするのが筋なんだろうか?
よくわからない。

投稿者 Takenori : 10:44 PM | コメント (0) | トラックバック

Mayaのフリーバージョン

Maya Personal Learning Edition 6ってのがあって、どうやらフリーの様子。
でも、商用利用は出来ない。
つっても、私に商用に値するモデルとかが作れるわけないので、お遊びとしてはこれで十分だろう。
で、System Requirementsを見てみると・・・ 512MB RAM!?
そんなに積んでないっす。
これは、しばらく動かせないなぁ。

投稿者 Takenori : 10:28 PM | コメント (0) | トラックバック

FBX形式

モデルとかアニメは何で作るのか? って話しをしていたら、最近はFBX形式が主流らしい。
どうやってFBX形式からXファイルへ持っていくのか少し調べてみたがよくわからない。
Alias FBXにFBX SDKってのがあるみたいなので、欲しいと思ったが、詳しくはメールで問い合わせとか。しかも、英語っぽい。
ちょっと躊躇したが、メールを送った。
でも、モデルもアニメもXファイルでもらえるのなら、別にSDKとかなくていいんじゃ・・・

投稿者 Takenori : 10:22 PM | コメント (0) | トラックバック

October 12, 2004

DirectX9で遊ぼうとする

3DのPRGのシステムを作ろうと思って、まずはDirectXのスキニングサンプル(人が歩いているやつ)を改造して、自分で動かせてナビゲーションメッシュで動きを制限できるようにしようと考えたのだが・・・
3Dまともに動かないっす。
とりあえずサンプルをビルドして動かしたら、ハードウェアがないとかでリファレンスドライバで動く始末。
リファレンスドライバはソフトウェア処理だから・・・1FPSも出ていない。
そういや、開発用マシン買うときにリアルタイム3Dのことはあんまり考えてなかった。
まあ、最近リアルタイム3Dでゲームを作るぞと思って、買い替えを考えていたから大丈夫といえば大丈夫だけど、しばらく3Dのプログラムをいろいろといじって遊べないのは痛い。
そこで、もう一台のマシンで動くかどうか試してみることにしたが、エラーが出て起動しなかった。
もう一台のマシンはGeForce2 MXなので、ある程度は動くと思うのだが、ドライバのバージョンが古いせいだろうか。
ドライバのバージョンを上げたいのだが、このマシンはテレビを見るのにも使っていて、以前に新しいドライバに変更したらテレビを見ることが出来なくなって、古いのに戻した記憶がある。
やはり、新PC待ちかなぁ。

最近、テレビをPCで見るのは少々きつく感じてきたので、これの購入を検討中。
と言うか、まだ買えないので、買えるのを待っている状態。
出たら、即買いかも。
これを買えば、テレビを見ているマシンのドライバを新しく出来るので、このマシンを使って動かせなくはないかな。

どっちも、ああ、なんてこったって感じだな。

投稿者 Takenori : 04:39 AM | コメント (0) | トラックバック

September 06, 2004

Lightflowのファイル

Lightflowのシーンは独自のファイルフォーマットがあるようだ。
それも、アスキー形式とバイナリ形式がある。
シーンプロキシをLfASCIISceneProxyにすれば、指定したストリームにアスキー形式でシーンを出力してくれる。
当然、そのファイルをレンダリングさせたり、そのファイルからシーンを構築できたりする。
つまり、I/Fがなくても直接このスクリプトを書けばレンダリングさせることが出来る。でも、それはかなり面倒くさい。やっぱり、I/Fは必要だ。
アレ?ということはこの発見は意味ないか。
ま、ネットワークレンダリングの時に役立つぐらいかな。
でも、なぜか少しI/Fのイメージがわいた。

投稿者 Takenori : 06:42 PM | コメント (0) | トラックバック

September 05, 2004

I/Fなどについて悩む

一般的には、レンダーツリーとか言われるものが使われるようだが、どこまでツリーで表現しているのだろうか?
マテリアルの属性や位置はツリーで表しやすいが、特定のオブジェクトにだけライトを当てたい場合などはステートマシンのように設定できる方が望ましい。丸描いてこの中にあるオブジェクトには有効で、こっちの丸の中にあるオブジェクトにはこれで、両方が重なっているところにはこれをといった具合だ。
というか、そんな使い方はしないのかな?
あまりにステートマシンの性質が頭の中にあるせいでそう言う発想になってしまっているのだろうか?
そもそも、Lightflowでそう言うことが出来るのかどうかまだよくわかっていないので、そっちを先に調べるのが先決だな。
ま、今日は他のことで時間がなくなってしまったので、何げに考えていたことを書いただけなのだが。

投稿者 Takenori : 06:41 PM | コメント (0) | トラックバック

September 04, 2004

LightflowのI/Fをまとめる

Lightflowの各パラメータをクラスにまとめる。早く、I/F作って、ごりごりレンダリングさせてー。まあ、まずはLightwaveのデータをレンダリングできるようにしよう。で、サーフェイスとかパラメタいろいろいじって楽しむんだー。(子供のように楽しげに話す) かっけーって言うようなものを作るっすよー。
 でも、どんなI/Fにするかが問題だな。まずはファイル喰わせてレンダリングするようなのを作りたいと思っているけど、その次はパラメタいじってレンダリングしてって言う作業を手軽に出来るGUIが欲しくなってくるかも。最終目標はシーンをごりごりいじれるツールだな。後ネットワークレンダリングも。あー、わくわくしてくる。
 後、Yさんに教えてもらったのだがXSIがかなり安くなったとか。一番安いのは8万円弱。ちょっと買ってみたい気もする。でも先立つものが。。。お金入ったらまず豪速新PCを買いたいしなぁ

投稿者 Takenori : 06:40 PM | コメント (0) | トラックバック

September 03, 2004

LightflowをC++から使おうと試す

DLし展開して出来たinlude の下にチュートリアルのソースをコピーしたソースファイルを置き、コンパイルする。
インクルードファイル内でエラー。
なんか、インクルードファイルがWWWの中にいるとか、仕方ないのでWWWをLightflowに置換する。
後、インクルードファイルをすべてVCのインクルードの中のLightflowへコピーする。
そしたら、iostream.hがないとか言われる。
iostreamに書き換えて、using namespace std;も追加する。
そしたら、iomanip.hがないとか言われる。
マニピュレーター用? たぶんいらないと思うのでコメントアウト。
で、とりあえずコンパイルは通るようになった。
でも、リンク時にいろいろとないと言われる。
どうやら、/link Lightflow.libが必要な模様。
で、やっとメイクできた。
実行したらエラー。
C++で組んでもやっぱり環境変数の設定はいるのね。
LIGHTFLOWPATH=C:Lightflow
LIGHTFLOW_SE_MEMORY=32000
LIGHTFLOW_VE_MEMORY=32000
PATH=%LIGHTFLOWPATH%
を設定。で、実行。
tgaイメージが出来た。GIMPで読める。
Lightflow.libも面倒なので、VCのlibフォルダにコピーしてしまった。

投稿者 Takenori : 11:38 PM | コメント (0) | トラックバック

Total : Today : Yesterday :