トップページgamedev
987コメント302KB

DirectX総合スレ (Part9)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2009/02/11(水) 05:00:58ID:viN0kzG2
言語はC++

■過去スレ

DirectX総合スレ
Part 8: http://pc11.2ch.net/test/read.cgi/gamedev/1205306118/
Part 7: http://pc11.2ch.net/test/read.cgi/gamedev/1179516297/
Part 6: http://pc11.2ch.net/test/read.cgi/gamedev/1163691532/
Part 5: http://pc8.2ch.net/test/read.cgi/gamedev/1157727402/
Part 4: http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
Part 3: http://pc5.2ch.net/test/read.cgi/gamedev/1105333209/
Part 2: http://pc5.2ch.net/test/read.cgi/gamedev/1095863432/
Part 1: http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
07817552009/09/30(水) 03:34:42ID:Bg91gg+z
>>780
ありがとうございました。

すみません、メンバって言葉に反応してピリオドを使ったミスでした orz
すぐ下でOptimize()でアロー演算子使って動いてるのに気付かず;
失礼しました orz
0782名前は開発中のものです。2009/10/01(木) 23:58:42ID:LIkPTtwl
すみません、3D地面とキャラクターの衝突判定についてなのですが、
距離計算(内積)と反映までは出来たのですが、
1.衝突判定の処理軽減(判定対象の絞込み)にはどういうパターンが有るのか?
2.頂点と法線 どちらで判定すべきなのか?
3.内側にめり込む事の回避方法(尖っているポリゴンの境目からや処理落ちで等の)

これらの疑問でどう作れば良いかイメージができず困っています。
基本地面を歩きまわる軽いアクションゲーなのですが、
定番の方法などが有れば教えて頂けると幸いです。
0783名前は開発中のものです。2009/10/02(金) 00:11:29ID:xaTOFVmz
どういう地面かによるけど
当たり判定取りたいキャラの真下の高さを取得してそれと当たりを取るのが最低限だろう
0784名前は開発中のものです。2009/10/02(金) 00:18:49ID:z1JLtZk6
>>782
絞込みには、そっちには4分木が有効だろう。ちょっと敷居は高いが。
http://marupeke296.com/COL_2D_No8_QuadTree.html

後は境界球の作成から始めればいいんじゃない?
0785名前は開発中のものです。2009/10/02(金) 09:26:28ID:/niBMC9g
>>783
そうですね、今は数段階の判定対象の絞り込みで軽減をしてみようかと思います。
ありがとうございます。

>>784
ありがとうございます。4分木・・今はキツいですが、いずれは勉強して取り込みたいと思います。
>境界球
なるほど。点じゃなくて立体で判定すればめり込み難そうですね。 試してみようと思います。
0786名前は開発中のものです。2009/10/07(水) 22:53:27ID:1OGUvk7S
すみません
プレイヤーの数倍のサイズの敵への攻撃の衝突判定をする場合
1.円柱やボックスを大まかに中心座標から置いてそれを判定する
2.頂点数を減らした透明モデルを一緒に動かして、その面から外積(?)で判定する
この2つが思いつくのですが、
「低負担でそこそこの衝突判定」をする方法や理論が有れば助言頂けませんでしょうか?
0787名前は開発中のものです。2009/10/07(水) 22:56:56ID:GxNoKgMb
当たり用の小さい球をたくさん敵につける
0788名前は開発中のものです。2009/10/07(水) 23:06:45ID:1OGUvk7S
>>787
なるほど・・低負担でそこそこを楽に実現できそうですね。 ありがとうございましたっ
0789名前は開発中のものです。2009/10/12(月) 14:26:14ID:puTlDpxR
WindowsへDirectX 9 と10を両方インストールして
場合に応じて切り替えることはできますか?
0790名前は開発中のものです。2009/10/12(月) 16:22:18ID:hQMoF6vn
DirectXには下位互換があるんだから10をインストールすれば9も使える
0791名前は開発中のものです。2009/10/12(月) 17:21:34ID:YdYmTdmP
それを言うなら上位互換
0792名前は開発中のものです。2009/10/12(月) 21:22:38ID:rJ16+euJ
_ASSERT と assertって同じ?別物?
定義を見ると違うっぽいので違うのだろうけど、どう使い分けるの?
0793名前は開発中のものです。2009/10/12(月) 21:34:24ID:AjxFbh57
>>789
そもそもOSに標準搭載されているのでインストールする必要性が無い。
0794名前は開発中のものです。2009/10/12(月) 21:37:57ID:yXQZI7v6
>>789
SDKの話?
0795名前は開発中のものです。2009/10/18(日) 10:52:06ID:lUEbzDrT
頂点バッファをD3DPOOL_DEFAULT、
インデックスバッファをD3DPOOL_MANAGEDで描画して
私のビデオカードでは問題ないようですが、このようなバッファの運用は
一般的ですか?
0796名前は開発中のものです。2009/10/18(日) 19:50:42ID:lUEbzDrT
普通だよね?
0797名前は開発中のものです。2009/10/18(日) 19:56:21ID:gH5KDL3H
別に変なことじゃないだろ
0798名前は開発中のものです。2009/10/18(日) 22:08:31ID:lUEbzDrT
>>797  thx
frequency設定して別ストリームから合成描画する
2つの頂点バッファを別々の設定でプールしたら
バグッたんで、色々気になっていました。
0799名前は開発中のものです。2009/10/19(月) 12:59:47ID:7jM4tM9s
すみません
DirectInputでマウスのボタン操作を取得してるんですが
「マウスボタンが押されっぱなし」の状態を安全(確実)に取得する特別な方法は有るでしょうか?
変数で操作の取得毎にフラグをひっくり返し続けるだけでも
大丈夫なものなんでしょうか?(外部ソフトの負荷で処理落ちして逆さになったりしないか怖くて・・)
0800名前は開発中のものです。2009/10/19(月) 13:09:07ID:TPHZOR5g
マウスを扱うならWin32APIの方が確実
0801名前は開発中のものです。2009/10/19(月) 13:34:42ID:7jM4tM9s
>>800
そうなんですね。ちょっと調べてみます。
ありがとうございました。
0802名前は開発中のものです。2009/10/19(月) 16:46:13ID:ChZNl820
>>799
逆さになるって意味が分からんのだが。
ボタンが押されたときと離されたときで、異なる値になるんだが。
0803名前は開発中のものです。2009/10/19(月) 21:14:06ID:qZo3qR1P
男女男男女ですね
ちがうわー

ってことだろ
0804名前は開発中のものです。2009/10/20(火) 14:48:31ID:K18Q7LH0
嬲嫐か
0805名前は開発中のものです。2009/10/21(水) 20:20:52ID:7NIJVQVY
表示された3Dモデルをクリックやオンマウスする事で
情報を表示できる様にしたいのですけれど、

・D3DXComputeBoundingBox()でバウンディングボックスを生成
・その各頂点からD3DXVec3Project()でカメラ(2D)座標にする
↑の方法で合ってるでしょうか?
D3DXComputeBoundingBox()が上手く行かず合ってるのか心配に。。
0806名前は開発中のものです。2009/10/21(水) 22:39:00ID:c4Loyn9X
>>805
まあ、それで間違ってはいない。
でも俺なら、ワールド座標系で
レイを飛ばしてボックスと当たり判定をするな。
08078052009/10/21(水) 23:26:05ID:mh4+7PPm
>>806
合ってはいるんですね。ありがとうございます。

>ワールド座標系で
>レイを飛ばしてボックスと当たり判定
レイが何なのかわからず利用法がわかりませんが、
ベクトル計算を省けそうでこちらの方が軽く済みそうな予感がしますね・・。
ちょっと調べてみますが、少しヒントを頂けるとありがたいです。
0808名前は開発中のものです。2009/10/21(水) 23:40:44ID:Hv8xs2nw
ヒント?ググレよ
08098052009/10/21(水) 23:48:28ID:mh4+7PPm
あー・・ググっててなんとなくおっしゃってる意味が解りました。
失礼しました。
やはりなるべく今の自分にできる程度の事でやった方が良さそうです;
ありがとうございました。
0810名前は開発中のものです。2009/10/23(金) 16:44:43ID:IL/cHHNL
ライン描画にもインデクスって使うもん?
0811名前は開発中のものです。2009/10/23(金) 18:28:09ID:8sTB1nJH
好きにするよろし
0812名前は開発中のものです。2009/10/23(金) 20:20:24ID:IL/cHHNL
>>811
一般にどっちが高速か知ってる人がいたら押して欲しいっす。
自分の環境だけじゃ何とも言えないからね・・・
いや、マイナーなビデオカード使ってるわけじゃないし、
自分の環境だけでいいのかもう・・
0813名前は開発中のものです。2009/10/23(金) 20:31:04ID:lrmVTsSK
自分の環境だけじゃ何ともいえないというのなら、
自分でテストプログラムを作って、他の人に試してもらえばいいだろう。
0814名前は開発中のものです。2009/10/23(金) 23:47:41ID:TWwx0Wxw
ラインで何書くのかしらんが、共有頂点少なくてLINESTRIPで書けるなら
インデックスバッファなんぞ逆に無駄になるだろ
0815名前は開発中のものです。2009/10/24(土) 02:10:48ID:J6eJtCM1
>>812
場合によるからその都度測るしかない
これだけ覚えておけ
な?人に聞く要素ないだろ?
0816名前は開発中のものです。2009/10/24(土) 11:36:54ID:h8+T+axk
>>813
なるほど・・その時にはよろ
>>814
頂点を共有しないバラバラの線分を多数書きます
>>815
うんまぁ、でも一般的にindex使ったほうが早いみたいだよね。
HELPにもindexがあればデバイスは内部でキャッシュを最適化するので
高速になります・・・みたいな事書いてあったし、ネット上の話題でも
index使っとけばOKみたいな常識があるように感じました。
その常識が線分的にはどうなのか、線分描画に通じている人がいたら
教えて欲しいと・・・
0817名前は開発中のものです。2009/10/24(土) 11:56:24ID:dY+hMWRQ
だからごちゃごちゃ書き込んでいる暇があるなら、
自分の条件設定通りのテストプログラムをとっとと作れ。
怠けようとするな。
0818名前は開発中のものです。2009/10/24(土) 12:12:16ID:J6eJtCM1
>>816
だから色々そういう要素がありすぎてわかんねぇの
そういう要素同士がかちあったときにそれのどっちがより
その場面において早くなる要素となりうるのか?
っていうのは人間の脳みそで考えるより絶対にやったほうが早いの
0819名前は開発中のものです。2009/10/24(土) 14:56:33ID:vyAvDCV4
>>816
頂点を共有しないバラバラの線分にindexを使っても意味がないだろう。
何のためにindexがあると思っているんだ。
頂点を再利用しなきゃ負荷が増えるだけだし、その頂点キャッシュも
16頂点分くらいしかないから、考えて並べないと意味がない。
0820名前は開発中のものです。2009/10/24(土) 17:15:26ID:h8+T+axk
>>819
>その頂点キャッシュも16頂点分くらいしかないから、考えて並べないと意味がない

なるほど・・indexバッフアァによるキャッシュの効率化って、そういう意味でしたか・・。
確かに重複する頂点がないとキャッシュの存在意義そのものがないですね。
良く分かりました。ありがとうございました。
0821名前は開発中のものです。2009/10/25(日) 15:30:56ID:2NVH14R0
すみません
複数のメッシュから、オンマウスしたメッシュ情報を表示する仕組みを作っているのですが、
その処理方式をどうすべきか悩んでいます。
1.普通に全対象をチェックして、ヒットした中から距離が最小の物を選ぶ
2.距離順にソートして1つヒットしたら処理を終了する

最初は2でやろうと思ったのですが、下手にソートした方が重い気がして来ました。
対象の数は多くてせいぜい200と言った所です。
1と2、どちらの方が良いでしょうか?
0822名前は開発中のものです。2009/10/25(日) 16:24:59ID:KXqoI6mx
両方試して軽い方を利用すればいい。
0823名前は開発中のものです。2009/10/25(日) 16:56:12ID:VGfJF/53
>>821
そもそもデカイフィールドなんかで描画する物体を絞り込むときどうしてるの?
ちゃんとクリッピングしないとダメだよね?
その仕組みを使えばいいんだけどどうだろうか?
0824名前は開発中のものです。2009/10/25(日) 18:06:54ID:2NVH14R0
>>822
なるほど。とりあえずちょっといじって1を完成させるとします。
2はmapを使うか他の方法か・・考えてみます。

>>823
まだ必要な機能が揃ってない状態でして、遠すぎるメッシュの除外に
その絞込み、クリッピングをどうする(作る)か考えていました。
その仕組みによってはそれを利用できるんですね。

絞込みの方法は殆ど何も知らないので思いつく手段が少ないですが・・
ちょっと色々と調べてみようかと思います。
クリッピングというワードを頂けたので検索は捗りそうです。

ありがとうございました。
0825名前は開発中のものです。2009/10/25(日) 18:45:55ID:mVDdBrly
ゲームでは無いのですが、DirectX7 や 9 で出来た
V-syncを ON にしたプログラムを Acer の Aspire one D250 や
Dell の Vostro1400 で走らせると、モニタのリフレッシュレート
は60Hzなのに62fpsを示すのですが、これは仕様ですか?
このような経験ありますか?
0826名前は開発中のものです。2009/10/25(日) 18:56:36ID:8vpdtFyX
DirectXのVSYNC待ちは基本的には中でtimeGetTime()をまわして同期取ってるはず。
timeBeginPerido(1);とかで精度を上げておくとVSYNCの精度もあがったりするフェイク。
0827名前は開発中のものです。2009/10/25(日) 19:00:59ID:1KM9hN57
>>826
よくそういう嘘を堂々と書けるなぁ、と感心する。
0828名前は開発中のものです。2009/10/25(日) 19:22:35ID:8vpdtFyX
ふぅ。世界は広いな。

ttp://msdn.microsoft.com/ja-jp/library/bb172585(VS.85).aspx

解説 
全画面モードでも、リフレッシュ レートまたはスワップ エフェクトとは無関係に
D3DPRESENT_INTERVAL_IMMEDIATE をサポートすることにより、
ウィンドウ表示モードと同様な使用法がサポートされます。
D3DPRESENT_INTERVAL_DEFAULT では、
既定のシステム タイマーの分解能が使用されます。
一方、D3DPRESENT_INTERVAL_ONE では timeBeginPeriod を呼び出し、
システム タイマーの分解能を拡張します。
これにより、垂直同期の品質が改善されますが、処理に時間が少し多くかかります。
いずれのパラメーターの場合も、垂直同期が試行されます。

0829名前は開発中のものです。2009/10/25(日) 21:03:31ID:Ds+pdNI8
仮にフェイクでも2.78e-4secもずれるだろうか
0830名前は開発中のものです。2009/10/25(日) 22:27:26ID:8vpdtFyX
timeBeginPeriodしないとありえないくらいずれるじぇ。
08318252009/10/25(日) 23:52:43ID:mVDdBrly
お返事ありがとうございます。

timeBeginPeriod(1) は入っていました。
GetRasterStatus で D3DRASTER_STATUS の InVBlank を調べて、
D3DPRESENT_INTERVAL_IMMEDIATE で Flip をしても 62fps
(61.5〜62.5fps)になりました・・・。
0832名前は開発中のものです。2009/10/26(月) 00:11:16ID:A8tUA/hQ
カザミスのがえげつないイメージ
ビューネイのときは上層もやるので露骨な超絶自分勝手コマンドは自粛してるような?
0833名前は開発中のものです。2009/10/26(月) 00:12:33ID:A8tUA/hQ
すみません、誤爆しました
0834名前は開発中のものです。2009/10/26(月) 01:48:03ID:DkkQCg0D
なんだか平気で、timeBeginPeriod(1)とか言っているけれど、
timeBeginPeriod は失敗する可能性があるんじゃないか?
環境が分からないなら、1から順番に成功するまで数値を増やして行くべきでは。
それとも昨今では1で必ず成功することが保証されているのかな?
0835名前は開発中のものです。2009/10/26(月) 01:49:22ID:DkkQCg0D
とおもったけど、そういや、最小分解能を取得するメソッドがあったような気がする。
ずっと昔、それ使ってtimeBeginPeriodした覚えがある。
0836名前は開発中のものです。2009/10/26(月) 07:22:57ID:FnEHWGR3
timeGetDevCapsなんとかだった気がする
間違ってたらごめんねッ☆
0837名前は開発中のものです。2009/11/10(火) 19:25:25ID:0PipEZmS
すみません。3Dゲームで最前面に
下の方法で2D情報を表示させています。
------------------------------------------
IDirect3DVertexBuffer9* pVertex; を
pVertex->Lock() ⇒ memcpy() ⇒ pVertex->Unlock()
------------------------------------------
しかしこれをあまり高頻度で呼び出すと
強制終了をよく起こしてしまいます。

IDirect3DVertexBuffer9* の内部数値に触らず、ポリゴンのように
描画位置を指定して変える方法は有るでしょうか?
0838名前は開発中のものです。2009/11/10(火) 19:52:02ID:vyh984Xi
>>837
おまえVertexBufferの中に入れてるのが変換済み頂点なんだろ?
変換済みでない頂点バッファに変えてZBufferをOFFにして扱ってみな。それでいける。
ただし、座標軸が3Dの物に変わるから、2Dとの位置合わせ用の行列を作れ。
0839名前は開発中のものです。2009/11/10(火) 20:09:03ID:PeiW8ICh
高頻度っていっても、例えば120FPS程度でも
負荷が原因で落ちるってのは考えにくい。
やっぱ、アンタのバグのせいじゃないの?
0840名前は開発中のものです。2009/11/10(火) 20:18:09ID:g+Xnock5
>>837
Lock〜Unlockなんて何億回やろうと普通は問題ない。
memcpyの引数に誤りがあってバッファオーバーランしてるか、
他の部分に問題があるんだろう。
0841名前は開発中のものです。2009/11/10(火) 21:33:19ID:0PipEZmS
>>838-840
ありがとうございます。Lock Unlock頻度は全く問題ではないんですね。
どうやらLockの引数に問題が有る様子なので、
徹底的に調べてみます。ありがとうございました。
0842名前は開発中のものです。2009/11/13(金) 00:18:47ID:3djEHC/9
http://marupeke296.com/DS_No2_GetSoundDataFromWav.html
ここの最後に「wavファイルを分割して読み込む」と書いてありますが、よく分かりません
ひとつの大きなwavファイルを分割して再生する場合、
セカンダリバッファを2つ作って交互に再生するということですか?
その場合、2つのバッファの再生を連続して行うような方法があるんでしょうか?
0843名前は開発中のものです。2009/11/13(金) 03:13:58ID:ZFKFFySQ
それ書いたやつに聞けよ
そのサイトに気持ち悪いくらい親切な掲示板あるだろ
0844名前は開発中のものです。2009/11/13(金) 04:41:24ID:3djEHC/9
そうしまふ
0845名前は開発中のものです。2009/11/16(月) 17:25:18ID:diIVgWsU
ゲームを配布する際にDirectXを同梱しようと思っているんですが
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=0cf368e5-5ce1-4032-a207-c693d210f616&DisplayLang=ja
でダウンロードしたやつをそのままゲームとかと一緒にDVDなりに焼いて
配布しちゃう感じで大丈夫ですか?一応ネット無し環境を想定しての手なんですが・・。
LICENSEの表示?みたいなのとかこのファイルは入れとかなきゃいけないとか
そういうのってありますか?教えてください!
0846名前は開発中のものです。2009/11/16(月) 21:38:05ID:oxxh0iNO
SDKのDirectX End User EULA.txtをよく読め
08478452009/11/17(火) 01:41:45ID:UENLEXbc
>>846
とりあえず勝手に入れて勝手に配布しとけ。
そういう風に読み取りました。
0848名前は開発中のものです。2009/11/17(火) 01:48:22ID:S6mR9wDe
ひさしぶりに来たんだがウインドウズ7が出てDiretXが11になったんだっけ?
去年くらいにはまだ9でいい、10は11の練習の奴だけやってろとか言ってたが
結局みんな11始めたの?
0849名前は開発中のものです。2009/11/17(火) 01:59:22ID:LKRM1A99
やべー9前提でレスしてたー(棒読み
0850名前は開発中のものです。2009/11/17(火) 02:10:34ID:1rtyKNW8
ビルドする度にソースごとに
>(一部略)directx sdk (april 2006)\include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
この警告が出てどうにかしたいのですが
pragma等に頼らず、正しいやり方でこの警告を無くす手段って有りますでしょうか?
0851名前は開発中のものです。2009/11/17(火) 08:20:43ID:IBcOvj6C
触ってる人は既に11も触ってるだろ。
次世代のXBOXやPS4あたりがAPIとしては
DirectX11世代のものになる可能性は高いし。
0852名前は開発中のものです。2009/11/17(火) 17:53:43ID:3uz8OXAC
>>850
読めるとおりだろ・・・
#define DIRECTINPUT_VERSION 0x0800

#include <dinput.h>
する前に定義するんだ。
0853名前は開発中のものです。2009/11/17(火) 18:38:53ID:e3g+2xDD
同じDirectX9のSDKでさえリリースによって書き直しが必要で、
古いSDKに戻したくらいなのに、11なんてトンでもない!
てか完成してもヴァージョンアップが予想されるのに、
複数のDirectXに対応しろだなんて正気の沙汰じゃない。
うん、互換性について調べもせずに妄想でレスしてるw
0854名前は開発中のものです。2009/11/17(火) 22:40:05ID:7QKLzCJO
>>852
再定義の警告が出るのが少し不安ですが、見やすくなりました。
ありがとうございました。
0855名前は開発中のものです。2009/11/17(火) 22:53:09ID:7QKLzCJO
初歩的な質問ですみません。
地形の衝突判定を作ってる最中なのですが、
面法線と頂点法線にはどんな違いが有るのでしょうか?
0856名前は開発中のものです。2009/11/17(火) 23:05:51ID:IBcOvj6C
面に対する法線か、頂点に対する法線かの違い。
0857名前は開発中のものです。2009/11/17(火) 23:11:06ID:cZtszoxY
なるほどぉ
0858名前は開発中のものです。2009/11/18(水) 00:00:13ID:rCZl90/m
>>856
さほど違いを気にする必要など無いのですね。
頂点で作ってみます。ありがとうございました。
0859名前は開発中のものです。2009/11/18(水) 00:12:55ID:MtXsIRTw
どういう作りをしてるかによるんだろうけど
当たり判定ってポリゴン面とそれに対する何かで当たりを取るわけだろ
それなら法線はその面がどの方向へ傾いてるかって意味になるわけで
当然面法線を使う
0860名前は開発中のものです。2009/11/18(水) 05:05:28ID:PJXxgKQw
>>859
面法線を使うのですね。
実現する為の計算式も見つかり何とか最低限作れそうです。
処理軽減について真剣に勉強しないと不味そうな感が有りますが・・。
ありがとうございました。
0861名前は開発中のものです。2009/11/21(土) 11:46:45ID:1bI6/PMK
DX10のVGAでもWDDM1.1になるとおもったらちがうんだな
DX11はなるからWDDMもなるとおもってた
0862名前は開発中のものです。2009/11/21(土) 11:52:26ID:RlrDVb4A
>>861
日本語が不自由だと日常生活も大変そうですね。
0863名前は開発中のものです。2009/11/21(土) 23:02:30ID:L8AUPNFH
単に文語と口語を混同してるんじゃないの。
0864名前は開発中のものです。2009/11/22(日) 10:58:04ID:FAevzJuI
ゲームを作りたくて取り掛かったものの、いろいろと分からないことがあるので質問させてください。
アウターワールドという、SFCで出た横スクロールアクションゲームがあるのですが↓
http://www.youtube.com/watch?v=LoOsXCDyASE&feature=related
このような立体的でぬるぬるした、大味な表現はどのようにすれば可能なのでしょうか?
ポリゴンを作って動かしたのをあらかじめレンダリングしておいて、それをドンキーコングみたいに、
2Dのアニメーションに置き換えてるのかな?と最初は思っていました。が、Wikiによると、

http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%A6%E3%82%BF%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%AB%E3%83%89
>本作の特徴である、2Dポリゴングラフィックや滑らかなモーションは、近年において馴染みのある3Dポリゴンやそれを動画化したムービーではなく、座標変換済み頂点設定を使用した頂点フォーマット2Dポリゴンを、リアルタイムで演算し描写させると言う手法

だそうです。
僕もこのやり方をやってみたい(深海を舞台とした横スクロールアクションゲームなので、
いろいろな光の演算をリアルタイムでやりたいのです)のですが、上で言っている原理が
いまいち理解できません。要するに、紙の上に半立体のポリゴンの物体(Z軸が画面垂直
方向(奥行き)を向いてあるものの、本格的な3Dのような大げさなものではなく、
深度値程度の簡単な値しか取らないような)を乗せて、その頂点を動かし、
その移動までの物体形態をコンピューターで補正させてるってことでしょうか?
あと、そのような複雑な計算をC++で可能ですか?さきほどポリゴンの明度・色を計算
するプログラムをテストしてみたところ、ポリゴンを35枚まで動かすのが限界でした。
ただ単に僕の光の演算のプログラムが悪いのでしょうか?
0865名前は開発中のものです。2009/11/22(日) 11:02:48ID:FAevzJuI
ちなみにこの方式でやりたい理由は、

・自分は絵(特に立体的な)を描けないので、大味な切り絵風の表現のほうが向いている
・アウターワールドの独特の表現が、想像力を働かせて単純に好き
・深海を舞台にしたゲームなので、光の演算に凝りたい。
具体的には、基本真っ暗な海の中で、アンコウなどが近寄るとその提灯に近いポリゴン
(背景も含む)が鮮やかに浮かび上がる、というような表現をやりたい
・アニメーションを描けないので、ドット絵を一枚ずつ描いてアニメさせるより、
自動的に補完してくれるポリゴンのほうが都合がいい&見た目もやわらかい

という感じです。
0866名前は開発中のものです。2009/11/22(日) 11:07:28ID:FAevzJuI
>>864
すみません、YOUTUBEの動画は
http://www.youtube.com/watch?v=Zgkf6wooDmw&feature=related
のほうが適切でした。>>864の奴は後年になってハイデフ化された物のようです。
僕がやりたい表現は、より簡潔な↑のようなものなので・・・。
特徴としては、
・ポリゴン数が少なめ
・色も少なめ
・フラットシェーディング
・3Dのような2Dのような
という感じです
0867名前は開発中のものです。2009/11/22(日) 11:50:52ID:DlchF+JQ
>>864
ヌルヌルして見える事自体は、プログラム技術的なものではなく
フレームレートとモーションの問題だと思うよ。
何FPSか分からないけど動画を見たら、中割の数が非常に多いのは
分かるので。

フラットシェーディングじゃないけど、SFC版とか昔のプリンスオブ
ペルシャの動きも見てみれば、共通するものを感じると思うけど
ストレッチ&スクワッシュとかせず中抜きされてない動きなので、
たぶんあれと同じようにロトスコープ技法(実際の人間の動きを
撮影してトレースして絵に起こす)から、アニメパターンを作った
んじゃないかな。この方法だと絵のタッチに関係なく、だいたい
ああいう感じの動きになる。

動きのヌルヌル感に関しては、板ポリゴンの頂点の自由変形による
陰影のない切り絵っぽい表現手法(と言うと間違い?)自体とは直接
関係ないと思う。この手の表現やりたいなら、アニメーション…
というかモーション付けの練習しないといけないとは思うけど
とりあえずコーティングする前に、Flashとかで似たタッチで
動きを作ってみたらいいんじゃないかな。
08688642009/11/22(日) 12:29:34ID:FAevzJuI
>>867
どうもありがとう。
でもWikiには、「3Dポリゴンやそれを動画化したムービーではなく、
座標変換済み頂点設定を使用した頂点フォーマット2Dポリゴンを、リアルタイムで演算し描写」
とあるけど・・・。
この「リアルタイム演算」っていうのが補完処理のことだと思ったんだけど、違うんでしょうか。
確かにロトスコープ手法ならドット絵でもぬるぬるした立体の動きに見せられるだろうけど、
それだとポリゴン表現である意味が無くなっちゃいますよね。
アウターワールドは僕のやりたい光の演算まではやってないようだから、
それ以外に何かポリゴン表現にした理由があるとしたら、頂点の自由変形だけを与えて、
その中間をコンピュータに計算させる、というのではないかなあと。
(ていうか、アウターワールドがどういう処理をやっているか僕も詳しくはわからないのです・・・
すいません)
0869名前は開発中のものです。2009/11/22(日) 12:36:50ID:DlchF+JQ
>>868
youtube見てたら、アウターワールドの開発者インタビューで
ロトスコープ手法で作ってる動画があったよ。フランス語なので
wikiの話とかの詳細は分からないけれど↓
ttp://www.youtube.com/watch?v=fUxunNnFLAA

>ポリゴン数と色が少なめ、2D+3D表現なヌルヌルした動き。
動画を撮れるカメラで自分か友人が動いてる様をフィクスで撮って
それをなぞって絵に起こすかデータを取ってみるのもいいかも。
後者はいわゆる2次元モーションキャプチャだけど、3DCGでも
この方法で作品を作る人もたまにいるし、XNA用にシステム自作
している人もいるみたい(ググるとひっかかった)。

技術的な挑戦も重要だけど、ゲーム作るという事であれば
一番大切な事は見た目と動きのはずなので、別に昔の人と同じ
作り方しなくても、中身3Dで作った方が光の表現とかも含めて
多分何かと便利なんじゃないかな。
BVHとかFBXで出力して3Dのポリゴンモデルに適用して、パースなくして
カメラのZ軸方向の動き固定して、キャラ動かせば2Dになるわけだし、
シェーディングなしか自己発光100%にしてローポリ+テクスチャで細部
表現すれば、フラットでカクカクしたレトロなゲームぽい絵にできる。
DirectXとは関係ない話題なのでスレチの気もするけど。
0870名前は開発中のものです。2009/11/22(日) 12:49:59ID:DlchF+JQ
>それだとポリゴン表現である意味が無くなっちゃいますよね。
真実はわからないけど、アニメーションのパターンをベクターデータでなく
リアルタイムに作成してるのは、当時のハードでは容量足らないから…
とかの理由でもあるのかも。

あと自分はリアルタイムでは知らないけれど、AMIGAのメガデモ文化は
なんか凄かったらしいので、その延長での挑戦やパフォーマンス的な
部分もあるのかも。「こんなことできるんだぜ?」みたいな。

…スレチな気もするし100%想像だけど。
0871名前は開発中のものです。2009/11/22(日) 12:50:17ID:FAevzJuI
>>869
おお〜!そんな動画があったとは・・・。ゲームプレイの奴ばっかりだと思ってました。
ありがとうございます。確かにロトスコープ手法使ってるんですね。
ちょっと手間はかかるけど、アウターの作者さんを見習って一部のシーンに使ってみたいです。

>技術的な挑戦も重要だけど、ゲーム作るという事であれば一番大切な事は見た目と動きのはず

それは本当そうだよなあって思います。RPGツクールで一時作ってた時期があったのですが、
その頃からどうも自分は「こんな機能の束縛の中でこんな表現してやったぜ!」的な、
製作者同士の技術自慢に陥りがちだったっぽいw
ただ、今回3Dを避けたかったのは、完全な3Dということになると
単純に自分に作れるか不安だったんです。「14歳からはじめるCゲーム教室」みたいな
本を見ながら作ってる20歳ですのでw2Dだけでも大変なのに3Dは・・・みたいなのがあります。
なので2Dポリゴンという言葉の響きにつられちゃったんですねえ。
でも、今からでも3Dを覚えたほうが結局は早道なのであれば、そうしようと思います。
考えたら、リアルタイムの光の表現をやろうと思えば、
結局はゲームに登場するあらゆるモデルを3Dにしなくちゃ始まりませんからね・・・。

ただ心配なのは、自分が使ってるライブラリでは3Dが表現できるか?ってことです。
DXライブラリを苦労して覚えたので、それを使ってやりたいと思うのですが、
それでポリゴンの光表現を試しに演算してみたところ、処理落ちというか25枚くらいしか
描けなかったのでw(DXライブラリというのはDirectXを使うためのライブラリという感じ)
やっぱり3Dを表現しようと思えばDirectXを直接覚える必要があるんでしょうか?
(ていうか、このスレってDXライブラリも含みますよね?別のスレで最初に質問したら、
ここで聞けと言われたのですが)
0872名前は開発中のものです。2009/11/22(日) 13:52:42ID:Ot9WFCG5
DXライブラリはDXライブラリのスレで聞けばいい。
ここで聞かれても困る
0873名前は開発中のものです。2009/11/22(日) 14:06:12ID:RBvfykA7
普通に製作者のサイトで聞けばいいじゃない
0874名前は開発中のものです。2009/11/22(日) 15:57:40ID:FAevzJuI
やっぱりそうですよね・・・
失礼しました
0875名前は開発中のものです。2009/11/22(日) 16:31:28ID:O9i06zwI
まあ、25枚は異常に少ないと言える。
ソフトでサブピクセルライティングぐらいやらないと
出ないレベル。
0876名前は開発中のものです。2009/11/23(月) 01:56:12ID:ByJ4a23u
六角大王でむりやり3Dにするとか
0877名前は開発中のものです。2009/12/12(土) 12:37:43ID:huQYKhfI
 
0878486SX2009/12/14(月) 00:49:57ID:GaAU2Cxl
今どうしてもわからないことがあります、環境はVC++6.0で、
DirectX8,DirectDrawをしようしてゲームを作ったんですが、今ファイルは、
マイドキュメント→redo にプロジェクト一式入ってます。ここからプログラムを
実行するには問題ないのですが、ところが、たとえばc:\do にredoまるごとコピー
して実行すれば普通は実行できますよね、ところがフリーズして実行できません。
SDKはc:\mmsdkに指定してあるのに。 のろわれた?そんなことがありえるのでしょうか?
0879名前は開発中のものです。2009/12/14(月) 01:08:43ID:ykEqyb3s
データのパスだろ。
0880名前は開発中のものです。2009/12/14(月) 21:20:12ID:5sYVRGAl
略してデーパ
■ このスレッドは過去ログ倉庫に格納されています