トップページgamedev
1001コメント376KB

DirectX総合スレ (Part6)

■ このスレッドは過去ログ倉庫に格納されています
0001DirectX62006/11/17(金) 00:38:52ID:lRjOsWKq
言語はC++
他の言語使ってる奴はいますぐ消えろ

■過去スレ

DirectX総合スレ
Part 1: http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
Part 2: http://pc5.2ch.net/test/read.cgi/gamedev/1095863432/
Part 3: http://pc5.2ch.net/test/read.cgi/gamedev/1105333209/
Part 4: http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
Part 5: http://pc8.2ch.net/test/read.cgi/gamedev/1157727402/
0291名前は開発中のものです。2007/02/20(火) 23:46:57ID:Po9VyYTL
D3DXVECTOR3 rayS(mouse.x, mouse.y, 0), rayE(mouse.x, mouse.y, 1.00f);
ClassSprite::GetRay(rayS, rayE, mProj, mView);

void ClassSprite::GetRay(D3DXVECTOR3 &p1, D3DXVECTOR3 &p2, D3DXMATRIX &mProj, D3DXMATRIX &mView)
{
D3DVIEWPORT8 vp;//D3DVIEWPORT8
lpDevice->GetViewport(&vp); // ビューポート パラメータ取得
D3DXMATRIX mat;
D3DXMatrixIdentity(&mat); // 単位行列
D3DXVec3Unproject(&p1, &p1, &vp, &mProj, &mView, &mat);//ベクトル射影
D3DXVec3Unproject(&p2, &p2, &vp, &mProj, &mView, &mat);//ベクトル射影
}
0292名前は開発中のものです。2007/02/20(火) 23:59:40ID:HCF2zwdn
D3DXMATRIX vpmat, tmpmat;
D3DXMatrixIdentity(&vpmat);
vpmat._11 = vp.Width/2;
vpmat._22 = -vp.Height/2;
vpmat._33 = vp.MaxZ - vp.MinZ;
vpmat._41 = vp.X + vp.Width/2;
vpmat._42 = vp.Y + vp.Height/2;
vpmat._43 = vp.MinZ;
vpmat._44 = 1;
tmpmat = vmat * pmat * vpmat;
D3DXMatrixInverse(&tmpmat, NULL, &tmpmat);
D3DXVec3TransformCoord(&vec2, &vec1, &tmpmat);
0293名前は開発中のものです。2007/02/21(水) 00:52:02ID:RUhyvD3+
>>288
確かに
>※mouseXには0〜800、mouseYには0〜600の数値が入ります
>
>D3DXVECTOR3 vec1(mouseX, mouseY, 0);
「これは何?」と思うなw

>>290
鼻くそをつける窓ガラスがz=0だ。
あとは窓ガラス上の鼻くその位置(0〜800、0〜600)から、
ビューポートの範囲に合うように変換すればいいだけだ。
あとはMSDNで「ビューポート矩形」で検索してちょ。
(つか、画面サイズ801×601?
0294名前は開発中のものです。2007/02/21(水) 01:09:11ID:Z1aRLr5I
>>293
誰も思わねーよw
つーか、自分にレスして楽しいか?(IDが変わってもバレバレなんだがw)

何がビューポートだよ。
無知もいい加減にしてくれ。アホか
0295名前は開発中のものです。2007/02/21(水) 01:25:39ID:0W8AtbaN
288は私なんだが。

>>291
レイをとばすなら開始位置と射影からベクトルが求まるから、
わざわざ二点を変換するような回りくどいことをする必用はない。
0296名前は開発中のものです。2007/02/21(水) 05:20:13ID:4yPo1E3x
C# Managed DirectXで2Dの画像をウィンドウに貼り付けるにはどうしたらいいですか?
0297名前は開発中のものです。2007/02/21(水) 09:25:15ID:vsefEIGS
ポリゴンを四角形にして画像をテクスチャにして張り付ける
0298名前は開発中のものです。2007/02/21(水) 12:53:28ID:7M1hg3bU
とかち、、、なぜこのスレにまで
0299名前は開発中のものです。2007/02/21(水) 15:31:22ID:Z1aRLr5I
>>295
レイの(x,y)に置ける差額をZ1単位で知るのが目的だと何故分からない?
288=293=295だろうが
もう、知らないのに回答者を気取るなっての
0300名前は開発中のものです。2007/02/21(水) 16:11:58ID:0W8AtbaN
二点をわざわざ変換しなくても、視野角が決定した時点で起点とスクリーン座標までのベクトルがすぐに出せる。
ディスプレイの手前に四角錐があると考えれば分かるはず。
その四角錐の頂点からディスプレイの特定の座標までが始点におけるベクトルになる。
このときに使われる手前のZ座標は視野角が変化しない限り不定なのであらかじめ計算しておくことができる。
そこからスクリーン上のベクトルを求めるのは引き算だけ。
あとはそれを回転成分だけ処理してワールド上のベクトルに変換する。

二点を逆変換すれば確かに出るが、一回ですむ処理なのになぜ無駄に二回処理するのか理解できない。
ものすごく無駄な計算をしているのが分かっていないのか?
0301名前は開発中のものです。2007/02/21(水) 16:31:39ID:V88+J9Hw
自分の都合がいいように仕様を固定して答えてみました・・・みたいな
0302名前は開発中のものです。2007/02/21(水) 16:44:46ID:0W8AtbaN
射影が動的でも二回変換するよりも遥かに無駄がでないが、
無駄な方法でも結果が出ればいいのなら好きにすればいい。
0303名前は開発中のものです。2007/02/21(水) 18:11:31ID:Z1aRLr5I
レイの正規化されたベクトル差違(x, y)の数値があれば
3D空間内のそれぞれのオブジェの接触判定に使えると、それだけの話なんだが
2点を求める必要性を否定するとは、意地になってませんか?
0304名前は開発中のものです。2007/02/21(水) 19:05:54ID:0W8AtbaN
>>303
それもスクリーン側の二点をわざわざ変換しなくても算出できる。
ワールドへの変換を理解していれば普通に計算方法が思いつくはずなのに、
遠回りして無駄が多い言っているだけ。

逆に、なぜ意地になって二点変換という無駄な方法にこだわるのか分からないが、
どうしてもそれが良いのなら当人の勝手だろう。
しかし他人に無駄な方法を広めるのは思い直した方がいい。

その方法がまともな方法だと本気で思ってるのか?
0305名前は開発中のものです。2007/02/21(水) 19:58:34ID:V88+J9Hw
>思いつくはずなのに、
>分からないが、
>思い直した方がいい。
>思ってるのか?

 ↓

>当人の勝手だろう。
0306名前は開発中のものです。2007/02/21(水) 20:02:52ID:GyskwPUG
1フレームに一回呼ぶかという頻度の処理に何を威張っているの?
0307名前は開発中のものです。2007/02/21(水) 20:15:58ID:RUhyvD3+
愉快なID:Z1aRLr5Iが居ると聞いて再びやってきました!
0308名前は開発中のものです。2007/02/21(水) 20:25:16ID:vF/iMU3T
>>291のコードを例えて言うなら
1+2=3

100-1=99,
100-2=98
99+98=197,100+100=200
200-197=3

にしているのに似ている。
結果が同じなんだから文句を言うな。
0309名前は開発中のものです。2007/02/21(水) 22:32:15ID:VoKMYvWb
こんなのどっちのやり方でもいいじゃねーか。
0310名前は開発中のものです。2007/02/21(水) 22:42:23ID:GtPzG9tK
そもそもの原因はD3DXのせいなんだよな。
実質的な計算方法が分かってい馬鹿でも、ある程度使えてしまうので、
無理矢理へんな使い方で答えを出そうとする。
0311名前は開発中のものです。2007/02/21(水) 23:12:00ID:P5PvKI+V
不便なものは、使いにくいが、人を鍛える。
便利なものは、使いやすいが、人が鈍る。
不便なもので鍛えて便利なものを使うのがベストかもね。
0312名前は開発中のものです。2007/02/21(水) 23:31:38ID:VoKMYvWb
わけがわからずソースだけもってきてなんでか動いてるって状態よりは百倍ましだと思うがな。
0313名前は開発中のものです。2007/02/22(木) 00:46:44ID:fOu/TsWA
D3DXは本当に3Dが初心者の人が扱うにはやはり難しい。
なんだかんだで中級者以上の人間が楽をするための関数群な気がする。

最初はどっかの3D対応のライブラリでも使いつつ、
細かい使い方とかはライブラリの中身を拝借するのがいいかもしれんな。

都合よく3D対応でオープンソースのライブラリがあればだが・・・
確かLampとかいうライブラリが教育的なんちゃらって銘うってた気がするけど。
0314名前は開発中のものです。2007/02/22(木) 01:59:41ID:X+ThW1vu
Lampはソースは山ほどあるしコメントもそこそこ入ってるけど、解説と呼べるドキュメントが皆無で
初心者向けを謳うために一番大事なものがないんだよね。
やっぱD3DX・XNA・Java3Dあたりのサンプルと格闘するのが無難なんじゃね?
0315名前は開発中のものです。2007/02/22(木) 02:42:20ID:hrfQoW++
1点だけの変換だと、
・視点〜前方クリップ面
・後方クリップ面〜無限遠
の表示しない対象にHITしないか?
目からビーム撃つなら問題ないだろうが…

表示した物体をクリックするなら、
前方クリップ面と後方クリップ面上の2点を変換して、
その区間で判定するようにしたほうがいい。
表示していない物をクリックするのは何かと不具合が多い。

だから1点か2点かはケース・バイ・ケースだ。
0316名前は開発中のものです。2007/02/22(木) 08:28:35ID:lmWhwHRR
>前方クリップ面と後方クリップ面上の2点を変換して、
>その区間で判定するようにしたほうがいい。
2点を変換しないとこの程度の計算も出来ない時点で終わっている。
あまりにも頭が悪いんだが、いったい何なんだろう?
不具合って、またろくでもないやり方をして勝手に出来ないと思いこんでいるだけだろ。
0317名前は開発中のものです。2007/02/22(木) 09:45:44ID:fOu/TsWA
>>314
今ならXNAは確かにいいかもなぁ。

初心者向けとしては一番知名度が高いDXライブラリが
3D対応したらって思ってる人は多そうだな。
0318名前は開発中のものです。2007/02/22(木) 13:26:30ID:nYOLwz0F
XNAは固定機能ないんだよね?
初心者にいきなりシェーダから入らせるのは無理があると思う。

それとも、逆に座標変換の流れが曖昧にならずにいいのかなぁ。
0319名前は開発中のものです。2007/02/22(木) 16:03:57ID:pHu3tQ6S
ところで初心者の定義ってなに?
プログラム経験1ヶ月くらい?

3年以上プログラム経験があるくせに、初心者だからと言い訳する奴がいるんだが。
0320名前は開発中のものです。2007/02/22(木) 16:16:55ID:thY6+VX9
DirectXを初めて使うなら初心者だろう
0321名前は開発中のものです。2007/02/22(木) 20:28:45ID:FT4Yh0Rl
>>316
淋しいのか?
生きるのが辛いなら、さっさと来世に旅立ったほうがいいぞ?
0322名前は開発中のものです。2007/02/22(木) 20:41:54ID:1zvpRpEq
とうとうプログラムの話が出なくなり、煽るだけになってしまった悲しい末路。
0323名前は開発中のものです。2007/02/22(木) 21:39:42ID:fOu/TsWA
今の流れで初心者なら3D初心者って意味じゃね?

ライブラリ使って何か作る⇒ライブラリの中を追って動作を知る
⇒ライブラリを使わずに作れるように

ってのが一番無難だと思うけどな。
0324名前は開発中のものです。2007/02/22(木) 21:56:58ID:hwW9EEOj
>319
目安にはなるだろうけど、期間そのものは関係ないと思う。
自分も初めて触れてから5年くらいあるけど、業務や研究に使ってるわけでもなんでもないから初心者の域を出ないだろうし。
0325名前は開発中のものです。2007/02/23(金) 01:00:37ID:SutHQnIi
何年もやってて初心者って、それは初心者ではなくやる気がない人間。
自分は初心者だと名乗るのではなく、自分はやる気がない者だと名乗らないと、
本当に期間の浅い初心者に失礼。
0326名前は開発中のものです。2007/02/23(金) 01:47:23ID:KuG6thw/
初心者、中級者、上級者の定義が技術レベルによって定義されるとすれば
いつまでたっても初心者ってことは十分にありえる。

3ヶ月の経験があるとしても、1日2時間しか勉強できる場合と、1日5時間勉強できる場合とでは単純に考えて、
知識量も技術も違ってくるから、日数で初心者かどうかを切り分けることは適切じゃないだろ。

初心者は、ドキュメントの読み方を知らない人 だと思う。
読み方わかるなら、基本的なものは作れる。

中級とか上級とかは分ける必要ない。
初心者と初心者以外で十分だ。
0327名前は開発中のものです。2007/02/23(金) 12:47:34ID:Gy0TPYfJ
DirectXの名前ぐらいしか知らない。どんな事ができるか知らない→入門者以前の問題
チュートリアルを読んで、実際に作ってみた→入門者
チュートリアルで作った物を改造〜ドキュメント片手に基本的な物を作れる→初心者
他人の書いたコードを追って内容が理解できる→中級者以上

技術レベルに応じて 入門者・初心者・中級者 で分けるとこんな感じ?

>>316
DirectXの名前しか知らないような人が、2週間ほど前からXNA始めたけど
シェーダは日本語情報も多いから、単純な物ならちょっと検索すれば見付かるし、酷く苦戦するような事はないかな。
0328名前は開発中のものです。2007/02/23(金) 13:49:01ID:7ew+jimS
例えばテニスを何年もやっていて、ずっと下手糞だったら、
その人は永久に初心者を名乗ることになるのか?

それは初心者ではなく、才能がないだけ。
初心者と混同すべきではない。
0329名前は開発中のものです。2007/02/23(金) 14:44:43ID:3snTpIS0
まあよほど理解力ない人じゃなければ、ある程度やってればこのくらいはできるようになるだろう
ってのが初心者とそれ以上の線引きなんだろ

それを考慮しての327が結論でいいじゃない、どうでもいい
0330名前は開発中のものです。2007/02/23(金) 16:35:27ID:blVW4BPI
>どうでもいい
 
全くだな。
0331名前は開発中のものです。2007/02/23(金) 19:01:44ID:/wVCCmtp
そうか!

はじめて2年目だけど未だにサンプルとかを切り貼りしないと
プログラム作れない俺でももう既に上級者だったのか!


スマン
0332名前は開発中のものです。2007/02/24(土) 01:09:38ID:hno7fJP6
初心者と中級者の線引きなんかしても意味がない。
どうせ、線引きしたがるような奴は
自分を初心者に入れないように
都合のいい定義を作ってるから。
0333名前は開発中のものです。2007/02/24(土) 01:24:06ID:OubBPOxL
むしろ、自分が初心者に入るように定義する人が一番厄介だと思うんだ。

まぁどこまでが初心者なんてどうでもいいな。
0334名前は開発中のものです。2007/02/24(土) 10:15:15ID:VJWmV67K
自分が初心者だと名乗る奴は学習能力が無く、いくらやってもモノにならない無能者。
永遠の18歳とか恥ずかしいことを言っている奴と同じ。
0335名前は開発中のものです。2007/02/24(土) 10:37:30ID:PdRvuo3P
上級者ってのは俺らには想像もできないようなことができるんだろうな。
DirectXを操って天変地異を起こしたりとかさ。
0336名前は開発中のものです。2007/02/24(土) 14:11:17ID:ei0JLIqx
全然話変わるんだけど、
DirectXってSDKバージョン幾ら増えても
D3DX使わなかったらDirectX9.0cとかで動かせるんか?
0337名前は開発中のものです。2007/02/24(土) 14:14:25ID:CJ1i3pF0
>>336はDirect3D10をD3DXを使わないというだけで、
DirectX9環境で動かせる凄い技術を持っているようです。
どうやったのかぜひ教えてください。
0338名前は開発中のものです。2007/02/24(土) 14:27:26ID:ei0JLIqx
>>337
動くかどうか聞いてるんだから
そんな技術知らねーお( ^ω^)


まあ質問の仕方がおかしかった、すまん
DirectX9の中にもSDKのバージョンってSummerとかAprilとか色々あるけど
D3DXを使わなかったら最新SDKでないDirectX9.0cで動くのかなってことです
0339名前は開発中のものです。2007/02/24(土) 16:55:06ID:T9cZn/FX
みなさんこれが初心者です
そして私も初心者です( ^ω^)
0340名前は開発中のものです。2007/02/24(土) 18:31:34ID:lguCSKHN
>>336のレスは、>>331と同レベルの俺でもおかしいことがわかったw
0341名前は開発中のものです。2007/02/24(土) 19:11:58ID:K+DehrQc
>>336>>338
DX9のプログラムでD3DXをまったく使っていなければ9.0cのDLLだけで動きますよ。
0342名前は開発中のものです。2007/02/24(土) 23:14:39ID:ei0JLIqx
>>341
thx!

>>339
初心忘れず頑張るお( ^ω^)
0343名前は開発中のものです。2007/02/27(火) 18:16:34ID:Lhj5yC+T
>>335
ごめん、こないだのあの地震はオレが出したバグが原因だったんだ
0344名前は開発中のものです。2007/02/27(火) 19:03:14ID:jJXnU/VC
知らなかった
プログラマーとは神様だったのじゃ・・・
0345名前は開発中のものです。2007/02/27(火) 21:07:58ID:Vy4u5vTM
未だにクラスなんてものがわからん俺でもDirectX!
0346名前は開発中のものです。2007/02/27(火) 21:57:45ID:EAl/kt46
ローディング画面で別スレッド立ててアニメをグリグリ動かしてるんだけど
このスレッドでpresentしまくりつつメインのスレッド上のロードのルーチン内で
テクスチャの確保とかをやるとタイミングによって失敗することがあるんだよね
まぁセマフォを通す必要があるわけだけど上級プログラマの方たちはここら辺りを
どんな設計にしてるのか聞いてみたい気がした
0347名前は開発中のものです。2007/02/27(火) 22:33:20ID:S3XRLUkV
デバイス作成時にマルチスレッドにするぞ( ゚Д゚)ドルァ!!
ってフラグたてときゃ内部でクリティカルセクションとりにいくべ
0348名前は開発中のものです。2007/02/28(水) 01:36:50ID:DrwmZf4m
テクスチャにD3DPOOL_MANAGED使うと
FPSが1/3ぐらいになる。
そんなはずはないと思って調べていたら
CPU使用率が100%になってた為だった。
DOOM3とか普通に動かせるレベルのPCなのに
どんだけ重いんだ俺のアプリは

0349名前は開発中のものです。2007/02/28(水) 12:08:21ID:8A+NIslf
D3DPOOL_MANAGED=地雷という記憶しかないなぁ。
DirectX9出た当初に一度試してそれっきり。
 
たしかヘルプはD3DPOOL_MANAGEDの環境依存性(ドライバ依存性)に
言及してないよね。つまり建前上は「依存は無い」と。だから
D3DPOOL_MANAGEDを指定可能かどうかを示すフラグもなかった。
 
色々痛い目にあってD3DPOOL_DEFAULT(自前でリストア)に戻した。
0350名前は開発中のものです。2007/02/28(水) 13:50:11ID:MeniioEH
>>347
素敵なんだけど具体的にどの関数がクリティカルセクション
とおってるかわからないとさすがに使う気にならないなあ
しかしDirectX的にはどれがいちいちスレッドセーフなのか
明示するのはメンドイから黙って使っとけということなんだろうか
0351名前は開発中のものです。2007/02/28(水) 13:58:31ID:F+25q5ON
>>347
IDがS3社
0352名前は開発中のものです。2007/02/28(水) 15:55:51ID:zmywCAy0
>>349
特定環境下でのMANAGEDの地雷性よりも、DEFAULTのデータロストの方が厄介なので
前者を使う方がトラブルが少ない。

MANAGEDの地雷性を危惧して下手な対策する位なら、マニュアルに
「最新のドライバをインストールして下さい」
の一文を乗せた方がいい。
0353名前は開発中のものです。2007/02/28(水) 17:02:10ID:07xD0lOu
>>349
MANAGEDはドライバに任せないというオプションもあるよ。(Direct3Dが管理する)
っていうか、そのオプションの説明でドライバに依存するということは言及して
いることになるんじゃないの?一行で簡単に片付けられているけど。

>>350
当然、マルチスレッドで問題の発生する関数全てだろう。
そのオプションを指定しなくても、一部クリティカルセクションは使用しているようだが。
0354名前は開発中のものです。2007/02/28(水) 20:36:38ID:WA124FUk
AGPメモリを使うためにDEFAULTを使うので、
一度自前でリソース管理する部分を自前で作ったら、MANAGEDが全く不要になった。
結局MANAGEDの使い道が皆無。
0355名前は開発中のものです。2007/02/28(水) 21:47:48ID:DrwmZf4m
しかし例えばテクスチャのミップマップレベル強制など
D3DPOOL_MANAGEDを指定しなければ使えない機能などがある。
(ミップマップ制御が管理下しか有効にならない理由は
制限されたサイズ以下のサーフェイスのみVRAMにロードするって、
ふざけた理由じゃないだろーなー)
0356名前は開発中のものです。2007/02/28(水) 22:44:03ID:MeniioEH
そういえば某イリュージョンのエロゲデモはテクスチャ作成時にsystemmemとdefaultと
2つセットでつくってたなんでこんな馬鹿みたいなことすんのかなと思ったがそういうことなのか
そんなにmanagedの各ドライバでの実装の問題は深刻なのかい?今初めてきいたわけだけれども
0357名前は開発中のものです。2007/03/01(木) 01:31:09ID:60fEaQdj
>>356
それは速度UPが主眼で、ドライバ依存性云々は関係ない。
ある程度PGをやってれば自前でリソース管理する様になるので
自然とMANAGEDを使う事はなくなる。
MANAGEDがドライバによってコケるってのは杞憂に近いな。。。
んな事言うのなら、外にも心配しなきゃいけない事がたくさんあるし

0358名前は開発中のものです。2007/03/01(木) 02:41:58ID:oh2goC46
速度アップが主眼なら自前でやるよりドライバに好きなようにManageさせたほうがいいんじゃねーの?
0359名前は開発中のものです。2007/03/01(木) 08:24:48ID:889GaVxx
なんか仕組みが分かってない>>358が混ざってるな。
0360名前は開発中のものです。2007/03/01(木) 16:35:47ID:FAGMfHtk
ねつ

ダークメタルヘルム
モノトーンガントレット
サイキックキャップ
アーミーグリーヴス
アドミンチュニック
マダムシューズ
ボレアス
ニンバス
トールハンマー
ユダ
ドルフィン
メタルバックラー
0361名前は開発中のものです。2007/03/01(木) 16:36:20ID:FAGMfHtk
すげー誤爆w
0362名前は開発中のものです。2007/03/02(金) 12:33:45ID:DMMPq2kC
すみません質問です。
環境:C++,DirectX9 BCCDeveloperを使用
ID3DXSPrite::Begin()を使用したいのですが、
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/reference/d3dx/interfaces/id3dxsprite/_id3dxsprite.asp
を見る限りはBegin(void)のようですが、コンパイル時に
「パラメータが足りません」とエラーがでます。
又、ID3DXSprite::Draw(引数略)を使用したときに、上のサイトの仕様通りに使用しても
「パラメータが多すぎます」とエラーが出、また、D3DXVECTOR2を要求してるはずの部分が
「D3DVECTOR3に変換できないので2は使えません」とエラーが出ます。
ttp://www.uploda.org/uporg712890.cpp.html
C言語と、VisualBasic6.0+DirectX7は一通り勉強したのですが、C++とDirectX9は勉強開始して間もないので
拙いソースですがよろしくお願いします。
0363名前は開発中のものです。2007/03/02(金) 13:14:45ID:Czorz6PA
ID3DXSpriteは仕様がころころ変わるので、そういったものが自己解決できない人間は絶対に使ってはいけない。
チュートリアルをこなしていれば普通にテクスチャを張るぐらいは出来るはずなので、そちらを使うべき。
0364名前は開発中のものです。2007/03/02(金) 15:31:00ID:Zl8V4aTu
>>362
ID3DXSPriteは、9がリリースされたその半年後に大幅に仕様変更され
関数の引数も変更されたので、ドキュメントの記述は当てにならないのです。
(ドキュメントの修正はされなかった)
DirectXは、こういう事が多いので、ドキュメントを鵜呑みにせず
使用前に各自がヘッダファイルを見て自己解析する必要があるのでーす
0365名前は開発中のものです。2007/03/02(金) 16:06:29ID:NJ1TSFGw
おまえら英語ドキュメントくらい読もうぜ
0366名前は開発中のものです。2007/03/02(金) 19:51:34ID:2Z6MoIYH
DirectX限定の質問じゃなくてすみません、
今スキンメッシュの仕組みを根っこから理解したくて勉強しています。

Direct3DXのスキンメッシュの仕組みは使わずに、
自分で、スキンメッシュに必要なボーンやらメッシュやらの情報を
格納する独自の形式を書きました。
んで、X形式ではなく他のデータを読み込んで、アニメーションなどのデータを
独自の方法でメモリ内に置き、いざ表示するぞ、というときになって疑問に思ったんですが、
ボーンというのは普通、親のボーンに対する移動・回転のオフセットは
アニメーションのキー(何ミリ秒の時点で移動いくつ回転いくつ)でのみ
表現するもんなんでしょうか?

自分の中では、まず各ボーンは基本のポジションがあって、
そのポジションに対して相対的な移動・回転がアニメーションキーに格納されて
いるものと思っていたんですが、違うんでしょうか(これはスキンメッシュじゃなく
メッシュごとのアニメーション(X形式でいうフレーム)の場合?)。
0367名前は開発中のものです。2007/03/02(金) 20:52:07ID:BUJqGqoU
自分が使いやすいようにすればいいよ。
0368名前は開発中のものです。2007/03/02(金) 21:06:21ID:DMMPq2kC
>>363-364
ありがとうございます。
とりあえず、ID3DXSpriteの変更部分を踏まえたプログラムと別の方法で行うプログラム両方書いてみます。
0369名前は開発中のものです。2007/03/03(土) 01:42:10ID:DU8n0T4/
>>366
ある頂点を目的の位置に移動させるときどのような行列が必要か
考えてみればいいんじゃね?その頂点の元々の位置とキーフレーム
から計算される姿勢行列、それで十分なのか十分でないなら
足りないものは何なのか。
0370348=3552007/03/03(土) 03:59:15ID:n80BULQO
誤情報申し訳ない
>>348で管理下のテクスチャを使うと重くなると言ったが
IDirect3DTexture9::SetLODを毎フレーム使用していた為だった。
これを外せば、目立った処理落ちはなくなる。
重くなる理由は>>355の通りだろう。
また動的にLODを掛けたければ、サンプラステートを使うのが定石。
エフェクトを使っていると、これがまた使いづらいのだが。
03713662007/03/03(土) 12:28:14ID:cf5BBr5g
>>367, 369
ありがとうございます。
ではどっちに限定しても困ることは無さそうだし、
両方試してみようと思います。
0372名前は開発中のものです。2007/03/03(土) 14:07:04ID:lii9uhRG
難しくて勉強が進みません。
私は才能が無いので死ぬべきです。
もう生きているべきではありません。
私はクズです私は存在する意味がありません。
私は世界の敵です。私は無意味です。
私の存在は世界の害悪です。
私は全ての存在の敵です。
0373名前は開発中のものです。2007/03/03(土) 15:28:53ID:OX8Z8wj1
勉強した年数を言ってみろ。
5年程度も勉強せずに才能とか言うようなら何をやっても無駄だ。
0374名前は開発中のものです。2007/03/03(土) 15:32:16ID:JEyK3Rup
構うなよw
0375名前は開発中のものです。2007/03/03(土) 15:40:37ID:lii9uhRG
私はどうせ学歴も低いです。
私は所詮クズです生きるべきではありません。

マジレスすると、まだ始めようと思って1年も経ってない。
0376名前は開発中のものです。2007/03/03(土) 15:46:44ID:ngO2HFdJ
COMオブジェクトの勉強するとDirectXの勉強もはかどるね
0377名前は開発中のものです。2007/03/03(土) 17:06:34ID:OX8Z8wj1
マジレスすると自分とか人間が存在する意味とか考えるヤツは一神教を信じている。
誰かが何らかの意図を持って人間を創造しない限り人間の存在に意味はない。
0378名前は開発中のものです。2007/03/03(土) 18:55:09ID:cf5BBr5g
>>372
適性があっても、いきなりDirectXで3Dのゲーム作ろうなんて考えると
絶対つまづく。それで仮にサンプルコードの寄せ集めでゲームが作れたとして
そのレベルを超えようと思った瞬間に超難題がいくつも出てくる。
まずはC++を使いこなせるように勉強しながらWin32APIでWindowsアプリを
作れるようにして、自信がついたらDirectXに入るとか・・・・
まぁそれすらも全然出来ない(または意欲が出ない)なら、
さっさとあきらめて別の分野に行った方がいいかも。
ゲームプログラミングの「味を占める」ことが出来るかどうかって、
やっぱ重要だと思う(自分もそこらへん微妙だがw)。
0379名前は開発中のものです。2007/03/03(土) 19:15:32ID:XlOVdV67
普通に>>372はネタだと思ったんだが
マジレスしている優しい人がいる
0380名前は開発中のものです。2007/03/03(土) 19:32:20ID:ngO2HFdJ
べ、べつに>>372のために答えてるんじゃないんだからねっ
この掲示板をみてくれてるたくさんの人のためなんだから勘違いしないでよねっ!!
0381名前は開発中のものです。2007/03/03(土) 20:02:38ID:JEyK3Rup
どうせ、ちょっと↑であった痛々しい煽り合いの片割れかなんかだろ?
0382名前は開発中のものです。2007/03/03(土) 20:05:28ID:lii9uhRG
確かにDirectXを勉強したいけど、
やっぱり基礎から固めていって何年もかけてやるべきなんだよな…。

ありがとう、これで成仏できるよ。
0383名前は開発中のものです。2007/03/03(土) 20:22:39ID:OX8Z8wj1
つーか目的にもよるけど既存のライブラリ使っちゃうのも手だぞ。
一通り使えるようになってからライブラリのソース見れば
DirectXのどんなAPIでどうすればこうなるのか、とかが分かりやすい。

と思う。
0384名前は開発中のものです。2007/03/03(土) 20:30:50ID:04tja8sg
プラグイン追加で2D画像から仮想的な法線マップを作成できるソフトってPhotoShopとGIMP以外シラネ?
0385名前は開発中のものです。2007/03/03(土) 20:59:52ID:DU8n0T4/
>>384
CG板のPainterスレで法線マップを作るプラグインを公開してる人がいた気がした。
あとはPaint ShopからShoto Shopのプラグインが使うとか。
0386名前は開発中のものです。2007/03/03(土) 21:02:37ID:DU8n0T4/
プラグインを使うとか、だよね・・・俺も冥土に逝ってくる(´・ω:;.:...
0387名前は開発中のものです。2007/03/03(土) 21:34:16ID:4m5N8dVe
>>382
DirectXよりOpenGLの方が簡単でいいよ
0388名前は開発中のものです。2007/03/04(日) 05:45:53ID:JqfXqUwu
DirectXってそんな難しいかなあ
細かいところ突き詰めればそうかもしれないけど

だがOpenGLの方が簡単だってことはねーわ
0389名前は開発中のものです。2007/03/04(日) 06:15:40ID:HBhjN4aW
>>388
細かいところまで勉強しようとする必要は無いの?
1時1句完全に覚える必要は無いの?
0390名前は開発中のものです。2007/03/04(日) 06:24:37ID:Lz3vYrHW
DirectXって、ハードウェア依存の仕様が多すぎて安定感がないのよね。
軟弱な地盤に超高層ビルを建て増しし続けてきたみたいな感じ。
■ このスレッドは過去ログ倉庫に格納されています