1 :
. :
01/11/09 17:06 ID:wrfy6OtC Direct Xはあるみたいですが、こちらはD3D専門という事で。 とりあえずDX8以降は初期化が簡単になったり関数が変わったり 結構大幅に変わりましたがその辺も踏まえてお願いします。
2 :
2 :01/11/09 17:07 ID:???
2
3 :
名無しさん@お腹いっぱい。 :01/11/09 17:09 ID:A73R4jTp
>お願いします。 何をすればよいんだ?
その辺も踏まえてお願いします。
6 :
. :01/11/09 17:55 ID:???
あまり揚げ足を取らないでくんさい。
オブジェクトデータに対し、 テクスチャを張るのと、 バーテックスペイントを施すのと ポリゴン毎に色情報を変えるのとでは プログラマー的にどっちの方がうれしいんですか?
8 :
1 :01/11/09 18:55 ID:wrfy6OtC
はじめっからテクスチャ貼ってあるXデータが一番楽です。 ポリゴン毎に色を毎回変えるのは面倒くさい。
>>7 面倒くさいのはデータ作る人であって、
動作速度とか効率とか考えないなら、
プログラマ的には大差ないと思われ。
まぁ、なるべくDrawPrimitiveUPは使うなと言うことで。(謎) その辺も踏まえてお願いします。
>>7 テクスチャと頂点色は上手に併用すればイイ感じなので
その辺も踏まえてお願いします。角度とか。
このスレは「その辺も踏まえてお願いするスレ」になりました。 その辺も踏まえてお願いします。
13 :
名無しさん@お腹いっぱい。 :01/11/09 22:20 ID:0BKdFNhv
質問 アルファブレンディングの加算合成で、透明度変更する方法ない? 光がフェードアウトする感じ表現したいんだけど。
14 :
sage :01/11/09 22:33 ID:FsaE9cbV
まちがった、ハズ
16 :
名無しさん@お腹いっぱい。 :01/11/09 22:41 ID:IttZQbTd
ブレンドファクターのalpha
も踏まえてお願いします。
18 :
1 :01/11/09 23:09 ID:wrfy6OtC
・・・そんな変な事いったかしら? ちなみに自分は2DでもD3D使ってます。 Drawだと色が256以下じゃないとパレット変更できないのでDirect Drawは もうさらばいですね。
>>18 ・・・Highcolor/TureColorにはパレット無いが。
もう少し他人に理解できるように書くことをきぼーん
ていうか、みんななんで鬱だ氏のう DirectXスレ使わないのよ。 2Dと3Dが他のスレに取られたら骨抜きじゃん。ムキー
21 :
名無しさん@お腹いっぱい。 :01/11/09 23:42 ID:IttZQbTd
>>20 重複ネタスレっちうことで、俺は冷やかし半分でココ見てるけどね。
ヤパーリ本命は鬱だ氏のうスレだ。
>>1 『ポリゴン毎に色を毎回変えるのは面倒くさい。』は悶絶したYO。
謎言神スレの予感がするので、その辺も踏まえてお願いします。
>>21 >ヤパーリ本命は鬱だ氏のうスレだ。
それなら下げとけYO!
ゴメンYO!
>>13 D3Dって、GLみたく、textureのalphaとフラグメントのalphaの
乗算ってできないの?それで解決できるんちゃうん?
25 :
1 :01/11/10 01:24 ID:qy22xnnZ
>>19 TrueにはないけどHighにはパレットありますよ。確か。
>>20 >>21 Direct XといってもInputから何から範囲が広いので
分けた方がよくないかなと何となく思ったので。
>『ポリゴン毎に色を毎回変えるのは面倒くさい。』は悶絶したYO。
いやテクスチャ付きメッシュ読むからプログラム上からはあまり色は指定しないのです。
何か効果つける時とかはもちろん指定してますが。
27 :
1 :01/11/10 04:10 ID:???
いや、面白くないですよ、面白がられると迷惑です。
ここは1を叩くスレか? DirectXのような超簡易ライブラリレベルで もめるなよ。みんな。楽しくやろうぜ。
みんな叩いてるというより、光臨してくれるのを
面白がってるだけさ。1さんのさりげない天然ボケが魅力だ。
ま、ここはネタスレということでその辺も踏まえて(以下略)
>プログラム上からはあまり色は指定しない
7の「ポリゴン毎に色情報を変える」てのは時系列の話じゃないでしょ。
ポリゴン面毎に頂点色が別になって三角形strip化の邪魔になるけど
プログラマとしてはどうよ?って話。で、無難な答えは
>>9 。
30 :
名無しさん@お腹いっぱい。 :01/11/10 14:17 ID:CpeGeB26
俺OGL移行します。D3Dってなんにもできませんね。
32 :
_ :01/11/10 18:59 ID:lcUrEUKo
デバイスをHAL⇔REFした後、スキンメッシュをD3DXMeshのDrawSubsetで描画しようとすると エラーになってしまう。 D3D8のバグかなあ。
33 :
名無しさん@お腹いっぱい。 :01/11/10 20:02 ID:wXbui20C
34 :
名無しさん@お腹いっぱい。 :01/11/11 20:31 ID:SNwGUBka
やべ、ここの1さんに惚れそうだ。
あまり叩くな、バカども、せっかくの大事な天然素材だぞ。
>>1 >何か効果付けるときとかはもちろん指定してますが。
具体的にどんなことしてるのですか?
頑張って下さい、期待しています。
35 :
1 :01/11/11 21:20 ID:Y789xs3a
残念ですがボクはそういうキャラクタではないので。 効果といっても大した事はしていません。 上にかいてあるようなアルファブレンディングで爆発の効果を表現したりしています。 あと最近頂点バッファの使い方を覚えました。 でも持っているハードが対応していないので効果はよく解りません。
36 :
名無しさん@お腹いっぱい。 :01/11/11 22:19 ID:HopZamBA
>>36 俺の知る限り、Dx8 から出来るようになったYO
アホな漏れにもようやくこのスレの楽しみ方が分かってきました。 1さんの謎ビデオカードについてもっと知りたいYO・・・・(;; ´Д`)ハァハァ
39 :
24 :01/11/11 23:39 ID:???
ちょっと調べてみたんだけど m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE ); /************************************************************************** こっち? m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_DISABLE ); こっちでもOKか? m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_ADD); ****************************************************************************/ m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE ); m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE ); m_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_ONE ); m_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE ); /************************************************************************* diffuseのalphaを小さくしながら(大きくしながら?)オブジェクト描画 **************************************************************************/ これできるんちゃうの? D3Dよく知らないからマニュアル 見て書いてみただけだけど
>>1 頂点バッファ使えない?そんなもん捨てちまえ
DX8を踏まえてお願いしたいのなら頂点バッファ避けるわけにゃいかんでしょ
41 :
名無しさん@お腹いっぱい。 :01/11/11 23:47 ID:20Q7MVna
DirectX8.aから7にバージョンダウンするには どうすりゃいいっすか?
42 :
24 :01/11/12 00:07 ID:???
レンダーステート間違ってた、 m_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); m_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); こうだ、たぶん。
>42 ?乗算だったら m_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); m_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_DESTALPHA ); ではないの?上だと混合合成にならない?
44 :
24 :01/11/12 01:54 ID:???
45 :
1 :01/11/12 02:02 ID:JGmI7m98
持っているビデオカードはVIPERなんとかです。 これは2万円以上したのでまだ買い換えたくないです。 所で上の最後の引数はD3DBLEND_BOTHSRCALPHAじゃないですか?
46 :
1 :01/11/12 02:04 ID:JGmI7m98
間違えました。(__) 上の最後の行は忘れてください
47 :
24 :01/11/12 02:05 ID:???
間違い 加算ー>乗算
これって、DX8からできるようになったの? 前から出来るような雰囲気なんだけど、
49 :
名無しさん@お腹いっぱい。 :01/11/12 03:53 ID:hzjMPIYH
>>13 はソースのalpha値を少しづつ変化させたい、という話だと思う。
で、ソースのalpha値をチクチク書き換えるには幾つかの方法があるよね。
例えば、対象物の全頂点のdiffuse-alpha成分を頑張って書き換える方法。
当然ながらパフォーマンス悪し。低ポリゴンの物体なら何とかなるかも程度。
他にはt、
>>16 がさりげなく書いてるようにブレンドファクタのalpha値を書き換える方法。
テクスチャステージ1以降で
pd3dDevice->SetTextureStageState( n_stage, D3DTSS_COLORARG1, D3DTA_CURRENT );
pd3dDevice->SetTextureStageState( n_stage, D3DTSS_COLOROP, D3DTOP_BLENDFACTORALPHA );
pd3dDevice->SetTextureStageState( n_stage, D3DTSS_COLORARG2, D3DTA_TFACTOR );
みたいな感じで。
テクスチャステージが2つ以上あれば使える。パフォーマンス良し。
50 :
補足 :01/11/12 03:55 ID:???
ソース ≒ ソース側 ≒ 転送元側
51 :
34 :01/11/12 05:08 ID:DmTmPUJO
>残念ですがボクはそういうキャラクタではないので。
自覚してるバカなんて、そうはいないものだぜ。
>あと最近頂点バッファの使い方を覚えました。
頂点バッファ使わないでどうやって組んでいるのでしょうか。
私の浅学ぶりに1さんに嫌われないかと心配です。
>>48 勿論できた。もっと余裕をもって楽しもうヨ。
52 :
:01/11/12 05:39 ID:???
>>51 かっちょいー
>>49 なぜ、そっちのほうが、パフォーマンスいいんですか?
経験則?
53 :
:01/11/12 05:50 ID:???
ああ、そうか、頂点バッファのお話なんだよね DrawPrimitiveじゃないんだよね、 なるほど、
>>51 己より下と見るや嬉しそーに弄んで悦に浸ってる人間てーのは
どうしてこうも滑稽に映っちまうだろうなぁ。
55 :
34 :01/11/12 06:23 ID:DmTmPUJO
>>52-54 悪ぃな、滑稽に映るだけなら構わねぇんだが
不愉快に感じたんなら謝るぜ。そういうつもりはねぇんだ。
てわけで消えるます。それじゃネ。
56 :
34 :01/11/12 06:37 ID:???
おっと、言い忘れてた。
>>13 は「加算合成」つってるから、
ブレンドファクターでアルファ使うのはルール違反だぜ。
引っかけ問題ってやつか?その辺も踏まえてお願いします。
んじゃ、今度こそ本当にサヨナラです。
57 :
名無しさん@お腹いっぱい。 :01/11/12 06:43 ID:VxqY6PcN
>>52 いい加減な比較テストだけど、一応そんな結果んなった。
環境は、GeForceでT&L有効のときの頂点バッファ。
頂点数300~400程度のトライアングルリスト。
>>55 54=me
58 :
1 :01/11/12 07:37 ID:JGmI7m98
>頂点バッファ使わないでどうやって組んでいるのでしょうか 53さんが言ってるとおりDrawPrimitiveじゃなくてDrawPrimitiveUPで 毎回指定していましたけど、これっておかしいですかねぇ。 他の人は全部頂点バッファ使っているのでしょうか。 頂点が頻繁に変わる時とか、逆に効率悪くならないですか?
59 :
:01/11/12 14:42 ID:???
2x2(1x1)のテクスチャ作って テクスチャステージで実装とか?
60 :
名無しさん@お腹いっぱい。 :01/11/12 15:35 ID:IxLumFOK
>>58 別に効率は変わらないと思う。
というか頂点バッファをロックして値を変更するってこと自体あんまりやらない。
簡単なモーフィング等ならD3Dのファンクションで十分表現出来るし。
あと、DrawPrimitiveUPを使う事は全然問題なし。
アホな煽り豚は無視するべし。
>58 HT&Lが使えない時はシステムメモリにVertexBufferを確保する 様にするから、頂点操作にLockが必要だとしても目立つほどの オーバーヘッドは無いように思う。それなら、新しいデバイスを利用 してVertexBufferは積極的に使って良いと思うんだけど。とりあえず、 自分はG400だけど使ってるよ。毎度Lockして書き換えてるけど(苦笑) さっさとUV自動生成使ってマルチテクスチャにしてしまおう・・・。
DrawPrimitiveUPは問題あると思うよ。 毎回データを内部のバッファにコピーしているから。 頂点バッファを使うとこのコピーが無くせる。 でもUPは実験用には便利。 頂点バッファをロックして値を変更は 頂点数が不定なパーティクルでは使うかもしれない。 PointSpritesというサンプルがやってるよ。
補足:HT&L使用時にはVRAM上のバッファをLockしてアクセスする 事になるから、逆に不利になるかも。でも、その時はその時でVertex Bufferを使いつつ別の工夫をした方が良いような・・・。さすがにあまり にアクセスが頻繁だと使わないほうが良いだろうけど。
マイクロソフト様がVB(VertexBufferね)使えっておっしゃっているのだから 黙ってそれに従うほうが幸せになれるってものさ。
>>63 VRAM上に頂点バッファを作らないようにするためのフラグが
CreateVertexBuffer()にあるよ。
PointSpritesでは使ってる。
66 :
34 :01/11/13 10:20 ID:???
すまんな。これで最後にするからよ。
>>60 アホな煽り豚より知能足りてねぇ昆虫野郎の方がよほど有害だ。
UPが(カードにもよるが一般論として)非効率的なのは常識だろが。
それともあれか?初心者虐めってやつか?
まぁいいや、とりあえず逝っとけ。
つうか、頂点いじりたきゃvs使え。テメェの将来の為にもな。
67 :
60じゃないけど :01/11/13 12:30 ID:ppy9bP4V
>>66 (゚Д゚)ハァ?
DrawPrimitiveかDrawPrimitiveUPかなんて状況によって使い分ける
のが普通だろ?
一概にどっちが速いなんていえねーよ。
こいつはタダの知ったか野郎だな。
ひょっとして頭でっかちのVB房なんぢゃねーの。
まあまあマターリマターリ
69 :
. :01/11/13 12:57 ID:???
>>66 コイツ痛すぎ
ま、もう2度と来ないらしいからどうでもいっか。
>>66 >>51 で1を馬鹿にしているのにも関わらず自分が馬鹿にされると
このキレ模様。
バカ丸出しだねっ
71 :
68 :01/11/13 13:09 ID:???
マターリしろゆーとるやろがゴルァ! いわすぞゴルァ!
もうちょっと落ち着いてしゃべろうや。せっかくできたゲ術板だし。
>65 あ、それは知ってるよ。ただ、メカニズム的にシステムメモリに VBufferを作った時に、HT&Lってどう言う風に動作しているのか がよく分かって無いのだけど。自動的にVRAMに転送して処理 してくれるのかな?それとも、CPUが座標変換??
>>73 システムメモリのAGPメモリに置いてある頂点バッファから
グラフィックチップがダイレクトに読み込んでくれるメカニズムだよ。
AGPメモリ以外のシステムメモリにある頂点バッファでは駄目だけど。
AGPメモリに頂点バッファを置くように指定するのが
CreateVertexBufferのフラグの組み合わせで
PointSpritesの通りにやればOK
>74 成る程。AGPメモリに置けばビデオカードからはVRAMとして 見えて、実際はメインメモリだからLockしての書き換えもそこまで 遅くはならない、と。ありがとう、完全に疑問が解けたよ。 となると、書き換えが頻繁でも充分VertexBufferは使えるかな。
76 :
レックス :01/11/18 00:50 ID:k3asQ08V
Xファイルで出力した「人間」なんかをゲーム中で アニメーションさせる場合は、パーツをバラバラの 状態で読みこんで自分で一つ一つモーションを付けるものなんでしょうか。 他に効率のいい方法があれば教えて下さい。
77 :
名無しさん@お腹いっぱい。 :01/11/18 01:28 ID:IsgYCSXR
普通、もデラーでつけた体全体のモーションを出力させて (階層構造と行列のデータ群)それをそのまま再生させるよ。 で、モーションと別のモーションの間は補間でつなぐ。 モーション中に別のモーションに移りたいことがあるからね。 あとは例外的に特定のパーツに差分行列かけて個別に動かすこともある ケースバイケースばい。
78 :
レックス :01/11/18 01:37 ID:???
>77 そうやるんですか・・アニメXファイルが出せるモデラ は高いんでゲームでは使わないのではと勘違いしてました。 ありがとうございます。
79 :
77 :01/11/18 02:48 ID:???
ああ、上のはXファイルに限らず、自前フォーマットにも当てはまるよ。 おれは自前ファイルだけど目で読めるテキストXファイルからモーション情報だけ 取り出させて使わせてもらうことがある。 逆にXファイルのケツに他のフォーマットから取ったモーション行列を 自分でくっつけてやればモデラが対応してなくてもアニメXファイルの出来上がりじゃないか?
保守age
81 :
名前は開発中のものです。 :01/11/26 23:02 ID:uAFlRpp2
TrueSpaceBASICがモ―ション付きX吐ける
82 :
:01/11/26 23:49 ID:e4V2gjyG
Xファイルなんてすててモデリング&モーションフォーマットもMSが提唱してくれればいいのにね ヘンテコXファイルなんていつまでも残してもしょうがないだろ~
Xファイルの問題点。 ・拡張性はあるけど拡張は出来ないに等しい。 ・ストリップ等、データの最適化をデータ段階で出来ない。 ・テキストだとバカでかい。バイナリでもかなりデカイ ・読み込みが遅い。 ・モーションデータを不動少数マトリクスで持つために無駄が多すぎる。 ま、こんな感じ?それにしてもリアルタイム系のモデル フォーマットをどこかが提唱してくれないとそれそろ、個人で 手が届く時代じゃなくなってきたね。
D3Dで直接LWOとかLWSとか読む方法か,ライブラリって無いですか?
87 :
名前は開発中のものです。 :01/12/01 03:26 ID:3MhhzyVS
>>86 Lightwaveのデータ形式なら比較的読み込みが楽なんで自前で読み込み
作ってもバチはあたらないと思うが、以下のライブラリがとっかかりには
なると思う。
http://www.dstorm.co.jp/dev/sdk/sdk.html のObject, Sceneライブラリ。
もしLightwaveのデータを何も考えずに表示したいのなら、X形式にコンバート
すればよいし、自前のフォーマットを作りたいのならそれを改造するもよし、
直接読み込むような形であれば、親切なドキュメントとOpenGLのサンプル
プログラムを参考にしてみれ。全部ソース付きなので根気よく解析すれば
かならずわかるはず。
88 :
. :01/12/07 12:54 ID:Wr0guOje
>>85 きたよ、毎度のごとく現れる高飛車君。
この程度っていうぐらいだったら自分で高度(?)な話題でもふってみれば?
>>85 のような奴がいるから
「3Dやってるプログラマは人を小馬鹿にしたやつが多い」
と言われる。
90 :
名前は開発中のものです。 :01/12/07 22:33 ID:DT4mxdiM
>>88 高度な話題振っても付いてこれる奴がいない(アマだから)
or付いてこれても書きこまない(プロだから)
高度な話をし過ぎると身元が割れる危険が伴なう(以下略)
出し惜しみしてるのはニッポンジンの技術屋だけあるよ。 ガイジンはプロもアマも出し惜しみしないあるよ。
>>91 下手な言い訳はやめなさい。
単に高度なネタ持ってないだけでしょ?オレモナー
情報をクローズドにすると独自の文化が育つ。 そこが日本特有の長所でもあり短所でもあるな。
>出し惜しみしてるのはニッポンジンの技術屋だけあるよ。 >ガイジンはプロもアマも出し惜しみしないあるよ。 アマだったら日本でも出し惜しみしてない良質なコンテンツが豊富にあるだろ? プロに関しては、技術隠蔽するのは当然。それは海外も同じ。 ただ、海外はプログラマー社長が極めて多いので、 社長判断で勝手に公開している例が目立つ。
海外は公開してても特許でガードしてたりするよな。 Stable Fluids使わせろやゴルァ
>>96 もし使ったとして、A|Wがお得意先の日本のゲーム会社を訴えるんだろうか?
>>95 レベルも人数もちがう。
まぁ、日本は少数精鋭ってことにしとこう。
99 :
名前は開発中のものです。 :02/01/03 20:37 ID:3/AaBPnv
たまには上げてみるか・・
>99 何、アげてんの?
これが本スレだ
また3Dの糞スレあげてやがる。 ヴォケどもが。
104 :
. :02/02/12 21:05 ID:9lA8tETC
おぉD3D専用のスレが・・・ という事で質問させてください。 D3DXLoadMeshFromX関数でXファイルを読み込んだ後、 このオブジェクトに対して行列を設定するには(既にローカル座標は作っているのですが) どの関数を使うのでしょうか。 とりあえずそのままだと座標(0,0,0)に表示されているのですが、、
107 :
104 :02/02/12 21:25 ID:9lA8tETC
108 :
名前は開発中のものです。 :02/02/13 04:05 ID:NOxt2cqP
>>104 オブジェクトに対し、トランスフォーム行列を設定するという認識がそもそも間違い。
D3DDeviceに対しトランスフォーム行列を設定し、
D3DDeviceに対し表示するメッシュを設定する、が正しい。
即ち、IDirect3DDevice8::SetTransform。これ最強。
109 :
なかまかな :02/02/22 18:51 ID:Lhsx7X1+
要望 DXでサーフェースとして管理してる2Dキャラを、 D3Dで表示して、回転できるようにしたい。 DX8には、ハードウェアが対応してないようなので、DX7で。 まず、テクスチャを準備して、テクスチャサーフェースに割り当てた。 あとは、このサーフェースを、座標指定して表示すればいいと思う。 ●今までのやり方 描画先エリア サーフェス ↓ ↓ ret=pDDSBack->Blt( &rect1, g_pDDS,NULL, 0, NULL ); ●D3Dでのやり方 テクスチャサーフェス ↓ pd3dDevice->SetTexture( 0, g_pDDS ); pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX,ddx_txv, 4, NULL ); 今までは、rect1にピクセル座標(?)を代入してた。 D3Dでは、ddx_txv に座標を設定するらしい。 が、ヘルプ読んだが良くわからん。 どうやればいいか、分かる人教えてみないか。
110 :
↑ :02/02/22 18:53 ID:Lhsx7X1+
>>109 ずれてる。こっちに差し替え。
描画先エリア サーフェース
↓ ↓
ret=pDDSBack->Blt( &rect1, g_pDDS,NULL, 0, NULL );
●D3Dでのやり方
テクスチャサーフェース
↓
pd3dDevice->SetTexture( 0, g_pDDS );
>>109 > D3Dで表示して、回転できるようにしたい。
この程度の処理が
> DX8には、ハードウェアが対応してないようなので、DX7で。
DirectX7で対応していて、DirectX8では対応していない
ハードウェアがなんなのか教えて欲しい。
そんなものあるの?
112 :
なかまかな :02/02/22 23:09 ID:8+9pSBiP
>111 DX8だと、ハードウェアが新しくないと機能しないよね。 サンプルを実行したら、ダイアログボックスがでて、ソフトウェアモードで処理された。 DX7のサンプルは、ハードウェア(HAL)で動いた。 それとも、回転だけなら、今までのビデオカードでもハードウェアで動くの?
正直、DX8のものって動かないものが多いよ・・・
114 :
名前は開発中のものです。 :02/02/22 23:32 ID:lyn6ieNN
>>111 持ってるハードが古いorメーカが既に逝っててドライバが更新されてないとか(w
116 :
なかまかな :02/02/23 10:43 ID:OEDm8gEo
>115 でもほかのDXのスレで、DX8は、ビデオカードとかが新しくないと ダメだったようなこといってたよーな
>110 DrawPrimitiveでの回転は折れのスキルでは出来ないので 板ポリゴンにテクスチャ張ってD3DXMatrixRotationXなどで 回転させてる。
>>112 DirectX8固有の機能でなければ古いドライバでも動作します。
動かないのはサンプルに新機能のデモが多いせいでは?
119 :
109 :02/02/23 15:23 ID:u/EZFxFI
>118 でもXファイルを表示するだけのサンプルも、ソフトで処理された。 >117 なんだ。D3DXってライブラリ、付属してるのか。別途かと思った。 最初からコレ使えば良かった。どうしようかな。 おわる。
DirectX7でDirect3DrmモードとDirect3Dimモードってあるけれども、 このスペックのPC使ってDirect3Dimモードで作成して動かしても普通に動くかな? VRAMは8Mバイト3Dチップ付き メモリ64MB CPUはPentium2 400MHz
121 :
名前は開発中のものです。 :02/03/05 02:36 ID:vchuM+1W
>>120 チップの名称くらいかけ。
ちなみにi810とかsisみたいなチップ内蔵の場合、UMAの方で
不具合でるからむり。
122 :
名前は開発中のものです。 :02/03/08 01:28 ID:WfC+A2/G
グラフィッカーなんですが、 ピクセルシェーダーの紹介されている書籍やサイトをおしえてくださぃ・・・。 でかい本屋を何件か回ったのですが、どのDirectX8本も プログラムよりの基本的な3D表示のことしか書かれていないので Direct3D固有のビジュアル表現の可能性がわからないのです。 ・・・なんとなく放置されそうですが(w)、よろしくおねがいします。
124 :
122 :02/03/08 01:50 ID:WfC+A2/G
>>123 すばやいレスありがとうございます。 そーです。そんなのですー。 かなり詳しく載っているのでじっくりと見させてもらいます。 親切な方、ありがとうございました。
>>126 Xファイルは何で作ってる?
ツールによっては反転させないとおかしな事になる
128 :
名無しさん :02/04/15 21:05 ID:HOmtp0LM
ライブラリいいの無い?
131 :
名前は開発中のものです。 :02/04/16 05:10 ID:rxWSPVEM
132 :
名前は開発中のものです。 :02/04/16 08:54 ID:wEjyLAPY
133 :
名無しさん@お腹いっぱい。 :02/04/25 09:07 ID:KWIZFbqs
DOGAつかってますか?
>>133 以前は良く見たけど。
最近はめっきり見なくなったねえ
135 :
名前は開発中のものです。 :02/05/03 13:47 ID:.VzbAcu.
やぱその辺り踏まえてないからちゃう?w
どゆこと?
138 :
名前は開発中のものです。 :02/05/14 18:40 ID:iHWdaZs2
DirectX9完全準処ハードをメインターゲットにしてゲーム売れるのは いつごろになるのだろう?
140 :
名前は開発中のものです。 :02/05/14 21:32 ID:gp9yAFEg
そもそも今、完全にメインに出来るバージョンっていくつかなぁ。 正直、DirectX6くらいな気がするよ……。
あ、PCの話ね
143 :
名前は開発中のものです。 :02/05/15 03:32 ID:1hyuY9to
あああ、ID3DXBaseMesh::GenerateAdjacencyが失敗するぅぅぅ 何をやっても駄目だぁ、エラーコードもUnknownだしィィ つーか、もっと根性みせろやD3DXが!!例外出てる訳でもねーんだろ!! それが出来ねーんならソース公開しろォォ!! ID3DXSkinMesh::Convert系で作ったスキンメッシュはリストアで必ず失敗するしよォォォ!!
>>141 実際、7あたりが標準になってるんじゃない?
テクスチャにレンダリングする方法は 一度サーフェイスにレンダリングした後にコピーするしかありませんか?
146 :
名前は開発中のものです。 :02/05/16 04:32 ID:rbiFXjkI
age
>>145 IDirect3DTexture8::GetSurfaceLevel()でサーフェスを取得してSetRenderTarget()でレンダリング対象にすればいい、かな?
やってみたことないので参考まで。
>>144 (141とは別人ですが・・・。)
開発ターゲットはDirectX8になってるにしても、
安全に使えるハードウェア機能としては6~7くらいという気もする。
開発力が十分あって、ハードウェアごとにレンダラの構造変えられるなら話は別ですが・・・。
150 :
名前は開発中のものです。 :02/05/20 17:11 ID:c/rCiqvY
現在使用しているビデオボードで利用可能な テクスチャの最大サイズってどうやって取得すれば いいんでしょうか。
>>150 きみィ~基本がなっとらんよ。
見たまえ、このコブシの拳ダコは
そりゃあもう血の滲むような訓練云々~
>>150 struct D3DCAPS8の
MaxTextureWidth および MaxTextureHeight
IDirect3D8::GetDeviceCaps使って
153 :
150 :02/05/20 19:46 ID:???
>152 それこそ求めていたものです ありがとうございました!
あげてみる
DX7でDirect3D IM の勉強をしてるんですが、 板ポリ表示すら出来ずに鬱入ってます。 初期化部分はクリアしたんですが、Viewportの設定や投影変換の所で躓いてます。。 いろいろ検索とかかけて調べてるんですが、出てくるのはDX5やDX8のサンプルなどで DX7を解説してるようなサイトが見つかりません。 (見つかっても初期化の部分だけとか) どなたかいいサイトご存知でしたら教えてくれませんか? よろしくです。
157 :
155 :03/02/06 23:57 ID:MWXJs3Hk
> 156 レスありがとです。 ここ前に見たんですが、レベル高くて結局基本的な事がわからずじまいで・・・。 DX8はHDC取得出来ないらしいので不便かなぁと言うのと、DX7の方が教材になるのではと思ってみたり(推測)。 9ではHDC取得が復活したらしいですが、出たばっかしなのであまり手を出したくないんですよね。
う~ん、漏れはHDCに頼ってるように見えるんだけど、そっちのが勉強になるんかな。 ちなみにテキスト表示が不便だってんならGetGlyphOutlineみたいなAPIもあるし 文字表示・入力のいい勉強になると思うけど。
159 :
155 :03/02/07 00:36 ID:teDPhK+Q
HDC云々ってのは勉強とは別であったら便利だよなぁーって事です。 取りあえず1度にいろいろな事覚えるのは出来そうにないんで3Dの基本的な部分を やっつけていきたいと思ってます。 みなさんのレスから推測するに、やっぱり解説してる所って少ないんですね・・・。
o /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / このスレは無事に / / 終了いたしました / / ありがとうございました / / / / ギコ猫より / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ / ( ゚Д゚) / ( )つ | | | (__)_)
161 :
名前は開発中のものです。 :03/09/26 16:07 ID:4vP7z/gC
9になってからDCが取得できるようになったけど、 αが使えないから結局自分でイメージ操作しなきゃいけないんだよね
162 :
名前は開発中のものです。 :03/09/27 08:23 ID:QTyrRSDv
えーとD3D9で以下のような感じで Windoid モードで 60fps ほど画面を更新しているんですが、 なんだか微妙にテアリングが出てしまいます。D3D8 の SWAPEFFECT_COPY_VSYNC がなくなった 関係でこれは避けようがないのでしょうか。P4 3.0G + Intel 865G オンボード VGA です。 SWAPEFFECT は COPY, FLIP, DISCARD の全て試してみました。。。 // 毎秒 60 回呼ばれる UINT cSwapChains = pd3dDevice->GetNumberOfSwapChains(); for (UINT iSwapChain = 0; iSwapChain < cSwapChains; iSwapChain++) { CComPtr<IDirect3DSurface9> pBackBuffer; pd3dDevice->GetBackBuffer(iSwapChain, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer); pd3dDevice->SetRenderTarget(0, pBackBuffer); pd3dDevice->BeginScene(); ...描画処理... pd3dDevice->EndScene(); } pd3dDevice->Present( NULL, NULL, NULL, NULL );
163 :
◆/lQMO72QVo :03/09/27 11:50 ID:Zbl+k1GC
>>162 ヘルプの「DirectX 9.0 への移行」をよく読むべし。
165 :
名前は開発中のものです。 :03/09/28 01:19 ID:a+akW1WN
256x256のHeight DataがあるんですがD3Dで グリグリするにはどう書けばいいですか? ヒントだけでもいいので教えてください
ふつうにポリゴンでつなげてみたら?
>>165 1.BMPファイルから高さ情報を読む。
2.VERTEX構造体に取得した高さ(Y座標)とX,Z座標
(その他、必要なら法線ベクトルやUV座標)をセット。
後はゲームループ中で、
VERTEX情報をSetVertexShaderとかで指定して、DrawPrimitive系の
命令で描画する。
こんな感じかな? 1.の処理させるのが一番面倒くさいかも。
168 :
名前は開発中のものです。 :03/09/29 14:29 ID:LJ4M8ydv
>>194 ヘルプを読んだ限りでは、D3DPRESENT_INTERVAL_ONE を使えってことみたいですね。。
D3DPRESENT_INTERVAL_ONE でもダメっぽいので、このアダプダ(ってもオンボードだけど)
だとDirectX9 では無理ということであきらめておきます。
169 :
名前は開発中のものです。 :03/09/29 15:50 ID:u36ThLJ2
∧_∧ ∧_∧ (´<_` ) ( ´_ゝ`) / ⌒i / \ | | / / ̄ ̄ ̄ ̄/ | __(__ニつ/ FMV / .| .|____ \/____/ (u ⊃
170 :
名前は開発中のものです。 :03/10/01 15:26 ID:P7z7yNso
171 :
名前は開発中のものです。 :03/10/02 19:08 ID:oRuaMBhV
マジレスならぬ、マジネタ。 DX7で。 3Dの当たり判定って、モデルのワールド座標を使用すんじゃん。 このワールド座標は、D3Dで描画する際に、内部で算出してるじゃん。 だから、それを使って当たり判定をしたいんだけど、 このワールド座標を取得することができね。 座標変換だけを実行するProcesVerticsを使うと、 ワールド変換、カメラ変換、ひし形の台変換、スクリーン座標変換 だかまで自動的にやっちまうじゃん。 だから、ワールド変換までを行った座標を取得したいんだけど、できねよな。 自分で計算プログラム作ると、無駄な計算じゃん。 他のサイトを見ようとおもたらD3Dを扱ってるサイトのねーこと。
172 :
オレー :03/10/02 19:14 ID:37nYM4r4
>>171 ワールドマトリクスを自分でかけてD3Dに渡すんじゃねーの?
内部で算出ってなんだよ
173 :
名前は開発中のものです。 :03/10/02 19:17 ID:oRuaMBhV
おお!釣れた!。じゃなくって、レスはや。 >ワールドマトリクスを自分でかけてD3Dに渡すんじゃねーの? なにそれ。自分で計算すんのかよ! 描画は、 1.モデルデータ作る 2.D3DMATRIX作る 3.SetTransformで、ワールドマトリックスセット 4.DrwaPrimitiv じゃん。自分で計算なんてしてないだろ
174 :
オレー :03/10/02 19:21 ID:37nYM4r4
>>173 >3.SetTransformで、ワールドマトリックスセット
素直に↑このワールドマトリクスとモデルデータをかけたやつで計算しろよ
175 :
名前は開発中のものです。 :03/10/02 19:21 ID:oRuaMBhV
>ワールドマトリクスを自分でかけてD3Dに渡すんじゃねーの? んなことしねーよ!オレーは、そうやってんのか?
176 :
オレー :03/10/02 19:22 ID:37nYM4r4
177 :
名前は開発中のものです。 :03/10/02 19:23 ID:oRuaMBhV
>174 だからそれやると計算が無駄になるつってんだろ
178 :
オレー :03/10/02 19:24 ID:37nYM4r4
>>177 俺はそうしてるけどな。描画しねーと衝突判定できねーなんてfps低かったら悲惨だしな
179 :
名前は開発中のものです。 :03/10/02 19:26 ID:oRuaMBhV
だから、描画の際に、たぶんHALで計算してんだから、 そんときに算出されたワールド座標を流用すればいいでしょ。 それがムリなら、座標変換を、個別に指定できるべきだし
180 :
オレー ◆bJKvyv1OZU :03/10/02 19:28 ID:gTkZ+ADQ
>>179 俺のは描画より内部計算のほうが多くなる場合があるからツカエネエ
まーガンバレヤ
181 :
名前は開発中のものです。 :03/10/02 19:39 ID:oRuaMBhV
>180 ゲームだとそうなるだろ。描画はD3DがHALで高速になるから、 そうするとネックは、あたり判定になる。 ツカエネ理由が分からんが。 座標変換は、モデル→ワールド→カメラ→プロジェクション→画面 になってて、これって、D3DMATRIXを使った同じ方法を取ってると思ってる。 変換の名前は変わっても、コード的にやってることは同じ。 で、最初に、モデル→ワールドだけを行わせる。このワールド座標はあたり判定に使用。 そのワールド座標を、DrawPrimitiveに渡して、DrawPrimitiveには、 ワールド→カメラ→プロジェクション→画面 の範囲を行わせる。 とできるべきだろう。
182 :
オレー ◆bJKvyv1OZU :03/10/02 19:52 ID:Jlg/RJFo
>>181 あああ。ProcessVerticesをもっと融通きかせろって話か!
そういえばそう書いてあるな。そうだな俺もそのとおりだと思うぞ。
しかしこの板は使いにく否
183 :
名前は開発中のものです。 :03/10/03 02:47 ID:TURYwUXu
なんの話してるのかわからないんだけど座標変換って モデル(頂点データ)→ワールド→カメラ→プロジェクション→画面 で、いんだよね。 でも、計算順序って まず、 ミックス = ワールド→カメラ→プロジェクション で、最後に モデル(頂点データ)→ミックス だよね。 途中もなにもねーと思うんだけどどうよ?
物体が視野に入っていなければ描画をパスさせるため 物体の中心座標をいちいち透視変換しているんだけど こういうのもHAL側で一気に変換してもらえんかなぁ…
185 :
名前は開発中のものです。 :03/10/03 17:20 ID:w9WLibzF
>>183 普通はそうだと思う。よっぽどヘボい実装でなければ。
あと、ついでにビューポート変換まで一緒にやっちゃうかもね。
>>183 いや、パイプラインとの兼ね合いの話でしょ
>171 HALは、内部では1つの行列になってるから、分けると2倍遅くなる。 そもそも、当たり判定にモデルの描画用の姿勢は必要ない。
189 :
名前は開発中のものです。 :03/10/13 07:30 ID:8OV7MIl9
>>171 >このワールド座標は、D3Dで描画する際に、内部で算出してるじゃん。
頂点のワールド座標の位置を求めるなら内部だけど
171が欲しいのはしてないでしょ?
SetTransform(D3DTS_WORLD,world);
とか突っ込んでるのがワールド座標じゃないの?
190 :
オレー :03/10/13 08:09 ID:B3HQr2aa
ってか、当たり判定を専門にやってくれるチップがビデオカードについて それをあつかうDirectCollisionがあればいーんだよな!!
>>189 文脈的に変換後の頂点座標の事かと>ワールド座標
192 :
名前は開発中のものです。 :03/10/14 05:51 ID:tEdriz0H
>188 何をいってんだかよくわからんね。 >HALは、内部では1つの行列になってるから、分けると2倍遅くなる。 当たり判定用に、トランスフォームすると、描画用と当たり判定用で2つで、2倍遅くなる? >そもそも、当たり判定にモデルの描画用の姿勢は必要ない。 姿勢ってなんだよ。中身をはっきしいえや。 てか、こいつ、なに気取ってんだよ。ダサ!!
193 :
名前は開発中のものです。 :03/10/14 06:42 ID:stBbbSEk
>>192 お前こそオブジェクトのワールドの姿勢行列がほしいのか
オブジェクトの頂点ごとのワールドでの位置座標がほしいのか
はっきりしろよ。(どっちなんだよ、いえよ馬鹿)
188の内容が理解できない馬鹿はお前ぐらいだっつの。
(いやマジで)
1. オブジェクトの頂点を全部変換するんじゃなくて、 当てられるほうの判定球とベクトルにワールド座標の逆行列をかけて判定。 2. 必要に応じて1の段階でリストアップしたポリゴンを詳細に判定
195 :
名前は開発中のものです。 :03/10/14 20:48 ID:tEdriz0H
>196 >お前こそオブジェクトのワールドの姿勢行列がほしいのか >オブジェクトの頂点ごとのワールドでの位置座標がほしいのか >はっきりしろよ。(どっちなんだよ、いえよ馬鹿) アホだなこいつ。気取ってるのを指摘してやったら、さらにアホなことを、、、。 ワールドの姿勢行列は、オブジェクトごとに持たせるに決まってんだろが。 だから、それは3Dでのオブジェクトには不可欠なデータだから有って当たり前。 だから、欲しいっていってんのは、頂点ごとのワールドの位置情報しかないだろが。くだらねぇこと聞くんじゃねよ
196 :
つか188は俺じゃねーの :03/10/14 22:56 ID:7kwhY3R9
>>195 おまえ行列の演算順序を理解してねーのか?
183に詳しく書いてくれた人がいるだろ?なんで読まない?
普通は
ミックス = ワールド→カメラ→プロジェクション
モデル(頂点データ)→ミックス
というふうになってるんだよ。
ようはワールド→カメラ→プロジェクションをバラバラに頂点データにかけてるわけじゃなくて
ミックスした行列を一回だけ頂点データにかけてるんだよ。
だから途中も何もないんだよ。理解できたら返事しろアホ。
197 :
名前は開発中のものです。 :03/10/14 23:46 ID:tEdriz0H
おいおい!I/O別冊によれば、 座標変換はDrawPrimiticeメソッドなどがよばれたら、 ワールド、ビュー、射影の順に座標変換が行われるって書いてあるが。
198 :
名前は開発中のものです。 :03/10/15 00:11 ID:LRGxbgsn
>>197 それは行列のかける順番(方向?)を強調したかっただけじゃねーの?
一度シェーダでも触ってみれば?
頂点座標に何度も演算したら、行列作ってる意味無いじゃん。 ローカル座標→スクリーン座標が一発で変換できるのが行列の偉いところ。
つうかDirectXの機能使うしか理解出来ない奴ばっかなのか? 別に自分で座標変換した頂点を描画するなんて実装は誰だって理解して組めるだろ。 問題はそうじゃなくDirectXの機能で描画に使った部分を 自分が必要なワールドの処理に流用しようとしてアホな議論をしてる事だろ。 DirectXの仕様がそうなってない以上は、自分で用意して処理するのが当り前。
201 :
名前は開発中のものです。 :03/10/15 02:15 ID:muRCTpui
>>200 いや、なんていうか195は
>DirectXの仕様がそうなってない
ってところから理解できてなかったように見えるけど。
まあ、はじめは誰でもこんなもんでしょ。
基本的に描画はゲームの処理にちょっかいを出すような設計にはしない
ってことがそのうち理解できるでしょ。
202 :
名前は開発中のものです。 :03/10/15 02:34 ID:Xs8JLMZk
>それは行列のかける順番(方向?)を強調したかっただけじゃねーの? そうなんか?しかし、どうよんでも順番に変換してると読めると思われ。 DirectX8実践プログラミングP30 DX7のヘルプみたがそれらしき説明は見当たらないが。(ミックスという用語すらない) しかし、全ての行列をMultiplyして一度でスクリーン座標にできるならその方がよいな。 >HALは、内部では1つの行列になってるから、分けると2倍遅くなる。 こういった理由がそれと分かる。
203 :
名前は開発中のものです。 :03/10/15 02:43 ID:Xs8JLMZk
>201 1個の行列にトランスフォームしてるだけなら、HALでワールドに変換してないから、 >200 >問題はそうじゃなくDirectXの機能で描画に使った部分を >自分が必要なワールドの処理に流用しようとしてアホな議論をしてる事だろ。 これは、的はずれになる。 >201 >基本的に描画はゲームの処理にちょっかいを出すような設計にはしない >ってことがそのうち理解できるでしょ。 何いってんだよこれは。基本的になら、裏技的にはやる場合もあるってことだろが。意味ねー
204 :
名前は開発中のものです。 :03/10/15 03:12 ID:QGfW+W06
/ /-'''''| | /l /‐'''/'' .人 i' .:: :;'" / / l ノ゙i// ,,-‐'"──==
//'" ゙i;: | /‐' ./,, ,,ノ ゙i;,. | _,,-ヾ.// ノ ,-''" l | ‐'" ,,,-‐二
レ' ヽl:i' ./ )'、‐,\゙i;: | ,,,-‐二-┬ナ" /‐'"‐ 〉 ,i'───'''" ̄~-''"
,-‐',ヽ|'" ./゙ヽ-ゝ='\゙i,'''ヽ -゙=‐' '" ,‐'ノ,, /‐''" ,,-‐'''"~
/ / ;;:. ──ヽ, ゙i;'''''' , ゙ "-‐'''''""" 〔_,/ ゙ヽ'-'"~
/ / / ,; ,,_}_ ゙、 ./__,, _,, / \
>>202-203 おまえ
,;' / ,;;;:;:/;: ,, ~ ヽ ヽ. ヽニ‐'、 / / ゙i,_ ここおかしいだろ
./ '' ,l,,,,,,/ 〉 ゙ヽ、 '''' ,,-''" / ゙i.\ \
一度でもいいから、自力で3Dエンジン組んでから、 DirectXなりなんなりにうつると応用がきくんだがなー。 ただDirectX利用するだけだと、仕組みが理解できんでしょ
207 :
名前は開発中のものです。 :03/10/15 12:08 ID:z0aKx4vG
>>206 この本になんの武装もなく正面から挑める人をすごいと思う。
経験地ためて、<数学>技能でも取得するべか。
209 :
名前は開発中のものです。 :03/10/15 12:48 ID:wM6JJU60
この本、わざと難しく記述してる様に思うのですが・・・ 単に自分が勉強不足なだけか・・w どちらにしても基礎をきっちり理解しとかないと、この本 読むのは難しいと思うのだが・・。
>>209 でもバンプマップはこの本以外の本ではさっぱりわからなかったよ。
あと良書といえば最近出たCgの本もかなりいい。
211 :
名前は開発中のものです。 :03/10/15 17:43 ID:Xs8JLMZk
テイノウ似非プロ3DPG厨君らに、もっと気取られるかと思ったそうでもないな。 >205 こいつもヴァカだな。3D描画を任せれるからエンジンを利用すんでしょうか。 ま、どーせ口先だけで言ってんだろけど。 ちなみにD3Dはいまいち >209 そう?漏れ的にはヘルプのが分かりにくい。 基礎の理解って、3D座標系は誰でも見当つくだろ。 わからんのは、D3DMATRIXを使った行列かな。 高校の数学で行列やるけど、あれだけで行列の本質が分かるのはザラにはいないだろ。教え方がヘタレなんだよ。 そんなもんを教材で勉強して試験にいどむんだから、バカが大量生産されて当然。 しかし、学校のテキストは、一般な出版社が出した分厚い糞本よりはずっとイイ。 てなわけで、生徒ももともとバカだから仕方ないのか。
学校のテキストは一般的な出版社が出しているようにしか見えないんだけど、 具体的に一般的ではない出版社とはどこのこと?
213 :
名前は開発中のものです。 :03/10/15 18:01 ID:Xs8JLMZk
>212 ようするに、文部省検定済みというかんじで、 国立大学の人達が編集したような本が、非一般的。とうか、非世間的。 出版社自体に違いは無いかもしれん。 こういった人達は、国からの信頼があるから、ハッタリで金をもうけようとしないぶん、 本の内容は、マトモというか本質だけを記すようになるんだろう。
214 :
名前は開発中のものです。 :03/10/15 18:04 ID:Xs8JLMZk
う、なんか失礼だ。すいません。m(__)m 読んでないだろけど
215 :
名前は開発中のものです。 :03/10/15 20:14 ID:sCAhcpdd
>211 この本の場合、基礎の理解というのは3Dの基礎ではなく、数学の基礎 の事をいってんじゃないの? たしかに、ベクトルや行列の本質を理解するのは奥が深いと思うが、D3D MATRIXを使った行列がごときが難しくてどやって3D組むんだ?
216 :
名前は開発中のものです。 :03/10/15 21:34 ID:2BMLRTf/
217 :
名前は開発中のものです。 :03/10/15 22:56 ID:sqeAf7uh
>>211 そもそもお前、行列演算も理解できてねぇ奴がほざくセリフじゃねーよ。
ゲラゲラハライテ-
ツマンネースレだなおい
高校でやる行列は数Cの行列だろ。 あんなもんを行列の勉強とか言ってる奴は高卒か? 普通は大学で線形代数という分野でみっちりやる。 つーか数Cの行列ってほとんど行列の勉強じゃないと言っても過言じゃない。 そんなで、本質とか教え方とか言ってるなよ。
まずは行列の出来るラーメン屋で勉強汁
Direct3Dの話をしやがれ
222 :
名前は開発中のものです。 :03/10/16 00:14 ID:Nd9swNJ7
FPSのゲームで影を表現する場合、シャドウボリューム、シャドウバッファ、 投射テクスチャマッピング 等いろんな手法がありそれぞれに一長一短がある と思うのだがどれが一番今後の主流になるんでしょうか? この板では場違いか・・?
223 :
名前は開発中のものです。 :03/10/16 00:24 ID:0l+lLL1x
興味アリ。 というか、そういうのも基礎といえば基礎だよなぁ。 それ関係の参考書でまとまってるのってGEMSくらい?
>>222 今後の主流って・・・。ハードは日進月歩だからな。
一長一短の「短」って、元をただせばハードの制約から来てるわけだし、
そもそもそれらの手法がハードウェアに依存してるわけだ。
226 :
名前は開発中のものです。 :03/10/16 00:47 ID:Nd9swNJ7
ざっと調べてみたところ、こんな感じなんだが・・ Half-Life2 シャドウバッファ 鬼武者3(PCではないが) 投射テクスチャマッピング DOOMⅢ シャドウボリューム EverQuestII シャドウボリューム
>>224 別に実装sampleに拘らなければ、シェーダー系の本でも理論や数式が載ってるよ。
最近だと、アドバンスレンダーマンの日本語版が出てるよ。
228 :
名前は開発中のものです。 :03/10/16 00:57 ID:0l+lLL1x
イース6 投影円影
230 :
名前は開発中のものです。 :03/10/16 01:01 ID:Nd9swNJ7
>228 スマソ。日本代表超大作。忘れとった!!!
231 :
名前は開発中のものです。 :03/10/16 04:45 ID:vUXy0UHR
FFばつ=ヲタの総結集
この板的にはヲタがどうとか関係無いな
そうか、そういえば高校数学のレベルでは 3Dプログラミングに必要な行列の知識はカバーできないんだよな。 ベクトル外積も出てこなかった気がするし。 まあ、ちょっと調べれば分かることだけど。
234 :
名前は開発中のものです。 :03/10/16 16:38 ID:vUXy0UHR
233=このスレ史上最高の馬鹿誕生
まぁ、マジな話 影とか言ってる暇があったらゲームをマトモにしような
237 :
233 :03/10/16 17:46 ID:V+3kXHxb
いまだにDirectXなんぞの話してるような低脳共にはこの板お似合いだなぁw
いや、まぁそういうスレだし、
キミはオレたちみたいな低レベルな人間を煽るためだけにこのスレに来てるんだったら
それはどうなのよ?と釣られてみる
>>237 理系で大学いってるけどオレにもわからん・・
なんかこのスレ僻みっぽい性格なヤツ多くない?
>>241 そんなことはない。
なぜなら、この板は全体的にそういう奴が多いので、
このスレだけが目立っているわけではないからだ!
243 :
名前は開発中のものです。 :03/10/17 02:06 ID:ouNMemrc
>>243 高校でも2x2行列と回転行列、一次変換は習うし、
相当レベルの低い高校でも、「外積」という言葉は出さ
ないにしろ「ベクトルのたすきがけ」ってテクニックは
教えているってことを234は言いたかったんでは?
>>243 でそこまで読み取れるとはなかなかのエスパー。
246 :
名前は開発中のものです。 :03/10/17 16:27 ID:0sWnDGVR
>>243 人類初!臭いを伝えた掲示板!
全日本スメリング振興会
一瞬スルメリングにみえたよ
>>244 数Cだと一次変換は無い。あったのは代数幾何までの時代。
しかも、ベクトルのたすきがけって
3x3行列のみに有効な逆行列の出し方の話だし。
さすが相当レベルの低い高校卒。
3x3以上の逆行列も求められなよいよな。
って、ひょっとして世代とか学校とかでだいぶ違うんじゃねーか?
>>250 あ、俺、4x4の逆行列の計算いまだにどうやるのか知らないや。
いつもどっかに関数が用意されてるからね。
自分で組まなきゃいけないときになったら「調べりゃどっかにあんでしょ」って感じ。
回転変換なら逆行列求めなくても 転置させるだけですむ罠。
行列なんて適当なソース見て憶えろ!!
大名行列のソースどこ?
256 :
名前は開発中のものです。 :03/11/05 20:22 ID:ucAPgQL7
258 :
名前は開発中のものです。 :03/11/05 20:46 ID:ucAPgQL7
>257 それは自分の責任です
ごめん俺も無理だった
260 :
名前は開発中のものです。 :03/11/05 21:07 ID:ucAPgQL7
>259 あやまる理由が分かりません
数C って何だ? 数III のことか? 高校では外積習わないだと? どうやって物理の電磁気勉強するんだ? これがゆとり教育の成果か?
Direct3Dの話をしろよ貴様ら
高校では外積教えないのは昔からだぞ
うむ。俺の12年前の教科書見てみたが出ていない。
265 :
名前は開発中のものです。 :03/11/09 02:20 ID:Idkyti++
>>252 3×3以上は余因子を使う。
回転行列だったら転置ですむんだがナー。
ベクトルだとか行列だとかクォータニオンだとかのクラスを作ってみると結構勉強になる。
すでに関数が用意されてるんだからわざわざ作る必要はないが。
高校で外積習わなかったのに 大学では知ってる前提で授業が進むから かなり困った記憶が。
max4.2とDirectX9で3Dアクションゲームを作成してるんですが。 「PandaDirectXExporter」でXファイル書き出しをしてみても上手く書き出せず、 Xファイルビューアで見ても「真っ黒&データ損傷」という状態なんです。 「Panda...」で解決!というようなコメントがチラホラと見られるんですけれども、 どのようにしたら上手く書き出せるのかが分りません。 どなたか、知っている方がいましたら、ご教授おねがいします…
すいません 後ろのポリゴンに前のポリゴンが塗りつぶされてしまうんですが どうすれば正しい順序で描画されますか?
Zバッファを有効にするか、Zソートをかける
270 :
名前は開発中のものです。 :03/11/23 15:01 ID:SCoxfvAt
あるメッシュ(キャラクタ)の姿勢ベクトルの取得方法を教えてくれ。
高校数学の内容は昔と比べてガンガン減ってる。 今は外積も一次変換も微分方程式も出てこない。
ということは、 1.若いプログラマーは育たないかヘボ 2.俺たちは何時までも引っ張りだこ っていうこった!
東大京大に1割ほど逝く程度の2流私立高校だったけど やっぱり外積はやらなかった、1流私立ならやるのかもしれないけど とりあえずうちの高校教師はテストに出ないとこはやらないという方針だったな
うちは東大に半数近く行く程度の3流私立高校だったけど 理系コースは外債をやったよ 応用数学の基礎がないと専門分野のエリートができないからね
276 :
名前は開発中のものです。 :03/11/24 00:53 ID:UUxn7nSE
偏差値60ぐらいの高校だったけど、 三角形の面積で似たようなのが出た。 1/2|x1y2-x2y1| とかいうの。
>>275 面白いとおもって書いてるならマジで死んでくれ
278 :
名前は開発中のものです。 :03/11/24 14:55 ID:1t7U73Xr
東大の近くにあるけど、受かった奴は1人もいないって 高校だったけど、外積は教わった。今から15年位前の 話だけどな。予備校とかでも使ってたし。 …俺の知らない間に、受験戦争って終わってたの?
受験戦争なんて聞いたことも有りません
冷戦と同時に終わったらしい。
漏れ達の青春は受験戦争によって奪われてしもった… _| ̄|○ そもそも俺は当時、既に負けてたけどな
受験勉強せずに遊びまくりの高校生活してたのに灯台いったやつがいた やつのIQは150超えてたらしい 越えられない壁を感じた
そもそも、青春捨ててまでいくようなところかよ
>>282 の知り合いみたいな行けるヤツが行けばいい。
第一、そいつみたいなヤツは勉強でもしとらんと、
頭がキレるだけに何するかわからん。
東大よりも大きい、大東大に逝け。
>>283 はぁ?学歴コンプレックスですか?
人がどんな青春送ろうと勝手だろうが。
あんたはさぞかし大層な青春時代を送ったんだろうな。言ってみろよ。
SDK_VERSION
286 :
名前は開発中のものです。 :03/11/25 00:14 ID:vBYvQALs
>SDK_VERSION にワラタ
>>282 そういう奴を知ってるが、時間の使い方が物凄い上手いだけ。
遊んでばっかりに見えて、やるときはやってる。
>>282 洩れはその手の人間なんだけど(灯台より1ランク↓だが)、頭が良いわけじゃないぞ。
ただ単に要領がいいだけだ。
とりあえず、本当に天才肌の人間知ってるけど、普通の人とモノの見方が違う。一歩
間違えれば変人なくらいに。
天才とバカは紙一重とは、よくいったもんだ。
>>286 そんな青春時代を送ると性犯罪者になっちゃうだろw
ム板の同名スレと間違えて覗いて、いつの間に俺の知らない話題が展開 されてたのかと焦った。 俺も高校で外積を習った記憶が無いんだが、同じ高校から同じ大学に 行った奴(なぜか附属校なのに一般入試で入ってきた)が言うには 高校のときに習っていたらしい。 っていうか、そもそも俺は授業を全く聞いてなかったわけだが。 俺も勉強してないのに成績が良い部類の人間だけど、家でも勉強しないし 学校帰りは毎日ゲーセン通いだったよ。 そんな俺が今はめちゃくちゃ出世して稼ぎまくっているかというと、そんな ことは全くないわけで、むしろ俺みたいに努力を知らずに育っちゃうと のほほーんと過ごすようになっちまうぞ。
>>291 のほほーんと過ごせてるのならそれはそれでいいじゃないかとか思ったり
二十過ぎればただの人ってやつですな。俺もそのクチ。 何の努力もしないくせに成績が良いという状態は非常に危険だ。 世の中なめてるから、高校、大学、社会人と確実に凋落していく。 もしそういう子供を持ったら、通知表の数字に喜んでないで、とっとと虎の穴に叩き込みましょう。 歴史を紐解いても、すべての天才は例外なく努力家である。 ウサギとカメの寓話があるが、最強なのは休まないウサギなのだ。
休まないウサギの末路は過労死。 ザパネーゼカロウシ。
295 :
名前は開発中のものです。 :03/12/08 17:45 ID:gvF03lSv
このスレ、もはやDirect3Dと関係なくなっとるw
そこがまたいい
ポリゴンのチンコ誰か欲しい?
欲しい♥ むしろ製作チュートリアルきぼん
ちんぽりごん
ステンシルバッファって鏡と影以外で、面白い使い道ってないの?
億泰やヴァニラ・アイスが削り取った部分
うーん実際見てみないと見当がつかない・・・ その技法を使ったゲームの紹介画像ってどっかにない?
クレイジータクシーの自車が陸橋に入ったり出たりするとき自車に落ちる影 あれをどうやってんのわかんなくて気になる 地面に落ちる自車の影は、ステンシルバッファの裏表の描画状態で判断つけら れそうだけど、影の中に視点が入っちゃうような場合はどうすんだろ?
>>301 3Dっつーのもそろそろ限界に来てるな。
技術じゃなくて需要が。
>>303 そういうときだけは表側は描かないで、代わりにステンシルバッファ全部を
インクリメントしちゃって、そのあといつもどおり裏側で抜く。
で、うまくいきそうな気がするけど
入るぎりぎりのとこ、つまりステンシルボリュームが 前クリッピング平面にクリッピングされたとこが視界に入るような状況だと(動きが早いと数フレームぐらいしか生じないけど) そこで見た目がへんになるんだよな… まぁクレタクは305のほうほうだろうけど
ニアにかかったステンシルはニアのXY平面で反転して描画。するとクリップされたポリだけが描画できるので無問題。 そうそう、反転した面はZ無視でね。 厳密にはこれでも結構問題でるんだけど、取り合えず動きが早いものなら誤魔化せます。
308 :
名前は開発中のものです。 :03/12/22 17:52 ID:VTzd2bKs
なるほど皆さん凄いな!俺も今日からは丸影を卒業して、ステンシル影にチャレンジ でも最近は、光源から見て描画したZ値と、視点から見たZ値を比較して影を 描くのが流行みたいね
丸影 != ステンシル影 って訳ではないのだが。 シャドウボリュームを端折って、ステンシルで丸影を使う場合もある。
>>309 丸影のテクスチャを描画する代りに、ステンシルの値のみ変えるよう描画し、
画面の描画が全部終わったところで、ステンシルの値が変わっている
ピクセルを影っぽい色をブレンドして塗るってこと?
シャドウボリュームが円筒状というだけの話なんだけど。 まともに作ると重いから。
>>307 5時間考えたけどどーしてもその方法ワカラン・・・
前投影面の少し前でクリッピングするほうほうじゃだめかねぇ、
まぁこの方法自体難しい気がするけど
んーと。説明悪かった。2パスで描画すんのよ。まず、ニアにかかるってケースを検出してね、 1パス目…普通に描画 2パス目・・・Z*-1してZは無視で描画。 すると、2パス目でニアでクリップされた部分が描画されるしょ?これでニアクリップ面は塞がれるって寸法。 でも、解説の為に簡略したけどホントは2パス目はニア平面で反転させないとダメよ。 まー、描画コスト高いけどコレが一番楽。というか、305のやり方の方がよく解らん。無理がある気がする。
DirectX8世代なら4パスか。まぁいいや。オレの予感じゃDOOM3も多分コレ。
>>314 >>315 サンクス!
よーやくわかたよ。なるほどね、うまいこと考えるね。プロ?
オレの考えた方法に比べれば
実質ステンシル描画負荷2倍なんて軽いもんだ。
でもさあ、同人でもプロでもいいから そういう技術つかった日本のPCゲームないじゃん。
コンシューマであるじゃん。
コンシューマつまんねーからやんないし。 他にはどこで使われてんの?
あげても全部つまんねーで片付けられそう。 コンシューマーはどの辺がつまんないの? つーかやったことあるの?
>>316 いや、それフツーに使われてるテクだと思うよ。少なくとも自分のいるコンシューマ屋じゃ常識ぽいかも。
SONY製の安物ハードだとニアクリップも自前でやらにゃあかんのでそのついでにニアでふさぐけどね。
なんつー前時代的な・・・
コンシューマ屋は昔から失敗作みたいなハードが主流を握る傾向があるので技術があっても表に出しにくい
ってのがあるな。なんだったらサイレントヒル3とかカーマックも舌打ちしそうな出来だから見とくといいよ。
ま、PC版もあるわけだけど。
シャドウボリュームの中に視点が入ってしまう問題は、そんな面倒なこと しなくても、ZFAILでステンシルを更新する方法を使えば解決するよ。 ただ、逆にファークリップにひっかかる場合に問題になるけど。 あとフィルが、普通の方法よりも厳しい。 車ゲーみたいにある程度視点と光源の位置関係が固定されているなら、 ファークリップの問題はほとんど関係ないかも。 リプレイなんかで上から見下ろすときは、逆にニアの問題が有り得ないから 状況に応じて使い分ければいいかと。
>>322 氏の方法を試してみた
裏面は、D3DRS_STENCILZFAILをD3DSTENCILOP_INCRSATにして描画
表面は、D3DRS_STENCILZFAILをD3DSTENCILOP_DECRSATにして描画
これだけで影に視点が入ってもうまく表示できたよー!
自機に背景の影が落ちるの見てなんか感動した
さて次は、視点からの距離で影にもフォグがかかるようなんとかしたい…
何故ZFAILにする必要があるのかよーわからんけど 飽和減算で裏面を書けば防げるってことかな?
あぁ、ごめん書いた直後に分かった
概念を簡単に説明すると 地面を境界にシャドウボリュームを2つに分断して、その断面を暗くすれば 影になるわけだけど、普通の方法は分断されたシャドウボリュームの地面より 上の方を使っている。ZFAILの方法は、地面より下のボリュームを使っている。 どちらを使っても断面の形状は全く一所だから、同じ影ができる。 ただ、ZFAILの方法をセルフシャドウに使おうとすると、ちょっと注意が必要。
328 :
327 :04/01/29 12:50 ID:aRkiSiXS
高さのスケール値を指定したらできました。 ナンチャンの顔から作ったノーマルマップを使ってバンプ表現にチャレンジ・・・
何気に素晴らしいネーミングだ ちんぽりごん
330 :
名前は開発中のものです。 :04/01/30 13:37 ID:ISbdpqEk
すいませんがどなたか教えていただけませんか? 3Dゲームにおいて爆発などのエフェクトはどういったポリゴンで 表現されているのでしょうか?
イタポリとか
漏れもただのビルボードで・・・
333 :
名前は開発中のものです。 :04/01/31 08:19 ID:IQTlYJOf
小生も不覚ながらビルボード。
ひょっとして
>>330 は ビルボード行列の作り方を聞きたかったのか?
334 :
330 :04/01/31 15:14 ID:PYmxYIqC
最近3Dのゲームを作っておりましてエフェクトを作ろうとした時 爆発でどこからみても爆発して見えるのはてっきり爆発用に 頂点データ的なものがあるのかな~と思いまして、しかしそれだとすごく 疲れる作業だな~と思い聞かせていただいた所存でございます。 キャラの位置に合わせてポリゴンをビルボードしてるんですかね。 ありがとうございました。 もしよろしければビルボード行列の作り方を教えて戴けませんでしょうか。
>>334 sprite.Begin(SpriteFlags.Billboard | SpriteFlags.SortDepthFrontToBack);
とか。
DX9 Summer 2003 Update 用ね
んー私の記憶が正しければ… matView ビュー行列(あらかじめ作っとく) matBillboard ビルボード行列 D3DXMatrixInverse( &matInv, NULL, &matView );//行列の逆元 matBillboard = matInv; matBillboard._41 = 0.0f;//X移動を0 matBillboard._42 = 0.0f;//Y移動を0 matBillboard._43 = 0.0f;//Z移動を0 たしかこれでビルボード行列ですはいー。
メガデモ見てると自分に自信がなくなってくる・・・
338 :
330 :04/02/01 14:16 ID:372QHYP7
本当にありがとうございました。 実はもう1つ問題がありまして、もしよろしければ助けて戴けないでしょうか。 334でも述べた通り3Dゲームを作っておりましてアクションゲームなのですが X,Y,Z 10,6,30 のMAPでブロック(x,y,z=1,1,1)を表示していきたいのですが、 現在頂点データを6個で立法体(1,1,1)でMAPを表示しておりますがそれでは ポリゴン数が多すぎてFPSがでないので、ブロックの大きさを2,1,1や4,2,3 などの頂点データを打っているのですが数を上げていくと頂点データを 1000以上打たなければいけない計算になります。 この問題に大して打開策がありましたら教えて戴けませんでしょうか。
速度を上げる工夫をする or MAPの仕様を変える
見えない部分のマップを描かない。
1つ1つのポリゴンを描画する度、DrawPrimitive系命令を呼んでたりして?
>>341 それやってたとしてもそんなに遅くはならないはずだけど。
うおっバカ系来た
345 :
名前は開発中のものです。 :04/02/01 20:19 ID:zmw0Mii3
Photoshop7.0が10万って高! 安い店ないかな?
スレ違い
347 :
330 :04/02/02 03:04 ID:RyS6mA+O
DrawPrimitive系命令を呼んでたりして? これやってますね。何か他の方法があるのですか。
>>338 いくつか疑問が・・・。
>X,Y,Z 10,6,30 のMAPでブロック(x,y,z=1,1,1)を表示していきたいのですが、
>現在頂点データを6個で立法体(1,1,1)でMAPを表示しておりますがそれでは
>ポリゴン数が多すぎてFPSがでないので、ブロックの大きさを2,1,1や4,2,3
>などの頂点データを打っているのですが
とありますけど、そもそも謎の多い文章なんですよこの文章は。
まず、X,Y,Z(10,6,30)のマップっていうけど1ブロック辺り12ポリ使ったとしても
10*6*30*12で21600ポリ程度じゃポリ数が原因で速度が落ちることはあんまり無いと思うけど?
しかもこれって全部画面に出した場合であって普通はマップのある部分だけなんでしょ?
はっきりいってポリ数が速度の落ちる原因とは考えにくい。
で、ここでいくつか質問だけど
・クリッピング処理(画面からはみ出た部分を描画しないようにする処理)はちゃんとやってる?
・みえない部分は描画しないようにしてる?(Zバッファを利用して前から描画とかでもいいや)
・実際のゲームの画面で一回の描画で何ブロック描画する必要があるのよ?(マップ全部じゃないでしょ?)
・カリングの設定はしっかりできてる?
・本当に速度の落ちる原因はポリ数だったか調べた?
(実はこれを調べるのは結構困難。単に描画面積がでかかっただけかもしれないし、
クリッピング処理が上手く働いていなかったとか・・・。)
あたりは全部やってるの?
>>348 Photoshop Elementsはアルファチャンネル削られてるからゲープロ的にはだめぽだと思う。
DirectDraw世代なら別にかまわないけど。
>>330 環境にもよるがDrawPrimitiveをめっさいっぱい呼ぶともっさりするので注意な。
>>336 誰も突っ込まないので(というか突っ込まなくてもいいか?)一応。
matView ビュー行列(あらかじめ作っとく)
matBillboard ビルボード行列
D3DXMatrixTranspose(&matBillboard, &matView);//転置
matBillboard._14 = matBillboard._24 = matBillboard._34 = 0.0f;
この方が早い。逆行列使うのは避けた方がいいでそ?
>>350 そこでMS謹製のTextureToolですよ。
('A`)マンドクセ
>>350 pngで保存すると背景の部分がアルファチャンネル扱いになるけど?
それで十分じゃないの?
354 :
名前は開発中のものです。 :04/02/02 07:31 ID:Jm+cIG2+
>>351 ビルボードなんてカメラと平行っぽくなってりゃいいんじゃないの?
なんで逆行列や転置が必要なのかわからない。
そのままでいいだろ。
D3DXMATRIX bill = view;
んで、
bill._41 = bill_x;
bill._42 = bill_y;
bill._43 = bill_z;
で完成じゃボケ。
356 :
名前は開発中のものです。 :04/02/02 20:52 ID:qCykuM3X
directXってどういうものですか? 言語ではないと聞いたんで…。 DirectX覚えただけではゲーム作れないんですか?
358 :
356 :04/02/02 21:38 ID:WcP70SUw
359 :
名前は開発中のものです。 :04/02/02 23:37 ID:qCykuM3X
読んでもやっぱり分からないんですが DirectXだけ勉強してゲームは作れるんでしょうか?
360 :
オレー :04/02/03 00:26 ID:lqBJLK7t
>>359 わかりやすく言うと、DirectXはゲームとかにつかう命令のセットだ!
コントローラーのボタンを読め!とか、ポリゴンを描け!とか命令するとやってくれる。
C++とか他の言語で、その命令を呼んでやるわけだが、そーいうもんだから呼ぶために言語も勉強しろ!!
361 :
289 :04/02/03 01:28 ID:pyweXtof
てことは、C++とかじゃできないことをやってくれるのがDirectXですか。 それとも、C++でもできることを簡単にするように使うのがDirectXですか? とりあえず言語は覚えてみます。
362 :
オレー :04/02/03 01:38 ID:aqfOOcxz
>>361 とりあえず、基本的なとこでいいから、てきとーに言語覚えてからすぐSDKについてるサンプルをビルドしろ!
そんで改造していくと覚えるの速いぞ。マジお勧めなこれ
363 :
X :04/02/03 01:40 ID:low7AtO4
どうも330です。330ですというとわかりにくいのでXと呼んで頂ければと思います。 X,Y,Z 10,6,30 のMAPにおいてfor文で回してMAP情報を書き込んだ3次元配列から データを読み取ってブロック表示しているのですが。 ここで今まで書き込ませて戴きましたが、皆さんとても豊富な知識をお持ちのようで。 そこで大変ご迷惑だとは思いますがE-mailに乗せてあるアドレスで私はメッセンジャーを 使っておりましてもしよろしければ私のプログラムを見てもらいましてアドバイスをいただきたいのですが。 大変ご迷惑な事、ずうずうしい事とは承知しつつもし見て戴ける方が居られましたらお願いいたします。
微妙に変な日本語だな
ソースうpしる
367 :
X :04/02/03 11:14 ID:q1OWKOSR
//----------ゲーム本体------------------------------------------------------ // DrawMain - 描画メイン // この関数は1フレームごとに呼び出されます void DrawMain(){ // バックバッファと Z バッファをクリア lpD3DDEV->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,0),1.0f,0); // 描画開始 lpD3DDEV->BeginScene(); D3DXMATRIX matWorld,matRotateX,matTrans,matView;
368 :
X :04/02/03 11:14 ID:q1OWKOSR
static float PlayX=12,PlayY=10,PlayZ=-8; static float BectolX=3,BectolY=0,BectolZ=8; // 視点は (0,0,0) にあり、(0,0,5) の方向を向く D3DXMatrixLookAtLH(&matView,&D3DXVECTOR3(PlayX,PlayY,PlayZ),&D3DXVECTOR3(BectolX,BectolY,BectolZ),&D3DXVECTOR3(0,1,0)); // プロジェクション行列を設定 D3DXMATRIX matProj; // 視界 60 度、近くの限界 0.1、遠くの限界 100.0 D3DXMatrixPerspectiveFovLH(&matProj,60.0f * PI / 180.0f,1.0f,0.1f,100.0f); // 各行列を設定 lpD3DDEV->SetTransform(D3DTS_VIEW,&matView); lpD3DDEV->SetTransform(D3DTS_PROJECTION,&matProj);
BectolXワラタ
英語力って大事だな Bectol → Vector
371 :
オレー :04/02/03 23:34 ID:VYXMEMW7
このソース途中じゃん。続きは???????
D3DXVECTOR3がソースにある以上 英語力の問題でもないような。 途中までだけどなんか根本的に わかってないような気がする。
>>372 そう?とりあえずここまでのソースは問題なさそうな感じだけど。
細かくはみてないけど。
>>373 だってベクトルって言葉は知ってるのに
D3DXVECTOR3をベクトルって気付かないまま使ってるのはどうかと思う。
float x 3 使っちゃってるし。
サンプルか何かを見ながら
よくわからないままコーディングしてる気がする。
>>374 いや、さすがにそれだけじゃ判断できないって。
一緒に机並べてる奴がこんなソース書いてきたら、 どんな力を利用してでも自分の周りから遠ざけるけどな。
>>375 問題ないと思うならメッセンジャーでアドバイスしてあげてよ。
これだけでもstatic floatとか色々と突っ込みたいところいっぱいあるなぁ。
379 :
X :04/02/04 08:32 ID:TUjDrKub
void DrawMain(){ lpD3DDEV->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,0),1.0f,0); lpD3DDEV->BeginScene(); D3DXMATRIX matWorld,matRotateX,matTrans,matView; static float PlayX=12,PlayY=10,PlayZ=-8; static float BectolX=3,BectolY=0,BectolZ=8; D3DXMatrixLookAtLH(&matView,&D3DXVECTOR3(PlayX,PlayY,PlayZ),&D3DXVECTOR3(BectolX,BectolY,BectolZ),&D3DXVECTOR3(0,1,0)); D3DXMATRIX matProj; D3DXMatrixPerspectiveFovLH(&matProj,60.0f * PI / 180.0f,1.0f,0.1f,100.0f); lpD3DDEV->SetTransform(D3DTS_VIEW,&matView); lpD3DDEV->SetTransform(D3DTS_PROJECTION,&matProj); // MAP表示 int X,Y,Z;//各座標ループ用 lpD3DDEV->SetTexture(0,BLOCK01texture); for(Z=0;Z<2;Z++){ for(Y=0;Y<6;Y++){ for(X=0;X<10;X++){ switch(MAP[Z][Y][X][1]){ case 111:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,0,6);break; case 211:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,6,12);break; case 311:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,12,18);break; case 411:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,18,24);break; case 511:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,24,30);break; case 611:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,30,36);break; }}} po=1; FrameCnt(); lpD3DDEV->EndScene(); if (FAILED(lpD3DDEV->Present(NULL,NULL,NULL,NULL))){lpD3DDEV->Reset(¶m);} }
380 :
X :04/02/04 08:35 ID:TUjDrKub
遅くなってすいませんでした。 改行が多くて乗せれないみたいなことがでてしまい時間がかかりました。 皆さんアドバイスお願いいたします。 MAP表示のSelect文のcaseはあともっとあります。
ここまでやっちゃいけない事例のオンパレードなコードも珍しい。 D3Dより先にC言語を勉強するべき
#define BLOCK_SIZE_X (1.0f) #define BLOCK_SIZE_Y (1.0f) #define BLOCK_SIZE_Z (1.0f) CUSTOMVERTEX *pcv = (CUSTOMVERTEX *)locked_ptr; // 頂点バッファが望ましい for(Z=0;Z<2;Z++){ for(Y=0;Y<6;Y++){ for(X=0;X<10;X++){ if( MAP[Z][Y][X] != 0 ) { // 描画するか否か float x = X*BLOCK_SIZE_X; float y = Y*BLOCK_SIZE_Y; float z = Z*BLOCK_SIZE_Z; D3DCOLOR c; float tu,tv; // 立方体を構成 (カラー、UVは適当に設定) (*pcv++) = CUSTOMVERTEX( x, y, z, c, tu,tv ); (*pcv++) = CUSTOMVERTEX( x, y+BLOCK_SIZE_Y, z, c, tu, tv ); (*pcv++) = CUSTOMVERTEX( x+BLOCK_SIZE_X, y+BLOCK_SIZE_Y, z, c, tu, tv ); (*pcv++) = CUSTOMVERTEX( x+BLOCK_SIZE_X, y, z, c, tu, tv ); : : poly_counter += 1ブロックあたりのポリゴン数; } }}} DrawPrimitive( QUADLIST, poly_counter ); もしくは1ブロックごとにD3DTS_WORLDを更新してDrawPrimitive系()を複数回呼ぶ。 ・・・俺はなにか勘違いしてるんだろうか
ソースを圧縮してアップローダーにでも上げてくれれば良いのに
ああ・・・クラクラしてきた。 漏れダメかもしんない。
385 :
X :04/02/05 14:10 ID:6C1zUxy0
>ここまでやっちゃいけない事例のオンパレードなコードも珍しい。 どこか教えて戴けないでしょうか。
>>385 switchの事だと思うけど。
あと、PrintBLOCK()の中身の一部を晒しつつ
トリップつけてみてよ
387 :
X :04/02/05 14:40 ID:6C1zUxy0
void PrintBLOCK(D3DXMATRIX *matTrans,D3DXMATRIX *matWorld,int MapZ,int MapY,int MapX,int H,int OF){ int HF,W,WF,O; HF=H+2;W=H+2;WF=H+4;O=H+4; if(MAP[MapZ][MapY][MapX][0]==1){H++;} ・ for( ;H<HF;H++){ D3DXMatrixTranslation(matTrans,MoveX[MapZ][MapY][MapX],MoveY[MapZ][MapY][MapX],MoveZ[MapZ][MapY][MapX]); *matWorld = *matTrans; lpD3DDEV->SetTransform(D3DTS_WORLD,matWorld); lpD3DDEV->SetStreamSource(0,vb[H],0,sizeof(LVERTEX)); lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2); } for( ;W<WF;W++){ D3DXMatrixTranslation(matTrans,MoveX[MapZ][MapY][MapX],MoveY[MapZ][MapY][MapX],MoveZ[MapZ][MapY][MapX]); *matWorld = *matTrans; lpD3DDEV->SetTransform(D3DTS_WORLD,matWorld); lpD3DDEV->SetStreamSource(0,vb[W],0,sizeof(LVERTEX)); lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2); } for( ;O<OF;O++){ D3DXMatrixTranslation(matTrans,MoveX[MapZ][MapY][MapX],MoveY[MapZ][MapY][MapX],MoveZ[MapZ][MapY][MapX]); *matWorld = *matTrans; lpD3DDEV->SetTransform(D3DTS_WORLD,matWorld); lpD3DDEV->SetStreamSource(0,vb[O],0,sizeof(LVERTEX)); lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2); } } こんな感じです。LPDIRECT3DVERTEXBUFFER9 vb[]がグローバルでvb[1800]確保していてその変数の中に頂点データを格納してます。 379のfor文のZが少しおかしかったです。終了条件は30でした。 if文の・はその数値によって立方体のどの面を表示しないかを設定してます。
なにゆえ頂点バッファが1800も? 1つじゃだめなの?
もはやつっこむ所が多すぎてつっこみきれん。 もうネタとしか思えない。
390 :
名前は開発中のものです。 :04/02/05 15:18 ID:yFFdfEYa
ポリゴン2つ描画するのに、毎度DrawPrimitive使うのはかなり重いんじゃないか? あと、もし毎フレームごとに頂点バッファ作っているようなら、 背景みたいに変形しないモデルなら、最初に全てのポリゴンを含んだ頂点バッファを 1つ作っておいて、それをDrawPrimitiveで描画したほうが手間がかからないよ。
int flag = MAP[MapZ][MapY][MapX][0]; ブロック[0,0,0]の 常に描画する6ポリゴン ブロック[0,0,0]の flag!=1の時だけ描画する6ポリゴン ブロック[1,0,0]の 常に描画する6ポリゴン ブロック[1,0,0]の flag!=1の時だけ描画する6ポリゴン ブロック[2,0,0]の 常に描画する6ポリゴン ブロック[2,0,0]の flag!=1の時だけ描画する6ポリゴン : void DrawMain() { lpD3DDEV->SetStreamSource(0,vb,0,sizeof(LVERTEX)); for(Z=0;Z<2;Z++){ for(Y=0;Y<6;Y++){ for(X=0;X<10;X++){ PrintBLOCK(Z,Y,X); }}} } void PrintBLOCK( int MapZ, int MapY, int MapX ) { D3DXMATRIX matWorld; D3DXMatrixTranslation(&matWorld, MoveX[MapZ][MapY][MapX], MoveY[MapZ][MapY][MapX], MoveZ[MapZ][MapY][MapX]); lpD3DDEV->SetTransform(D3DTS_WORLD, &matWorld); int StartVertex = (((CAP_X * CAP_Y) * MapZ) + (CAP_X + MapY) + MapX) * 12; int PrimitiveCount = (MAP[MapZ][MapY][MapX][0]==1)? 6 : 12; lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN, StartVertex, PrimitiveCount); }
ものすごい勢いで間違えてた・・・ × : int StartVertex = (((CAP_X * CAP_Y) * MapZ) + (CAP_X + MapY) + MapX) * 12; lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN, StartVertex, PrimitiveCount); ○ : #define TRIANGLE_NUM (12) // 1ブロックを構成するポリゴン数 #define VERTEX_NUM (3) // 1トライアングルを構成する頂点数 int StartVertex = (((CAP_X * CAP_Y) * MapZ) + (CAP_X * MapY) + MapX) * TRIANGLE_NUM * VERTEX_NUM; lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLELIST, StartVertex, PrimitiveCount);
393 :
X :04/02/06 09:41 ID:0X7fE0LV
1800個用意してるのはブロックの大きさの違う頂点データを格納しているからです。 MAP情報(ブロックの大きさ、表示面FLG)をtxtから読み込んで表示させています。 1ブロック分の頂点データでMAP表示をしたところポリゴン数が多かったので 違う大きさのブロックを用意してポリゴン数を減らそうとしました。
394 :
X :04/02/07 12:19 ID:HQxh50cd
頂点バッファは最初に用意しています。 ポリゴン数は500強まで抑えれたのですが全然FPSがでません。 原因として考えられるものを見たのですがわかりません。 たとえばどんなことをすればFPSがでないのでしょうか。 どなたか教えていただけませんでしょうか。
>>394 だから500ぽっちのポリ数で処理オチなんてするわけないでしょ。
なんでわからんのかねチミ。
原因は別のところにあるのだよ。
劣悪な環境なのかもよw
>>394 少しずつ処理を止めていって、どの処理が重いのか検討つけてみなよ。
その上で、
PCやグラボがショボイってことは無い?MSのサンプルはきちんと動く?HELで動かしてない?
初期化の段階で一度、定義取得すればいいような処理を、毎回やってない?
無駄にループ処理が多くない?ループの外に出せる処理をループ内でやってない?
ソースをうpしてくれん事には どうにも解決できない希ガス
399 :
X :04/02/08 03:00 ID:VlGbZ8et
皆さんができるだけレベルの高い人が多くの見れくれる場所はどこですか。 そういった事をしたことがなくて少しびびってます。
え?
コーディングも変だが日本語も変だな。
翻訳サイトでも使ったのか?
貴様どこの星から来た!?
さすがに
>>399 は別人ネタレスじゃないか?まあX氏自身もネタに近いものがあるが・・・
はたして彼は、今までに出たアドバイスを試すことができたのだろうか?
408 :
X :04/02/08 12:46 ID:1SC30ugo
どうもXです。399はいちよX本人です。 日本語がおかしいのは実は1ヶ月ほど1日の睡眠時間が3時間程度の状態 が続いてるからです。それとネタ的なプログラムな事は3Dのプログラム に関してまだ触って3ヶ月だからです。あと私の理解力のなさからです。 ビルボードに関しては試させて戴きました。まだカメラを移動させてそれに 大してビルボードされておりませんが。
釣りな気がしてきた
釣りが気にしてきた。
あそこまで遅くなるほうに最適化出来るということは 釣 り な 気 が し て き た
412 :
X :04/02/08 18:32 ID:nsvaA+4r
信じて戴けないかもしれませんがネタではありません。 あと数日である程度動く物にしなければいけません。 誠に自分勝手ではございますがもしよければメッセンジャーでアドバイスを戴けないでしょうか。 あと数日は寝ずにがんばっておりますので入って下されば絶対います。 当然メッセンジャーに入って気が向いてる時だけアドバイスして戴けるだけで結構です。 本当にご迷惑だとは思いますが10秒でも20秒でもアドバイスして戴きたい状態です。 もしアドバイスしてやってもいいと思われる方が居られましたらお願い致します。
413 :
名前は開発中のものです。 :04/02/08 18:53 ID:2mWO52jY
睡眠時間をけずらなければいけないほど 切羽詰った状況とは何だ? 答えなさい。話はそれからだ。
>実は1ヶ月ほど1日の睡眠時間が3時間程度 であのレベルじゃあと数日じゃどうにもならんだろ。 いっそもう他人に頼んじゃったほうがいいんじゃない? アドバイスでどうにかなるレベルじゃない。
416 :
X :04/02/08 20:43 ID:AyXCEV6t
実は数日後にある程度完成させた作品をソースごとネットで公開し、 オープンソース的な状態でどんどんそのゲームを進化させていきたいと 思っております。それまではソースを完全公開は避けたいので メッセンジャーでアドバイスを戴ける方だけに渡したいと思っております。 正確には何日後かわかりませんが数日後にある程度完成した作品を とある場所で公開するのでそれまでにという思いです。
趣味でやってるの? だとしたら数日後じゃなくてもいいじゃない。 全くダメなんでもっと修行したほうがいいよ。 あんなのオープンソースにしても意味がない。 それともやっぱりネタですか?
状況を正確に言いなさい! 学校の宿題なら手伝えないでしょ
急がなくても、自分の気の済むように作りこんでから公開してもいいんじゃないの? ここでゲームプログラム作っている人達は、他人のソースは参考にしても、それを 拡張してまでゲーム作ったりする人は少ないんじゃない? 最初から作ったほうが面白いし、俺イズムなコーディングできるから。
420 :
X :04/02/08 21:44 ID:AyXCEV6t
正確な状況を言います。 まず宿題ではありません。ゲームを作る宿題があると思われてるということは そういった学校に通われてると思われてるみたいですね。 私は大学生で趣味でゲームを作っております。しかし今回の作品は私と知人2人の3人で作っているものでして 新しくHPを作って目玉としてオープンソース的なゲームプログラムを公開します。 公開日は今週の水曜日の18時です。メンバが各々違う処理を担当しており 最初最低限の仕様を決めてそこまで作り上げて公開ということです。 今まで公開日が伸びてしまい最終的な公開日が今週の水曜になっています。 私が最低限するべくレベルまで出来ていない状況なのでアドバイスを戴けたらと 思い書き込ませていただきました。
宿題だったか…
HPのURLをキボンヌ
プロの方々に質問させてください。 私のノートパソコンはDirect3D対応していないのですが (お兄ちゃんから貰ったもので古いんです) うっかりDirect3D対応のゲームを買ってしまいました。 あきらめるしかないのでしょうか? Direct3Dの確認はdxdiagってやつで見ました。 Direct3Dアクセラレータ利用できません。 って書いていました。 デバイス名はTridentVideoAccelerator9525DVD 5.6070.26 ってあります。 お兄ちゃんはあきらめろって言ってたんですが もったいないので助けてください!
つーか完成品じゃない物を期日決めて公開しても しょうがないと思うけど。
>>424 ビデオカードが対応してないんだから
どうあがいても無理。
そんなことよりおじちゃんと遊ばない?
いや、これは間違いなくネタだろ
お兄ちゃんといっても弟でしょ
>X 大阪府の人?
432 :
X :04/02/11 01:35 ID:RvFWUtYj
なぜに大阪?
>>424 ちょっとワラタ
俺も今度どこかで質問するときは妹のフリをしよう。
434 :
名前は開発中のものです。 :04/02/12 23:29 ID:ZfdN/mCD
directxを簡単に扱えるライブラリって結構あるけどどれが最強よ?
435 :
デフォルトの名無しさん :04/02/13 00:02 ID:s0TZDiXw
自作
他人のソース読むのメンドウ。カスタマイズすると何処で影響出るか判らずブキミ。 なので、原理をパクって、ソースは自作。
仕事でライブラリ屋やってたから自作の利点は分かるけど、 気力的に続かなくなる。ゲーム作ることに気力を割いた方がいいよ。
439 :
名前は開発中のものです。 :04/02/18 13:34 ID:p73oUtCq
ビルボードでの計算式を教えていただけませんか。 if( BillBoard.x<0.0f){ rad = (float)acos(D3DXVec3Dot(&BillBoard, &sBillBoard)/(D3DXVec3Length(&sBillBoard)*D3DXVec3Length(&BillBoard))); }else{ rad = -(float)acos(D3DXVec3Dot(&BillBoard, &sBillBoard)/(D3DXVec3Length(&sBillBoard)*D3DXVec3Length(&BillBoard))); } D3DXMatrixRotationY(&mRotateY, rad); } これで平面におけるビルボードはできているのですが カメラの位置がXYZどの方向に移動してもそちらへ向くための数式を 誰か教えていただけませんか。
440 :
名前は開発中のものです。 :04/02/18 16:09 ID:0iEToC7t
平面が出来てるなら、もう1軸足すだけですね
イチジク
443 :
匿名君 :04/02/20 01:07 ID:63doXt8J
444 :
名前は開発中のものです。 :04/02/20 01:12 ID:cjTWv5RL
445 :
匿名君 :04/02/20 01:28 ID:63doXt8J
>>444 ああ、そうだったのですね。(^^;
基礎知らなくてどうもすんません。
446 :
445 :04/02/21 22:42 ID:DrvAnV60
スプライトを使って簡単に加算合成ができました! しかしながら、常に画面手前に表示されてしまいます。 SetVertexShader(FVF_LVERTEX) と SetTexture(0,Img); つかってやることは出来ないでしょうか? スプライトで3Dの表現は難しいですか?
>>446 どうも何がやりたいのかがよく分からないんだが、、
エフェクトなら画面一番手前に表示されるのが普通じゃないのか?
448 :
445 :04/02/21 22:49 ID:DrvAnV60
あ、すいません、できました(汗 上げてすいません
449 :
445 :04/02/21 22:51 ID:DrvAnV60
>>447 3Dアクションゲームだったんで、そのキャラの手前にエフェクト表示とかしたかったんですよ。
450 :
名前は開発中のものです。 :04/02/27 21:28 ID:CEfjX1WV
大学のHPに公開して、教授にオープンソースする 宿題・・・ですかね、期日も決まってるしなんか変
シェーダについて質問があります。DirectXのBumpEarthサンプルのように、 ピクセル単位の凹凸と映り込みの表現を、シェーダとキューブマップを使って再現 したいのですが、バンプ等に使用するノーマルマップを参照してキューブマップを ピクセル単位で貼り付けるなんてことは、シェーダで可能なんでしょうか?
グループで卒業論文にあたるプロジェクトをやってるとか。
モデルにスケール100倍をかけて描画したらライトの 影響を受けなくなりました。ライトの強さを100倍にしたら 普通に受けるようになりました。 なぜ?
454 :
名前は開発中のものです。 :04/03/06 11:07 ID:gyOTZTVe
>>453 法線ベクトルを正規化しなかったからじゃない?
>>453 実はレンダリングステータスにこんなものがある
D3DRS_NORMALIZENORMALS
ためしにTRUEにしてみるよろ。
>>453 スケーリング行列の場合はベクトルの長さは保たれません。(当たり前)
法線ベクトルを正規化して頂点ストリームに渡しても、変換したら長さが1以外になります。
455にもあるD3DRS_NORMALIZENORMALSを使って法線変換後に正規化させましょう。
457 :
名前は開発中のものです。 :04/03/21 15:36 ID:LgK8+mJY
大変初歩的な質問ですが D3DXCreateTextureFromFileAで取得したテクスチャの縦横ピクセルサイズは どこで取得すればよろしいでしょうか? (フォーマットがわかればなおよしA8R8G8B8<ビットフォーマット) 調べたのですが、納得がいく方法が見つかりません。 現状は横1ピクセルのデータ-を仮で読み込んで、ロックしそのピッチ幅を取得 それを基準にして、他の画像は横幅を割り算して取得しています。 目的は大きいテクスチャの一部分を、動的に他のテクスチャに複写し ポリゴンに貼り付ける為です。 もっともゲームで使うなら最初からサイズは解っているので、 決め打ちでいいのですが、そこは突っ込まないでください^^
>>457 テクスチャからサーフェースを、そのサーフェースからD3DSURFACE_DESCを。
ここにサイズやらフォーマットやらが書かれている。
459 :
457 :04/03/21 17:58 ID:LgK8+mJY
>>458 レス有難う。こちらも調べて幾つか解ったことがあったので自己れすします
D3DXCreateTextureFromFileAではなくD3DXCreateTextureFromFileEXの
ColorKey パラメーターの説明
透明となる値。カラーキーを無効にする場合は 0 を指定する。
ソース イメージのフォーマットとは関係なく、これは常に 32 ビットの ARGB
^^^^^^^^^^^^^^^^^^^^^^^^^^^
カラーである。アルファが有意であり、通常はカラーキーを不透明にする場合は
FF を指定する。したがって、不透明な黒の場合、値は &HFF000000 となる。
実験しましたら確かにこのフォーマットで作られていました。EXもAもたぶん同じ^^
更に質問
3Dモデルに結び付けられていない。1枚絵(ポリゴンに貼り付けるだけ)で使うテクスチャをどのように管理されていますか?
私は以下のように考えているのですが、他の方はどのような方法をとられてますか?
巨大なテクスチャファイル(いろんなパーツが入っている)
テクスチャ配列(クラス) それぞれのテクスチャクラスにサイズと位置を記憶
使用時*テクスチャ番号(引数)
これによってテクスチャクラスは自分が必要な
データ-を巨大テクスチャより切り取り動的に切り替えることができる。
小さなパーツで構成される画面を作る時に適している。
テクスチャ間のコピーのときに任意の処理ができる(例:枠をつけたり)
テクスチャクラスに振る舞いを登録できるような設計にできる為、
使用する側はそのままの表示ロジックを維持しながら、データ-を供給するクラス側で
データを入れ替えることが可能。
(例えば時間に応じて変化するテクスチャなど)
460 :
名前は開発中のものです。 :04/03/22 01:06 ID:tNFLCTBp
461 :
初心者 :04/03/23 14:04 ID:Jczyt83k
初歩的な質問で申し訳ないのですが 読み方はダイレクトサンディでよろしいのでしょうか?
462 :
名前は開発中のものです。 :04/03/23 21:23 ID:Yrm+HBGz
>>461 違うよ サムディ 信じる心いつまでも おーーーーサムディ♪
463 :
名前は開発中のものです。 :04/03/23 22:42 ID:5PwlM6K3
ディレクトセックス
>>461 3Dを「サンディ」と呼ぶのは
出版業界から嫌われているサンディ○○ぐらいだろ
>>465 任天堂が64のCMでサンディって言ってたじゃん。
任天堂が言うんだから、サンディが正しいに違いない。
bio100%のサンディー恋塚
469 :
名前は開発中のものです。 :04/03/30 23:59 ID:fcRSAwJm
皆、バーテックスバッファをどういう構成で使ってます? MSのFAQを読む限りでは、なるべくSetStreamをしないほうがいいって書いて あるんだけど、単一のVBに全てのメッシュ頂点を置くより、メッシュ単位で VBを持たせて、各Meshを描画するたびにSetStreamでVBを切り替えたほうが 圧倒的に速かった。これはVRAM容量と頂点数に依存すると思われるけれども、 mesh毎にVBをもつ方法だとFVFをモデル単位で最適化できるし 利点の方が多そうなんだけど、実の所どうなんでしょうか? もう一つは、FVF単位で複数のVBを持つというのもあるかと思いますが。 あと、SetStreamでVBを切り替えるたびに、System RAM→VRAM間の データ転送が起きるんでしょうか?
470 :
名前は開発中のものです。 :04/03/31 03:36 ID:wPHsbNEc
どのスレで聞いたらいいかよく分からんのでここで聞かせてもらいます。 3Dで雷みたいなエフェクトをビルボードでアニメーションさせて表示して るんですがビルボード以外でなるだけ軽くて使えそうな方法って無いんでしょうか? 教えてください
471 :
名前は開発中のものです。 :04/03/31 07:08 ID:uLEtiF6X
空の描画みたいな完全に2Dでいいモノなら、FVF_XYZRHW でスクリーン座標系で描く。
472 :
名前は開発中のものです。 :04/04/04 01:41 ID:hMv86NdG
473 :
名前は開発中のものです。 :04/04/07 12:07 ID:Z8uh3z3S
DirectX9を学ぼうと思ってるのですが、いきなりじゃ難しいでしょうか? DirectX7とかを学んでからの方が良いでしょうか?
>>473 初めて学ぶのであれば、どちらも大差ない。
476 :
名前は開発中のものです。 :04/04/07 13:56 ID:kANErwe5
>>476 レスありがとうございます
シェーダーとか良く分からないんですが、
Basicって書いてあるから一番簡単なのかなと思って見てみたんですが全然分からなかったです。
固定パイプラインとやらも良く分かりませんが、そこ読んで勉強してみます
478 :
476 :04/04/07 18:44 ID:kANErwe5
>>477 固定機能パイプラインに対して、プログラマブル・パイプライン。
これがバーテックス/ピクセル・シェーダー。
まぁ、今はわからんでよろしい。とにかくそれはfixed pipeline で
テクスチャー~環境マップ~バンプマップまで、自在に描けるように
なってからのアドバンスド・コース。先に進んでみればシェーダー自体は
なんにも難しい事はありません。
479 :
476 :04/04/07 18:47 ID:kANErwe5
おっと、ちなみにHLSLとは、 High Level Shader Language そのBasicとは、単に「HLSLの基礎」という意味だと思われる。 このHigh Levelとは、元々のアセンブリ・シェーダー言語と相対的に、 高級(高抽象度)言語であるというだけの話。
>>476 さん
いろいろありがとうございます。
覚える事が沢山あって大変そうですが頑張ります。
481 :
476 :04/04/07 23:08 ID:kANErwe5
どういたしまして。MFC同様、最初は圧倒されるけど、所詮凡人の作ったAPI。
こつこつとやっていけば、たいした事はありません。
それより、OpenGLという選択肢もありますが?
http://www.opengl.org
>>481 自分が調べた限りでは、OpenGLの方が使いやすかったりするっぽいですが、
将来性を考えるとDirectXの方が良いような気がします。
↑的違いだったらすいません。あまり調べてないので。
483 :
名前は開発中のものです。 :04/04/08 11:43 ID:k7lLjW3m
隊長!DirectSoundでリスナーって二つ使えますでしょうか!? なんか二つ作っても片方からしか聞こえません!!
リスナーは聞き手なので一つだけ。
画面上にある矩形をマウスでドラックさせるのを作ってるけど 手計算で算出した矩形の射影座標を元に計算させる方法以外で もっとスマートな方法あります? 同じ計算を描画ライブラリがやってるだろうからそれを利用できれば 2度手間にならないと思うんだけど。 開発環境 8..1 D3D VC6.0
説明不足で何をしたいのかよく分からんが、最初から矩形をスクリーン座標で 描画したら駄目なのか?
487 :
:04/06/14 17:42 ID:WFl8Z6je
Savage4でDirect3Dのメッシュやテクスチャが崩れるんですが、 これは放置してて大丈夫ですか?
488 :
名前は開発中のものです。 :04/06/14 21:24 ID:DXSiFvmK
>>487 Savage4は欠陥品なので完全無視でALL OK。
490 :
名前は開発中のものです。 :04/06/15 21:10 ID:SDa90yDU
皆さん、【dx90update_managed.exe】って使いましたか? 自分はMSDNのサイトから落として実行したのですが、以後、自作プログラムが おかしくなりました。 以下が処理の順番です。 ①.2Dスプライト(ウィンドウとか)の動きに頂点シェーダを使用したいので、 X,Y,Z,Color,U,Vのフォーマットで頂点バッファを作成 ②.LockしてXYZには-1~+1の値 UVには0~テクスチャのWHを設定 ③.制御用の行列をSetVertexShaderConstantする ④.SetVertexShader SetStreamSource DrawPrimitive を呼ぶ。 8.1で作ってますが【dx90update_managed.exe】を実行する前は1~4で大丈夫でした。 ですが実行後は、②のUVを0~1にしないと表示が上手くいきませんでした。 同じ経験した人っていますか?
どうせ自分のバグだよ
492 :
名前は開発中のものです。 :04/06/15 22:11 ID:vBX3lzB0
>>490 どうおかしくなるの?
どうなってほしいの?
肝心な情報がすっぽり抜けてるよw
あーむかつくw
Savage4は放置でいいと思う。 あのボード(というかドライバ?)は手におえない。 DirectX使ったプログラムを配布する人は、 Savage4の奇妙さを体験しておくべきだと思う。
どんなことになるの スクリーンショットとか見せて
Savage4 ・オーバーレイするとハングアップする。 ・透過色ありサーフェースの描画が乱れる。 ・Zバッファを正しく参照しないことがある。 ・アルファブレンドで重ねるとZバッファに異常が出ることがある。 ・32ビットカラーのみ機能制限がある。 ・DirectX8以降で誤動作しやすい。
回避方法とかあんの?
>>497 回避方法はある。
さけぶんだ。大きな声で。「ぬるぽ!」って。
叫ぶ回数は1回だ。
2回以上叫ぶと効果がない。注意しろよ。
ぬるぽ!
ぬるぽ!
>>503 オマエは ! を全角で叫んだからダメなんだ。
半角で叫べ!
ぬるぽ!
ぬるぽ
ぬるぽ! ぬるぽ! ぬるぽ!
ぬるぽ
大きいぬるぽと、小さいぬるぽ。 あなたは、どちr
511 :
名前は開発中のものです。 :04/07/24 19:32 ID:P1GEgvZG
512 :
名前は開発中のものです。 :04/07/25 20:37 ID:umbpNFnG
513 :
名前は開発中のものです。 :04/07/26 20:34 ID:RTagjcW0
515 :
名前は開発中のものです。 :04/07/28 12:48 ID:XhHnaZC6
517 :
名前は開発中のものです。 :04/08/02 23:28 ID:jHaMhjeT
519 :
名前は開発中のものです。 :04/08/13 12:39 ID:YcFHAU6U
Direct3Dの次バージョンは、 大脳にインストールすると、透視できるようになるって本当れすか?
本当れす
522 :
名前は開発中のものです。 :04/08/16 12:13 ID:LhW0fUrv
Direct3Dの次バージョンは、 相対性理論をサポートしたDirect4Dって聞いたんですけど本当れすか?
あれ? 次バージョンは液体が使えるって聞いたぞ
525 :
名前は開発中のものです。 :04/08/16 23:37 ID:o5d17tpP
526 :
523 :04/08/17 13:00 ID:6FDqNPYe
レスツイタ━━━━||Φ|(|゚|∀|゚|)|Φ||━━━━!!!!
なんで閉じ込めてられてんねんキミ。
528 :
名前は開発中のものです。 :04/08/18 00:53 ID:IssSuWG7
DirectX 9.0d には藤原紀香が付いてきます。どうぞお構いなく。
福原愛ちゃんのママが付いてくるなら 考えてやってもいい。
それじゃ、愛ちゃんをもらおうか。
しかたない。 パパをもらうとしよう。
えーと。 私は、何をもらえるのでしょうか?
藤原紀香のママだな。
わかりました。 では、いただきます。
先生! ボクは誰をもらえますか?
パパイヤ鈴木のパパだな。
マジですか? マジでパパイヤ鈴木のパパですか? チェンジ出来ませんか?
仕方ない、細木数子のママにしといてやる。
俺はパパイヤ鈴木で我慢しよう。
540 :
名前は開発中のものです。 :04/09/03 21:55 ID:WqdUNBwA
複数のモーションデータ付きXファイルをつくろうとして、 テキスト形式のXファイルの、モーションデータの部分を メモ帳つかってコピーしてんだけど、これが結構メンドクサイ。 なんか楽に作る方法ってないですか?
541 :
名前は開発中のものです。 :04/09/03 22:03 ID:EuFC3A0v
>>540 同じディレクトリにあって、ファイル名のある法則にしたがって
複数のXファイルのアニメーション部分だけコピーしてまとめるプログラムを組む。
とか
必ず、1つのモーションデータとして作ってもらうってのはどうよ?
つまりキーフレーム0~29までは歩きモーション、30~59まではジャンプモーション
って具合に作ってもらう。
とかいかがでしょうか?
>>541 ものすごいやっつけ作業で作ったMFCプログラムならあるけど
指定した4種までのアニメ付きXファイル(LWで出力したもの)のモーション
データの個所を、指定したXファイルの下にフレーム名を修正して追加すんの。
使えなくても泣かないならUPするよ?
543 :
541 :04/09/04 22:07 ID:TzAUQGCx
>>542 んなもん俺は自分で作れるよw
ところでなんで「4種まで」なんだ?
MFCの意味もようわからんし。
やっつけにしてもコンソールプログラムにしておいて、ファイルを放り込むだけでまとめてくれるとか
フォルダ以下のXファイルを(ファイル名の命名規則によって)一括変換してくれるとかの方が使い勝手いいだろ。
545 :
541 :04/09/05 09:31 ID:cl2xtHrW
>>544 はニセモノ。
>>543 うぅ残念。アニメーションは50くらいあるんすよ。
できたらプロジェクトファイルで貰えませんか?
>>542 それだと楽そうですが、今度は、読み込んだ1つの
アニメーションセットを、指定したフレームごと
分割して、トラックに格納しなおすプログラム作るのが
難しいような気がすんですが、簡単にできるなら
そっちのほうがいいかも?
少し、疲れたようだ。
そうだな。 オレも疲れたよ。
クゥ~ン・・・(つーか俺が一番疲れたってーの)
550 :
543 :04/09/07 20:21 ID:HcdIOeum
551 :
名前は開発中のものです。 :04/09/08 12:27 ID:ynCgLjJ8
>>550 >チェックボックスの配列のやり方が、わかんないからなのさ~!
まさかたったこれだけの理由で4種類とか制限ついてんのか?
逝ってこいw
チェックボックス付きのリストビュー使うとか頭働かないの?
552 :
543 :04/09/09 18:50 ID:e/m8MsLA
だからやっつけだとw 50もモーション使うとは格闘ゲームとかかいな?
ぬるぽ
>553 してあげないよw
555 :
名前は開発中のものです。 :04/09/12 12:00:42 ID:G8jzJ+9I
ところで3Dに弱いPCを持つユーザーのことを考えてD3Dのゲームを作る場合 動作環境はどれくらいと考えるといいのでしょうか? 私は最低ラインをPenⅢ500MHz頃のスペックで準拠させようとしていますが もう少し高めのほうがいいのでしょうか?
D3Dの場合、CPUスペックはほぼ考慮しなくて良い。する必要ない。 強いて言えばMMXが載ってるかどうかぐらい。
>>555 ビデオ性能を考えれ。
ま、無印モバラデが最低ラインかな?
CPUやグラボの最低ライン決めても、 どんどんオーバーしてくんだな。
今なら自分の中の最低ラインはDX8VS有PS無かなぁ
3ds max 6 で作ったシーンを .x に出力したいんだけど 出来ないんですかね? SDKのExtraに入ってたエクスポーターは5.1まで対応で、 バイナリが入ってないし、max 6.0のSDKではコンパイル通らないし・・・ Tinyとかはmaxで作られてるらしいんでmaxで逝くのが 標準かと思ってたんだけど・・・ とりあえずLightwaveでやってるんだけど、複数アニメ サポートしてないしOTL
563 :
555 :04/09/12 21:18:23 ID:nn5iy7jY
説明不足でした >最低ラインをPenⅢ500MHz 頃 のスペック というだけで別にCPUの性能ではなくその頃のビデオ性能くらいという意味です
>>560 >>LightWave
モーションミキサーで妥協するしかなさそうな気がする。。。
一旦motファイルに書き出して、新しいシーンファイルで
結合された状態のデータを作るのね。
プログラム技術のないユーザーは最終的にレンダリング
するためのlwsを作るためのlwsファイルを作るのが定石。
>>560 >561の通りで正解なんだが、わかりにくいような気がするので補足
Panda Exporterというフリーのプラグインがある。
ぐぐってみ。
うおお みなさんたくさんのレスありがとうございます! Lightwaveで生きていくしかないかなぁと思いつつ、 それなりに面白味を見出してたところでした。 panda exporterですか。今までこれ系のスレでも 聞いた事無かったので知りませんでしたよ。 ちょっとこれからいろいろ調べてみます。
Panda Exporterテスツしてみたんですが、 アニメーションを、キーフレームのタイム関係無しに 一定時間ごとにサンプリングしてしまいますね。 (例えば、2フレーム毎にサンプリング) これは避けられないですかね?(みたところ無理っぽい) んー、これは凄く気持ち悪いんでLightwaveに帰るか・・・ LightwaveよりWindowsライクで使いやすかっただけに 残念。 強制サンプリング斬り!!
>>567 DirectXで動的にキー間の情報を補間するのは同じなんだから
予め補間されたキーフレームデータが存在してるだけでしょ?
もし、DirectXの補間方法がmaxの計算と方法が違っていた場合に
maxの方で補間したキーフレームデータがあった方が、より忠実に再生できるんじゃない?
自前で再生を実装してて、補間計算がmaxと同じならデータ量が増えてるだけだけどね。
569 :
567とか :04/09/14 22:26:49 ID:XxbZpl1O
Lightwave&エクスポーター使ってるんだけどダメだ。
プログラムでいろいろやってるんだけど、困る事が多い。
以下、漏れの(無知 || 勘違い)があったらスマソ
// エディタ
・レイヤーの入れ替えが出来ない(?)
・複数のアニメーションに対応してない(?)
// エクスポーター
・フレームの名前が決められない(せめてレイヤー名を含んでくれ)
・パーツのメッシュなんだが、
普通は
フレームの行列を設定 -> メッシュの描画
だと思うんだが、LWの場合
フレームの行列を設定 -> メッシュから原点へトランスフォーム
-> メッシュの中心点にトランスフォーム -> メッシュの描画
という感じ。
以上の事から(漏れ的に)使いものにならない事が判明。
以上グチスマソ。
自作かなぁ。自作するならモデリングは・・・とか考えつつ、
素敵なツールを探しに逝ってきます。
>>568 レスさんくす。
pandaはサイズが10倍くらいになりそうなんで厳しいですyo
570 :
名前は開発中のものです。 :04/09/14 22:35:41 ID:QrQFla+K
>>569 おおむねあってると思うよ。(フレームの名前はどうだったかな?)
#複数のアニメーションに対応してないってのは工夫次第でなんとかなんじゃね?
俺もlightwave触ったことあるけど特殊だよね。
マジでこんな糞でいいのかよって思ったw
その様子だとスキニングもあるフォーマット探してるのかな?
そうするとMayaかSoftImageかMaxが残ってるけど。
SoftImage以外はエクスポーター(プラグイン?)みたいなのを自分で作る形になるよ。
だからファイル解析は意味がない。(とくにMayaはかなり特殊)
色々とモデリングソフトとファイルフォーマットを探したことがあるので
このスレで聞いてくれれば知ってる範囲で答えるよ。
先程は取り乱してスマソ。 自作しようとかプラグイン作ろうと思ったが、それらが 存在&出現すれば意味が無くなるので思いとどまった。 効率悪いけどやりたい事はプログラムで対応、という事で Lightwaveで逝こうと思います。
>>570 即&スバラスィレスサンクスです。
~これまでのあらすじ~
最初はサンプルでも使ってたMaxで逝きたかったんだけど、
Max6はオフィシャルなプラグインが存在しない。
でPandaを使ってみたら、強制的に一定期間のアニメを吐いて
しまう。
で、Lightwave7.5Exporterに戻って細々とやってたら、
フレーム構造が特殊で、プログラムでカスタマイズ再生しにくい。
~以上
試しにMaya逝ってみようかな?(未体験)
ダメならBlenderかな?
関係ないけどBlenderって「どこの星の人が考えたインターフェイス?」
ってくらい特殊ですね。英語なのもちょっとネック。
>>570 さんは何使ってます?
>>572 Blenderにはまってた時期があるのでレスさせてもらいます。
英語なのはあまりネックにならないっす。案外上手くデザインされてます。
そしてBlenderのIKは案外素直なのですすめたいが、しかしソフト全体が
不安定で再セットアップの手間が付きまとうかもしれないのでチョット。。。
本当の敵はフリーウェア独特のバグ放置です。
>>572 >で、Lightwave7.5Exporterに戻って細々とやってたら、
>フレーム構造が特殊で、プログラムでカスタマイズ再生しにくい。
モデルの再生って理解してる?
MAX吐き出しのXfileとLightWave吐き出しのXfileで
フォーマットが違うとでも言いたいの?
じゃあ、D3DXのMesh系の関数は、内部でMAX系、LW系なんて条件分岐しとるのかね?
575 :
名前は開発中のものです。 :04/09/15 00:18:44 ID:/4xq4x6N
>>572 >
>>570 さんは何使ってます?
会社じゃMayaかSoftImageだけど自分じゃ買えないね。
LightWaveも購入したところで自分でアニメーション作れるわけでも無いし
なんか馬鹿みたいだからやるの辞めちゃったw
MayaもMayaAPI触るの結構面倒だよ。
Blenderも資料少ないし、ファイルフォーマットも特殊じゃなかったかな?
(つか、たしか公開されてないから八方塞だった希ガス。ソース公開されてるって言われてもねぇw)
色々探したけど、結局諦めた覚えあるなぁ。
Blenderは時間の無駄な予感。資料少なすぎ。つか無いw
最終的には自分で作ったものネットで公開したかったんだけど
色々と資料少ないし、LightWaveとか買える人って明らかに少数だし、
メタセコイア+ミコトにすりゃよかったかなぁ~って後悔してるw
ただ、個人でモデリングソフトを購入して何やらやる範囲で
スキニングやるならどうしたってLightWaveになるって結論は間違いじゃないと思う。
(公開されてる資料の量も含めて)
576 :
570 :04/09/15 00:27:59 ID:/4xq4x6N
>>573 あ、Blenderってそんな素直なんだ。
データってどうやってこっちにもってくるかわかりますか?
(私はこれがさっぱりでした)
よろしければご教授お願いします。
>>574 >>572 ではないけど、レス。
たしか、フレームの中心がすべて真ん中になってたから、
そのままlwoのままじゃやり難いはず。少なくとも俺はなんもできんかった。
XFileに直して読み込んだことはないんだけど、多分、全てのフレームが中心になってるんじゃないかとw
階層構造って概念がlw自体にないっつか、かなり不便。
>>576 自分はほぼオペレートとデザインオンリーです。
コード読むセンスが無いんでさっぱりですわ。
Xファイルの書き出しはできるようですが、手元のビューアーで
表示に成功した事はなしです。FKもIKもバグは少ないんですが、
今でもコンストレインツ関係にわりと不良動作の素は潜んでます。
使い方を覚えても損は無いでしょうけど、すぐには役立たないかも。
プログラムがわかるなら、フォーマットの解析を、特にMikotoの
ファイルを解析した方が早いのでないかと考えてます。
>>576 あのさ、lwoのままじゃ当り前じゃんよ…
それってローカルのまんまじゃん。
LightWave自体が、モデラとレイアウトに分かれていて
lwoファイルとlwsファイルあるんだから
lwsファイルを読み込むのが当然じゃん…
スキニングだろうが、階層構造だろうが
LightWaveにあるってーの…
>>577 うー残念。
Blenderはそこがまさにネックでして、
ゲームにデータを持ってくる方法がさっぱりわからないんですよ。
私もBlenderに用意されているエクスポーターは色々見てみましたが
全く役に立ちませんw
ので、とりあえずBlenderは何か資料がないと対象からははずれてしまったりします。
(調べ方が足りないって言われればそうかもしれないんですけど)
レスありがとうございます。
>Panda Exporterテスツしてみたんですが、 >アニメーションを、キーフレームのタイム関係無しに >一定時間ごとにサンプリングしてしまいますね。 英語だがしっかり書かれてる事を 出来ないとか言ってる理解力がない方が大騒ぎしてるだけのような?
>>578 あ、それはやってるうちに気づきましたよw
そっからまず理解しないといけないんですよね。
lwのモデラってずいぶん小さい単位の部品を作るものであって
組み立てるのはレイアウトの方なんですよね。
なんで、複数のlwoと1つのlwsで普通のモデリングソフトの吐き出すモデルファイルってイメージですよね。
つまり
複数のlwo+lws = 普通のモデルファイル
とかいう感じw
レイヤーってのはフレームじゃなくて、ただの作業しやすい用のレイヤー?(ってなにいってんの?俺)
多分、569の人もこれと同じ間違いをしたと思われw(私もしょっぱなやりましたw)
lwの体験版をもってないとこの構造に気づけないんですよねw
私は勘違いしたままプログラムを組んでしまってですねw
>>581 lwoはレイヤー毎にobject保存が出来るんだよ。(PhotoShopのレイヤーみたいなもの)
で、lwsではlwoのレイヤーまで指定してobjectを読み込めるってだけ。
完全にフリーでD-STORMに散々情報が落ちてるんだからさ…
因みに、LWのDXExporterのソースも公開されてるんだけど…
Pandaの The future...but don't know when Export of just the defined animation keys instead of sampling. を待つくらいなら、自分で作った方が早い。 IGameを使えば、簡単に抽出できるし。 その場合、結局独自フォーマットにした方が便利だから、 Xファイルなんか使わなくなってしまうと言う落ちがつくけど。
585 :
名前は開発中のものです。 :04/09/15 01:16:59 ID:/4xq4x6N
>>582 まあ早い話、プログラム側でレイヤーは触らないほうが無難ってことですよね。
lwoは頂点やらテクスチャやら読み込んで「ほな、さいなら~」って感じ。
lwoは必ずレイヤーを1つにまとめてもらう方向にしてもらうとかそんな感じがいいかも。
階層情報があるのはlwsの方。
ワンスキンのモデルだとレイヤー1つに人体まるまる入ってることが多いけど
果たして、この作り方がいいのか悪いのかは私にはわからないです。
>>585 >まあ早い話、プログラム側でレイヤーは触らないほうが無難ってことですよね。
…自分に理解するのは無理ですって言えば?
全く問題ないと思うけど、lwoのレイヤー指定読み込み。
ちゃんとPNTSタグが分かれてるだろ?
>ワンスキンのモデルだとレイヤー1つに人体まるまる入ってることが多いけど
…あのさ、あんた何言ってるのワンスキンって意味わかる?
>>585 階層関係はPGの方で責任を持っていただきたい。
1ファイル1階層でやってもらえると助かるというもんです。
そりゃ頼まれればある程度の努力はしますが。
>>586 >全く問題ないと思うけど
だから全く問題ないでしょう。
あ、ワンスキンじゃなくてスキニングのモデルでした。
失礼しました。
>あ、ワンスキンじゃなくてスキニングのモデルでした。 なんと言えば良いのやら… 通常は、スキニングのモデルはワンスキンが前提だろ?
>>587 lwoのレイヤーはゲーム側では無視です。
lwsの階層構造のみ反映されます。
簡単にいうとこんな感じでしょうか。
>>589 >通常は、スキニングのモデルはワンスキンが前提だろ?
いえ、lwoの時点でわかれていたとしても、
lwsのときにスキニングになっていればいいような気がするんですよね。
あれだけポツポツわける作り方を強いるツールなのに、
人体まるまるってところが不自然な気がします。
>>590 君は頓珍漢な事を堂々と言ってるね…
一つのlwoに6つのobjectが保存されてて、
lwsの階層読み込みの指定がレイヤー指定の同じlwoだと
無理って事か?
それともLWのレイヤーと階層構造がごっちゃになってるのか?
>>4 xq4x6N
>いえ、lwoの時点でわかれていたとしても、
>lwsのときにスキニングになっていればいいような気がするんですよね。
>あれだけポツポツわける作り方を強いるツールなのに、
>人体まるまるってところが不自然な気がします。
おまえ、ボーンによるスキニングの再生プログラム組んだ事ないだろ?
不自然な気?気?
なんだよ、気って…
理論的に考えれば、なぜワンスキンと言う名称か判るだろ…
>>592 いえ、lwoを読み込むときにレイヤーは無視しちゃった方が楽ですね。って話です。
>>593 ?
フレームがわかれていてもスキニングはできますよね?
>>594 だから、それをアホな考えだっていってるの。
lwsでは、lwoのレイヤー3を読み込めとか
そう言う指示のされかたなの。
無視したら読み込めないだろ。
>>596 ですから、意図的にlwoのレイヤーの1番にモデルをすべてまとめてもらうように
デザイナに頼んでおいた方が楽じゃ無いですか。
って話ですよ。
>>595 勿論、やろうと思えば出来る。
しかし、その意味する処理内容を
数々の発言から君が理解出来てるとも思えないね。
>>597 だから、何度も言わせるな。
それを、腕が無い、アホ、だって言ってるの。
>>599 でも、結局、レイヤーはゲームには反映されないですし。
この構造で分けておくことに意味はないですよね。
>>4 xq4x6N
おまさ、コンパイラプログラムが分割コンパイルを許さず、
ソースは一つのファイルにまとめておけって仕様だったら、クソとか思わない?
>>600 限定されたシチュエーションでの話ですが、LightWaveではレイヤー分けって
作業は時にローポリモデルの間接を曲げる時に必要な概念なんですよ。
つうかモーションはデザイナーに丸投げで良いじゃないですか。
PGサイドではlwsを使う事に注目してしまっていい気はします。
>>600 無能全開のお言葉だなww
レイヤーとは保存の形式であって、構造ではないだろ。
親子構造でアニメーションするモデルは
構造数分のlwoで保存ってか?
アホ言ってるなよ。
ロボ系とか、軽く1000近くなるぞ?
>>601 それよか、1つのモデルに対しlwoとlwsと複数のファイルがちらばるので
その中身をデザイナさんが管理できているのかっていう方が心配です。
いっそ、レイヤーは切ってしまった方がすっきりすると思っています。
1つのヘッダファイルに複数のクラスが定義してあるのって嫌ですよね?
_________ ___ | | (___) | 巻きで! | ∥ |_______,| _.∧∧ ┐ .∥ ∧,,∧ ∧∧ ∩ ∧ ∧∩ ○)(゚Д゚ ) ] ∥((゚Д゚(Ο (゚ー゚*) \(゚Д゚ )ノ  ̄⊂ |┘ ⊂ミ Uミ φ| ∪ | \. | | ∥ ミ ミ l )~ (__ノ U U U U U"U
>>604 逆だよ、親子構造のモデルを管理するのに
レイヤー分けで一つのlwoにした方が楽だろ。
何度も言うが、お前は"思ってる"とか"気がする"とか凄いな…
>>603 >親子構造でアニメーションするモデル
なるほど。
それはやりにくいです。
>1つのヘッダファイルに複数のクラスが定義してあるのって嫌ですよね? まさに、お前の言う、一つのレイヤーにまとめるってのと同義だろ。 自分で、自分の考えを否定してりゃ世話ないわな。
>>606 >>親子構造のモデルを管理するのに
>>レイヤー分けで一つのlwoにした方が楽だろ。
すまん。それもしんどいかと思うんすw
>>606 >逆だよ、親子構造のモデルを管理するのに
>レイヤー分けで一つのlwoにした方が楽だろ。
なるほど。
確かにその通りです。
lwoをメッシュ(?)格納庫と見て、lwsで構造を組み立てるって感じですかね?
>>609 え?駄目なんすか?
実は、これだなって思ったんですけどw
>>611 制作者本人なら階層関係は全部頭の中に入ってるとも思います。
でも他人を巻き込んだときに破綻する気がしたんですよ。
>>611 はぁ、お前は全く理解出来てない。
要は、LWが許している挙動をお前のプログラムが対応してればいいだけ。
決め内で、こう動くプログラムとか言ってるなって事だ。
まぁ、仕事でスピード最重視のコーディングなら許されるかも知れんが。
そのまま再生させるだけなら問題無いんですよ。 例えば、人体モデルで、拳のパーツの部分、 拳のフレーム(拳空間にトランスフォーム) |ー拳のメッシュ(拳のローカル座標系のメッシュ) になってて欲しいトコロを、LW7.5の場合、 拳のフレーム(拳空間にトランスフォーム) |ー拳のメッシュのフレーム(原点にトランスフォーム) |_拳のメッシュ(ワールド座標系のメッシュ) になってしまってるんですよ。 もしかしてこれって普通?Maxでもそうなるのかな?
>>611 >>610 のレスは完全には間違っていません。
階層の記録を数段階に分けて考えてみて欲しいのです。
>>614 全然言ってる事が理解出来ないが、
確実に言える事が二つ。
一つ、Xfileのフォーマットは決まってるぞ。
一つ、Xfileのフォーマットを理解出来てないか、アニメーションプログラムを理解してない。
管理が困難なファイルは個人製作でしか通用しないし、 それをいつまでも運用できる人ってなかなかいないと思うのです。 フィールドや敵、障害物、主人公キャラなどの1つの キャラが最低限の分割単位になるんじゃ無いでしょうか? 他人を巻き込むにしても、1人で作っていくにしてもです。 人間て倫理だけでなく観念でも世界を規定していくでしょ? lwoファイルごときにそれを記録する能力はないと思います。 やっぱりlwsファイルです。新しいlwsファイルや他のシーンを 組むためのlwsファイルを作成するべきなんだと思います。 すんません。意味不明かも。。。
618 :
名前は開発中のものです。 :04/09/15 02:39:23 ID:/4xq4x6N
>>614 俺がいってたのと全然ちがうことで悩んでたんだ。
すまんかった。
>lPIRJ7EF
>MG6VFVmK
お二方、お付き合い頂きありがとうございました。
lwのフォーマットについてずいぶん勉強できました。
ありがとうございました。
拳のフレーム(拳空間にトランスフォーム) |ー拳のメッシュのフレーム(原点にトランスフォーム) |_拳のメッシュ(ワールド座標系のメッシュ) あのさ、これが階層構造なら 拳のフレーム(拳空間にトランスフォーム)以下のツリーは 拳空間とやらになってるだろ。
>>618 お疲れ様です。あと変な観念振り回し引っ掻き回してすまんかった・・・
あまり解説できてない気もしますが解説能力もないしw
機会あれば今度は協力させてもらいたいと思います。
621 :
614 :04/09/15 03:37:56 ID:C8YNRxVr
>>619 LWの吐き出すそのデータも正解なんですよ。
ただ、例えばその拳だけスケーリングするとか、そういった場合、
その構造だと面倒なんですよ。
関係無いけどメタセコ+ミコトを除いてきた。
ミコト、X吐けないじゃんOTL
ミコト公式からのXコンバータのリンク染んでるし・・・
(ミコトのXコンバータってありますか?)
メタセコ弄ってたら「DOGA」のコマンドがあった。
で、DOGAを覗いてみたyo。
形状のインポートが貧弱じゃん・・・OTL
次はMilkshapeとBlenderを覗いてみようと思います。
>>621 >LWの吐き出すそのデータも
"も"ってなんだよ?
LWのデータはXfileのフォーマットでキチンと吐き出されるっつーの。
お前の望むフォーマットじゃないからって騒いでた訳だ。
はっきり言うと、
お前の処理だとXfileの仕様では、
プログラムの腕が無くて対応できませんって意味だろ。
普通は親の行列を子に渡して行くように処理にするだろ。
お前の言ってる処理は、階層構造無視で単体で処理したいって事か?
指定のフレーム名だけスケールとか余裕で出来るだろ?
自分の腕の無さを披露されてもな…
>拳のフレーム(拳空間にトランスフォーム) > |ー拳のメッシュ(拳のローカル座標系のメッシュ) ああ、これの意味する所が分ったような… 普通は"拳空間にトランスフォーム"とやらの下層フレームでは そのトランスフォーム行列を渡して処理するのを いきなり "拳のローカル座標系のメッシュ"とか言ってるのは 親の行列を渡して無いんだろう。 ボーンのスキニングはおろか、親子構造のアニメーションだって 理解出来てないんじゃない?
>拳のフレーム(拳空間にトランスフォーム) > |ー拳のメッシュのフレーム(原点にトランスフォーム) > |_拳のメッシュ(ワールド座標系のメッシュ) 因みにこれは、 "拳空間にトランスフォーム"する行列を下層のフレームに渡して "原点にトランスフォーム"、これが激しく意味が分らんが、 おそらく単位行列だろう(大体のXfilからしての推測) だから何も変わらず、 "ワールド座標系のメッシュ"に"拳空間にトランスフォーム"する行列をかけるから ローカルの座標が求まるんだろ。 つーか >拳のフレーム(拳空間にトランスフォーム) > |ー拳のメッシュ(拳のローカル座標系のメッシュ) って、階層構造無視の要求なのが良く分った… "拳のローカル座標系のメッシュ"に"拳空間にトランスフォーム"する行列をかけたら メチャクチャじゃん。
LWで困ったときの↓
「_ ̄フ ノ^ー┐ ///////////ノ/ ,-、二、 ーク / 7_/////////^ `ー‐‐' `ー' ///////し _l^l_ i^i i^i /////// / ,--┘ U ノ | //////^ !__ニコ lニ.ノ 7/// _,,.. . __ __l^l__へ i^i i^i //^ .. _ `ヽ ゙┐r┐T゙ ∪ ノ | |/ /::/.┬".) l く,ノr'_,ノ lニ.ノ 7 _iゞ/イ。_ノ _r'''、 | ,へ ,ヘ / / ニ-''^\¨ ∠.} l | `゙ / / |. |l、ヾ⌒-| u r_ノノ " | ヾ二ノ | ヽ |`´_,--| i、ニイ | /,ニ^\. | \l<-ニフ ,ノ ,. \、' | | | | | しリj | \ \ ̄ ,/ノ/ , | Z ゚ ゚ ゚ ゚ `ー" ー' 〔 / ̄/ '", /// ,.
DirectXのAnimationController久しぶりに弄ってるんだけど、 Timeの直接入力が出来なくなっちまってる。 フレームを直接指定は無理ですかね?やっぱ複数アニメーション必須?
628 :
627 :04/09/17 22:59:23 ID:YVERs7ZW
自己解決しました。
DirectXの本でわかりやすいやつってある?
いったい何をするのかすら説明されていない状況で、 分かりやすい本など答えようがない。 質問するのに最低限の情報を出さない馬鹿がいれば、 その最低限のことすら考えずに答える馬鹿もいる。
今からこのスレは、
>>631 を神と讃える書き込み以外を禁止します。
ハハハ、、はぁ。洋書じゃん。みんな頭いいのな
>634 DirectXのリファレンスと公式のサイトのコラムが最強、と言いたいとこだが、 出版物では大川善邦という人の本が親切でわかりやすい。 あと煽りが約1匹常駐してるようだけど、頼むからスルー汁!
>>635 彼の本は、分かりやすくはない上に
内容の偏りがとても大きい物が多いように思う。
初心者にははっきり言ってお勧めできない。
某DX9本の第一章では、DXの歴史について
彼の偏見が満ち溢れた攻撃的な文章で書かれているので、
興味あれば読んでみるといい。
637 :
名前は開発中のものです。 :04/09/20 10:20:09 ID:1CCtnaAj
>>631 お前、そんなの初心者にわかるわけないって気づかないもんかな。
質問するのに最低限の情報なんてわかる奴が質問なんかするかよ馬鹿。
だいたいてめぇがそんなに完璧だっていうのなら、模範解答ぐらい見せてみろよ。
はじめは「DirectXの本でいい本ないですか?」って質問して
「こんなのどお?」とか「どんな本がほしいの?」とか食いついてきてくれてから
詳細を出しても遅くねぇだろ?
いきなり
>>631 みたいなレスを刻むことになんの意味があるの?
興味なけりゃ失せろよ。お前がどんなに実力あろうが、読み手にとって必要ねぇだろお前のレスは。
そして質問の仕方も知らない馬鹿に、洋書を紹介する大馬鹿、 さらにそれを煽る馬鹿に、それを馬鹿という馬鹿、 ここは馬と鹿でいっぱいです。
はい、馬鹿のトップがいらっしゃいましたよ
しかしだれも目的を聞かずに、好き勝手に回答しているわけだけど、 なんだかプログラマの独善性というか、独りよがりの様が垣間見えてステキ。
642 :
635 :04/09/21 01:39:06 ID:OVi+J62+
\もうね、アボカド/ \ 馬 / \ 鹿 かと/ ∩ ∩ | つ ⊂| ∧ノ~ ! ,'っ _c,! ヽ ミ| ・ \ ⊂/ ・ \ γ⌒^ヽ ミ| ... '_) | __,,▼ /:::::::::::::ヽ. ミ|. (,,゚Д゚) |・ (,,゚Д゚) /.::::::::(,,゚Д゚) | (ノ |) | (ノ |) i:::::(ノDole|) | 馬 | |・・ .鹿 | ゙、::::::::::::ノ 人.._,,,ノ ι.・,,_,ノ U"U U"U U"U
オマエら、ガンダムは好きか?
592 名前:デフォルトの名無しさん 投稿日:04/09/21 12:08:43 アッガイなら好きだ。 593 名前:デフォルトの名無しさん 投稿日:04/09/21 17:39:48 加護より辻だろ 594 名前:デフォルトの名無しさん 本日のレス 投稿日:04/09/22 21:11:23 アッガイは低壁として有効だ。
オマエら、ガンダムは好きか?
彼女とSEXするほうが好き
オマエら、ガンダムは好きか?
彼女とSEXするほうが好き
>648 ガンダム世代ではないのでガンダムは別に好きではありませんが…
ガンダム世代だけどガンダムは嫌い
生理的に?トラウマ?
ガンダム見てたら、激しい生理痛にみまわれたんだな。きっと。
整理通以前に、見てない。 トラウマでもなんでもなく、興味ないから。
オマエら、654は好きか?
等差数列フェチの俺としては、大好きだな。
657 :
名前は開発中のものです。 :04/10/10 02:38:12 ID:jxgGsTI5
オマエら、October2004は好きか?
658 :
名前は開発中のものです。 :04/10/10 02:40:18 ID:Ecqm84vI
Direct3Dで、手前にある3Dオブジェクトが、なんか歪んでいる。 上下左右に伸びてる。 これって、治る?
視野角を狭く…でいいような
3人と見た
バックバッファサーフェスに書き込んだ画像を テクスチャとして使うことってできんの? モーションブラー用に、自前で別サーフェスを 用意してんだけど、できるんだったら、用意する サーフェスを1つ減らせてラッキー。
>サーフェスを1つ減らせてラッキー。 そう。よかったね。もう二度と来ないでちょうだい。
ゲッ!テクスチャへのレンダリングすらできない
>>663 のような奴に煽られちまった!
バックバッファのサーフェス上の画像を直接得る方法は、恐らく次の二つしかない。 Device.GetRederTargetData Device.GetFrontBufferData これらはターゲットのサーフェスへの参照を得るメソッドではなく、 サーフェスの内容を指定したサーフェスにコピーするものだ。 デバイス作成時にFSAAの設定をした場合は、AA済みの画像が手に入る。 当然パフォーマンスは良くないから、モーションブラー用に使うには向いていない。 悪かったね。君の今のやり方で我慢してちょうだい。
667 :
662 :04/10/12 20:22:26 ID:s2vByoDJ
>>665-666 サンクスクスクコ
GetRenderTargetDataでどんくらい速度でるか試してみる。
そこで頭のいい奴は、バックバッファをテクスチャにするのではなく テクスチャをバックバッファの代わりにすると考えるもんだ。 常にシーンをテクスチャに描画して、本物のバックバッファには テクスチャを描画するだけ。 しかし、この手法には数々の問題点が…(来週につづく)
>>668 別に頭なんて良くなくても、原理を分かってれば誰だって出来るだろう。
それ以前にお前が言ってることは
>>662 と何も変わってない。
来週に続いたところで、そんなもん読むくらいなら火曜の夜はぷっすま見るほうがまし。
銭金は今やってないだろ… 来月から再開でしょ。
お前ら、ぬるぽは好きガッ?
ぬるぽは好きだガッ、何か?
DirectX9で質問です。 サーフェス全体を、RGBは変化させず、α成分のみ0で 塗りつぶしたいのですが、何か上手い方法って無いでしょうか? 現在は、もう1つサーフェスを用意して、画面をクリアして、 そこに元画像をコピーしてます。
D3DRS_COLORWRITEENABLE
676 :
674 :04/10/18 20:00:44 ID:VGfCVvCx
>>675 D3DRS_COLORWRITEENABLE_ALPHAビットをリセットして
サーフェスに矩形を描画することにより、α成分を
0で塗りつぶせました。ありがとうございました。
FPSみたいに自分中心で視点回転させるんてどうすればいいんでしょか・・・ 注視点のうまい処理法がワカラナイ
いっそのこと世界を回転させるとか
ボールが転がるプログラムをしています。 ボールの半径(r)と移動量(x,z)から マトリックを作りたいのですが分かりません。 誰か教えてくれませんか?
>679 D3DXMATRIX matWorld,matTrans,matRot,matScale; D3DXMatrixIdentity( &matWorld ); D3DXVECTOR3 vec3Trans( x, y, 0.0f ); D3DXVECTOR3 vec3Scale( 1.0f,1.0f,1.0f ); D3DXVECTOR3 vec3Rot( 0.0f, 0.0f, 0.0f ); D3DXMatrixScaling( &matScale,vec3Scale.x,vec3Scale.y,vec3Scale.z ); D3DXMatrixRotationYawPitchRoll( &matRot,vec3Rot.y,vec3Rot.x,vec3Rot.z ); D3DXMatrixTranslation( &matTrans,vec3Trans.x,vec3Trans.y,vec3Trans.x ); matWorld = matScale * matRot * matTrans; ボールの半径ってのがわかんね
マトリックってのがわかんね
Mr.
>>680 半径から円周を出して、それと移動量から回転を出すのでは?
684 :
679 :04/11/14 22:11:40 ID:SapNnW4y
ス抜けすまそ。 >683 はい。 >680 ワールド上での各軸の回転量は分かったのですが、 D3DXMatrixRotationYawPitchRollなどの オイラー角による回転処理では上手く姿勢を制御できなくて 困っています。 例 X軸90度、Z軸90度の順で計算した場合。 X軸90度がワールド上でみるとY軸90度回転になってしまう。
回転させるときの軸は一つ。 まずは軸そのものを回転させることを覚えること。
686 :
679 :04/11/15 08:14:16 ID:9iJoBOqn
解決しました。
ここのHPが参考になりました。
http://hp.vector.co.jp/authors/VA013430/ さらに質問なのですが、ボールが地面(高さ0のXZ平面)に接している、
座標をボールの座標系(ローカル座標系)で知りたいのです。
ワールド座標系なら、ボール位置(ballX,ballY,ballZ)と地面なので
ballX,0,ballZと簡単なのですが、ローカル座標での位置がわからない。
平行移動とスケールは掛けていない、ボールの回転のみの
D3DXMATRIX ballMatとballの位置(ballX,ballY,ballZ)、ballY=ボールの半径
から求めるにはどうしたら良いでしょうか?
ローカルをワールドにする計算で使うマトリクスの逆行列もとめて、 ワールドにするときと逆にかけてやれば求まるんじゃないの? つーことじゃなくて?
>686 ベクトルV = (ボールと地面の接点) - (ボールの中心位置) 行列M = ballMatの移動成分を消した行列 行列MI = Mの逆行列 接点のローカルでの位置へのベクトルをVLとして (ベクトルV_tmpは作業用) V_tmp = MI * V VL = 正規化(V_tmp) * 半径 これででるんじゃないのか?
何でわざわざ複雑にするんだ。 単に逆行列掛ければいいじゃん。
文字列の表示方法がわかりません・・・orz D3DXCreateFontで定義した後、 DrawTextを用いれば良いのでしょうか?
691 :
690 :04/11/20 04:14:26 ID:Zf2UOU2N
誤爆スレ違いスマソ スルーしてください
692 :
名前は開発中のものです。 :05/01/04 20:28:36 ID:be4GSkLD
DirectX9のSDK入れたんだけどサンプルが無茶苦茶重い。 コマ送りどころじゃない。3秒に一回画面が変わるくらい。 ゲフォ2MX+Pen4 1.5Ghzなんだけどグラボが糞すぎるのかなぁ?
うん
REFなんだろ
MX使ってる奴はプレハブ暮らし
>>695 ノート対応も考えてると単純に最新機能バリバリってわけにもいかないんだよ。
同人のオナニーゲームならいいんだろうけどね。
>>696 だったらPixel Shaderは使わない。(または使う版と使わない版を作る)
Vertex Shaderはsoftware vertex processingにする。
オナニーゲームじゃないなら愚痴ってないで そんくらいやってほしい。
>692 2MXでDX9のサンプル動かそうという考えがわからん
>>699 そんな感じが平均ってことだよ。
くそ高いグラボ買う余裕あったら、CS買い足して、
PCでは動く範囲のゲームを買うのが普通だと思う。
一般人の感覚がどう話に繋がるというのだろうか。
曲がりなりにもDirectXSDK入れて開発側に回ろうとしている人間が
ヘボいビデオカード使ってギャーギャー騒ぐことに何の価値があるのか。
金の問題だけなら、たったの数千円でシェーダ3.0環境すら手に入るし
そもそも開発環境とCS(コンシューマゲームの略か?)との因果関係が全く繋がらない。
一言で言えば
>>700 頭大丈夫?
>>700 なんでそうなんの?
オマエみたいなやつがいるから、
カジュアルプログラマーが減るんだよ。
ある意味本質を付いたレスですね:-P
うひゃ、やっちまった・・・。
705 :
名前は開発中のものです。 :2005/03/29(火) 15:48:21 ID:h1LjyVBy
706 :
名前は開発中のものです。 :2005/04/02(土) 17:37:58 ID:z0euE+RD
age
ポリゴン伸ばして疑似的なブラーを再現できる? 低付加ブラー。
708 :
名前は開発中のものです。 :2005/04/15(金) 23:07:23 ID:K/7mzgKa
>>708 テクスチャ?
ただの平行投影でこうなると思うよ。
711 :
名前は開発中のものです。 :2005/04/20(水) 02:15:22 ID:uTPKZKx5
シューティングを作ろうとしていて2Dの描画で質問なんですが rhwを指定して描画するのとスプライトでの表示どちらが処理早いですか? スプライトで描画するなら回転とかが楽でいいと思ってるんですが どうでしょうか?
>711 やってみたほうが早いんじゃ・・・?
>>711 スプライトがID3DXSpriteのことを言ってるならアレは遅い。
あれはDraw1回につきDrawPrimitiveを1度ずつ呼んでいるはず。
ヘルプを見れば分かるんだが実はこんだけサイクル数がかかる。
DrawIndexedPrimitive 1200 - 1400
DrawPrimitive 1050 - 1150
こいつらを呼ぶ回数を減らせば減らすほど(普通は)速くなる。
あとD3DUSAGE_DYNAMICなVertexBufferも良いのだが
頂点バッファを用意したりロックしたり、デバイス消失のイベントをハンドルしなければならず、手間がかかる。
しかもSetStreamSourceだとかSetIndicesとかにまた数千サイクルかかる。
システムメモリに頂点溜め込んで一気にDrawIndexedPrimitiveUPが高速だし楽。
あとはこの辺を参考。
http://www.twin-tail.jp/contents/vsdx8/d3d/020/index.htm
714 :
名前は開発中のものです。 :2005/04/21(木) 01:49:14 ID:3svv31My
>>713 いつの時代の組み方ですか?
シェーダ使ったりできないし、汎用性とかまったくないじゃん。
あくまで2D専用って感じ?
それにそんなにまとめてホントに早いのかぁ?
うさんくせぇなぁ。
Zバッファの前から描画とか絡んでくると単純にまとめりゃいいってモンでもねぇんじゃねぇか?
(それともそれってDirectXが勝手に手前から描画してくれるとかあるの?)
Draw*Primitiveが遅いのは既に定説。Longhornまではどうにもならん。 NVIDIAのGDCのスライドとか見れ。
716 :
名前は開発中のものです。 :2005/04/21(木) 02:05:14 ID:3svv31My
>>715 てゆうか性能の限界ぎりぎりまで出すわけじゃないんだから
最近は動けばいいんだよ。
軽い必要はまったくないよ。
快適な環境でやりたきゃいいボード買え。
ノートPCでやってる客にも売りたきゃそもそも3Dゲーム作るな。
だいたいそんな傾向なんだから、俺が重視するのは汎用性オンリー。
DrawPrimitiveの回数をプログラム側で減らすなんて無駄。
やるならデザイナにモデルまとめさせて終わり。
あと、俺はフィルレート(前から描画)を重視したほうがよっぽどはやくなると思うけどな。
その辺との速度の比較はGDCのスライドじゃやってないでしょ?(やってる?)
>シェーダ使ったりできないし、 使えるが。
718 :
名前は開発中のものです。 :2005/04/21(木) 02:14:26 ID:3svv31My
>>717 DrawPrimitive一発でシェーダ複数使用ってできたの?
なんかプログラム複雑じゃねぇ?
てっきり
①シェーダセット!(行列とかその他もろもろ設定)
②DrawPrimitive
③シェーダ解除!
だと思ってたけど。
まとめても一括でいけるもんなんだ・・・。
そらしらんかった。
でも、その場合ってまとめた分の頂点情報もどっからどこまでがどのシェーダでって情報も
いれなきゃいけないんだよね。位置座標、UV、バンプ、法線、色、とかどう設定すんだべか。
>>718 同時にシェーダを複数使用することは出来ないよ。
ある程度の種類をまとめてDrawPrimitiveとかで纏めて描画するというだけ。
例えば敵の弾が200個だとか300個だとか出てきたら
DrawPrimitiveを1つずつ呼び出してたら塵も積もれば何とやらって奴ですよ。
普通スプライトのシェーダなんかどの弾もテクスチャ貼り付けるだけなんだから切り替える必要もないし。
こういうのは適所適材だと思うんだがな。
確かにZソートとかは効率が良いのだが…
スプライトの場合は普通テクスチャのαブレンドの関係で
順序よく描画しないと見た目が変になるからねぇ。
何この噛み合ってない会話
2Dスプライトの話なのに
>>714 がヘンな突っかかり方したのが悪いんだろ。
GPUとCPUの性能差がある環境ならDrawPrimitiveのくそっぷりが良くわかるよ。
このスレあったの2年くらい忘れてた。
>>711 なんか最近こういう誤解みたいなのが多いけど、D3DXってのは
Direct3Dを使って実装された上位ライブラリで、そこで提供されている
スプライトとかの機能は全部普通のDirect3Dの機能を使って実装
されているから、ID3DXSpriteとかも中でDrawPrimitiveを呼んでいるだけだよ。
だから、DrawPrimitiveを適切に使っていれば、ID3DXSpriteより
遅くなることは絶対に無い。
そういやID3DXSpriteって、DirectX9Summerあたりからバッチスプライトのリストに溜めて
Flushで一気に描画みたいな感じになってるけど、
>>713 の様な手法に変えたのかな?
結局3svv31Myがまるで話を理解していなかったということで。
なんか最近シェーダ馬鹿みたいなの多いね。
ウフフ フフフフフ HLSLだぁ~い好き ウフフフフフ
つか、シェーダ馬鹿にならないとこれからの3D業界は乗り切れないぞ。
その馬鹿の意味がヲタクという意味の馬鹿ならいいのだが DQNという意味の馬鹿なら困るわけで
アクセスするアドレスによってCPUからGPUに負荷を振り分けるように OSが最適化されたら、シェーダなんてのはなくなるよ。 みんな思ってるだろうけど、いまのシェーダは過渡的だし、 はっきりいってかなり不格好な実装だからね。
あ、アドレスって書いたけど、98じゃねぇんだから、 厳密にはメモリ空間か?
本物のバカキター
放置するのが一番なんだが、ひとしきり騒いで満足するまで このスレに隔離できればなお良し。他に漏れて無駄に荒れるのがワーストケース
734 :
名前は開発中のものです。 :2005/04/23(土) 00:28:22 ID:ntQ8pk/i
盛り上がってまいりました!
735 :
名前は開発中のものです。 :2005/04/23(土) 08:03:51 ID:3/WCVL7Q
rhwを指定してDrawPrimitiveUPでtop,left,right,bottomを指定して 描画してるんですが回転をさせるにはどうすればいいですか? テクスチャ座標をいじるんでしょうか?それとも画面上の位置を指定して いるほうの座標?どちらですかね?
, --- 、_ /ミミミヾヾヽ、_ ∠ヾヾヾヾヾヾjj┴彡ニヽ / , -ー‐'"´´´ ヾ.三ヽ ,' / ヾ三ヽ j | / }ミ i | | / /ミ ! } | r、 l ゙iミ __」 |]ムヽ、_ __∠二、__,ィ|/ ィ } |  ̄`ミl==r'´ / |lぅ lj 「!ヽ、_____j ヽ、_ -' レ'r'/ ちょっと面白かったよ!アンダーソン君! `! j ヽ j_ノ ', ヽァ_ '┘ ,i ヽ ___'...__ i ハ__ ヽ ゙二二 ` ,' // 八 ヽ /'´ / ヽ |ヽ、__, '´ / / \
>>735 両方試してみるのが今後のためになると思う
てか、みんな真面目に答えないのね。
お前の顔よりはみんな真面目だよ
マトリックスは真面目だよ
>>735 2D(DirectDrawとか)だったら、複数のコマを用意したアニメーション
のようにすればいいと思うし、
3Dで作ってるなら、4頂点を回転させた方が簡単にできて便利。
好きにすればいいと思う。
質問なんだけど、D3DXでポリゴンオフセットって可能?
なんじゃそりゃ?と思ってググってみたが 要するにシャドウバッファとかでズラすことかいな? そういうのはシェーダ担当な気がしないでもないのだが
簡単に言うと面の上にラインを引くと点線になるのを防ぐみたいなやつです
それじゃ合ってるか。 シェーダで座標変換した後でz値に適当な値を加えりゃいいだけでは? ただ極端に値を変えると浮いた感じになるから そこは深度バッファの精度次第になりそう。
[深度バイアス]とかいうのがあるけど、なんかダメっぽい機能だったような… 適切なオフセット値計算して射影行列に設定するってサンプルなら GameProgrammingGems1とかに載ってた
今気づいたけど
>>35 の質問に対しての回答が
>>36 でちゃんと答えられてるのね。
ちょっと面白かったよ!アンダーソン君!
>アンダーソン君! なにこれ?はやってるの?
救世主が要るスレはここですか?
何年前の映画だよ!
もうマトリックスより後に生まれた世代が書き込みしまくってる時代だもんあ
質問です。 透視射影の場合、マウスでクリックした場所の3次元空間への方向は カメラの位置ベクトルとクリック先の3次元空間点の差分で求まりますが、 正射影の場合どうやってマウスの方向を求めるのでしょうか?
755 :
名前は開発中のものです。 :2005/05/21(土) 00:07:16 ID:z/gEVygN
756 :
名前は開発中のものです。 :2005/05/26(木) 01:30:24 ID:eUP2N7f1
・main.obj : error LNK2019: 未解決の外部シンボル _D3DXCreateSprite@8 が関数 "long __cdecl InitD3d(struct HWND__ *)" (?InitD3d@@YAJPAUHWND__@@@Z) で参照されました。 ・main.obj : error LNK2019: 未解決の外部シンボル _D3DXCreateTextureFromFileExA@56 が関数 "long __cdecl InitD3d(struct HWND__ *)" (?InitD3d@@YAJPAUHWND__@@@Z) で参照されました。 ・main.obj : error LNK2019: 未解決の外部シンボル _Direct3DCreate9@4 が関数 "long __cdecl InitD3d(struct HWND__ *)" (?InitD3d@@YAJPAUHWND__@@@Z) で参照されました。 こういうリンカエラーってどうやって解決したら良いの?
>>757 プロパティから設定するの忘れてた。
ありがとう
759 :
名前は開発中のものです。 :2005/06/02(木) 23:38:17 ID:taMZnyW/
760 :
名前は開発中のものです。 :2005/06/04(土) 11:36:31 ID:5zu0k2nb
SDKの2005 Juneは出るんだろうか?
>>760 予定では2005AUGUSTになってるが遅れるのかも
762 :
名前は開発中のものです。 :2005/06/04(土) 14:58:20 ID:5zu0k2nb
>>761 二ヶ月ごとに出すんじゃなくて、今度はAUGUSTなのか
sageぐらい覚えろ、能無し。
764 :
名前は開発中のものです。 :2005/06/04(土) 16:05:35 ID:5zu0k2nb
765 :
名前は開発中のものです。 :2005/06/04(土) 19:19:36 ID:b277QKnL
DX7のD3Dのアルファブレンドとかを使って、サーフェースをグレーにして表示できる? つまり、1ピクセル当りに以下の処理をしたいわけ。 OUT.R =OUT.G = OUT.B =(IN.R + IN.B +IN.G ) /3;
767 :
名前は開発中のものです。 :2005/06/04(土) 20:45:57 ID:b277QKnL
できるとは知らなかった。
>>766 うほっ、凄い参考になるなあ
職人技っぽくてステキ
769 :
名前は開発中のものです。 :2005/06/15(水) 23:48:47 ID:VibO27At
770 :
名前は開発中のものです。 :2005/06/18(土) 11:16:59 ID:6iUM9GbJ
769 名前:名前は開発中のものです。[] 投稿日:2005/06/15(水) 23:48:47 ID:VibO27At
>>768 770 名前:名前は開発中のものです。[] 投稿日:2005/06/18(土) 11:16:59 ID:6iUM9GbJ
>>768
771 名前:名前は開発中のものです。[sage] 投稿日:2005/06/18(土) 16:23:55 ID:7iyw6hrJ
769 名前:名前は開発中のものです。[] 投稿日:2005/06/15(水) 23:48:47 ID:VibO27At
>>768 770 名前:名前は開発中のものです。[] 投稿日:2005/06/18(土) 11:16:59 ID:6iUM9GbJ
>>768
773 :
名前は開発中のものです。 :2005/06/23(木) 03:21:20 ID:w+rTqWXJ
DX7で、 頂点にカラー値を含ませて、そのカラー値を0にして描画すると、 本来は描画されるとこが真っ黒になるんだけど、 COLORKEYが無視されるでしょ。 (カラーキーが0でも、カラー値0がサーフェースに書き込まれる) この条件で、COLORKEYを有効にさせるにはどうしたらいいですか?
αを適切に設定。
775 :
名前は開発中のものです。 :2005/06/24(金) 00:07:27 ID:RQFT/vXk
r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ . 〃 ヽル1'´ ∠:::::::::::::::::i i′ ___, - ,. = -一  ̄l:::::::::::::::l . ! , -==、´r' l::::::/,ニ.ヽ l _,, -‐''二ゝ l::::l f゙ヽ |、 そろそろDX9に移れ レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ :ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ ::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ ::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な! :::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::/// :::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ / ::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
778 :
名前は開発中のものです。 :2005/06/24(金) 02:06:42 ID:RQFT/vXk
r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ . 〃 ヽル1'´ ∠:::::::::::::::::i i′ ___, - ,. = -一  ̄l:::::::::::::::l . ! , -==、´r' l::::::/,ニ.ヽ l _,, -‐''二ゝ l::::l f゙ヽ |、 あげあげ! レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ :ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ ::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ ::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な! :::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::/// :::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ / ::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
779 :
名前は開発中のものです。 :2005/06/25(土) 12:09:51 ID:/thqxDx7
r,''ヘ_
_,,,,_⊂-くノ`ヽ,
_ 〆_゙'ir''⌒" )←
>>773 ξ⊂! っ》` く ∠___
.''\ノ''''‐`` i、 ,ノ │,-ヽ7=、、 ,,rー'"`-、
\_゙l、,,,_,/i゙、 ,ノ 〈 ゛ `ヌ⌒ )/=i、 l
`゙゙'''"`'ミ--/-,_ ´ /" `''
\ .,,、`lニン-゛
\__ノ
___
_ ┐ /
/ 'rlご ┥ .,,,、
| |゙ `jエ |〈゙',) ←DirectX9
゙l,,,i´ /,/,ノ"r
,r㍉,ノ''こ!、,,┴.
| ‘''く′ ,/ │
.r'ヘ,、 `'イ゙>'"
.厂|,`'-,, .|'ヽ、
780 :
名前は開発中のものです。 :2005/06/25(土) 16:42:33 ID:/thqxDx7
まて!IDがDX7だ!
r,''ヘ_
_,,,,_⊂-くノ`ヽ,
_ 〆_゙'ir''⌒" )←
>>780 ξ⊂! っ》` く ∠___
.''\ノ''''‐`` i、 ,ノ │,-ヽ7=、、 ,,rー'"`-、
\_゙l、,,,_,/i゙、 ,ノ 〈 ゛ `ヌ⌒ )/=i、 l
`゙゙'''"`'ミ--/-,_ ´ /" `''
\ .,,、`lニン-゛
\__ノ
___
_ ┐ /
/ 'rlご ┥ .,,,、
| |゙ `jエ |〈゙',) ←DirectX9
゙l,,,i´ /,/,ノ"r
,r㍉,ノ''こ!、,,┴.
| ‘''く′ ,/ │
.r'ヘ,、 `'イ゙>'"
.厂|,`'-,, .|'ヽ、
アリエナイザー
出現 直ちに出動だ!!!! エマージェンシー!!フェイスオン!!!!!! アリエナイザー出現!!????? ぶっちゃけありえな~い デュアルオーロラウェーイブ!!!!!!!!!
784 :
名前は開発中のものです。 :2005/07/01(金) 04:38:30 ID:kdhKBhU5
r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ
. 〃 ヽル1'´ ∠:::::::::::::::::i
i′ ___, - ,. = -一  ̄l:::::::::::::::l
. ! , -==、´r' l::::::/,ニ.ヽ
l _,, -‐''二ゝ l::::l f゙ヽ |、 DX7で解決した。
レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト
ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ
>>776 ,779
:ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ はお呼びじゃねーんだよ
::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
785 :
名前は開発中のものです。 :2005/07/01(金) 06:15:38 ID:kdhKBhU5
>>774 ∧∧∩))
(゚Д゚),ノ
(| |
~| |
∪∪
elでゲーム作ろうと思ってたら、コンパイル時に 外部シンボル 'DirectSoundCreate' が未解決 と出るぞ なんでだ
必用なライブラリがリンクされてないから。 そんなこと聞くまでもないと思うのだが。
今更elはないような気がする。 2DだけならDxLibがいいと思う。
DXLIB機能豊富に見えて基本的な所がELより劣るのが困りモノ^^;
790 :
名前は開発中のものです。 :2005/07/28(木) 02:05:45 ID:nhSv6ByA
Direct3Dで、テクスチャサーフェースで、 1ピクセルごとにα値を設定するのって、どうやるの? 普通のCGツールじゃ、α値なんて設定できないんだけど
791 :
名前は開発中のものです。 :2005/07/28(木) 02:19:10 ID:ylLI/A/I
gimp とか photoshop とかならできるぞ。 SDK付属のTexture Tool で グレースケールの画像用意してそれをα成分として合成させることはできる。
>>790 α値は大抵のCGツールで設定できるぞ。
α成分を保存できるファイル形式が分かってないだけだろう。
ただ、この用途だとPhotoshopは使いにくい。
>>790 まあ、名称がそのままα成分とは載って無いかもしれんがな。
でもアルファ~とかって名前にはなってるような希ガス。
一体何がアルファ成分に当たるのかって調べるのもいい。
俺は2万円ぐらいのフォトショ(なんか安い奴あるんだよ)でPngで吐き出してる。
つーか、2万円のフォトショだとPngにしかアルファが付かない。
オレカワイソスw
貧乏人はGimp使っとけ。貧乏じゃなくてもGimp使ってる漏れは勝ち組。
Gimpなら、ソースネクストのPaintgraphicの方がいいよ。 元は和製フォトショと呼ばれてたソフトだし。 フォトグラファ≒HyperKiD≒The Graphics[ペイント]≒Paintgraphic
>>796 Direct3Dのリテールモードだと普通に動く。
デバックモードだと以下の例外で止まる。
Direct3D9: (ERROR) :Can specify D3DLOCK_DISCARD or D3DLOCK_NOOVERWRITE for only Vertex Buffers created with D3DUSAGE_DYNAMIC
DXGAME02.exe の 0x7c941230 でハンドルされていない例外が発生しました : ユーザー設定のブレークポイント。
>>790 SDKに付いてるDirectX Texture Toolを使う。
800 :
名前は開発中のものです。 :2005/08/09(火) 14:23:58 ID:XWR1EMWN
D3Dで、テクスチャのサイズに、ゲームで使用するテクスチャが収まらないので、 マルチテクスチャで、最大8枚(HALで2枚ぐらいになるが)までを使おうとして、 テクスチャステージの、1だけを使用する頂点と、2だけを使用する頂点を作製したいのだが、 どちらかのステージのテクスチャ座標VとUを全て0にして、三角形ポリゴンにすると、 まったく表示されなくなる。 ところが、少しでもテクスチャを使用するようにテクスチャ座標を設定すると、表示される。 ステージ1だけを使用する頂点と、2だけを使用する頂点を混在して レンダリングするにはどうしたらいいですか?
テクスチャに透明色の部分を用意しといて表示したくない頂点にはそこを割り当てるのはどうですか
802 :
名前は開発中のものです。 :2005/08/10(水) 02:01:12 ID:4UhpS71Y
>>801 それ考えたんですが、結局は1枚だけのテクスチャを描画するだけでも、
2枚描画することになるので、速度的に無駄かなと。
もともと、1回のレンダリングで複数のテクスチャを使用したいと思ったのは、
描画速度を上げる為なので。仮にこれができたとして、描画速度が向上してなければ、意味ないですが
マルチテクスチャでそんなことするなら、テクスチャごとに頂点を 分けた方がよっぽど速い。 そもそも、全てのテクスチャ座標を0にしたら、テクスチャの左上の ピクセルがトライアングルいっぱいに描画されるってことは理解してる?
804 :
名前は開発中のものです。 :2005/08/10(水) 08:15:36 ID:4UhpS71Y
>マルチテクスチャでそんなことするなら、テクスチャごとに頂点を >分けた方がよっぽど速い。 それって、テクスチャごとにレンダリング処理を行うってことでしょ? >そもそも、全てのテクスチャ座標を0にしたら、テクスチャの左上の >ピクセルがトライアングルいっぱいに描画されるってことは理解してる? それで、ポリゴンが真っ青になったのか。
(´-`).。oO(この人はなぜマルチテクスチャにすれば速くなると思ったんだろう・・・)
坊やだからさ
807 :
名前は開発中のものです。 :2005/08/10(水) 14:01:39 ID:4UhpS71Y
>>805 別に理由はどーでも、一回のレンダリングで複数のテクスチャを使う方法ぐらい、
知っておいて損はないでしょ。
D3DCAPS::TextureAddressCapsでD3DPTADDRESSCAPS_BORDERが立っていれば
適用したくないテクスチャステージは、座標を0~1外にしアルファ0の任意色にすることで
排除出来る。問題はBORDERをサポートするデバイスが少ないということ。
まあ現実解として、Shaderで似たような処理を実装するか
>>801 かですな。
>>802 で、
>>801 の方法を速度を理由に否定してるってことは、
残るはピクセルシェーダ3.0で動的条件分岐くらいかねぇ。
現在のハードでは2回テクスチャフェッチするよりもさらに遅くなりそうだけど。
>>807 そもそも一回のレンダリングという単位は、
プリミティブを分けても一回なんだが。
811 :
名前は開発中のものです。 :2005/08/10(水) 16:49:52 ID:4UhpS71Y
>>810 つまんねー用語厨か?
じゃ、一回のプリミティブて言えば満足すんだな?
(´-`).。oO(下手な釣りだなぁ・・・)
くっだらね。実際に動かして速度を比較してからにしろよ。
ID:4UhpS71Yが最初は敬語を使っていたのに、いつの間にか偉そうな口調に変化した件について
心が荒んでるんだよ
>>813 てゆうか、それだよな。
何につけてもこういう手間を惜しむ奴は伸びない。
>>816 別に手間がテーマになっていた訳じゃないと思うけど。
1パスで2つのColorMapを使う方法って話だろ?
818 :
名前は開発中のものです。 :2005/08/10(水) 20:30:23 ID:ZNFs0VWr
誰も答えてくれないのよね。知ってる人いない? 160 名前: デフォルトの名無しさん 投稿日: 2005/08/05(金) 16:35:28 固定機能パイプラインを使って テクスチャ座標を色として出力したいんですが 可能でしょうか? HLSLの場合こんな感じです。 float4 PixelShaderMain( const in float4 i_vTexCoord0 : TEXCOORD0) : COLOR0 { return i_vTexCoord0; }
>>818 無理。そんなのヘルプ見たらわかるだろ…
テクスチャ使っていいならできるが。
820 :
名前は開発中のものです。 :2005/08/19(金) 17:00:22 ID:w+QDJ2nJ
DX7で、アプリからフルシーンアンチエイリアスかけるのって可能なの?
DX7のドキュメントに書いてある通りやってもかからないのでググって
みたら、
http://www.visualbasicforum.com/archive/index.php/t-176185.html > The absence of ANY sample or tutorial DX7 code using antialiasing on
> the net (that I can find) is beginning to make me think it's not possible / easy.
なんか簡単に出来なさそうなんだけど、出来てる人いる?
2コンのマイクに向かってフルシーンアンチエイリアスって叫べば掛かるよ
822 :
名前は開発中のものです。 :2005/08/20(土) 10:37:14 ID:lAZ1SVDQ
そうなんだ
823 :
名前は開発中のものです。 :2005/09/14(水) 01:24:06 ID:cuazMJTo
DirectX 9.0 SDK ( Aplil 2005 ) を使っています。 透過付きDDSファイルを表示すると、 重ねて表示した画像の境界がうっすらと白くなったり黒くなったりします。 別のPCで実行してみたら、そのPCではそういった現象は起こりませんでした。 これはビデオカードの問題でしょうか? Card name: Intel(R) 82865G Graphics Controller Manufacturer: Intel Corporation Chip type: Intel(R) 82865G Graphics Controller DAC type: Internal Device Key: Enum\PCI\VEN_8086&DEV_2572&SUBSYS_12BC103C&REV_02 Display Memory: 64.0 MB Current Mode: 1280 x 1024 (16 bit) (60Hz) Monitor: Monitor Max Res: 1600,1200 Driver Name: ialmrnt5.dll Driver Version: 6.13.0001.3485 (English) DDI Version: 8 Driver Attributes: Final Retail OSはWinXPHome(SP2)です。 dxdiagで調べた該当箇所を載せておきます。
まぁまずはビデオカード増設できる程度には貧乏を脱出しような
そういう問題じゃないだろ。
D3DTADDRESS_WRAP と D3DTEXF_LINEAR を組み合わせて使うと、 テクスチャの反対の端の色がにじみ出てきているように 見えることがありますが、そういうこと?
827 :
823 :2005/09/14(水) 10:38:17 ID:cuazMJTo
>>824 正直、ビデオカードを買う余裕はありません。
ウイルス対策以外のソフトも全てフリーので賄ってますw
>>826 >テクスチャの反対の端の色がにじみ出てきているように
そんな感じです。
でもD3DTADDRESS_WRAPもD3DTEXF_LINERも使っていません。
D3Dを使った2Dの描画のみです。
αを持たないDDSファイルならば問題はありません。
D3DXCreateTexture~で読み込むときにフィルタが掛かってるとかかしら。 試しにD3DXCreateTexture~Exでフィルタ無効にして読み込むとか。
829 :
823 :2005/09/14(水) 17:03:44 ID:cuazMJTo
>>828 ありがとうございます。
やってみます。
830 :
823 :2005/09/15(木) 00:34:33 ID:3aU9jAmb
>>828 変わりませんでした。
別のPCではそういった症状が出ませんので、
グラフィックカードが原因だと思っておきます。
831 :
名前は開発中のものです。 :2005/09/15(木) 03:31:50 ID:NKwWscc3
>>791 どうも~。遅くなりましたが、Gimpでやってみました。
透明の設定の仕方が分からなくて、苦労しました。
消しゴムでやれることが分かったですが、なんか1ピクセルごとに書けなくないですか?
それと、PNGの読み込みが大変面倒そうです。嫌になってしまいました
>>831 ツールの使い方などをきちんと調べられるのも
プログラマーのスキルですよ。
Gimpなら透明の空画像作ってレイヤー重ねてください。
ちなみに消しゴムだろうがブラシサイズ変えられます。
個人的にはPNGじゃなくてTGAがお勧め。
833 :
名前は開発中のものです。 :2005/09/16(金) 22:58:45 ID:EfSiJ+7d
よく4人プレイのゲームとかで画面が4分割のがありますがこれはどうやったら 可能になりますか?ビューポートの設定で無理やり4分割にして実現したんですが 他に方法ありませんか?
つーかViewportが正道だよ。その為にあるようなもんだし。 windowモードで画面ごとに違うwindowを割り当てたい時などは SwapChainを使う。
835 :
名前は開発中のものです。 :2005/09/26(月) 21:15:20 ID:Oe64tQA1
未だに初期の9.0SDK使ってて、つい先日Update版導入したら色々仕様変わってるよorz ID3DXSpriteのスケール設定引数がごっそりなくなったわけだけど、 スプライトの拡大縮小って他に代替手段あったっけ?
D3DXMatrixTransformation2D
837 :
名前は開発中のものです。 :2005/09/28(水) 23:10:19 ID:xxFcAXti
読み込みpngが800*600のサイズでフルスクリーンでそれを画面いっぱいに 描画しようと思ったらうまくいきませんでした。方法としては4つの頂点と それに合わせたテクスチャ座標をしてsetfvfで指定してprimitiveup関数に 引数渡して描画しました。描画自体はできていますが画面のサイズに合わせて テクスチャが画面いっぱいになっていません。spriteをつかえば綺麗に描画 されますがspriteは重いのでどうすればいいかわかる方いらっしゃいましたら アドバイスよろしくお願いします
またその質問か
ヒント:2乗
840 :
名前は開発中のものです。 :2005/10/02(日) 01:56:07 ID:gskv2QXE
841 :
名前は開発中のものです。 :2005/10/02(日) 10:09:53 ID:OIAGxN+l
画像の読み込み時にフィルターかければ2のN乗にかってになっちゃうと思いますが フィルタかけないとそのままのサイズで読み込まれるのかな?
横スクロール2Dシューティングの制作で板ポリゴンにアルファ付きPNGを貼り付けて スプライト替わりに使ってるんですが三枚以上重なったところで一番上の板ポリの 右側のアルファ境界が縁取りしたように背景まで透過する現象が起きています。 グラボはATI、NVIDIAと色々試していますがどれも同じ現象です。 これはD3D公知のバグかなんかなんでしょうか?
>>842 そんなバグは聞いたことがないので、お前さんのプログラムが
おかしいだけだと思う。
ついでに言うと、ATIでもNVIDIAでも発生しているなら、 ちゃんと仕様通りの可能性大。 人のせいする前に、自分のプログラムを疑え。
>>843 >>844 書き方が悪くて申し訳ありません。
これでも散々疑って試してみたのです。
板ポリ止めて箱にしてみてたり、テクスチャのフォーマットも色々変えてみました。
ただどうしても二枚で大丈夫で三枚目からおかしくなる症状が自分の経験則では
理解できなくてこうして質問させて頂いています。
掲示板での書き込みは不慣れなもので不躾な点ももあるかとは思いますがご容赦下さい。
Zバッファ、ステンシルバッファは使っているのか否か? 描画順はどうなっているのか? スプライトの端=テクスチャの端なのか? 「テクセルとピクセル間の直接マッピング」の項は理解しているのか? テクスチャフィルタリング、テクスチャアドレシングモード、 テクスチャラッピングは 理解しているのか? こんなところで効く前に、ステップ実行等でデバッグした方がいいと思うぞ。 スワップエフェクトをCOPYにして、スプライト1枚描画するたびにPresentとキー入力待ち でも入れておけば、どこでおかしくなるのか分かるだろう。
>845 とりあえず本気で解決したいと思ってるなら、 よく解らん説明よりスクリーンショットぐらい出せ。
単純にしっかり設定されてるテクスチャステージステートが2枚までなんじゃねーの? それかミップマップが変なことになってるとか。 とか、いい加減なこと言ってみるw
>>845 マザボのAGPドライバはちゃんと最新の入れてる?
俺も板ポリじゃないけど、同じようなことになったことがある。
プログラム的に問題ないと思ったら、ハード面疑った方がいい。
半透明部分にもZ値があるせいで、うまく重なってないだけじゃないのか? ちゃんとソートしる
鰻を3Dで表示したいんです。
>851 ム板に引きこもってろ。
ま・・・まぐろ? 3D MAG LOADERっすか
MAGとかPIとか、懐かしいねぇ
質問ですいません。今Visual BasicでDirectXライブラリを使ってプログラムを作っていてその中でオーバレイ上に ColorKeyを使う部分があり、定数、DDCKEYCAPS_SRCOVERLAYで判断しているのですが、DirectX Caps Viewer で調べたところ下記のような結果でした。 実際、GeForceの方は値がないのでプログラムでColorKeyが使えないのですが、元々GeForceではColorKeyは 使えないのでしょうか。 値を追加して使えるようにしたり、または別の方法で使えるようにしたりできるのでしょうか。 ATI Radeon 9600 DDKEYCAPS_DESTOVERLAY DDKEYCAPS_DESTOVERLAYYUV DDKEYCAPS_SRCOVERLAY DDKEYCAPS_SRCOVERLAYCLRSPACEYUV DDKEYCAPS_SRCOVERLAYONEACTIVE DDKEYCAPS_SRCOVERLAYYUV GeForce FX5500 DDKEYCAPS_DESTOVERLAY DDKEYCAPS_DESTOVERLAYONEACTIVE
856 :
名前は開発中のものです。 :2005/10/26(水) 00:53:48 ID:mIo8wBwy
DirectX9をインスコしようとしたら、 「このOSには対応してねえ!」といわれます。 win2000+sp4です。 違法コピー版と認識されているのでしょうか。
SDKか
858 :
名前は開発中のものです。 :2005/10/26(水) 23:57:57 ID:mIo8wBwy
そう、SDK
2000は今年くらいにSDKのサポートから外されたよ
2000は最新のSDKから見捨てられたはず。
861 :
名前は開発中のものです。 :2005/10/27(木) 01:18:24 ID:BYRLQUWY
そうか。ありがとう。 後、DirectXで開発するためにピクセルシェーダ対応のビデオカードを 買おうと思うのだが、チップセットとかインターフェース(AGPとか)は気にする必要ある? 最近のPCは疎いので、、 いままでコンシューマ開発だったのでPCは知らないのよ。 板違いかな。
>>861 新しいPCを買うなら恐らく自動的にPCI-Expressになるかと。
今使ってるPCにVGAを乗っけるなら、インターフェイスの選択の余地は無いのでは?
863 :
名前は開発中のものです。 :2005/11/01(火) 14:03:52 ID:Y3Zj/C/T
lockしないでDirectDrawサーフェイスからDirect3D9サーフェイスにデータを転送する方法ってありますか? 教えて下さい!
ない。 そもそもDirectDrawサーフェスは同じデバイスで扱うことができないし。 Direct3DSurface9同士でよければ可能だが。
GetDCでデバイスコンテキストを取得すれば出来ないことはない。
>>865 DCをとった後どうするんでしょうか?
IDrawVideoImageというインターフェースがあったのですがこれを使うんでしょうか?
Win32API
遠景を表現する方法ってどんな方法がある? 球にマッピングしても不自然だし・・・ 法線内側で箱状にしても不自然だった・・・ 考え方だけでもいいのでアドバイスお願いしますorz
どう不自然なのかよく分からないが、 遠方を描画するのは球でも箱でもメジャーなやり方では。 環境マップとかの話になると、箱とか双放物面になるのかな。
>>868 ボックス、球が普通。
視点がパンしない場合は円柱、または1枚絵を背景に使う場合も。
後者はスターグラディエーター2(カプコン)が芸術的だった。
遠景を全部ポリゴンで作r
872 :
名前は開発中のものです。 :2006/01/17(火) 02:14:37 ID:Lcnts4sV
フォグについて。 フォグがかかるポリゴンが、距離18000先にあって、 視点を回転させると、フォグの強度が上がったり下がったりする (ポリゴンまでの距離は変化しない) んですが、なんでですか
873 :
名前は開発中のものです。 :2006/01/17(火) 02:17:44 ID:Lcnts4sV
ひょっとして、線形フォグだからポリゴンがでかいもんんで、 視点からポリゴン頂点への距離が変化してたからだったりして
874 :
名前は開発中のものです。 :2006/01/17(火) 02:22:23 ID:Lcnts4sV
線形フォグじゃなくて頂点フォグ。 実験で873は違うっぽい
>>874 頂点フォグは計算を端折ってるからいい加減かもね。
範囲ベースのフォグを使用するといいかも。
3Dアクションのマップってどう作るのが一般的なんでしょうか? フリーゲームのフォルダを漁ってみると、マップのXファイルがまるごと入っていたり するのですが、Xファイルから当たり判定の取得ってできるんでしょうか。
できる
878 :
876 :2006/02/01(水) 17:36:13 ID:X4JHCij2
D3DXComputeBoundingBoxで箱を取得するまでは出来たのですが、 マップ全体を包む箱になってしまいます。 複雑なXファイルの形状を取得するにはどうすればいいのでしょうか?
>>878 そもそもBoundingBoxがどういう意味か調べてみろ。
exciteなりgooなりの英和辞書があるだろw
880 :
876 :2006/02/01(水) 18:04:03 ID:X4JHCij2
>>879 excite翻訳は制限箱と返してきました。
箱状の頂点座標のことですよね?
881 :
名前は開発中のものです。 :2006/02/01(水) 18:06:46 ID:52d+JDgR
直方体ならノード単位とか判定させたい最低範囲に分割。 面に沿うなら面との判定。 乗せる物体も判定部位や条件によって揃えるデータは様々。
。。。w bound = 境界。要するに境界ボックスのこと。 Xファイルを含む最小の箱を返してくる関数だからマップ全体を包む箱になるのは当然 マップのXファイル云々を言う前にマップはどういうマップなんだ? 閉空間のマップならそれなりにめんどくさくなるぞ
883 :
876 :2006/02/01(水) 18:18:23 ID:X4JHCij2
>>882 マップは分岐のあるトンネルのような閉空間です。
形状を把握するのなら、ポリゴンを一つ一つ見ていくしかない。 さらにそのデータをどうするかというのを自分で考えて、処理を書かなければならない。 どこまでの精度が必用かによってロジックは異なるし、 判定の高速化や効率化をベンチをとりつつ最適に調整しなければならない。 一朝一夕で出来ることではないが、まあがんばれ。
コリジョンディテクションの技術を「どうすればいんですか?」の一言で手に入れられたら 誰も苦労しないんだが。
886 :
876 :2006/02/01(水) 18:53:50 ID:X4JHCij2
>>884 ありがとうございます。
やることは多そうですが、地道に考えていこうと思います。
>>885 すべて教えてもらおうとしてきたつもりではなかったのですが、
仰る通り楽をしようとしました。お気に触られたようでしたらすみませんでした。
うは こんなに範囲の限定された本が出ているのか。 最近はいい時代になったな。(読む方にとっても書く方にとっても)
889 :
名前は開発中のものです。 :2006/02/09(木) 23:15:42 ID:TZ2DGw+s
DirectX7。 サーフェースのピクセルフォーマットを、 R8G8B8A8(32bit) で作製したい(アルファチャンネルを持つ)のだが、どうやれればいいですか? 普通に、作製すると、プライマリが16ビットだからか、16ビットになります。
じゃプライマリも32bitで作れば。デスクトップが32bitになってないと作れないが。 それとカードが対応してないと無理だから確認して
いや、プライマリとオフスクリーンサーフェスは普通に 違うフォーマットで作れるが… ヘルプにも作り方が書いてあるし。
893 :
名前は開発中のものです。 :2006/02/10(金) 22:51:51 ID:d9CO7I+x
>>890 アホいうな糞。
プライマリはビデオメモリだ。アルファ値なんて存在しない。
>>891 どこ?サーフェース作製時に、DDSDESC2とかいう構造体で、
サーフェース能力指定する訳だが、ピクセルフォーマットを指定したら
エラーになった。INVALID_PARAMとか。
あと、他んとこに「アルファを含む」とかいうフラグを指定してもエラー。
しかし、D3Dのデバイス能力は、テクスチャアルファのビットが1になっとる。
894 :
名前は開発中のものです。 :2006/02/10(金) 22:54:57 ID:d9CO7I+x
本屋でDXに関する本を見たが、テクスチャアルファをもつサーフェースの作製方法が どれにも載っていない。 1冊だけあったが、それはD3DXというライブラリを使用するもので(DX9で) そのD3DXライブラリのソースがDX9SDKに入ってなかった
>>892-893 [DirectDraw]-[DirectDrawの要点]-[サーフェス]-[サーフェスの作成]-[オフスクリーンサーフェスの作成]
>また、ピクセル フォーマットがプライマリ サーフェスのピクセル フォーマットと
>異なるサーフェスも作成できる。ただし、この場合には、システム メモリの使用が
>制限されるという弱点がある。次に示すコードでは、8 ビット パレット化サーフェス
> (現在のディスプレイ モードがピクセルごとに 8 ビット以外であると仮定する) を
>作成するために、DDSURFACEDESC2 構造体メンバを準備する方法について示す。
次にサンプルコードと、その後にワイドサーフェスに関する記述がある。
他にもDirect3DのチュートリアルでもD3DX無しでテクスチャサーフェス作っているし、
たしかDX7のSDKならD3DFrameにテクスチャ関係のソースもあったかと。
896 :
名前は開発中のものです。 :2006/02/11(土) 21:36:18 ID:lAR/R2x2
>>895 D3DFrameでやってることから、なんとか32ビットアルファ付きが作成できました。
ありがとう。
縁取りを表現するためにポリゴンオブジェクトを一回り大きくして法線を反転して 黒く表示する手法がありますが、Xファイルを読み込んで自動的に縁取りようのポリゴンを 付加してくれるツールって無いですかね。 普通にモデリングツールで拡大したりすると、中心からの距離によって線の厚さが 変わってくるし…
普通はシェーダ使うからそんなツール作らない。
>897 モデルを作るとき、ついでに一回り大きなモデルも作って 出力しとけば委員ジャマイカ?
>>899 エッジ描画用のモデルは単純に拡大するとは違う処理だから、
モデリングツールにそういう機能がないってことかと。
頂点シェーダで2~3行で済む処理だから、普通は別モデルとして
データを持ったりはしないと思う。
シェーダで処理すれば実行時に線の太さを調節できるしね。
901 :
897 :2006/02/18(土) 01:23:17 ID:jGbiZdO7
>>898-
>>900 コンバータ作っちゃったよorz
902 :
名前は開発中のものです。 :2006/02/25(土) 01:03:39 ID:Kaa3X1K0
質問です。 私は、去年より3Dのアクションゲームを制作している初心者なのですが、 画面全体にかかる、霧のようにもやもやっとしたエフェクト表現をしたいと考えています。 この霧ですが、常に表示位置がプレイヤー位置に対して固定されているのではなく、 プレイヤーが前へ歩けば霧も後ろへ下がっていくような、きちんと奥行きのあるものにしたいです。 私の考えてみた方法は、最初にプレイヤーから一定距離以内の3D空間(球)へランダムにA点をいくつか配置し、 A点がプレイヤーの移動によって一定距離(球)を超えたら、球の反対側へ移動させることで無限に続く霧とし、 そのA点全てから、点を中心とし霧テクスチャを貼った長方形ポリゴンをビルボード状に描画するという方法です。 正直・・どうなるか気にはなるのですが、私がやろうとすると時間がかかってしまうため、まだ試しておりません。 こんな面倒臭がりな私ですが、よろしければ、私の霧再現方法がいけそうかどうかの、ご助言をいただけないでしょうか。 以上です。よろしくおねがいいたします。
いけるんじゃないの
自力でそこまで考えたってことがいいことだと思った
でも、どうせなら自分で実行するまでして欲しい
>>902 のやり方で問題になるが、
・遠くのポリゴンが突然現れる。
・投影面まで迫ってきたポリゴンが突然消える
これらはαブレンディングのやり方で解決するとして、
・Zバッファとの相性の悪さ。
例えば建物の角に差し掛かったとき、
・Zバッファを使わないと、角とその向うの風景で霧の濃さが変わらない。
・Zバッファを使うと、角の手前の壁面で霧のポリゴンがブツ切りになる。
というような問題が生じる。
だからポリゴンに頼らずにフォグを使うのが無難。使うにしても、
フォグを有効にして壁面やその向うの風景を描画してから、
フォグよZバッファを無効にしてお化粧程度に軽く霧ポリゴンを描画するのが
いいと思う。
908 :
名前は開発中のものです。 :2006/02/25(土) 05:10:19 ID:9iRbb0YP
GIMPでレイヤーとして作ったグレースケールのものを、 アルファチャンネルとして画像に反映させて それをpngのα値として保存できっる?
できっる?
911 :
名前は開発中のものです。 :2006/02/26(日) 08:25:09 ID:dTtz2MU3
別スレから来ました。 同じような事やった人がいたら聞きたいんですが、 3Dキャラクターの服や髪の揺れの実装で揺れる部分のモデルはどうやって 作ってるんでしょうか? (今使ってるのはメタセコLEです) 布のテストコードは書いたんですが、自前で頂点グリッドを作ってるので 順序よく頂点を計算出来ます。 しかし、髪の毛のようなちょっと複雑な形状ではどうやってるのかわからないです。 (アキラの鉢巻とかは自前で組んだものリンクするだけで良いと思いますが)
912 :
名前は開発中のものです。 :2006/02/27(月) 01:53:01 ID:M1NCZhu8
手足と一緒じゃない?
それはボーンでは?
そう、そのボーンで
ボーンも大変だな
ぼいーんぼいーん
まゆげ
919 :
911 :2006/02/28(火) 22:47:40 ID:1rPz5eKD
要は同人ごときで揺れものはいらんて事か。 でも、ボーンでちょっとアイディア浮かんだ(多分車輪の再開発だろうけど)
920 :
名前は開発中のものです。 :2006/03/22(水) 22:49:06 ID:+4SK85pH
背景ブラーはどうすればいいですか? 背景とキャラがあったらどういう順番で書いてバッファはいくついりますか?
Win95時代にVBでAPI呼び出しでゲーム作ってたオレなんだが、 今の時代2DやるにしてもDirectX3Dつかうと便利らしいんで勉強したいんだけど、 コンパイラはVC6とかでいいのかな? さすがに古いから最近でてるようなもののほうがいいの? C#とか.NETって中身しらないけどc++適当に知ってるならあっちのコンパイラがいいの?
>>921 vc6に慣れると後々面倒なので最初から.netにしる
もうすぐvs2005でるからそれ買え(もうでたかも?)
最新の DirectX SDK は VC6 に対応してないんだな。 というわけで VC++2005 Express Edition + PlatformSDK + DirectXSDK をオススメする。
サンクス つーかすごいね今は express版は無料とは…しかも普通に使えるみたいだし 自分が高校生のころはVC4が10万だからあきらめて、VB4(3万円)ににげたってのに
フリーが出たから客を逃がさないため、増やすためにでしょ?
926 :
名前は開発中のものです。 :2006/03/26(日) 16:53:09 ID:4jFe4Scb
3Dの同一キャラを何十体も表示する時、一体だけ読み込んで 描画→移動→描画→移動 で、最後に表示、とするのと 何十体分を全部読み込んで一括表示するのでは どちらが一般的なのですか?
>>926 同じモデルを使用数分読み込むなんて時間もメモりも無駄でしょう。
> 描画→移動→描画→移動
「移動」になるかは実装次第。
> 何十体分を全部読み込んで一括表示するのでは
一括と言ってもその何十体のキャラはそれぞれ移動したりするし、
それぞれに対して描画命令を呼ぶんでしょう?
>926が何を言いたいのかイマイチよくわからんが… かく言う俺は、同一モデル(つっても2D描画用だから4頂点だけ)で テクスチャアドレスだけ異なるデータを多数読ませてる いちいちVertexBufferロックしてテクスチャ座標書き換えんのマンドクセ どうせ大した容量じゃねーし(せいぜい100Kb)
だから2Dスレ?行けって方が変だし、その突っ込みも外れている気がするがw サンプルのメッシュクラスをそのままだと、姿勢制御とメッシュが一対一だから、 再計算がいらない時に、前者だと無駄に見えちゃうのかもね。
931 :
名前は開発中のものです。 :2006/07/28(金) 20:17:22 ID:jSlMO7QK
PNGの透過情報そのままつかいたいなぅ
>>928 >いちいちVertexBufferロックしてテクスチャ座標書き換えんのマンドクセ
シェーダの側でmov oT0.xy,c0.xyとでも書いておいてシェーダ定数だけ書き換えた方が早くね?
モデルも一個で済むし。
シェーダ定数の転送も頂点バッファの切り替えも、 どっちも描画パイプラインはぶったぎることになるわけだし、 コスト的には大して変わらんよなあ。 Lockが面倒くさければDrawPrimitiveUPを使えばいいじゃなーい。 へらへら。
934 :
名前は開発中のものです。 :2006/08/05(土) 01:00:58 ID:TcBxlLdT
てstあげ
みなさんモデルのフォーマットって何ですかね? 自分Xファイルだったんですが、やっぱり独自フォーマットですか? だとするとモデリングソフトやモーションの編集ソフトとかも 自作するわけですかね?
そりゃないだろ
>だとするとモデリングソフトやモーションの編集ソフトとかも >自作するわけですかね? ないないないないないないw 自作でやるなら、その環境用のSDKを使って出力プラグイン作るか、 それこそXあたりからの変換プログラムを別途用意する。 俺は使って無いけど、MD2、MD3あたり(Quakeのフォーマット)を使ってる人も多いそうだ。
>>935 Xファイルに不満がなければ、無理に独自フォーマットにする必要はないよ。
なんとなく独自フォーマットの方がかっこいいとか、そういう理由で変えたいなら
やめておいた方がいい。
そこでDNMですよ。
940 :
935 :2006/08/06(日) 02:36:33 ID:GDaOHyUH
なるほど。ありがとうございます。 ツールまで自作となると途方もないのでちょっと安心しました。 はじめは不満はなかったのですが、 メッシュ間のモーションの結合、例えば 「人型のメッシュに剣のメッシュを持たせる」 のようなことをしようと思って、 始めは手のボーンの先に剣のボーンを延長して モーションを作成しようかと思ったのですが、 モデリングは得意でなく、作り直すのが大変なので 他の方法を考えることにしました。 作り直さないとすると既存のメッシュ間のモーションを作成するツールが必要だなぁ などと考えて、ならばいっそのこと独自フォーマットにしてしまおうかと思ったのです。 実際、装備とかはどのように実装されているのでしょう? やはり事前に剣や盾のボーンを手の先に作っておくものなのでしょうか。
データが別々になっていたって、後から手のフレームの配下に結合すればいいだけ。 Xファイルだろうが独自フォーマットだろうが関係ない。
>実際、装備とかはどのように実装されているのでしょう? >やはり事前に剣や盾のボーンを手の先に作っておくものなのでしょうか。 概ねそんなもん。 基準モデルに接続ノードを割り振っておくのはよくあること。 帽子ノード、首輪ノード、剣握るノード、盾持つノード、エトセトラ。 別途用意しなくても、近しい位置のノードに適当なオフセットかますだけでもいい場合も多い。 帽子なら頭に多少高さを足すとか、剣なら手首から少し内側にずらしてやるとか。 要求が一般化できない以上、必要に応じて試行錯誤するしかないところなんで、 好みの形に収まるまで、いろいろ試してみなっせ。
943 :
935 :2006/08/06(日) 04:30:16 ID:GDaOHyUH
みなさんありがとうございます。 そんな感じで実装してみます。
>>933 拡縮や回転があるとどうしてもシェーダ定数を弄れるようにしておきたいと思うけどね。
後、Lockだけは別じゃね?
あれは方向が逆だから。
945 :
名前は開発中のものです。 :2006/08/08(火) 20:55:56 ID:WF5N+nKv
DirectX 9.0SDKのヘルプって日本語版はないんでしょうか?
947 :
名前は開発中のものです。 :2006/08/19(土) 22:54:00 ID:+gAmHKio
Direct3Dというより3D全般の話題にあたるかもしれませんが、ここで質問させて頂きます。 どこか適切なスレがあったら誘導して下さい。 2Dの場合の”スプライト”にあたるような 3Dのオブジェクトに対する名前の定番ってないでしょうか? クラスの名前を付けるのに迷っています。 現状、C++で開発しているので 3D~~ の様な変数名は使えないし 立体という意味で solid という名前も検討しましたが、固体・液体・気体の固体のイメージがあるので避けました。 背景や固定物も含むので character の様な名前も使いにくいです。 皆さんがどんな名前を付けてるのかというのも教えていただければ嬉しいです。
ビルボード
>>947 スプライトと何が違うのさ?
たぶんビルボードなんだろうけど。
>>947 逆にFVF毎に3D描画に関係無いような名前を付けてる俺マッシュ。
>>948-949 947はビルボードの名前を聞いているんじゃなくて
2Dオブジェクトの名称の例としてスプライトを出しただけかと。
で、3Dの場合だとMeshあたりかね。
モデル
プリミティブ
おいらはobjectとか使ってるなぁ...DxObjとか... オブジェクト指向とかのobjectと混同するから使わない人もいるだろうけど。 もっとイイの無いかね? ModelとかMeshはおいら的には違うなぁ。 x-fileなんかを読み込んだ物がModelで、そん中にMeshとかFrameがあって、 Modelを3D空間に配置した物がObject、って使ってる。 1つのModelを複数個表示することもあるわけだし。 PrimitiveはDrawPrimitive()のPrimitiveってカンジがする。
モデルとメッシュ
>956 >1つのModelを複数個表示することもあるわけだし 一つのスプライトを複数個表示することもある訳だが
960 :
名前は開発中のものです。 :2006/08/31(木) 23:10:20 ID:5wxtWzxs
テクスチャサーフェースを、マップチップとして、例えば16x16個のパーツにした場合、 テクスチャ座標使って、どのチップを表示するか決める訳だけど、 マップをちょっと拡大すると、隣のチップのドット情報が、わずか1ドットぐらい描画されて、 四角いシマシマ状になるんだけど、 これを回避するには、チップ間を2ドットあけて両チップの最後のドットを1ドット延長して書いておけばいいが、 もっとスマートなやり方で治らないですか?
0.5/テクスチャー分割数 1-0.5/テクスチャー分割数 ↓ ↓ ┌┬┬┬┬ … ┬┬┬┬┬┐ ├┼┼┼┼ … ┼┼┼┼┼┤ └┴┴┴┴ … ┴┴┴┴┴┘
>>960 ヘルプの三角形ラスタ化ルールとかいう項目に詳細な説明が載ってる。
0.5ずらすのもいいけど、マシンによって違うし、
ひっくり返すとポリゴンの裏面は逆にずれてるので両面ポリゴン使ってるときはヤバイ。
さらにバイリニアフィルタ掛けるともうどのくらいズレルか全く予想がつかないので
クランプテクスチャアドレッシングモードがオススメ。
0.5ずらしても1ピクセル分の範囲は0.0-1.0になるので、1.0の境界線は終了地点であり開始地点になる。 つまり隣の色が出てしまっても間違いとは言えない。 隣の色を引っ張ってくるかはビデオカード次第。 これを回避するには、微妙に終了座標を縮めるしかない。
でもぶっちゃけ、チップなんて使って作るぐらいなら、 最初からモデリングソフトでそういうモデルを作れといいたい。(チップなんて使わずに) むしろ、ある程度まとまったモデルをチップのように貼れといいたい。 ハードにあった作り方というものがある。 これはどんなにハードが進化してもどうにもならん。 解決しようとするのは極めて困難だ。 その時代にあった作り方をするがよいわ! それが嫌なら地獄をみろ!
>0.5ずらすのもいいけど、マシンによって違うし、 流石に最近では見なくなった気がするけど、今でもそんなマシンはあるのかね。
966 :
名前は開発中のものです。 :2006/09/01(金) 01:31:12 ID:4647tUfZ
過疎スレだと思ってたが、思ったよりレスがあったり・・・。 0.5ずらすのは既にやってました。テクスチャ座標を1ドット分の半分の値を、引いたり足したりで。 しかし、治らない。 多分、拡大されたときにテクスチャをぼかす、バイリニアフィルタをやってるから? そこで、テクスチャ座標1ドット分の値を、引いたり足したりしたが、やはり拡大されてくると、 隣のチップのドットが出てくる。 クランプテクスチャアドレッシングモードは、テクスチャ座標が1.0より上の場合に有効なので、 マップチップの隅にあるパーツ以外では使えない。 やはりスマートな方法が見つからず。
967 :
名前は開発中のものです。 :2006/09/01(金) 01:37:20 ID:4647tUfZ
2ドット分を加算減算したら上手くいきました。 しかしチップの上下左右の2ドットが表示されません
968 :
名前は開発中のものです。 :2006/09/01(金) 06:42:25 ID:w52JDnCq
>>966 >クランプテクスチャアドレッシングモードは、テクスチャ座標が1.0より上の場合に有効なので、
>マップチップの隅にあるパーツ以外では使えない。
いや、だから、テクスチャを無理に1枚に敷き詰めようとするからじゃん。
テクスチャなんて切り替えたってそこまで速度下がらないよ。
シェーダ使ってりゃ死ぬほど切り替えるんだぞ。
マップチップなんてウンコみたいな数だろ。速度に影響しない。
マップチップは敷き詰めるのが普通かと思うんだが
970 :
名前は開発中のものです。 :2006/09/01(金) 11:31:44 ID:4647tUfZ
マップチップを利用してポリゴンを100個描画するとき、 頂点を全て設定して1回のDrawPrimitiveを実行するのと、 100回DrawPrimitiveを実行するのとでは、どっちが早いの?
マップチップ系はバイリニアと相性悪いから諦めたほうが……。 どうしてもと言うなら、一度オフスクリーンのレンダーターゲットに バイリニア無しで敷き詰めて、それを拡大ってのでどう?
DrawPrimitiveUPなら若干差が出るかもしれないが、 それでも100ポリゴン程度ならほとんど変わらん。
973 :
名前は開発中のものです。 :2006/09/01(金) 14:11:38 ID:4647tUfZ
だって、関数呼び出しが99回減るんだから、1回で実行した方が早くない?
>>970 1回のDrawPrimitiveで描画する方が速い。
DirectXのFAQにも書いてある話。
975 :
名前は開発中のものです。 :2006/09/01(金) 16:01:49 ID:4647tUfZ
>>968 テクスチャ切り替えって、1チップごとにDrawPrimitiveをするって意味ですよね。
じゃ、速度が低下するんじゃん。
テクスチャやステートの切り替えがなくてもDrawPrimitive自体がかなり処理的に重い。
977 :
名前は開発中のものです。 :2006/09/01(金) 22:01:44 ID:w52JDnCq
>>975 でも、それだと0.5ドットずれる問題(+フィルタ関係全滅)に対して全く打つ手が無いじゃん。
そこで品質を取るか、速度を取るかのトレードオフになると思うんだよね。
ターゲットマシンで一発動かしてみてチップごとにテクスチャ切り替えて
速度的に間に合ったらそれでいいんじゃないの?
978 :
名前は開発中のものです。 :2006/09/01(金) 22:02:12 ID:4647tUfZ
ケキョーク、1ドットを余分に付加することにしました。 今、変換ツール作ってますが、DIBセクションの作成やらBMPファイルの読み取りやらで 思ったよりまんどい
979 :
名前は開発中のものです。 :2006/09/01(金) 22:07:10 ID:w52JDnCq
>>978 意味わかんね。
つまり、どういうこと?
チップごとにテクスチャを切り替える方法をやってみたけど遅くて使い物にならなかった?
テクスチャごとにまとめておいて描画すればそんなに遅くはならないと思うんだけど。
0.5ずらすのって、テクスチャ座標じゃなくてポリゴン座標だよ。 ポリゴン座標に 0.5足してみ。
DrawPrimitiveを使わなけりゃいいじゃん。
982 :
名前は開発中のものです。 :2006/09/02(土) 07:11:20 ID:LmoAi9PT
結局、速度も測らずに遅い遅い言ってるだけのクズでFAだろ。 そもそもハードに合わない仕様に無理やりしてる時点でそいつ、およびそいつの環境に未来はない。
>>982 そんなこと言ってる割にはずいぶんと具体性を欠いた批判だな
つーかどのマシン使ってるかしらんが、俺がチップ敷き詰め系のゲーム作った時は フィルタあろうがなかろうがドットが欠けるとかずれるとかいう現象は起こらなかったが。
985 :
名前は開発中のものです。 :2006/09/02(土) 20:50:09 ID:eY5cFahb
>>984 てことは、私のグラボ、GF2MXという一昔前のグラボが悪いのか?
これ、ドライバをNIVIDIAからダウンしたのにしたらバグったので、
どっかのオンボードグラボにGF2がある、オンボード用のを利用してる。
986 :
名前は開発中のものです。 :2006/09/02(土) 22:01:24 ID:LmoAi9PT
はぁ?何言ってんの? 三角形ラスタ化ルールってDirectXのヘルプにも載ってるって言ってるだろ。
987 :
名前は開発中のものです。 :2006/09/02(土) 22:05:24 ID:LmoAi9PT
988 :
名前は開発中のものです。 :2006/09/02(土) 22:47:22 ID:eY5cFahb
GF4MXにしたけど同じだった。。。
>>988 ちなみにRadeon9600でも当然ながら同じ。
990 :
名前は開発中のものです。 :2006/09/02(土) 23:36:49 ID:eY5cFahb
拡大時のぼかしフィルターをOFFにしても同じだった
991 :
名前は開発中のものです。 :2006/09/02(土) 23:44:00 ID:eY5cFahb
ついに原因判明!!!!!!!!!! 空白のチップは、カラーコード0の真っ黒にしてたのだが、 問題のチップの隣のチップの一番下は、暗い紺色ですが、 これが何故か真っ黒になっており、このY座標を基準に次のチップを描いたので、 そのチップは、通常のチップより1ドット小さいチップで、 その上で確認のために一番下に、はみ出し描画確認用の赤いラインを書いたので、 当然ならが、正常にテクスチャ座標が設定されれば、確認用の赤いラインまで描画されるというこで、 機械の方は正直に素直に動いてくれていたことが分かりましたーーーー!!!!!ありがとう機械!!!!!!! ちなみに、三角形なんとかルールは全く関係ありません。
>>991 落ち着いて清書してくれ。勿論日本語で頼む。
993 :
名前は開発中のものです。 :2006/09/03(日) 00:32:25 ID:YAC/s3Yf
チップが2つならんでるとこを想像してみて。 左がわのチップの、一番下のラインは、暗い紺色のはずだった。 ところが、これが未使用チップの色として使用する、黒 だった。 そのチップの右隣のチップをツールで描くとき、 チップの高さは、左隣のチップを基準にして描いたんだ。 そうすると、左隣のチップの一番下は、黒なので、それを基準にして その右隣のチップを書くと、Yのサイズが1ドット小さくなるんだ。
994 :
名前は開発中のものです。 :2006/09/03(日) 02:04:47 ID:bRItgJ9B
てゆうか、お前固有の問題は正直どうでもいい。 マップチップなんて使ってる時点で程度が低すぎて話するだけ時間の無駄だし。
時間の無駄だとかいいながらレスしちゃうひとってかわいい☆
まあ、レス返してほしいのはラスタ化ルールの問題をわかってて ちゃんと対処してる奴だけなんだけどな。
Direct3D10 では、0.5ピクセルずらすのが不要になるらしい。
998 :
名前は開発中のものです。 :2006/09/03(日) 18:49:54 ID:YAC/s3Yf
>>996 そんなにそのルールが好きなら結婚すればいいのに
まぁ、あっちもすぐ埋まりそうではあるw
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。