■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

【C++】 DirectX初心者質問スレ Part2【C++】
1 名前:999 :04/11/24 21:15:55
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する香具師 】
・ どんな事で躓いているのか明確にしる。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。


2 名前:2=1=1000=999=998 :04/11/24 21:18:04
ttp://up.satoweb.net/img100/886.lzh

前スレ>997
これをコンパイルしてみろ
DDの初期化だけのヤツ
リンクの設定もいらんから
パスが通っていたらビルドできるはず
うちではできた


3 名前:前スレ987 :04/11/24 21:33:08
>>2
一からといっても以前作ったDirectDrawベースの
簡単なプログラムがあったので、それ使うので
何ら問題無いです。そのプログラムは正常に動きました。
どうもありがとうございました。


4 名前:デフォルトの名無しさん :04/11/24 21:36:16
>>1
スレ立て乙

5 名前:デフォルトの名無しさん :04/11/24 21:42:51
  ∧_∧ 
 (*´∀`)      n
 ̄     \    ( E) グッジョブ!! >>1
フ     /ヽ ヽ_//

6 名前:2=1=1000=999=998 :04/11/24 21:50:12
>3
がんがれ

>4,>5
ども
どさくさにまぎれて生まれてはじめての1000ゲット&2ゲットもできたw

7 名前:デフォルトの名無しさん :04/11/24 22:05:23
>>1


8 名前:デフォルトの名無しさん :04/11/25 04:32:02
モデリングソフトはどのようなものを使って、どの形式で出力するのがいいのでしょうか?

9 名前:デフォルトの名無しさん :04/11/25 04:54:50
>>8
メタセコでx-file
モーション付けたくなったらBlender(あまりおすすめしないが)とかでアニメーション付x-file
アニメ付はフリーの定番ないよ
高額なら3dsMAX使いが多いっぽいけど

10 名前:デフォルトの名無しさん :04/11/25 06:24:50
>>6
乙だけど、それなら誘導しろよw

11 名前:デフォルトの名無しさん :04/11/25 08:36:56
>>9
Xファイルはopenglでも使えますか?

12 名前:デフォルトの名無しさん :04/11/25 08:54:41
問題なく使えるが、そんな質問をする>>11には無理。

13 名前:デフォルトの名無しさん :04/11/25 11:45:43
>>11
GLにID3DXMeshみたな機能は無いね。自分でパーサ書くかIDirectXFile系使うか
D3DX使うかしてメモリ上でGL用に調整するしかねえよ、という話。
つーかGL使う時点でモデルをxで出力する状況が謎。
パーサ書くのが面倒なら他のフォーマットでも大抵は既存のものがあるべ。

14 名前:デフォルトの名無しさん :04/11/25 13:15:05
>>13
アニメーション付きのフォーマットでいいのある?


15 名前:デフォルトの名無しさん :04/11/25 14:14:45
ID3DXMESHの頂点とか面を掴んで編集したいんですがどうしたらよいのでしょうか。
Xfileのロード、表示まではサンプルなど見て簡単にできてしまったのですが、
ポリゴンとマウスの当たり判定をどうするか、とかではなくて、
頂点情報を編集するにはどうすればよいかということが分かりません。

16 名前:デフォルトの名無しさん :04/11/25 14:15:22
>いいのある?
意味が分からん。

17 名前:デフォルトの名無しさん :04/11/25 14:17:40
>>15
そういうことをやろうとするときは、まずD3DXの高レベル関数に頼らず、
自分で読み込み部分を作るところから始めること。
中身を理解せずに使うから、その程度のところで詰まることになる。

18 名前:デフォルトの名無しさん :04/11/25 14:26:30
>>17
アドバイスありがとうございます。自分でもそう思うのですが、
何しろ急ぎというか、便利なもので使えるものは使いたいなと思っております。
例えばスキンメッシュとかも完璧に勉強して自前実装できればよいのですが、
ひとまずそこまでやってられないのでここもモーションつきXfileを使う方針です。
そんなわけで今回はDX関数に頼ってできるものならそれで済ませたいのです。

19 名前:デフォルトの名無しさん :04/11/25 14:31:45
>>14
自前が多いだろうけど、LWのフォーマットは結構使われている気がする

>>18
サンプルにpickっていうのがあるから、それを自分でじっくり調べてから

20 名前:デフォルトの名無しさん :04/11/25 14:35:58
>>16
.Xファイル以外で、アニメーションデータを含むモデルデータを持つことができるフォーマットでいいのがある?

>>18
頂点座標の編集の仕方。
ID3DXBaseMesh::LockVertexBufferを使って頂点データへのアドレスを取得。
データ構造はID3DXBaseMesh::GetFVFで得られるFVFを調べると分かる。
(D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1)だとは思うが。
目的の頂点情報をいじったら、ID3DXBaseMesh::UnlockVertexBufferで戻す。



21 名前:デフォルトの名無しさん :04/11/25 18:49:43
>>19>>20
ありがとうございます。いろんな所からパkってきて最終的に↓のようなかたちで
目的のポリゴンの頂点座標取得まではできました。ここまでの大きな処理の流れ的な部分は
理解できてると思うのですが、実はポインタの扱い方すら実はまだ怪しいという段階なので
ここからどすればよいのか分かりません。v0〜v2の値を適当に弄って戻すには
どんな風に書けばよいのでしょうか。*が二重についてたりしてワケが分かりません…
Cの初心者スレで聞こうと思ったんですが、いきなりDXの話を持ち出しても話が通じなそうなので…

D3DXVECTOR3 v0, v1, v2;
v0 = *(D3DXVECTOR3*)( pVertices + FVFSize*pIndices[0] );
v1 = *(D3DXVECTOR3*)( pVertices + FVFSize*pIndices[1] );
v2 = *(D3DXVECTOR3*)( pVertices + FVFSize*pIndices[2] );

22 名前:デフォルトの名無しさん :04/11/25 19:50:24
>>21
*が二重って、どこよ。
かけ算の*とポインタの*をごっちゃにしてる上に、
キャスト変換について分かってないってとこか。

D3DXVECTOR3 *v0;
v0 = (D3DXVECTOR3*)( pVertices + FVFSize*pIndices[0] );

まずこうしろ。そうすりゃv0->xでX座標を修正できる。

23 名前:デフォルトの名無しさん :04/11/25 20:58:29
>21
強引なポインタのキャストは危険なのでお勧めしない
多少冗長になっても、きちんと書かないとあとで変なバグのもとになる恐れがある
ポインタがしっかり理解できていないならなおさら

D3DXVECTOR3 v0, v1, v2;
int index = pIndices[0];
v0.x = pVertices [ index ].x;
v0.y = pVertices [ index ].y;
v0.z = pVertices [ index ].z;

で取得して処理が終わったら
int index = pIndices[0];
pVertices [ index ].x = v0.x;
pVertices [ index ].y = v0.y;
pVertices [ index ].z = v0.z;
でもどしてやる

でも慣れても漏れはそんな強引なキャストを使った書き方はできるだけしないようにしている

24 名前:デフォルトの名無しさん :04/11/25 21:04:37
>>23のようにpVerticesが何であるか理解せず知ったかして書くと、
違う場所の値を引っ張り出して無駄にバグを発生させることになる。

25 名前:23 :04/11/25 21:15:25
>24
そうだな
今回pVertices の型について何も書いてないからVOID *かも知れないな
漏れは自分で決めたFVFしか使わないから常にFVFに対応した構造体を準備して使ってるから
ついこう書いてしまった
XMeshなんてしばらくつかってないが、自分の使いたい頂点フォーマットの状態で
読み込む(読み込んだ後コピーする)方法で使ってたし

26 名前:15 :04/11/25 21:55:24
皆さんありがとうございます。この辺は決まりもんかと思ったので詳しく書かなかったのですが、
DWORD FVFSize;
WORD* pIndices;
BYTE* pVertices;
のように定義されています。
細かい事はよく分からずになんとなく大きな流れだけ追っているのですが
v0 = *(D3DXVECTOR3*)( pVertices + FVFSize*pIndices[0] );
↑の( pVertices + FVFSize*pIndices[0] )で違う型のアドレスの足し算掛け算をして
更にD3DXVECTOR3のポインタにキャストして、その値を参照・・・っていうのが
全くワケがわからないというか、、、(この辺がどういう意味か教えていただけると大変助かります)
ひとまず>>22の方に教えていただいた風にしてみたら
とりあえず頂点を動かせましたが、その頂点を含む周辺の面が全部動くわけではなくて
割れてしまうんですね。。。ってことは3Dモデリングツールのように
モデルの頂点をマウスで掴んで引っ張ったりしたい場合は
その点を含む面を更にどうにかして全て捜査しないといけないのでしょうか?

27 名前:15 :04/11/25 22:23:55
あぁ、ロックしてある面の頂点だけしか動かないとかですかね…?
今のところD3DXIntersectでマウスとメッシュの当たり判定をとって、
D3DXIntersectが返した面のインデックスをロックして、
それから>>21のようにして頂点を取り出しています。

28 名前:デフォルトの名無しさん :04/11/25 23:00:13
編集用のモデル → 頂点配列はSTLコンテナに。
表示用のモデル → 頂点配列はVertexBufferに。

これ常識、すなわちID3DXMeshは使うなってこった。


29 名前:デフォルトの名無しさん :04/11/25 23:31:36
>>15
22の者だが、
>細かい事はよく分からずになんとなく大きな流れだけ追っているのですが
↑このように宣っている時点で、オマイはプログラムするな。
なんとなくでプログラムできるわけないだろ。

元々のMeshがどういうデータ構造になっているかを丹念に丹念に丹念に調べた上で、
頂点座標をいじるのが普通だ。それが当たり前だ。
初心者だから、なんて言い訳通じないぞ。頂点編集なんて。

30 名前:15 :04/11/25 23:44:31
分からないので質問してるのですが。。。

31 名前:デフォルトの名無しさん :04/11/25 23:57:08
>>15
>>26を見る限り
結局はポインタを全然理解してないだけ

割れるか隣のポリゴンが変形してくっついてくるかは
頂点を共有してるかどうかだから
データの持ち方の問題

32 名前:デフォルトの名無しさん :04/11/25 23:58:28
>>15
.Xファイルを読み込んだあとのデータ構造がどうなっているかを理解しないと、
君の望むことはできない。
君が質問している「頂点の編集のしかた」はとてもとても奥の深い話。
ID3DXBaseMeshインターフェイスを駆使してくれ。

33 名前:15 :04/11/26 09:34:53
おはようございます。度々すいません。
>>28
たしかにID3DXMeshはややこしいのですが、
そういう方法を使うとD3DXIntersectとかも使えなくなりそうな、、、
余裕ができたらゆくゆく移行したいと思います。
>>31
実際やってみたときに頂点を共有してないんだなとは感じたんですが、
ではこれはどうやったら共有させられるのでしょうか。
現在テストしているモデルはライトウェーブで作った単純な格子状のメッシュです。
まず一枚の四角ポリゴンに対し一つのUVを割り当ててテクスチャを貼り、
それをコピーし格子状に沢山並べて、頂点をマージしてまとめたものです。
それをプラグインのエクスポーターでXfileに出力しています(そのとき三角分割されます)。
そのメッシュでテストしてみると、全部の面が三角形にばらばらになるというわけではなく、
UVの単位(元の四角形単位)でばらばらになっているようでした。

>>32さんのおっしゃるように、読み込んだあとの
データの持ち方(持たせ方)の問題だと思うのですが、
D3DPT_TRIANGLESTRIPとかD3DPT_TRIANGLELISTとかっていうのは
単に「描画」の問題で頂点定義のされ方とは別の問題ですよね?

34 名前:15 :04/11/26 10:14:10
長くなりそうなのでBBX行ってきます。いろいろお世話様でした。
もしまだ面倒見てやろうという方がおられましたら
あっちの方で教えてください。
他の方の質問を流してしまったかもしれません。すいません。

35 名前:デフォルトの名無しさん :04/11/26 11:34:11
BBX行ったらもっと叩かれそうな予感

36 名前:デフォルトの名無しさん :04/11/26 12:51:59
まあ、あとはBBXの説教要員に任せようや。

次の質問まだ〜?チンチン

37 名前:デフォルトの名無しさん :04/11/27 01:55:30
DX9.0bを使ってます。
よくRTSとかMMOとかでユニットを選択した時などに
地面にマーキングされるやつありますよね。
ああいう事をやりたいんですが、
あれはテクスチャを地面に投影したりしてるんでしょうか。
一枚ポリゴンをその場に置くだけだと角度の違うポリゴンを跨いだ時に
浮いてしまうんで、見た目が良くなさそうです。
なんかテクニックの名前とかついてたら調べますので教えてください。
もちろんずばり方法を教えてくれれば一番嬉しいのですが。

38 名前:デフォルトの名無しさん :04/11/27 02:19:04
>>37
http://pcweb.mycom.co.jp/news/2002/04/26/03dl.jpg
こんなん?

ようしらんけど、Z深度が足りないだけって話じゃないの?
もちっとニアとファーを近づけてみたらどう?

俺はそういうテクニックあんまりしらんけど床があんまり凸凹してなけりゃZクリアしちゃうけどね。
ってそりゃねーか?

39 名前:デフォルトの名無しさん :04/11/27 02:36:28
レスありがとうございます。そういうのです。
テクスチャを地面などに投影したい、と言葉でいうのは簡単なんですが
実際やるとなったらどうやるのか全く見当がつかないので
どこかに参考になる資料でもあればよいのですが・・

>ようしらんけど、Z深度が足りないだけって話じゃないの?
>もちっとニアとファーを近づけてみたらどう?

いやまだ実際になにかを作ったわけではないのですが、
その前にどういった方法があるのかなと思いましてお聞きしました。

40 名前:デフォルトの名無しさん :04/11/27 11:55:14
>>39
http://www.4gamer.net/specials/3de/shadow/

41 名前:デフォルトの名無しさん :04/11/27 12:19:43
TLVertexのTLってなんですか

42 名前:デフォルトの名無しさん :04/11/27 12:28:27
T : 座標変換済み
L : ライティング済み

43 名前:デフォルトの名無しさん :04/11/27 16:01:31
誰にも聞けなかったことを聞いてみる。
rhwってなんですか。
SDKドキュメントの日本語は意味不明。

44 名前:デフォルトの名無しさん :04/11/27 16:24:45
Reciprocal Homogeneous W

同次座標のw成分の逆数

45 名前:デフォルトの名無しさん :04/11/27 17:32:54
なんで同次座標っていうん?

46 名前:デフォルトの名無しさん :04/11/27 20:42:24
>>44
それで分かったら聞かないって。

47 名前:デフォルトの名無しさん :04/11/27 23:38:43
>>39
Zバッファが邪魔するなら、それを描画するときだけZテストをOFFにする。
前景キャラとの兼ね合いがあるので、地面描画(Zテストあり)→
マーカ描画(Zテストなし)→その他描画(Zテストあり)とする。


48 名前:デフォルトの名無しさん :04/11/28 00:06:49
そういうレベルの話じゃない希ガス。
単にテクスチャの投影のやり方とかの話をしているのではないか。

49 名前:デフォルトの名無しさん :04/11/28 01:25:35
投影テクスチャと言うと難しい感じがするが
本質は頂点のViewProjトランスフォームと同じ。
結局出力先がx,y=-1.0〜1.0のレンジを持つバックバッファなのか
x,y=0.0〜1.0のレンジを持つテクスチャなのか、違いはそれだけ。

float offsetX= 0.5f + (0.5f / (float)texture_width_precision);
float offsetY= 0.5f + (0.5f / (float)texture_height_precision);
float4x4 mScaleBias(
0.5f,0.0f,0.0f,0.0f,
0.0f,-0.5f,0.0f,0.0f,
0.0f,0.0f,1.0f,0.0f,
offsetX,offsetY,0.0f,1.0f);

float4x4 mTexProj = mModelWorld * mTexVeiw * mTexProj * mmScaleBias;

extern float3 vPosInWorld;
extern sampler spTexSorce;

float4 vTexCoord = mul( float4(vPosInWorld, 1.0f), mTexProj);
float4 vTexColor = tex2Dproj( spTexSorce, vTexCoord);

50 名前:デフォルトの名無しさん :04/11/28 07:27:38
これって例えば階段の場所でやるとちゃんと階段の形に歪むですか?

51 名前:デフォルトの名無しさん :04/11/28 09:28:15
便乗で質問、誰かデカール処理時に綺麗に見せられる
デカール用Projection Matrixの算出方法をご存じないでしょうか?

手動でやればそこそこ綺麗なのが出来るんだけど、
まさか視野角かえるたびに、ユーザに手動でやらせるわけには行かないしねぇ…。

52 名前:デフォルトの名無しさん :04/11/28 17:38:07
>>50
歪む。
要は、色セロファンを貼ったスポットライトだと思えばいい。

53 名前:デフォルトの名無しさん :04/11/28 20:11:33
何やってるのかさっぱり分かりません。
詳しい解説キボンします。

54 名前:デフォルトの名無しさん :04/11/29 02:32:05
バックバッファに対する3D描画とは簡単に言うと
xyzの3次元の空間の内、目に見える領域(視錘台)を切り取って
xy(-1.0〜1.0)z(0.0〜1.0)の範囲に収まるよう変換し(射影トランスフォーム)、
この立方体状になった空間を、xy(-1.0〜1.0)の2次元の空間に変換すること。
投影テクスチャでは、これとまったく同じ方法で、
xyz3次元の頂点座標をバックバッファではなくテクスチャのxy(0.0〜1.0)の2次元空間に変換する。
そうすると、この頂点の位置に対しテクスチャのどのテクセルが対応するかわかる訳だ。

55 名前:デフォルトの名無しさん :04/11/29 13:33:31
そうすると、まず投影させる(テクセルと対応させる)為の頂点を
切り取らないといけないような。

56 名前:デフォルトの名無しさん :04/11/29 21:06:05
October2004日本語ドキュメントキター

57 名前:デフォルトの名無しさん :04/11/29 21:11:13
みんなダウソしてるから重いぜ・・

58 名前:デフォルトの名無しさん :04/11/30 00:10:40
DirectSoundのPlayで音がすぐに鳴ってくれないのですが、
どうすればよいのでしょうか?
sndPlaySoundはすぐに鳴ります。

59 名前:デフォルトの名無しさん :04/11/30 10:03:12
ハイ次の質問ー。

60 名前:デフォルトの名無しさん :04/11/30 11:17:47
ここで質問がばしっと解決した風景を見たことがない。

61 名前:デフォルトの名無しさん :04/11/30 11:42:32
>>60
質問する側もばしっと質問してないからな。

62 名前:デフォルトの名無しさん :04/11/30 12:17:01
ワールド座標上に配置されてる物体Aと物体Bがあるとします。
それぞれ別の位置座標float X, Y, Zと、回転角度float H,P,Bの状態をもっています。
これらの物体に、現在のそれぞれの位置・相対位置関係を保持したまま
親子関係を持たせようとしています。

BをAの子にするとして、Aを移動、回転させるとBはそれに従うようにし、
Bは今まで通りに自由に移動回転できるようにしたいです。

それで、単純に、子の変換マトリックス(回転行列*移動行列)の右に、
親の変換マトリックスを掛けてみたんですが、
親子関係を組んだ瞬間に、子の位置が、「親の位置座標分」ずれてしまいました。
(親子関係を組んだ時の親の位置が(0,0,-1)だったら、子が(0,0,-1)の分だけ現在位置からずれる)
なので最後に親の移動行列の逆行列を掛けてみたんですが、
今度は親の移動に子がついてこなくなってしまいました。
それはそれで当たり前な感じもするのですが、ではどうしたらよいのでしょうか。
教えてくださいお願いします。9.0bを使ってます。
(ばしっと質問できているだろうか…)

63 名前:デフォルトの名無しさん :04/11/30 12:25:46
>>62
親子関係をつけたら、親からの相対位置になるのは当たり前。
親の逆行列をかけるって発想は良い。が、「現在の行列の逆行列」ではダメ。
初期位置の逆行列を掛ければよい。


64 名前:デフォルトの名無しさん :04/11/30 13:45:17
>>63
ありがとうございます。
初期位置っていうのは、親子関係を組んだ瞬間の親の位置って事ですよね?
そう解釈して、
「子の(回転*移動)行列」*「親の(回転*移動)行列」*「親子関係を組んだ瞬間の親の((回転*移動)行列)の逆行列」
としてみたんですが、
一応、親子関係を組んだ瞬間に子がずれることはなくなり、
親の移動にも子がついてくるようになったものの、
親を回転したときに、子の回転の中心がよく分からない場所になってしまいました。
一応、全ての子がどこかを中心に衛星的に回転しているのですが、親中心ではありません。
掛ける順番とかが間違ってますでしょうか?

65 名前:デフォルトの名無しさん :04/11/30 14:34:46
最初に親子関係を結んだ場合のローカル子行列を出しているのなら、
次からその値を使えばいいだけなので、以降逆行列を使う必要性はない。

66 名前:デフォルトの名無しさん :04/11/30 14:39:15
>64
まずお互いの関係を決める
親と子の関係行列 = (子の初期位置の行列) * 「親の初期位置の逆行列」

以降は
子の行列 = 「親と子の関係行列」 * 「親の回転移動行列」

ちなみに子を親を中心に回転させたいときは
子の行列 = 「親と子の関係行列」 * 「子を親を中心に回転させる行列」 * 「親の回転移動行列」

子をローカルで回転させたいときは
子の行列 = 「子の回転行列」 * 「親と子の関係行列」 * 「親の回転*移動行列」

子をローカルで回転させつつさらに親を中心に回転させたいときは
子の行列 = 「子の回転行列」 * 「親と子の関係行列」 * 「子を親を中心に回転させる行列」 * 「親の回転移動行列」

つまり「親と子の関係行列」をかける前は子のローカル座標系
「親と子の関係行列」をかけた後は親のローカル座標系
最後の「親の回転移動行列」をかけた後はワールド座標系


67 名前:デフォルトの名無しさん :04/11/30 14:54:53
>>64
がんばって書いたので遅いかもしれんが書いておく…

親を中心に回転させたいのなら
「子と回転行列の軸になる位置との相対位置」が「子と親の相対位置」
と一致する状態にして回転させないとダメ

↓参考までに
親も子も元のデータとしては0,0,0
移動行列が親はz=-1で子がz=-3
最初は回転していないものとする
この状態で親子関係を組み
Y軸中心に反時計周りに90度回転させることを考える

>>64の順だと
子は自分の行列で(回転しないので)z=-3に
親の回転行列でx=3に移動してから
移動行列でx=3,z=-1に移動
親の初期の逆行列でzが+1されてx=3にきてしまう
(この例だとY軸中心で回転してしまう)

自分の行列をかけた後(z=-3)
親の初期座標の逆行列でzを+1移動させ(z=-2)
親の行列をかけると(回転してx=2、移動してx=2,z=-1)
希望通りに親を中心として回転する

68 名前:62 :04/11/30 16:54:29
こんなに色々と、皆さんありがとうございます。
最終的には
「子の(回転*移動)行列」*「親子関係を組んだ瞬間の親の((回転*移動)行列)の逆行列」*「親の(回転*移動)行列」
として、
なんだか上手くいっている模様です。
なんとなくしか理解できてないので、
頂いたレスは後々の為にとりあえずコピペしてとっときます。
ありがとうございました。

69 名前:デフォルトの名無しさん :04/12/01 17:13:21
本でメッシュを表示するサンプルがあって
それを自分で作ったんですけど
自分で作った方は何故かメッシュがぺちゃんこです。
サンプルの方はふんわり膨らんでて、
なんかパンの焼く前、焼いた後(BEFORE,AFTER)みたいで。
どうすると、膨らむんでしょうか。パン...ではなく。。。


70 名前:デフォルトの名無しさん :04/12/01 17:24:31
回答者はエスパーではありません。
質問をできるだけ詳細に的確に伝える為の努力をして下さい。

71 名前:69 :04/12/01 17:39:31
膨らみ方は縦方向にです。自作の方は厚みがなく、
サンプルの方は2倍くらい分厚い。
横はそのままサンプルと同じ。
視点を色々変えて見たので見間違えではないです。
メッシュはUFOです。
位置を指定しそのまま表示してます。

72 名前:デフォルトの名無しさん :04/12/01 17:52:26
スクリーンショット見せてみそ

73 名前:デフォルトの名無しさん :04/12/01 18:31:24
>69
アスペクト比かFOVYの設定が違うんじゃないか
とりあえずそこを見直すか、いじってみれ

あとはメッシュ用のマトリクスに変なマトリクスをかけていないか

多分これのどちらか

関係ないけど
D3DXMatrixPerspectiveFovRH(LH)の
Aspect
[in] アスペクト比。 ビュー空間の高さを幅で除算した値として定義される。 (日本語ヘルプ)
[in] Aspect ratio, defined as view space width divided by height. (英語ヘルプ)
この誤訳は最新版では修正されてるのか?

74 名前:デフォルトの名無しさん :04/12/01 19:00:48
焼く前は
http://rupan.zive.net/~kain/cgi-bin/upload/src/up14316.bmp
火を加えると
http://rupan.zive.net/~kain/cgi-bin/upload/src/up14314.bmp

アスペクト比でした。変えたら今度はたこ焼きみたいになった。
ありがとうございました。

75 名前:デフォルトの名無しさん :04/12/01 19:51:12
D3DXLoadMeshFromXで読み込みID3DXMESHでもってるXfileメッシュを
そのままDrawsubsetでレンダーしてるんですが、
もしこれをワイヤーフレームで表示したい場合は
やはり自分でVertexBufferに入れなおしてDrawPrimitiveとかで
描画しないと無理ですか?(ピクセルシェーダーとかは使わずに)
バージョンは9.0bです。

76 名前:デフォルトの名無しさん :04/12/01 19:56:39
FIFOバッファを

「ふぃふぉ」って言うな!!

ムカつく!!

77 名前:デフォルトの名無しさん :04/12/01 20:19:44
>>73
今までのヘルプ
[in] アスペクト比。 ビュー空間の高さを幅で除算した値として定義される。
October 2004 ヘルプ
[in] ビュー空間の幅を高さで乗算して定義したアスペクト比。

また微妙に間違っとるな

78 名前:デフォルトの名無しさん :04/12/01 20:28:12
>>75
SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME );

この質問が多いのは、ヘルプの検索が「ワイヤーフレーム」じゃなく
「ワイヤフレーム」じゃないと引っかからないのが一因なんだろうな。

79 名前:デフォルトの名無しさん :04/12/01 21:11:17
ファイフォ
じゃねえの?
まあ実際エフアイエフオーって言うけどさ

80 名前:デフォルトの名無しさん :04/12/01 21:26:27
ファイファンフォー

81 名前:デフォルトの名無しさん :04/12/01 21:38:45
>>78
サンクスコ!
顔謝します!

82 名前:デフォルトの名無しさん :04/12/01 22:23:08
ふぃふぉ ふぃふぉ 仕事が好き ピピピピピピピピピピ
ふぃふぉ ふぃふぉ ふぃふぉふぃふぉふぃふぉ
ふぃふぉ 仕事が好き

83 名前:デフォルトの名無しさん :04/12/01 22:28:33
俺はどーも

そういわれると白雪姫思い出してしょうがねえんだ。
仕事に差し障る。やめろ。

84 名前:デフォルトの名無しさん :04/12/02 00:11:10
>77
より酷くなってるw
こんな翻訳した香具師くびにしろ

85 名前:デフォルトの名無しさん :04/12/02 00:14:00
FIFO フィフォ
FILO フィロ
LIFO リフォ
LILO リロ

86 名前:デフォルトの名無しさん :04/12/02 00:23:47
OREO オレオ

87 名前:デフォルトの名無しさん :04/12/02 00:33:42
>>84
マイクロソフトはゲイツ以外全部AIですが何か?(最近はゲイツももしかしたらAI)

88 名前:デフォルトの名無しさん :04/12/02 00:34:35
>>85
HPの社長だっけ?

89 名前:デフォルトの名無しさん :04/12/02 05:41:43
Microsoft Visual C++ Toolkit 2003とDirectXSDKをインストールしました。
DirectXのプログラムを作るのに他に何か必要でしょうか?

90 名前:デフォルトの名無しさん :04/12/02 06:00:39
あとは十分な食事と十分な睡眠とほんのちょっとのやる気。

91 名前:デフォルトの名無しさん :04/12/02 06:17:17
>>89
んなこと訊いているってことは無能なんだろ。
というわけで、ちみに必要なのは能力です。


92 名前:デフォルトの名無しさん :04/12/02 07:10:17
無能力だから聞いてんでしょうがw

93 名前:デフォルトの名無しさん :04/12/02 13:29:36
勉強しろって話でしょ

94 名前:デフォルトの名無しさん :04/12/02 20:49:55
フラットシェーディング、かつ1点1法線で、
綺麗なポリゴンを表示することは出来ないでしょうか。

今はこの画像の下の長方体の様に、同じ向きでも面ごとに色が違ってしまっています。
ttp://data.uploda.net/anonymous/etc2/dat2/upload23100.gif
せめて多少違うなぁ、くらいに抑えたいのですが、どうしたら良い物か・・・。

ちなみに上の長方体がグーローシェーディング+頂点法線(黄色の線)です。
グーローなら問題ありません。法線計算も間違っていないようです。

もちろん1点1法線ではなく、面ごとに個別に頂点と法線を設定すれば、
綺麗に表示されますが、頂点数を増やさずになんとかならないでしょうか。

95 名前:デフォルトの名無しさん :04/12/02 21:07:28
頂点法線を平均化しなければいいんじゃないかな。
もう割り切って、どれかの面に対して垂直にするとか。

96 名前:デフォルトの名無しさん :04/12/02 21:34:36
>>94
上のほうはマグロっぽいな。関係ないけど。

97 名前:94 :04/12/02 21:47:50
>>95
レスありがとうございます!早速やってみました。
ttp://data.uploda.net/anonymous/etc2/dat5/upload23103.gif

おかげで色に統一感を出すことができました。
エッジが消えてしまったのが残念ですが。

下のが理想ではあるのですが、これはどうも1点1法線では構造的に無理っぽいですねぇ。
と、95さんのやり方を実装しながら気づく事ができました。

>>96
それもかなり安い赤身っすね
最近食べてないなぁ

98 名前:95 :04/12/03 00:34:46
ttp://matsuya.dyndns.tv/2ch/img-box/img20041203003251.jpg
せめてこうして欲しかった・・・

99 名前:デフォルトの名無しさん :04/12/04 00:48:10
DirectXでの当たり判定で、D3DXIntersectを使っていますが、うまく判定できなくて困っています。
判定したいオブジェクトの逆行列を求め、それをRayPosに加えていますが、回転したときの判定がうまく
動作していません。
Y軸回転すると 数角度ずつに当たり判定になったり、ならなかったり、ころころ変わります。

プログラムは以下のように組んでいます。

D3DXMATRIX revmat, mat, mTrans, mScale, mRot;
D3DXMatrixIdentity(&mat);

D3DXMatrixTranslation( &mTrans, pos.x, pos.y, pos.z ); // 平行移動
D3DXMatrixScaling( &mScale, fScale, fScale, fScale ); // 拡大縮小
D3DXMatrixRotationYawPitchRoll( &mRot, rot.y, rot.x, rot.z ); // 回転

mat = mRot * mScale * mTrans; // オブジェクトの行列
D3DXMatrixInverse( &revmat, 0, &mat );// 逆行列

D3DXVECTOR3 RayPos = D3DXVECTOR3( 0, -1, 0 ); // 地面との判定
D3DXVec3TransformCoord( &RayPos, &RayPos, &revmat ); // RayPosに逆行列を加える

// 当たり判定
D3DXIntersect( pData->pD3DMesh, &RayPos, &D3DXVECTOR3( 0, -1, 0 ), &bHit, &FaceIndex,
&U, &V, &Dist, 0, 0 );

if ( bHit ) { 当たり判定処理 }

どこが変なのか教えてください。

100 名前:デフォルトの名無しさん :04/12/04 01:43:04
>>99
"レイの方向"にも逆行列を掛ける必要がある
(平行移動を無視するために D3DXVec3TransformNormal を使う)

101 名前:デフォルトの名無しさん :04/12/04 08:37:04
原因が分からないのでお力を貸してください。お願いします。

for( DWORD i=0; i < dwNumMaterials; i++ ){
D3DDev->SetMaterial( &pMeshMaterials[i] );
D3DDevv->SetTexture( 0, pMeshTextures[i] );
pMesh->DrawSubset( i );}
↑のような描画関数を含むメッシュクラスがあり、これ自体は上手く動いています。
これとは別に、新たに↓のようなビルボードのクラスを作りました。
struct LVERTEX
{float x,y,z;
float nx,ny,nz;
float tu,tv;};
と、FVFを定義し、
D3DDev->SetTexture(0,m_pTexture);
D3DDev->SetStreamSource(0,m_pVB,0,sizeof(LVERTEX));
D3DDev->SetFVF( D3DFVF_LVERTEX );
D3DDev->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);
こんな感じの描画関数を持ってます。
それで、これらをメインループ内から次のように呼んでいます。
billboard.Render();
mesh.Render();
このように二つとも呼ぶと上手く描画されます。
メッシュクラスの方は以前から上手く動いていましたのでこちら単体では問題は出ません。
ですが、ビルボードの方だけを呼ぶと、テクスチャなどが反映されず真っ黒に表示されます。
呼ぶ順番を変えてもやはり同じくおかしいです。
原因が分からないのですが、何か手続きが抜けている、など、問題はありますでしょうか?
9.0summerを使っています。なにかまずそうなところがあったら教えてください。お願いします。

102 名前:ko :04/12/04 08:46:46
デバッグ用に処理棒を作ってるのですが、計算式がまずいのか
正確に表示されません。棒は右端に表示させるようにしてます。
周波数、(処理後の時間 − 処理前の時間)をつかって、描画時間は1/60
と考えてるのですが、うまくいきません。
わかる方、良き回答を!!!

103 名前:デフォルトの名無しさん :04/12/04 09:25:33
>>101
そのコードだけではどこがまずいのかはわからん。
どうせm_pVBの内容がおかしいんだろ。

>>102
エスパーでも無い限り、オマエがしたいことは意味不明。日本語の勉強から出直してこい。

104 名前:デフォルトの名無しさん :04/12/04 09:43:26
>>102
もしかしてプログレスバーのことか?

105 名前:285 :04/12/04 09:57:30
ポインターが欲輪からないんですけど
*のマーク
これの送り先ってどこにいくの:?

106 名前:デフォルトの名無しさん :04/12/04 10:36:56
送り先?
意味不明

107 名前:デフォルトの名無しさん :04/12/04 11:20:10
>106
>105は誤爆だろ

108 名前:デフォルトの名無しさん :04/12/04 11:20:15
「処理棒」ってどっかの翻訳書に書かれてるのか?


109 名前:デフォルトの名無しさん :04/12/04 11:37:12
処理棒
ttp://www.chukyo-gun.co.jp/cgi-bin/chukyo-gun/sitemaker.cgi?mode=item_detail3&page=page3&category=4&no=6

110 名前:デフォルトの名無しさん :04/12/04 12:34:37
>>99
レイの方向にも逆行列を掛けましたが、やっぱり数角度ずつ
当たり判定になったり、ならなかったりを繰り返します。
なぜでしょうか。

111 名前:デフォルトの名無しさん :04/12/04 13:28:24
>>110
RayPos=(0,-1,0) は何を表してるの?
(実際はプレイヤーの位置とかが入るのかな)

あと、行列の合成は Scale -> Rotate -> Trans の順が自然だと思う。
(R->S->T だと拡大率が x,y,z それぞれ異なる場合におかしくなる。)

"数角度づつ"はようわからん。角度はもちろんラジアン角使ってる?

112 名前:101 :04/12/04 13:36:43
>>103
ども。何とか自己解決に至りました。
ビルボードクラスの方でマテリアルを設定してないというオチでした。
FVFに頂点カラーを持たせてないのでマテリアルは関係ないしなー
とか思ってましたが、別物でした。
それで、メッシュクラスのレンダーを呼んだときに
そっちではマテリアルがセットされていたので
そのためビルボードの方も運良く発色していた、ということでした。
すいません。

113 名前:デフォルトの名無しさん :04/12/04 14:03:26
すみません。初心者質問です。
DirectX9.0をダウンロードして、実行可能ファイルを試してみたんですが、
とんでもなく遅いです。Javaが遅いとかいう遅さではありません。
パソコンが古いなら買い換えますが、でも、ほんの2年前のもの。
何か間違っているでしょうか?もし、買い替えが必要なら、注意点を
教えてください。

114 名前:デフォルトの名無しさん :04/12/04 14:06:16
まずはCPUやビデオカードの種類を明確に記せ。

115 名前:デフォルトの名無しさん :04/12/04 14:10:05
>>111

RayPos の ( 0, -1, 0 ) は 地面の座標を表しています
実際はプレイヤーの座標をいれて、プレイヤーがどの場所に移動してもそこに地面があるように
するべきなんですが、これは 0, -1, 0 の地点のみに地面があるようにしています。

当たり判定を検出した位置で、回転させると、判定されたり、判定されなかったりを繰り返します。
この間隔が、数角度ずつです。

もちろんラジアン角を使っています・・・・・・・と思ったところ
ラジアン角に直していませんでした;;

最初はちゃんと直していたんですが、どうやらここに書き込むときに
わかりやすいように直して間違って消してしまったようです。
ありがとうございました。 

116 名前:デフォルトの名無しさん :04/12/04 14:10:31
>>114
レスサンクスです。
CPU AMD 902MHz
RAM 496MB
ビデオカード わかりません
ビデオカードはデバイスマネージャを見ると不明となってます。

マシンはソニーのVAIOです。

117 名前:113 :04/12/04 14:11:09
すみません。>>116>>113です。

118 名前:デフォルトの名無しさん :04/12/04 14:19:27
どうも開発者じゃない気がする
初心者板行き

119 名前:113 :04/12/04 14:23:46
学生です。どなたかお願いします。

しかし、雰囲気からするとビデオカードでしょうか。
そもそもDirectXを使うためには高価なビデオカードを使わないとだめなんでしょうか。
だとすると、自分のマシンで開発できても、人のマシンで実行できないわけですよね。
ハードの足りない部分はソフトで埋めるということでしたが、それがこんなに遅いのでは。

120 名前:113 :04/12/04 14:47:29
レスがないので落ちます。
どなたかの解説をお待ちします。

121 名前:デフォルトの名無しさん :04/12/04 15:00:25
>>113
PC初心者
http://pc6.2ch.net/pcqa/

122 名前:デフォルトの名無しさん :04/12/04 15:01:54
pixelshaderのデモをHWサポート無しのPC動かしているとみた。
まあどうせそういう部類だ。

123 名前:デフォルトの名無しさん :04/12/04 15:34:53
>113
DirectX9を使ったアプリケーションを快適に動作させるためには
DirectX9に対応したハードウェアが必要
未対応でも動作はするが、経験したとおりの状況になる
プログラムを作成することはそのマシンでも可能だが
動作確認を行うためにはDirectX9に対応したグラボを積んだPC必須
>116
>ビデオカード わかりません
メーカー製のPCの場合メーカーのHPにスペックが載っているはずなので確認してください
ビデオカードの名前よりも、どのDirectXに対応しているかをまずは確認してください
DirectX9とかDirectX8とか特に書いていない場合はまず間違いなく
DirectX6以前のものです
>119
>だとすると、自分のマシンで開発できても、人のマシンで実行できないわけですよね。
そうです。常識です。普通です。
なのでより多くの人の環境で動作するプログラムを作る場合は
今ならDirectX9ではなくDirectX8やDirectX7で開発します
とにかくあなたは現状で知識が足りなさ過ぎます。初心者以前です。
そのような人はまずある程度知識を溜めてからまたきてください
ここでいちいち基本的すぎることについての質問返答を繰り返すと他の人の迷惑になります
疑問に思ったらまず過去ログを見たり、ネットで検索したりしてください
超基本的な知識は容易にに得られると思います


124 名前:デフォルトの名無しさん :04/12/04 18:40:37
D3DLIGHT9 でライトを作り、XFileから読み込んだオブジェクトに光をあてているのですが、
オブジェクトを拡大、縮小すると光の当たり具合がかわってしまいます。

縮小すると 光が強くなる
拡大すると光が弱くなる

この原因は何かわからないでしょうか。

125 名前:デフォルトの名無しさん :04/12/04 18:47:21
エスパーさん居ませんか〜?

>>124に答えてやってくださ〜い

126 名前:デフォルトの名無しさん :04/12/04 18:49:59
占いの結果→法線

127 名前:デフォルトの名無しさん :04/12/04 18:54:49
占いの結果→気のせい

128 名前:デフォルトの名無しさん :04/12/04 18:57:28
ズバリ言うわよ
SetRenderState( D3DRS_NORMALIZENORMALS, TRUE );

129 名前:デフォルトの名無しさん :04/12/04 19:02:48
これは法線がおかしいって真っ先に考えるのが定番の症状だよね。
違うかもしれないけど、一応、かなり疑わしい。
それ以上具体的なことについては中身をみなきゃ分からない。
それがでてこない>>125は実力不足だと思う。
そしてもっと具体的な内容を提示して質問しない>>124もなってないと思う。

130 名前:デフォルトの名無しさん :04/12/04 19:06:58
125は回答者を一本釣りするための124の自演であって
もしかしたら124はのぞみの回答をみごとに引き出す
質問のプロフェッショナルかもしれない。

131 名前:デフォルトの名無しさん :04/12/04 19:08:50
頂点シェーダでの光源計算が間違っているという可能性も・・・

132 名前:デフォルトの名無しさん :04/12/04 19:10:28
みろ!どんどん回答が沸いてくるようだ!

133 名前:デフォルトの名無しさん :04/12/04 19:12:24
>>130
昔似たような事をやった覚えがあるw

134 名前:124 :04/12/04 20:20:26
気のせいでした
ありがとうございました。

135 名前:デフォルトの名無しさん :04/12/04 20:34:40
>>125の一行目だけだったら回答者だろうが
>>124に答えてやってくださいなんて、私は>>124ですって言ってるようなもんだろ

136 名前:デフォルトの名無しさん :04/12/04 20:59:22
int* sumArrays(int* a, int* b, int N){
int* c = new int[N];
for (int i = 0; i < N; ++i)
c[i] = a[i] + b[i];
return c;
}

これってコンパイルとラン可能ですよね?
自分でやってみたら、動いたんですけど。。。
でもエラーとか不利点とか、あるみたいで、それがいまいち、よく分からないんですが。。。

ポインターって、関数で、&パス(リファレンス)できないですよね?
なんでですか?

137 名前:デフォルトの名無しさん :04/12/04 21:09:23
>136
コンパイラ何?
>int* c = new int[N];
からもわかるとおりC++だぞ
あと関数宣言とmain書けよ
関数内部でnewしてるから
ちゃんと外で開放しろよ
さっぱりわからないんだったら
地道に勉強すべし
人のソース追っかけるんじゃなくて
疑問に思ったことをコードに起こして
動作を確認しながらひとつずつ理解していかないと
挫折するぞ
特にポインタとか
ちなみにDirectXはまったく関係ないぞ




138 名前:デフォルトの名無しさん :04/12/04 21:23:46
明らかに誤爆だろ

139 名前:デフォルトの名無しさん :04/12/04 22:15:26
>>127はエスパー

140 名前:113 :04/12/04 22:16:02
>>123
レスありがとう。
だいたいわかりました。

>疑問に思ったらまず過去ログを見たり、ネットで検索したりしてください
>超基本的な知識は容易にに得られると思います
ここは初心者質問スレですし、実際、容易に必要な知識が得られましたよ。(w

それにしても、そんなに機種依存なら、なんだかあまり価値がないような気がしてきました。
でわ、でわ。

141 名前:113 :04/12/04 22:17:32
すみません。
結論として、DirectXはやめて、OpenGLにします。

142 名前:デフォルトの名無しさん :04/12/04 22:22:48
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ     >>141
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

143 名前:デフォルトの名無しさん :04/12/04 22:24:23
その時点で釣られてんだよバカ

144 名前:113 :04/12/04 22:29:45
OpenGLならAPIが安定しているので、少なくとも、機種依存の問題は
なくなるわけですよね。でわでわ。

145 名前:デフォルトの名無しさん :04/12/04 22:39:38
車のハンドルを交換しても
速度は上がらないぞ。

146 名前:デフォルトの名無しさん :04/12/04 22:42:21
DX9のpointspritは、
透過をした部分が重なると上手く抜けないっていう記事がありました。
実際、自分でそれを参考に組んだらおかしくなりました。
ですが、SDKサンプルや、工学社本のDX8実践プログラミングのサンプルでは
上手く透過できてる模様です。なぜですか。


147 名前:デフォルトの名無しさん :04/12/04 23:27:31
>146
多分それはポイントスプライトに限らない問題だと思う
半透明のポリゴンは奥から描いていかないとだめ
ポイントスプライトの頂点の順番も同じ
サンプルなんかはそのあたりうまく頂点の順番を決めてるんじゃないの?
もしくはZ書き込みor比較をOFFにしてるかだな
D3DRS_ZENABLEとかD3DRS_ZWRITEENABLEとか
なぜ奥から描いていかないといけないかというと…
まぁ自分で考えてみて
Zバッファの仕組みを考えれば理解できるはず

148 名前:146 :04/12/05 19:14:03
>>147
なるほどそういうわけですね。
D3DRS_ZENABLEとかチェックしてみたらマシになりました。
ありがとうございました。

149 名前:デフォルトの名無しさん :04/12/06 11:44:57
>>124の者ですが、しばらくインターネットが使えず、今ログを見ました。
・・・と、なんか偽装さわぎになっていますが、私は124以外書き込んでいません。
そのほかはすべて偽物ですよ。しばらく書き込んでいなかったからこうなってしまったのかな^^;;;

みなさんが言うとおり法線の問題だったようです。
>>128 さんがずばりと示していただいた方法でずばり解決しました。
ありがとうございました^^


150 名前:デフォルトの名無しさん :04/12/06 14:56:03
DirectXのバージョンを調べるAPIってあるんですか?

151 名前:デフォルトの名無しさん :04/12/06 15:08:50
>>150
ない。
MSのサンプルですら、DLLのファイルバージョンをいっこいっこifで調べて
バージョン調査してる。
サンプルのGetDXVersion関数まわりをおとなしくコピペしたほうがいいと思うよ。

152 名前:デフォルトの名無しさん :04/12/06 15:23:04
そもそもコンポーネントによっては旧バージョンのまま、
内容が全く変わっていないものもある。
必要な機能はそのつど適切なものが入っているか調べるべき。

153 名前:デフォルトの名無しさん :04/12/06 15:34:16
カメラが ある座標Pの中心からR離れた地点を衛生のように回転し、
今向いているX,Z軸方向にN進むにはどうしたらいいんでしょうか。

注視点をPに設定し、角度によって、カメラの始点を変更しているのですが、
X,Z方向にNだけ進むことができません。
X軸回転もありますので、上下への動作も含まれてしまっています。

どのように行列プログラムに直せばいいのでしょうか。

154 名前:デフォルトの名無しさん :04/12/06 15:52:02
中心が常にPなら、カメラとの距離(P')は円の半径ということになるから、
あとは角度と(P'-N)で位置は割り出せる。

155 名前:デフォルトの名無しさん :04/12/06 16:15:23
>>154
できれば、簡単なサンプルを記述していただけないでしょうか。
頭でわかっていても、行列式に直すことができないんです。
いろんな人のサンプルを見て何となく理解はしているんですが。

156 名前:デフォルトの名無しさん :04/12/06 16:16:51
低脳にも程がある

157 名前:デフォルトの名無しさん :04/12/06 16:32:24
一旦Pを原点に持ってきて回転させてから移動させたらどうよ
それならできるでしょ

158 名前:デフォルトの名無しさん :04/12/06 17:18:13
>153
もうちょっと整理して順を追って書いてくれないと
何がしたいのかわからん
>X,Z軸方向
X軸方向またはZ軸方向なのか
(1, 0, 1)の方向なのかわからない
>今向いている
てことはカメラのローカル座標系でってこと?

>X,Z方向にNだけ進むことができません。
この間もPからR離れた地点を回転している動作はするの?
Rていう制限がある限り移動できないのでは?
それとも2つの異なった動作を別々に行うってこと?

159 名前:デフォルトの名無しさん :04/12/06 17:57:42
お、俺以外にも>>153の意味が分からないやつがいたとは。
ちょっと安心した。

160 名前:デフォルトの名無しさん :04/12/06 19:30:28
たぶん
プレイヤー(座標P)を中心にカメラをぐるぐる回すことができ
プレイヤーからの距離を任意に調節できる(=XZ平面上で向いている方向に進む)
ということかと思ったが

>>X軸回転もありますので、上下への動作も含まれてしまっています。
そうなるとこれがよくわからん

161 名前:デフォルトの名無しさん :04/12/06 19:35:31
書き方が悪かったみたいです。

P座標をカメラの注視点とし、そのP座標を中心とした半径Rの位置にカメラの視点を置きます。

X,Y軸回転を加えたとき、カメラの視点が半径Rにそって回転します。
カメラは回転中も常にP座標を見ています。(注視点がP座標)

このとき、カメラが向いている方向にまっすぐNだけ進みたいと思っています。

Y軸方向に進んでしまうと 上にのぼっていってしまったり、下に下っていってしまうため、
あくまで 進む方向はX軸方向、Z軸方向の合成です。

皆さんは、どうやってこれを計算式に直していくのでしょうか。




162 名前:デフォルトの名無しさん :04/12/06 19:37:01
Nだけ進むというのは
注視点と視点の距離Rをつねに維持しつつ、注視点と、視点の両方ともが移動します。

163 名前:デフォルトの名無しさん :04/12/06 19:39:57
X軸中心に回転させりゃYの値変わるだろ?
漏れが何か勘違いしてる?

164 名前:デフォルトの名無しさん :04/12/06 19:44:04
>カメラが向いている方向にまっすぐNだけ進みたいと思っています。
V=注視点-視点
Y成分がじゃまなので
V.y = 0.0f
でVを正規化して移動させたい量(N)をかけてやる
V*N
これが移動用のベクトル
これをPに足してやればいいんでないかい?

165 名前:デフォルトの名無しさん :04/12/06 19:44:49
v = (0, 0, 1);
v * 3x3mat;
v.y = 0;
|v| = N;
pos += v;


166 名前:デフォルトの名無しさん :04/12/06 19:47:28
あ、やっと>>153の質問の内容が理解できた。
ふぅ・・ 胸の痞えが取れたぜ。

167 名前:デフォルトの名無しさん :04/12/06 20:42:39
v * 3x3mat ,|V| = N とはどのような処理を行っているのでしょうか。

自分なりに以下のように組んでみましたが、やはり動作が変です。
どこを直せばいいのでしょうか。
m_MovePos.z = 移動値N
m_fDistance = 半径R
m_LookPos = 座標P(注視点)
vec = 視点

D3DXVECTOR3 vec( 0, 0, -1 );
D3DXMATRIX mat, matx, maty;
D3DXMatrixRotationYawPitchRoll( &mat,
D3DXToRadian( m_Rotate.y ), D3DXToRadian( m_Rotate.x ), 0 );

D3DXVECTOR3 vUpDir, vZDir;
D3DXVec3TransformCoord( &vUpDir, &D3DXVECTOR3( 0, 1, 0 ), &mat );
D3DXVec3TransformCoord( &vZDir, &D3DXVECTOR3( 0, 0, 1 ), &mat );

vZDir *= m_MovePos.z;
vZDir.y = 0;
m_LookPos += vZDir;

D3DXVec3TransformCoord( &vec, &vec, &mat );
vec = m_fDistance * vec + m_LookPos;

D3DXMatrixLookAtLH( &m_mView, &vec, &m_LookPos, &vUpDir );
d3d.m_pD3DDev->SetTransform( D3DTS_VIEW, &m_mView );



168 名前:デフォルトの名無しさん :04/12/06 21:03:10
>167
いや素直にそのまま
m_LookPos = 座標P(注視点)
m_Rotate 多分カメラの回転関係

D3DXVECTOR3 v=D3DXVECTOR3(0,0,1,);//v = (0, 0, 1)
D3DXMatrixRotationYawPitchRoll( &mat,
D3DXToRadian( m_Rotate.y ), D3DXToRadian( m_Rotate.x ), 0 );
D3DXVECTOR3 move_vec;
D3DXVec3Transform( &move_vec, &v, &mat );//v * 3x3mat; 4x4でやってるけど同じ
&move_vec.y = 0.0f;//v.y = 0;
//|v| = Nはvの長さをNにするってこと
D3DXVec3Normalize( &move_vec, &move_vec );// まず長さを1にする
D3DVec3Scale( &move_vec, &move_vec, N );// 長さ1のベクトルにNをかければ長さNのベクトルになる
m_LookPos += move_vec,;// 位置の更新
// 以上
>D3DXMatrixLookAtLH( &m_mView, &vec, &m_LookPos, &vUpDir );
>d3d.m_pD3DDev->SetTransform( D3DTS_VIEW, &m_mView );
これはココでは関係ない
するなら
D3DMATRIX mat_t;
D3DXMatrixTranslation( &mat_t, m_LookPos.x, m_LookPos.y, m_LookPos.z );
d3d.m_pD3DDev->SetTransform( D3DTS_WORLD, &mat_t );
// でモデル描画では?


169 名前:168 :04/12/06 21:05:05
あ、D3DXVec3TransformCoordに直しておいて(汗)

170 名前:デフォルトの名無しさん :04/12/06 21:26:19
m_MovePos.z = 移動値N
m_fDistance = 半径R
m_LookPos = 座標P(注視点)
vEyePos = 視点

// カメラの姿勢
D3DXMATRIX mat;
D3DXMatrixRotationYawPitchRoll( &mat,
D3DXToRadian( m_Rotate.y ), D3DXToRadian( m_Rotate.x ), 0 );

// カメラのZ軸 (y無視、正規化)
D3DXVECTOR3 vZDir;
vZDir.x = mat._31;
vZDir.y = 0.0f;
vZDir.z = mat._33;
D3DXVec3Normalize( &vZDir, &vZDir );

// カメラ(視点)から座標Pへの差分ベクトル (正規化)
D3DXVECTOR3 vSub;
D3DXVec3Subtract( &vSub, &m_LookPos, &vEyePos );
D3DXVec3Normalize( &vSub, &vSub );

// 移動後の座標P'
m_LookPos += vZDir * m_MovePos.z;

// 座標P'に対するカメラ(視点)の新しい位置 (向き・距離を保つ)
vEyePos = m_LookPos + (-vSub * m_fDistance);

171 名前:デフォルトの名無しさん :04/12/06 21:26:54
>>168

教えていただいた通りやってみましたが、無理なようです。
視点と注視点の高さ(Y軸)が常に一緒で、X軸回転などの回転が動作しなくなってしまいました。

カメラのビューや、プロジェクションのトランスフォームは実行する必要はないんでしょうか。
D3DXVec3TransformCoordに直すところはD3DXVec3Transformの部分であっていますでしょうか。




172 名前:170 :04/12/06 21:36:20
俺もせっかく書いたので送信してみた。
ただし、動作未確認。

書く必要は無いかもしれないが、>170の続き・・・

D3DXMatrixLookAtLH( &m_mView, &vEyePos, &m_LookPos, &D3DXVECTOR3(0,1,0) );
d3d.m_pD3DDev->SetTransform( D3DTS_VIEW, &m_mView );

173 名前:デフォルトの名無しさん :04/12/06 21:36:52
>>170

こちらも試してみましたが、やはりうまく動作しませんでした;;
やはりX軸回転などの回転処理が適切に行われていませんでした。



174 名前:デフォルトの名無しさん :04/12/06 21:42:04
質問内容を分かりやすく伝えようとする努力すらしてない奴に
付き合わされるのは無駄。

175 名前:168 :04/12/06 21:49:02
>173
1.物体を視点の向きに移動させる
2.カメラを物体を中心に回転させる
2つに分けて考えて、ひとつずつ解決していかないとこんがらがるよ
まずはカメラの回転はすてて「1.物体を視点の向きに移動させる」が
きちんと動作するようにしたほうがいい
で、きちんと動作したら次に「2.カメラを物体を中心に回転させる」を
解決すべし

多分大幅な書き換えになってるだろうから、一発でうまくいくなんてありえない
問題を切り分けてひとつずつ解決していってくれ

176 名前:デフォルトの名無しさん :04/12/06 21:57:46
>>156
同意w
ひさびさにスレが伸びてるかと思ったらこれかよw
また、座標変換もろくにできねぇ糞餓鬼がきてるなw

初心者質問スレったってこのレベルの奴に何を教えられるのかとw

177 名前:デフォルトの名無しさん :04/12/06 22:04:08
そういう意味のない書き込みは回答者にとっても邪魔だから止めて欲しい。

178 名前:デフォルトの名無しさん :04/12/06 22:12:22
>>177
長い事2ちゃんにいるけどこの類の回答を2ちゃんで得るのは不可能だと言っておこう。
まず、こんなのがわかんねぇ奴は3Dプログラムをするための基礎体力がまったく足りてない。
この状態で誰がどんな説明をしても無駄にスレを費やすだけでまったく意味がない。
とどのつまり座標変換がわかってないんだ。
数学Cにのってる一次変換の説明からしないといけない。
もう、教科書買えと、2ちゃんで説明なんかできるかと。
よしんば教えるにしたって図がない。

あえてアドバイスするならはじめから3軸でやるなというところか。

179 名前:gucchi :04/12/06 22:14:23
まぁ、優秀な奴がみんな、優秀な教師にはなれないからなw
オシエラレナイノモショウガアルマイ

180 名前:デフォルトの名無しさん :04/12/06 22:25:17
>>179
まあ、そういうことだな。
わかったら、散った散った。

181 名前:デフォルトの名無しさん :04/12/06 22:46:36
>>170
>>175

いろいろとありがとうございました。
もう少し自分で考えてみようと思います。

182 名前:デフォルトの名無しさん :04/12/06 22:47:09
質問として最低限の形が整ってれば、それこそ単なる座標変換の話であって、
簡単な質問だろう。キミに質問者を納得させる力がないだけじゃねーの。
他の聞き上手、教え上手がなんとかするからスルーしといてよ。
初心者を見下して悦にいるのが趣味な人は必要ないから。

183 名前:デフォルトの名無しさん :04/12/06 22:57:45
>>182
貴様の理論はリフレッシュレート論争を強引に進めようとする厨房と変わらんな。
もし、どうしてもやりたければ座標変換スレをたてるがよい。
うまく説明できれば需要は確実にある。
なんたってこれができなきゃはじまらないw

184 名前:デフォルトの名無しさん :04/12/06 22:59:06
>>182
なお、もし座標変換スレが立ったなら俺は1レスたりとも書き込まないと誓おう。

185 名前:デフォルトの名無しさん :04/12/06 22:59:30
これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人

186 名前:デフォルトの名無しさん :04/12/06 23:03:27
DirectX9.0を使って2D画像の描画をしたいのですが、
directX関係の本やインターネットで調べてみると、
大きく分けて二つの方法があるようなのでどれを
使えばいいのかが分かりません。

@【directdrawを使ったダブルバッファリング】
オフスクリーンサーフェス、バックバッファ、プライマリサーフェスを
作成して、バックバッファからプライマリサーフェスへフリップして
画面へ2次元画像を描画。

A【ポリゴンへテクスチャマッピング】
平面ポリゴンを作成しそこへテクスチャをマッピングする。

@の方法がインターネットを使ってdirectXプログラム
関係のページを参考にして分かった方法で、
Aの方法が割と新し目のdirectX関係の本を買って
参考にして分かった方法です。

あるページには『DirectDraw』が廃止され『Direct3D』で従来と
同じような2D描画を行うことが出来るみたいなことが書いて
ありましたが、これはAの方法の事を指しているのでしょうか?

初心者ではありますが自分が思うに、わざわざポリゴンを作成
してそこにマッピングするAの方法よりは明らかに
@の方法の方が効率的で速度も速いと思うのですが、
3D描画を全く含まないプログラムを作る時、どっちの方法が
効率的なのでしょうか?どなたか回答お願いします。

あと大きく二つの方法があると先に述べましたが、まだまだ
この勉強を始めたばかりで他にどのような2D描画の方法が
あるのか分かりません。もし他に効率的な方法があれば
そちらも一緒に回答して頂けると助かります。

187 名前:デフォルトの名無しさん :04/12/06 23:08:19
>>184
ならこのスレで座標変換の質問があったときも一レスたりとも
書き込まないでいただけると皆にとって都合がいいので、そうして下さい。

188 名前:デフォルトの名無しさん :04/12/06 23:18:53
>186
DX8以降はAしか選択肢がない
けど上手くラッパーなりライブラリなり一度作ってしまえば
使い勝手は@と変わらない
速度に関してはグラフィックアクセラレータ(グラボね)が
ポリゴン表示用に最適化されてるから消して遅くはないと思う
2Dに限っていえばAの利点はアルファブレンディングとか
画像の回転拡大縮小が簡単だということ
そりゃポリゴンだからね
@の方はシンプルなところが(特に学習者にとって)利点だけど
DirectDrawの初期化とかお世辞にもシンプルとはいえない
もし2DからじっくりやっていくんだったらSDLなんかのライブラリを
やったほうがいいと思う
ちなみに最新のSDKでも過去のDirectXのバージョンの開発ができるので
DirectX9SDKのなかにはDirectDrawは入っている
ddraw.hをインクルードして必要なライブラリをリンクすれば
DirectX7時代の書籍や記事、解説はそのまま活用できる
どこをスタート地点にするかは自分で決めるしかない
まずはポリゴン触ってみて「まだ難い」と感じたら
DirectDrawやSDLに乗り換えるのもありだと思う

189 名前:デフォルトの名無しさん :04/12/06 23:23:08
>>187
皆?wお前だけだろ?w

190 名前:デフォルトの名無しさん :04/12/06 23:26:55
>>186
・3D演算をHWサポートしていないビデオカード(ほとんど存在しないが・・・)もターゲット。
・必要な画像処理は自分で実装できる。
・D3Dの冗長処理が気にいらない。(速度重視)
ならば@

・画像の変換・アルファブレンド等の機能を簡単に使いたい。
・なんとなく3Dにも興味がある。
ならばA


ここにもw厨が来てるのか・・・

191 名前:186 :04/12/06 23:40:18
>>188
>>190
早い回答ありがとうございます。

やはり今はAの方法が主流なのですね。
回答にあったように取り敢えずAの方法から勉強
していこうと思います。
それから@の方法について考えていこうと思います。

詳しい回答ありがとうございました。
(突然PROXY規制に引っ掛かってしまった為、携帯から返事させて頂きます。IDが違うのはその為です。)

192 名前:デフォルトの名無しさん :04/12/07 00:02:25
>>186
@は矩形しか転送しないため、転送元と転送先のピクセルのメモリを
単純にコピーすればいい為、最適化されているという意味で高速。
Aのポリゴンという手法は転送元と転送先を決定する際に乗算が少々
行われるので、そのぶん遅くなる。

Aで行われる転送の際の演算はハードウェアのサポートを受けることができるため
(旧称)Direct3Dをサポートしているアクセラレータがあれば殆ど@と差は出ない。


速度以外の面では
@は前述のとおり、結局は「ピクセルデータのメモリコピー」しか行わない為、
せいぜい拡大縮小くらいしかできない。

Aは「転送先・元の形状を常に演算で求めている」ので、拡縮の是非・対象の回転等の
効果はなんの制約も受けずに実行できる。
またピクセルを置く段に当たって、ステンシルやZバッファの参照、アルファ等のピクセル合成
高度なハード支援があれば直接アセンブラ的にデータを操作できるシェーダなど
様々な特殊処理をサポートしている。

193 名前:186 :04/12/07 00:11:00
>>192
やはり他の方の回答にありましたが
アクセラレータの環境があればAの方が
ブレンディング等の面で@より有利なのですね。

回答ありがとうございました。

194 名前:デフォルトの名無しさん :04/12/07 00:57:58
ほとんどない知識で頑張ってDirectXライブラリ作ってます。
DirectXは8を使って作成しています。
ID3DXFontを使ってテキストの描画を作ってみたのですが、
ウィンドウモードで起動→フルスクリーンに変更→ウィンドウモードに戻す
といった動作をすると、文字が滲んだような(アンチエイリアス?)感じになってしまいます。
最初の起動時は普通にはっきりと出るので、良く分からないです。
ここを間違えたら、この症状が出るというのが分かる方いましたら教えてください。

195 名前:デフォルトの名無しさん :04/12/07 01:12:08
>>フルスクリーンに変更→ウィンドウモードに戻す
ここしか考えられない

196 名前:194 :04/12/07 01:37:26
>>195
アドバイスありがとうございます。
スプライト描画をとりあえず使ってるのですが、そっちはしっかりできていたり。
デバイスの復元がうまくいかないと普通落ちるし…、とお手上げ状態です。
他に何かアドバイスありましたらお願いします。
少ない情報で申し訳ありません。

197 名前:デフォルトの名無しさん :04/12/07 01:57:44
>>82 に対する >>83 の態度が気になる。
一体何なんだ...

198 名前:194 :04/12/07 02:19:46
すいません、自己解決しました。
BackBafferFormatを現在の画面モードを使用にしてたんですが、
フルスクリーン時のFormatをちゃんと指定したら直りました。
ご迷惑おかけしました。

199 名前:デフォルトの名無しさん :04/12/07 11:47:29
頂点バッファによる描画で、3D空間上に描画すると真っ黒く表示されてしまう原因はなんでしょうか。

SetRenderStateで D3DRS_ZENABLE、D3DRS_ZWRITEENABLE、D3DRS_LIGHTING
をTRUE に設定し、
SetStreamSource()
SetFVF()
DrawPrimitive()
の順に描画しています。

2Dの場合はちゃんと描画されています。
2Dの場合は
D3DFVF_2DVERTEX ( D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1 )
3Dの場合は
D3DFVF_3DVERTEX ( D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1 )
を指定しています。

教えてください。

200 名前:デフォルトの名無しさん :04/12/07 11:53:32
>>199
ライトやマテリアルの設定はしてるの?

201 名前:デフォルトの名無しさん :04/12/07 11:55:22
ライティングONにしてまっくろっていわれたらまず法線狂ってるかと

202 名前:デフォルトの名無しさん :04/12/07 12:20:19
XFileなどの表示はちゃんとされるので、ライトの設定は間違っていないと思います。

また、XFileを表示すると 頂点バッファも表示されるようになるんですが、設定されているテクスチャが変な色
になっており、UV座標も設定したものと違ってしまっています。

マテリアル設定というのはやっていないのですが、頂点バッファでもする必要があるのでしょうか?
法線のこともよくわからないのですが、これも設定とかする必要があるのでしょうか。

203 名前:デフォルトの名無しさん :04/12/07 12:47:24
D3DRS_LIGHTINGをFALSEにしたら表示されるようになったんですが、テクスチャをつけていないときの色が
茶色になっており、カラーを変更しても茶色のままかわりません。

何か原因がわかりるでしょうか。

204 名前:デフォルトの名無しさん :04/12/07 13:02:32
解決しました。

頂点などを格納していた構造体に float rhw が存在していたことと、ライティングがONになっていたことが
原因だったようでうs。

でもなぜライティングをONにすると真っ暗になるのだろう・・・3Dなのに。

205 名前:デフォルトの名無しさん :04/12/07 13:10:50
>>204
「3Dなのに」を説明せよ。

ライティングONで黒くなる=法線ベクトルが(0,0,0)だ。


206 名前:デフォルトの名無しさん :04/12/07 13:13:34
>>205

なるほど。
今設定しているVertex構造体は ライティング済みの頂点フォーマットらしいんですが
それだと法線ベクトルが(0,0,0)になるんでしょうか。

頂点バッファでライトの影響を受けるようにしたい場合はどうやったらいいんでしょうか。

207 名前:デフォルトの名無しさん :04/12/07 13:22:54
ライティングの影響受けるようにできました。

頂点フラグに D3DFVF_NORMALを加えて、 頂点フォーマットに法線変数を加えたらできました。
ちょっと勉強になったかも

208 名前:デフォルトの名無しさん :04/12/07 13:30:41
さんざん日記書かれて、「ま、少しは勉強になったな」なんて言いながら
礼も無しで去っていく奴を相手しているお前らが、哀れでならない

209 名前:デフォルトの名無しさん :04/12/07 13:37:02
>>208
で、何が言いたいんだ?
「自分も回答してみたいけれど実力ないし、
周りをけなせば自分が優位に立てる」という
勘違いをしたいのか?

210 名前:デフォルトの名無しさん :04/12/07 13:38:23
>>208
ママはぼくちんに食事作ってくれて当たり前。
先生はぼくちんに教えてくれて当然。

まだそういう年齢なんだろ。
…たまに新人でもこういうのはいるが。

211 名前:デフォルトの名無しさん :04/12/07 13:49:49
>>205

ありがとうございました。
常に法線ベクトルが関係してくるということが今回やってよくわかりました。


212 名前:デフォルトの名無しさん :04/12/07 14:59:22
>>211
「・・・3Dなのに」というくだりがどうしても解釈できないので、
なぜそのような推測に至ったのかを説明して欲しい。
EX. 「3DだからライティングONにすれば必ずシェーディングされるはず」


213 名前:デフォルトの名無しさん :04/12/07 15:57:40
>ママはぼくちんに食事作ってくれて当たり前。
確かにこれは当たり前だな。
ま、大概ママは先に死ぬわけだからそれまでにゃ
自分でエサ取れるようにならないとますいけどな。
>先生はぼくちんに教えてくれて当然。
対価を支払ってるなら教えてくれて当たり前でないと困るな。
ここでは教えてくれたらラッキー&感謝だな。

214 名前:デフォルトの名無しさん :04/12/07 16:12:35
213はまだ子供みたいだな

215 名前:デフォルトの名無しさん :04/12/07 16:13:40
大人らしい思考を教えてください。

216 名前:デフォルトの名無しさん :04/12/07 16:52:44
>>215
人にモノを教えるってのは、自分の勉強にもなる。
頭の中で漠然と理解していることを文章化するということは、
理解を明確化することにつながる。
ゆえにオレは回答する。気が向いたときに。

217 名前:デフォルトの名無しさん :04/12/07 17:01:26
ぜんぜん会話が成立してない。

218 名前:デフォルトの名無しさん :04/12/07 17:06:43
みんな、釣られすぎですYO!

219 名前:デフォルトの名無しさん :04/12/07 17:51:04
>>212

別に深い理由はないんですが、ライティングが設定済みの2Dと違って、3Dを使っているのに
なぜライティングの影響を受けないのだろうと思っていました。

実際はライティングの影響を受けたら暗くなったんですが、法線の方向はポリゴンを作ったときに
自動的に決まるものだと思っていたので、なぜ暗くなるのかわからなかったんですよね。


220 名前:デフォルトの名無しさん :04/12/07 19:01:07
>219
3DかDirectXの初心者サイトなり書籍なり読んで
3Dに対する知識を深めたほうがいいね

221 名前:デフォルトの名無しさん :04/12/07 19:18:05
ちゅーか
>>219を見る限り日本語から…

222 名前:美酔 ◆t19NxEZjm2 :04/12/08 10:42:50
グラフィックボードがDirectX8までしか対応していないようですが、
DirectX9SDKでも開発は可能でしょうか?

223 名前:デフォルトの名無しさん :04/12/08 11:05:49
開発だけならどんなに古いビデオカードも、
Windowsさえ正常に動作するのなら可能。
コンパイルするのにビデオカードの性能などいらない。

224 名前:美酔 ◆t19NxEZjm2 :04/12/08 12:20:06
>>223
開発は可能だけれども動作確認ができない可能性があるということですね?
動作確認までしたいので、DirectX8SDK辺りが欲しいんですけれども、見つからないんです。
何かいい方法はありませんか?

225 名前:デフォルトの名無しさん :04/12/08 12:39:54
>>224
DirectX9でもハードウェア支援がある機能と
ソフトウェア処理でも速度に問題がないもの
だけ使えばいい。

226 名前:美酔 ◆t19NxEZjm2 :04/12/08 12:41:52
>>225
なうほど。
それを参考に色々調べてやってみます。
ありがとうございました。

227 名前:デフォルトの名無しさん :04/12/08 12:42:54
DirectX9SDKでもd3d8.hとd3d8.libが入っているので
そちらをリンクすれば多分いけると思います

228 名前:デフォルトの名無しさん :04/12/08 12:43:30
・DX8相当の機能までしか使わないコーディングを心がける
 (=9で追加された機能を使わない)
・DX9相当のグラフィックボードを買ってくる

229 名前:デフォルトの名無しさん :04/12/08 12:55:15
DirectX9SDKでもDX8のソースは一部修正で通るがヘルプが入手できない
Cマガなどの雑誌のバックナンバーを漁ったらいいんじゃないか?
もし入手できるならDX7のヘルプもいいこと書いてあるぞ

230 名前:デフォルトの名無しさん :04/12/08 13:31:16
DirectX9 2003Summerを利用しています.

LPD3DXMESH m_pMesh;
D3DXCreateMeshFVF(numFaces, // 面の数
numVertices,// 頂点の数
D3DXMESH_MANAGED, D3DFVF_XYZ|D3DFVF_NORMAL, device, &m_pMesh);

numFaces, numVertices以上の面,頂点を追加したい場合どうしたらよいのでしょうか?

新たにLPD3DXMESHを宣言,
D3DXCreateMeshFVFで追加後の面の数と頂点の数を設定して
頂点とインデックスバッファを1つずつコピーしてCloneMeshをしなければならないのでしょうか?

また,初期化の時点では利用しないけれど,予め多めに面と頂点の数を設定しても構わないのでしょうか?


231 名前:デフォルトの名無しさん :04/12/08 14:41:01
>>223
DirectX9SDKをインストールしておけば、DirectX8SDK環境で制作することが可能です
もちろん7でも6でも可
lib 追加して Direct3Dインターフェイスを取得するときにバージョン指定でOKだと思います

>>229
普通に手に入りマスタ
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=09343A34-6D91-4708-A2DA-7E98CF7EC872

232 名前:デフォルトの名無しさん :04/12/08 17:05:04
まあintel 810とか815のオンボードだと
ソフトウェアでもDirectX9は起動できないわけだが

233 名前:デフォルトの名無しさん :04/12/08 17:18:07
DirectXの起動など、どんな最新環境でも不可能だ。
唯一あるとすれば>>232の脳内だけ。

234 名前:デフォルトの名無しさん :04/12/08 18:25:53
DirectX = Direct3D と思ってる奴をどうにかしてもらえませんか。

235 名前:232 :04/12/08 19:15:28
しょーもない揚げ足取りですねモマイラ

236 名前:デフォルトの名無しさん :04/12/08 20:15:51
2次元の玉ころがしのゲームを作っています。
Drawを使って画像を描画しているのですが、
壁が四角形だけではなく微妙に湾曲したり菱形だったりしたいのです。
こういう場合の当たり判定はどうすればいいのでしょうか?
(9.0b)

237 名前:デフォルトの名無しさん :04/12/08 20:31:20
>>235
用語の使い方が適切でない以外にも、
DirectX9から3Dデバイスが使えないという認識も間違っている。
ステンシルバッファが使えないなど、基本的な機能が欠落しているだけで、
HALで動作するプログラムは書けるし、実際にテストして確認済み。
馬鹿の上に知ったかで、どうしようもないわけだが。

238 名前:デフォルトの名無しさん :04/12/08 20:33:46
皆さんテレ屋なんですね。もっと優しく言えばいいのに。

239 名前:デフォルトの名無しさん :04/12/08 20:39:41
自分でプログラムを作りもせず、SDKのサンプルをダブルクリックしただけで、
動かないと勝手に思いこんだアホがいるのはこのスレですか?

240 名前:デフォルトの名無しさん :04/12/08 21:54:30
パーティクルエディタ作ってるんだけど、ポリゴンは出せるんだけど
3Dの線をどうやって表示するか分からないんです。
グリッドを表示したいんだけど・・・


241 名前:デフォルトの名無しさん :04/12/08 22:00:38
MeshViewerのソースをみればいい、

242 名前:デフォルトの名無しさん :04/12/08 22:02:12
SDKを読んだとは思えない質問だなぁ・・・

243 名前:デフォルトの名無しさん :04/12/08 22:05:41
HALをハルって言う奴はとっとと逝け!!!!!!!!!!!!!

今が冬だから命が芽吹く季節が待ち遠しいのか
太平洋戦争を何故今振り返っているのかとか

じつに紛らわしいんじゃコラ!!!!!!!!!!!!!!!!!


244 名前:デフォルトの名無しさん :04/12/08 22:09:28
>240
パーティクルエディタなんて作る前に
初心者本でも目を通してください

てか調べもしてないだろ?
>1読めよ
>3.SDKを見ても、Googleで検索しても、いまいち理解できない人
調べもしてない人はこのスレで質問する権利はありません
本気で調べたなら聞くまでもないだろ?
そもそも自分のソース見てみろよ
ワイヤーフレームじゃなくてポリゴンで表示するように指定してるところがあるだろ?
何でそこのパラメータをいじればできるんじゃないかとか予測もつかないのか不思議でならない

245 名前:236 :04/12/08 22:15:50
おいちゃん調べても出てこなかったんですが、なぜかスルーされている罠(´・ω・`)

246 名前:デフォルトの名無しさん :04/12/08 22:17:01
>>236
DirectXの問題じゃないからな。
点と直線の公式を使って距離を計算しろ。

247 名前:デフォルトの名無しさん :04/12/08 22:18:21
「HAL」を会話で使用する際の言い方はどれ?

・ハル
・エイチエーエル
・ハードウェアアブストラクションレイヤ
・ハードウェア抽象化レイヤ
・その他

248 名前:デフォルトの名無しさん :04/12/08 22:18:38
>>243
なにキれてるんだ?
ハルとヘル。それでいいじゃないか。

249 名前:デフォルトの名無しさん :04/12/08 22:24:29
ということはFlashみたいに画像と画像の当たり判定をしてくれる関数みたいなのはないという事ですか(´・ω・`)
綺麗なカーブじゃなく変則的な曲線を描いている場合ってどう計算すればいいんだろ・・

250 名前:デフォルトの名無しさん :04/12/08 22:27:31
ちょっと違うが、
charを「キャラ」「キャラクター型」「チャー」「チャラ」「文字型」って、知人の間で呼び方がバラバラ……訳の分からんのも混じってるし…
せめて、聞いた時に何を言いたいのか分かる表現にしてほしいな(何の話か意味が分からなくなったりする)


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.