1 :
名前は開発中のものですた。 :
02/07/23 00:32 ID:DsnWt/i.
2ゲットずさー 前スレの宿題よろしく。
いまさらDirectX7以前で組んでるエロゲプログラマの書き込みがうざい。 古い話なんだから、分からないことがあれば過去ログあさればいいのに。 それに毎度毎度、「俺はほとんど自前でDirectDrawは使わない」って 自慢しに来る自前描画主義者が出るし。
SFC/PS版聖剣伝説クラスのゲームなら俺は自前描画で作るが。
勝手に自前描画スレでもつくってやってくれ
6 :
名前は開発中のものです。 :02/07/23 02:46 ID:3mnZwdQ2
SphereMap用テクスチャの生成ツールって ありませんか?
>>6 死ぬほど複雑なプログラムというわけでもないから、無ければ
作ってみると良いのでは?キューブマップみたいに6面で
見た風景を、円に写像変換する奴。円のメッシュの切り方
がポイントになりそうだけど。
というか、厳密なスフィアマップを作る事に、そこまで意味は
あるのかな?視点が変わったらスフィアマップは正確では
なくなるんだし、ある程度適当でも言いような・・・。というのは
怠け者の意見。
>ハードによる差異って、今現在どれくらいあるんだろ。 >以前に比べればカナリ淘汰されてるから、 MSも、ビデオチップごとのレンダリング結果の差を小さくするようあれこれ手を打ったしね。 自前一筋の人はこういう動向も知らんだろうけど。
沙羅曼蛇の1面後半に出てくるピンク色の細胞壁ってどうやって実現してるん だろう? データ的には、ミサイルやレーザーが当たった座標をバッファに 保存して、最も古く破壊された所から順に復活(再生)させているのだろうけど、 グラフィック的な処理が分からない。
>データ的には、ミサイルやレーザーが当たった座標をバッファに この時点で思い違いしている。 それに、ここはDirectXの話するところだろ。スレ違いだ。
前スレで出てた回転する四角形同士の交差判定だけど、お互いに1点ずつ 相手の四角形との内外判定をしてから線分の交差判定をすればOK。 ただし、正方形や長方形ならば点の内外判定は簡単だから(内積2回)、 4点全て判定してしまった方が平均では軽くなると思う。 ゲームなら線分の交差判定までやらなくても、重心とか辺の中点も内外判定 するだけで十分。あまり扁平した長方形を使わなければ、頂点だけの判定で も十分。 これ以上は【Collision Detection】スレで
Wizardが吐き出すDirectInputの処理がよくわからんヽ(´Д`)ノ アクションマッピングっていちいち指定しなきゃいかんの? めんどくさいからデフォルトの「CAD - 3D object control」 (dinput.h:4090行あたり)のままにしてるんだけど、何か弊害があるのだろうか。 日本語版ヘルプ見ても、 x 軸からデータを取得して車を左右に動かすのではなく、 DIAXIS_DRIVINGR_STEER という仮想コントロールからデータを 取得することになる てことは、結局やってることは一緒だと思うんだけど…概念の問題? # キーコンフィグを自前で用意しなくてもいいらしいのは助かるけど、 # あまりカッコよくないね
ゲームごとじゃなくてジャンルごとにマッピングでるってこと。 普通のジョイスティックで車ゲームを遊ぶ人はX軸をステアリングにするけど ネジコンで遊ぶ人は捻る軸をステアリングにするでしょ? ネジコンで遊ぶ人は車ゲームを遊ぶときは必ず捻る軸をステアリングにするし 車ゲーム以外なら十字キーの方を使う。そのマッピングを楽にするのが、 アクションマッピングの役目。
3Dで走り回るサンプルを作ったんですけど、 格ゲーの体力ゲージのようなものはどうやって表示するんでしょう? オフスクリーンサーフェスはどこへいったぁぁぁぁ! サーフェスに描いてCopyRectか自分で転送するしかないのかな…
>>16 板ポリゴンにテクスチャ貼りつけるじゃ駄目?
>>17 ありがとう
そうすると、カメラの移動とともにポリゴンを移動させねばなりませんね。
やってみるか。
(ちなみに、マリオ64やサルゲッチュのようなサンプルです。)
>>18 トランスフォーム済み頂点をつかって
スクリーン上の2D座標を直接指定すればいいのでは?
>>19 ソレダ!(・∀・)
正月の朝に新品のパンツに履き替えたみたいにすっきりした。
ありがとう。
>>17 何故ゲージごときにテクスチャがいるのか、小一時間問いつめたい
>>21 なぜ「ゲージ=単色」と考えるのか、小一時間問いつめたい
24 :
名前は開発中のものです。 :02/07/24 23:40 ID:bCFuNa3Q
変換済み頂点設定にしろよ
>>23 何故「テクスチャを使わない=単色」と考えるのか、小一時間問いつめたい
頂点カラーを使えばグラデーションも簡単に出来るし、 ゲージ部分にわざわざテクスチャを使って重くする必要は無いと思うが?
27 :
名前は開発中のものです。 :02/07/25 00:06 ID:FyiymMBk
その位で重いって… ゲージも3DモデルにしてX軸回転させてウマー
というかあくまで好みの問題で、こういう議論は意味が無いような・・・
グラデだけじゃうまく表現できないんじゃないの? +-----------------------------------------------+ |+------------------------------------+ | ||<------------グラデ----------------->| | |+------------------------------------+ | +-----------------------------------------------+ こんなの。
>>29 どううまく表現できないのか分からないですが、
それならポリゴン4枚で用が足ります。
>>29 つまりポリゴンの使い方が分かっていないから、矩形一つという発想しか出来ず、
テクスチャとか言い出したという落ちか
模様として使うなら全く別問題だし、凝ったものと言っても枠の部分も別問題
ゲージの長さを表す部分をテクスチャで描くとすると、
変化するたびにテクスチャをロックして書き直すのは無駄が多すぎる
イマドキ貧乏くせぇこというなよ~~~~~~ アルファ付テクスチャで角のまぁるくてかわぃぃ模様のゲージにしようぜ。
グラデーションにテクスチャを使う事は賛成。 この程度ではfpsに影響するほどパフォーマンス的な差はないし。 線形補間のグラデーションだけでみんな満足?
この程度の問題が自力で解決できないようなら、ゲージに 凝る以外にもっとやるべきことがあるとは思われるが。
トランスフォーム済み頂点を扱えることを知らなければ、 自力で解決のしようがないと思うが。
>31 >変化するたびにテクスチャをロックして書き直すのは無駄が多すぎる ゲージと模様を別テクスチャにすれば解決するんじゃ、、、 それで板ポリゴン2枚で済むけど、致命的な速度低下に繋がるのだろうか、、、
正直どうでもいい
38 :
あのう :02/07/26 02:03 ID:???
すごい厨房質問で申し訳ないですが DirectInputで入力デバイスからの情報を受け取るのって 描画部分の関数の先頭にかかれてるじゃないですか。 このボタンが押されたら前に進むとかそういう感じに。 でも、ってことはFPSの違う環境でプレイしたらプレイヤーの移動速度が 変わってしまうってことにならないですか?
39 :
あのう :02/07/26 02:08 ID:???
すんません、初心者質問はここではないようですね。 失礼しました。
40 :
名前は開発中のものです。 :02/07/26 02:08 ID:Cdb3asbE
1ミリ秒あたり移動量 * フレーム間の時間 移動量を求めるので 変わらないよ
41 :
あのう :02/07/26 02:14 ID:???
ああ、ありがとうございます。 たとえば十時キーの上ボタンをおしたら move.z+=1.0f; にして 下の方のプレイヤーを描画する部分 D3DXTranslation(&mTrans,0.0f+move.z,0.0f+move.y,0.0f+move.z); なんて感じにしたらやっぱFPSが高ければ高いほど 前に進んじゃうのかななんて思ってしまいまして。 もうすこし概念的な部分からDirectXを勉強する必要があるみたいですね どうもありがとうございました。
41は40を理解してなくて、忘れた頃にFPS論争やりだしそう
ってかDirectXの問題じゃないよな。 41で言えば move.z += 1.0f * d; で、dは基準にしたfpsに対する実際のfpsの割合係数。 要するに多く呼び出す分だけコマ毎の移動量を減らすんだよ
DIRECTXでキーボードのスキャンてどうやるの? 方向キーを同時に押すと取り込まれないんだけど。
何のためのDirectInputなのか?
まさか、同時押しできないハードウェアがわの問題じゃないだろうな。
同時入力をちゃんと受け付ける、いいキーボードを使いなはれ。Realforce106とか。
DirectX8.1の質問 サーフェスのDCって取得できなくなったの? myDC = pSurface->GetDC() 画面キャプチャしたいんだけどどうすればいいのか???
49 :
名前は開発中のものです。 :02/07/26 15:27 ID:JZcpJvLw
>48 はじめのDX初期化のときに使うウインドウハンドルでGeDC()すれば?
50 :
48 :02/07/26 18:56 ID:???
>>48 それだとフルスクリーンでFlipしてるときに上手く取り込めないよ。
キャプチャしたいならIDirect3DDevice8::GetFrontBufferがいいかと。
D3DFMT_A8R8G8B8に変換された状態で取得できるから、その後の取り扱いも楽。
52 :
あのう :02/07/26 22:06 ID:???
41です。 43さんの説明でやっとわかりました。 先が思いやられますが、DirectX9がでる前に一通りできるようにがんばろうと思います。ありがとうございました。
53 :
48 :02/07/26 22:23 ID:???
SetRenderTargetでテクスチャをターゲットにして、改めてレンダリングしますた。。。
>>53 GetRenderTargetでバックバッファを取得するのでは駄目なの?
>>54 そのサーフィスロックして、直接アクセスすればピクセルは
持ってこれるよね・・・。というか、テクスチャから保存できる
プログラム組んでるなら、Bltで転送すれば良いんだし。
というのを以前Zバッファでやろうとしたら自滅しますた。
Capsビューアで見ると、ZバッファってLockableなサーフィス
を持つかどうかもビデオカードとドライバ次第なんだね。
Radeonは出来ると出ていたのに出来なかった・・・。
OpenGLだと例外なく出来るけど、遅い。
>>54 そのあとCopyRects()使うのかな?
アレ遅いんだよねぇ…
DirectX8やってるんだけど、ビデオカードがオンボードになってるPCの 人から「動きません」って言われてしまった ビデオメモリ4MBらしいんだけど、この環境で動かす事ってできるのかな?
>>57 モノによる。
それ以前にドライバが入ってないとかDirectX7でしたとか…
>>56 何故そこでCopyRectsが出てくるの?
そのままLockすればいいんじゃないの?
60 :
48 :02/07/27 02:13 ID:???
>>54 テクスチャとして取得したいのですが、可能でしょうか?
FF7などでバトル突入するときの効果が作れそうですし。
んで
>>53 のような方法を思いついたわけですが、なぜかポリゴンの描画順がばらばらに。ヽ(`Д´)ノ
IDirect3DDevice8::SetRenderTarget()のステンシルバッファへのポインタをNULLにしてるんですが、マズイでしょうか?
IDirect3DDevice8::GetDepthStencilSurface()で取得したポインタ使うと D3DERR_INVALIDCALL になっちゃうし。
>60 テクスチャと普通のバックバッファ領域の大きさは同じじゃないから、 当然Zバッファも割り当て直さないといけないよ。それをしないと、描画順 が当然滅茶苦茶になる。ちゃんとしたテクスチャサーフィスへの描画方法 は、CubeMapのサンプルを見てみると良く分かるよ。
62 :
48 :02/07/27 03:08 ID:???
>>61 ああん、一歩遅かった。
書いてからもしやと思って割り当てなおしたらできますた。
要領悪くてごめんなさい。
widthとheightが512とかじゃないとダメなのかな…
ミップマップ関連のせい?
>62 テクスチャは2の乗数の正方形と相場が決まってるんだけど・・・。 128とか256とか512。それが嫌ならバックバッファから読んで保存すると いいのでは?リアルタイムでバンバンキャプチャしていく方針なの?
>>63 遅くなるが、別に2の乗数でなくてもテクスチャは作れる
>64 今までそれ以外で作ってなかったから、考えても いなかったよ。ありがとう。かつてVoodooとかでは もっとおかしな制限があったことを思い出してみたり。
遅くなるかどうかは実際に調べたことがないので分からないが、機能については 色々と制限があったりするので注意。 詳しくはD3DPTEXTURECAPS_NONPOW2CONDITIONALの説明でも読んで。 ちなみにGeForce3/4はこの制限にひっかかってる。 あんまり関係ない制限だけどね。
>>58 「DirectX8が正常に作動してる」って言ってるんで信用するしか無いんだけど。
でもモノによる、か。サンクス
68 :
名前は開発中のものです。 :02/07/27 11:17 ID:.3MPTeOs
テクスチャ256*256はクソ。
>>63 正方形である必要はない
適当なことを書く前に試せ
>>64 一部に作れるものが存在するかもしれないが
ほとんどのビデオカードは2の乗数でしか作れない
1024*512でもテクスチャは作れるな。 俺のマシンでは2の乗数じゃないとダメぽ…
>69 おうちにあるVoodooシリーズにはそう言う制限があったんだよ。 お試し済みなので、一応。今となっては意味がないと言われるかも 知れないけど、あまり意味のない制限で動作ハードウェアを減らすのは どうかという主義だから、テクスチャは正方形かつ2の乗数を普通に 使ってるんだけど・・・。 主義が違う、と言うんならゴメソ。
2の「乗数」ってネタですよね
73 :
名前は開発中のものです。 :02/07/27 17:57 ID:.3MPTeOs
価値はある。だが今の金のない厨房たちにとって手が届く範囲なのかどうか。 値段下げればもっと売れるとおもうんだが。 しかし、2000からどんどん素材の質が下がってきてるな。 先頭画面に配置されてるドラゴンなんか見る影もない・・・
74 :
73 :02/07/27 17:57 ID:???
誤爆
IDirect3DDevice8::CreateTexture() で作成したテクスチャをRelease()で開放しても使用メモリが減らないのは何故?? CD3DFont(AppWizardが吐くヤツね)使ってて、 最初にCD3DFont::InitDeviceObjects呼んで、 最後にCD3DFont::DeleteDeviceObjectsで開放してんだけど。 俺だけ? Windows2000 VisualC++6.0 DirectX8.1 Debug/Release
Voodooは何か制限あるってハナシは聞いたことあるな。 てことは、たとえば640*480のテクスチャ貼りたいとおもったら、 512*512を2枚用意しろってコト?
>>76 Voodoo3まではテクスチャの最大サイズが256*256なので、
その場合は256*256のテクスチャを6枚用意することになるよ。
>>77 うげ、マジすか
自分でテクスチャクラス作って、ビデオカードに合わせて内部で処理を切り替えるか…
それとも256*256で基準で作ればいいのかな?
まさか64*64までしか作れないなんてビデオカードはあるまい…
>>78 インストーラで、テクスチャ解像度を選択させてインストールという手もある。
市販ゲームでもよく使われてる。
>>69 >適当なことを書く前に試せ
試す前にヘルプを読め
>テクスチャが正方形? 日本語版8.0のヘルプを「正方形」で検索したけど出てこなかった。 IDirect3DDevice8::GetDeviceCaps()で得られる情報の、 TextureCaps が D3DPTEXTURECAPS_SQUAREONLY の場合は正方形でないとまずいだろうけど そうじゃなければ別にいいのでは? # DirectX Graphics > プログラミングのヒントおよびツール > パフォーマンスの最適化 # > テクスチャサイズ …によれば、256 × 256 のテクスチャが最速らしいが。
>そうじゃなければ別にいいのでは? そうじゃなければ別にいいけどさぁ・・・
>>69 >一部に作れるものが存在するかもしれないが
NVIDIAはGeForce3以降、ATiは初代RADEON以降、MatroxはG200以降、Intelは830で
作れるようになったけど、それが一部?現状の半分くらいは行ってると思うが。
(815が対応してないのが痛い)
SQUAREONLYの方はNeoMagicやVIAまでチェックしてみたけどYesのは見つからなかった。
Riva128やVoodoo3でもNoだった。
逆にこれがYesでDirectX8が使えるチップがあったら教えて欲しい。
正方形必須のはまだ見たことないなあ...
VRAM256M標準になったら正方形必須でも構わん
>>85 初期のViRGEとかはそう。昔はそれに加えて、半透明の対応度が
各社マチマチで酷かった。
いまさらながら「鬱だ氏のう」ってタイトルがぴったりくるなあと実感。
大体ここに質問できるって時点で、 自己解決できる奴が大半なんだよね。 すごいや。
質問すらできない奴ってどんなんだ?
つーか天才なら余裕でしょ。
>81 ># > テクスチャサイズ …によれば、256 × 256 のテクスチャが最速らしいが。 これは128*128テクスチャを4つ切り替えるよりも256*256にしたほうが速いってことで、 サイズは小さいにこしたことはない。 って話が旧スレにあったような
MIPマップが存在する意味を考えれば分かりそうなものだが
MIPMAPは速度よりも画質のために使うってのが本音かな
96 :
名前は開発中のものです。 :02/07/31 06:55 ID:a9hxPLQ6
DirectX8でmidiを鳴らしてるんだけど、音質がすごい悪いんです。 mciで鳴らした方がぜんぜん良い。mciの方は環境に依存されるんだろうけど それでもぜんぜんまし。 改善する方法ってありますか?
DirectX8でポリゴンにてくすちゃはっつけて画像表示したいんですが、 意図したサイズになってくれません。 描画開始位置は正しいのですが、たとえば : vertex[3] =_TLVERTEX( x2, y2 , 0, 1, D3DCOLOR_XRGB(255,255,255), 2, 2); とかやっても、画像と画像のあいだに画像の60%近い隙間ができてしまいます。 画像サイズが通常の4割減されてるようです。 Zの距離の問題でしょうか、さっぱりです。 ちなみにまだ3D空間や行列には手をつけてません。 どうかご進言ください。
>>97 です。
もしかして、ときどき話題にはあがってたようですが
スプライトのサイズって(2^n)ピクセルにしないといけないんですか?
それでやったら直ったんですが・・・・・・
マジですか。
スプライトのサイズは別に2^nで無くても良いけど、 ロード系のAPIで勝手に補完されて読み込まれる
101 :
名前は開発中のものです。 :02/07/31 12:40 ID:94NQNZrs
D3DXでテクスチャを表示するとエッジがぼやけ、アルファを0に設定したはずの元絵の色(カラーキー)が淵にくっついています。 カラーキーがマゼンダで黒が1ドットあるとすると、黒が暗い紫になります。まいりました。SetRenderStateやTextureStageでANTIALIES等いろいろ設定したのですがだめでした。どうすればよいでしょう。
SetTextureStageStateで MIN/MAGFILTERに D3DTEXF_POINTを使ったら? ニヤレストネイバー法を使うようになるはず
トランスフォーム済み頂点のポリゴンの半透明描画が上手くいきません。。 頂点のDiffuseにα値入れてもαブレンドがきいてないみたい。 α関係のレンダーステートはこれだけやってます。 device->SetRenderState( D3DRS_ALPHABLENDENABLE, true ); device->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); device->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); やってもやらなくても変わらず… なんか関係なさそう。 他の場所に何か設定があるんでしょうか? それと、ID3DXSprite::BeginとかID3DXFont::Beginとかやった後だとαブレンドがききます。 多分この関数の内部でやってるレンダーステート変更をやればいいのだろうけど… なんなのか全く不明です。。(涙
>>103 ALPHABLENDに使用されるSRCALPHA値はTextureStageStateで決まるので、
そちらも適切に設定しないと駄目。
device->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 );
device->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE );
それと、ライティングは明示的に無効にしておかないと問題あるかも。
device->SetRenderState( D3DRS_LIGHTING, FALSE );
105 :
103 :02/07/31 18:29 ID:???
>>104 うわ~、ありがとうございます… 上手くいきました。
Lightingは元々オフだったようなので大丈夫でした。
テクスチャ無しのポリゴンなのでテクスチャに目がいってなかったなぁ…
106 :
名前は開発中のものです。 :02/07/31 18:47 ID:94NQNZrs
>102 MINにNONE、MAGにPOINTを使ったらできました。どうもありがとうございました。
107 :
名前は開発中のものです。 :02/07/31 19:50 ID:94NQNZrs
どっちともNONEでした。
それ、NONEの使い方ちがうぞ
109 :
名前は開発中のものです。 :02/07/31 20:42 ID:94NQNZrs
しかしこれ以外だとぼやけてしまいます。使い方が違うというと、やはり後からどこかに支障をきたしたりしますか?
>>109 ピクセルの中心が整数位置にくるようにする。
例えば、100,200から表示させたかったら、座標は99.5, 199.5を渡す。
ヘルプの テクスチャ - テクスチャ座標 - テクセルとピクセル間の直接マッピング
を見れ
111 :
110 :02/08/01 00:34 ID:???
110のようにすればリニアフィルタでもボケないということ
112 :
名前は開発中のものです。 :02/08/01 00:43 ID:l3x/2iyM
>>110 そういうことだったのですか。いやー参考になりました。どうもありがとうざいます。
エロゲプログラマでDirect3D使わない主義の奴には そのあたりを知らないのがいそうだな。
115 :
◆OiOOQQF. :02/08/02 10:45 ID:Rsc9P1wM
ボーン入りのアニメーションを再生するために、SkinnedMeshのサンプルを何も考えず使っています。 そこで、キャラの頭だけ敵のほうに向けるといった事をやりたいのですが、サンプルが難しくて どうやって特定のボーンを回転させられるかが分かりません。 教えてください。
>>114 ボーン入りって事は、Xfile形式ですよね?
それなら、そのXfileが、望む動きのモーションの情報をもっていないと
かなり面倒な作業をしないと無理です。
幾つかやり方があると思いますが、一番良いのは3Dモデリングソフト等で
動きを付けた物を、Xfileに吐き出すってやり方。
(オーソドックスなやり方だと、基本の位置から色々な動きのモーションを付け
複数のXfileにして、入力ごとにそれぞれを再生描画)
後は、自分でXfileを読み込んで、自分で頂点情報を形成。
勿論、法線情報、UV展開等も自分で。
そして、自分でその頂点に重みを付けて(ジオメトリブレンディング参照)
動きを制御ってやり方。
しかし、3Dソフトも使える身としては、2番目のやり方は
果てしなく面倒、無論、3Dプログラマなら出来なくてはいけないが、
目的と経緯を考えると、漏れは始めから、望む動きのXfileを持つって方を進める。
何方か、これ以外の方法があったならレスして下さい。
此方も参考にしたいです。
117 :
◆OiOOQQF. :02/08/02 15:04 ID:Rsc9P1wM
レスありがとうございます。 >幾つかやり方があると思いますが、一番良いのは3Dモデリングソフト等で >動きを付けた物を、Xfileに吐き出すってやり方。 はい、モーション付きのxfileを読み込んで再生っていう所までは大丈夫なんです。 説明不足でしたが、例えばバイオハザード型ゲームでプレイヤーキャラが歩いていて、 近くにゾンビが来たり、謎解きのヒントになるものがあれば、頭だけをそっちの方向 に向けたいと思っています。頭以外の部分は歩行モーションの再生を続け、頭の動き はプログラムで好きに角度を指定したいのです。 今までサンプルをブラックボックスとして使っていたので、ソースを見てもどうすれば いいのかヘッポコな漏れにはわかりません・・・(^^;
各ボーンの行列テーブルがあるから、それの 頭の部分を書き換えろ っていってもそのレベルじゃきびしいぞ。ソースきちんと読むしかないんじゃ?
119 :
116 :02/08/02 15:31 ID:???
>近くにゾンビが来たり、謎解きのヒントになるものがあれば、頭だけをそっちの方向 >に向けたいと思っています。頭以外の部分は歩行モーションの再生を続け、頭の動き >はプログラムで好きに角度を指定したいのです。 リアルタイムにですか?うーん…自分では思いつく方法は 前レスにも書いた通り、自分でXfileから各情報を引っ張って来て 自分でオブジェクトを形成、そして自分で各頂点にジオメトリ係数(重み)を リアルタイムで与えて、自分で変換をかけるしか……。 それと、DirectXではボーンは無いです。在るのは、各頂点の ジオメトリ係数(重み)です。その重みが違うから、行列変換を かけても一様な動きをしないので、関節で曲がったりと言った風に 動くのです。3Dソフト見たく、ボーンをつまんで、キーフレームで 動きを作るイメージでは無いのです。 …知っていたら、ごめんなさい。
120 :
◆OiOOQQF. :02/08/02 15:36 ID:Rsc9P1wM
なるほど、行列テーブルを持ってるんですね・・・ これをボーンの名前で引っ張ってくるようにすれば良いんですか。 ありがとうございました
首だけ別オブジェクトにするのも一つの手。 死んだときに首がとれて転がる、なんて演出もできるけど ((((((;゚д゚))))))
122 :
116 :02/08/02 15:49 ID:???
何か話が噛合わなくな……。
>>120 それだと、動き事のXfileを吐き出してるのと同じでは?
てっきり、動きの(ボーン)の無い所を
自分で動かしたい物だと思っておりました。
123 :
◆OiOOQQF. :02/08/02 17:03 ID:Rsc9P1wM
>>122 >それと、DirectXではボーンは無いです。在るのは、各頂点の
>ジオメトリ係数(重み)です。その重みが違うから、行列変換を
その各頂点に対応する行列のテーブルがあるんですよね?<サンプル
ですから、アニメーションのフレームを1コマ進めた後に、頭に対応してる行列を
自分で上書きしてやれば、頭だけ決め打ちのモーションとは違う動きをさせること
が出来ると理解したのですが・・・
ハードによって一度にブレンドできる頂点数が違うので サンプルでは最初にデーターを解析して最適かつ表示可能な状態に頂点indexデーターを分割する で、この頂点Indexを表示する為には、行列の配列のx番(例えば肩)とy番(上腕)をD3DDeviceにセットしてちょ って感じになる だから、配列の頭の部分を書き換えればできるよ 頭の配列の位置を調べるのはどうやるんだったかな? 名前から取れるはずだけど忘れた
>>124 漏れも質問。その配列の頭の部分が取れたとして、そこに例えばD3DXMatrixRotationYで
右に90度回転させる行列を作ってドカンとセットしてやれば、普通にキャラは右を向い
て表示される訳??
親子関係とか考えなくてダイジョーブなのか
もう覚えてないよ。今ざっと見たけど 以下CMy3Dappricationのメンバ関数ね 順番としては frameMove() (Frameに時間をセットする。するとSFrameクラス内で事前に登録されたアニメーションデーターからその時間の姿勢行列が作られる 親に時間をセットすると、子に伝達されていき、 Render関数の中のから UpdateFrame() を呼び出して親子関係の計算 drawFrame() 描画 なのでUpdateFrame()前にいじると出来る気がする 上に上げた関数あたりを読んでちょ
127 :
名前は開発中のものです。 :02/08/02 18:05 ID:O1bDfjPo
GDIがらみの質問なんですが、DirectX8のフルスクリーンで GDIもの(コントロールなど)を描画する方法ってありますか? ウィンドウモードの時は出来るのだが、フルスクリーンになると 駄目でした。 おそらくD3Dがウィンドウモードの時はBlt方式、フルスクリーンは Flip方式ってな感じで勝手に切り替えてると思うんですが、これを 手動で制御できる方法があれば教えてください。
>>127 D3DPRESENT_PARAMETERSの設定で一応はFlipを使わせずにBltを使わせることは
できるけど、Clipperが使用されないのでオススメできない。
DX8はGDIは使わせない方針なので、GDIを使いたいならDX9を待った方がいいかも。
DX9では関数一発でGDIモードの切り替えができるようになっていて便利。
再びSurfaceからGetDCできるようになっているから、使いやすさではDX8よりも
遥かに上。
>>130 GetDCしたいんじゃなくて、常にGDI面にしたいって話だろ?
そういえばぼちぼちDX9でるのか?
>>131 だから、それがDX9では関数一つ呼ぶだけで出来るんだってば。
PresentがBltになってClipper使用状態。
動的に切り替えられるから、GDIが必要なくなれば再びFlipに戻せる。
>だから、それがDX9では関数一つ呼ぶだけで出来るんだってば。 >PresentがBltになってClipper使用状態。 >動的に切り替えられるから、GDIが必要なくなれば再びFlipに戻せる。 そうか・・・・また激烈に仕様が変わるのか・・・・・・・・鬱氏のう
sinとcosの値から角度を求めるにはどうすればいいんですか?
asinとacosだな…
>>125 首の部分の基本姿勢行列によるのでは?
ワールドに対して任意の方向(この場合ならワールド座標系で右)
になるような行列をかけてやればよいのではないかと。
>>135 アークサイン、アークコサインではダメなの?
(asin, acos)
そういう意味ではなくて?
そうですか、ありがとうございます。 スティックを傾けた方向にプレイヤーを向かせるようにしたいのですが D3DXMatrixRotationYの第2引数はラジアンなんだけど、DirectInputで 得られる軸の2つの数字からそれを求めるにはどうすればいいのかなって 思いまして。 asin,acosを使ってやってみようと思います。 atan,atan2では無理でしょうか?
const double PI2 = 6.28318530717958647692528676655901; double SinCosToAngle(double sinval, double cosval) { double asinval = asin(sinval); double acosval = acos(cosval); if(asinval > 0.0) return acosval; else return PI2 - acosval; } いろいろ調べたらソースが出てきたのですが、これでいいんですよね? この値を直接RotationYにつっこめばいいのですか?
140 :
名前は開発中のものです。 :02/08/03 03:28 ID:3vnUJh66
>>139 asin,acosは(多分)内部でatan,atan2を呼び出しています
っていうか、三角関数同士は密接な関係があるです
(sin x)^2=1 - (cos x)^2 と同じように
asin,acosとatanは関係しています
具体的な式はめんどくさいので省略
141 :
名前は開発中のものです。 :02/08/03 03:30 ID:3vnUJh66
追加 atan2の方が(級数展開の関係上)計算が早く、誤差も少ないので そちらを使うことをお勧めします
そうですか、アドバイスありがとうございます。 cosとsinの2引数を入れたらラジアンで戻ってくるような関数があったらいいんですけどね。
143 :
名前は開発中のものです。 :02/08/03 04:09 ID:3vnUJh66
>>142 あのぉ・・・
それ、atan2なんですけどぉ・・・
あ、やっぱそうなんですか・・・・・・。 atan2ってそういう関数なんですかかって聞くと恥ずかしいから 遠回しな聞き方してしまったのですが、やっぱどっちにしろ恥ずかしいですね。 大学受験時は偏差値70近くあった数学もやらないとさびてしまう物ですね。 まして、複雑な三角関数や偏微分とかはやらなかったし。
三角関数が複雑なんですか? 数学の基礎中の基礎でこれが出来ないと何も出来ないと思うんですが。
まあまあ。受験勉強とか偏差値とはそんなもんさ
いや、三角関数が複雑だったのではなく、ハイパボリックやマクローリンとか への変換や積分とか三角関数をもちいた複雑な問題が大変だったということです。 高校ではそこまでつっこんでやりませんでしたからね。
148 :
名前は開発中のものです。 :02/08/03 05:20 ID:3vnUJh66
>>146 むしろ、大学受験までの勉強が「基礎中の基礎」なだけであって
意味が無いとは思わない
ただ、ゲーム製作に必要な知識はもうちょっと上のほうだと思う
nayaさんは、基礎がしっかり出来てるみたいだから、
ちょっと勉強すればぜんぜん出来るようになるでしょう
重要なのは、今勉強するかですからね
>>149 基礎が出来ているならむしろ
>>135 や
>>142 のような発言は無いと思うけど…。
まぁ慣れというか、何事も何回も使っていくうちに頭に刷り込まれていくものだと
思うんで、がんばってください。
D3DXMatrixRotationYなんて使わずに直接行列を求めた方がスッキリすると思うが。
sin,cosが分かってるなら、そのまま行列に代入するだけだし。
高校レベルの数学だけど今の高校って行列やらないんだっけ?
>>149 誰に言ってるの?
>D3DXMatrixRotationYなんて使わずに直接行列を求めた方がスッキリすると思うが。 人それぞれですな。
152 :
名前は開発中のものです。 :02/08/03 19:45 ID:4pHFWPGk
>>150 理系である程度のレベルの学校ならやる。数Cで。
だけどベクトルとの関連性を無視して、単なる計算で終わっているので使い物にならない。
大学に入ってからやる線形代数の授業もそう。単なる計算で終わっている。
ちなみに自分はコンピュータグラフィックスの特別講義ではじめて、行列と幾何の結びつきを知った。
自分が高校生の時もそのような感じでした。 しかも、数学Cは受験時には選択制だったり、このジャンルが出題されないため、数学Ⅲの方を重点的に勉強してしまい、ほとんど勉強しませんね。 また、最近は数学を受験科目に選択しなくても理系学科に入れる試験制度が ある大学が増えてきたようですね。
--教育関係の話題はスレ違いにつきそろそろ終了--
156 :
名前は開発中のものです。 :02/08/04 01:58 ID:5a7Xd0hg
ID3DXMeshから頂点とインデックスの情報を取り出すにはどうすればいいのですか? GetVertexBuffer()で頂点バッファのポインタが取得できるみたいなんですが、 その頂点を格納しているIDirect3DVertexBuffer8がいまいちわからないのです。 フレキシブルな頂点フォーマットというのが8で導入されたみたいなんですが、 その頂点フォーマットのタイプとサイズはどこで得られるんだか、わけがわかんないのです。 チュートリアルでこのあたりまで解説してくれるとありがたいんだけどなあ>MSさん んー、というより本当はD3DX使いたくないんですけどね。 Xファイル読み込むにはこれが一番お手軽なもので・・・ どこかにXファイル簡単に読んでくれるクラス転がってないですかねえ。
GetFVF
158 :
名前は開発中のものです。 :02/08/04 02:06 ID:5a7Xd0hg
>>157 どうもありがとう・・・余分なものを一切書かないとこに貴方のセンスを感じる。
んで、IDirect3DVertexBuffer8::GetPrivateData()で得られるポインタに
データの本体が入っている、と。
でもこれは単なる配列なので、頂点フォーマットの構造体が無いとデータ取り出せませんよね?
GetFVF()で得られたフォーマットから頂点フォーマットの構造を得るには
どうすりゃいいんでしょうか。
>>156 IDirect3DVertexBuffer8::GetDesc
初心者程度の知識しかないくせに、なめた口を利いてんなよ。
「ヘルプ読め厨房!」がお似合いだ。
知識がないのは誰でも最初はそうだが、お前は必要な情報を探す気もろくにないだろ。
ふだんは2chで個人叩きと荒らしばかりやってるだろ。
IndexBufferって知ってる?
161 :
名前は開発中のものです。 :02/08/04 02:22 ID:5a7Xd0hg
やっぱこんな時間じゃすぐ答え返ってこないよなあ。 誰かこういうの作って!! ・1つのクラスが1つのXファイルを扱う ・格納される情報は、頂点、インデックス、マテリアル、テクスチャ(のファイルの名前) ・アニメーションは、パターンに番号が付いていて、1とか2とか指定すると "変換済みの"頂点を返してくれる(自分で行列の演算とかしなくていい)
僕はゲームの専門学校に逝ってます。 今は、就職活動中ですが、周りの皆が良く言うのは ”この業種での業界の求人が少ない”って話です。 僕的には???です。その辺の会社のHPに ”3DPG急募”って沢山在ります。 でも161読んで、何か解ったような気がします。 …それをPGが言うな!自分で作れ! 今時のゲー専生徒でも、自分で作ってるわ!(クラスじゃ無いけど)
163 :
名前は開発中のものです。 :02/08/04 03:27 ID:5a7Xd0hg
みんなして俺をバカにしやがって!! 調べるより聞く方が早いから聞いてんだろうがヴォケ! それが許されないなら掲示板は何の為にあるんだ言ってみろ! ゲー専生徒でも自分で作ってるだ?てめーらは学校の実習とかでやってんだろうが。 こっちはプログラムなんか夏休みぐれーしかできねえんだよ! その夏休みの間にDirectXマスターしようとしてるんだ。 てめーら俺に協力してくれたっていいじゃねえかよ。なんでそんな風に言うんだよ。 何にもやる気なくなっちまうよ。
164 :
162 :02/08/04 03:36 ID:???
学校でXfileの解析(読み込み)、自前制御なんか教えてくれませんよ。 どっちも、元から関数用意されていますので。 そもそもDirectXの授業なんて、殆ど無いに等しいです。 自分で必要だったら、自分でやってるだけです。 実習とバイトの合間を縫って。
>>163 もう少し簡潔に質問してくれ。
それとどれとどれが163の発言が分からないからどれに返答していいか分からん。
166 :
名前は開発中のものです。 :02/08/04 03:47 ID:y/qD5Xb2
>>163 >みんなして俺をバカにしやがって!!
ワロタ
167 :
名前は開発中のものです。 :02/08/04 03:51 ID:y/qD5Xb2
>>161 >"変換済みの"頂点を返してくれる(自分で行列の演算とかしなくていい)
どういう事?
頂点のワールド行列て事?
モーフィングとかやりたいの?
>>163 そういう風に言われると教えたくなくなる…というか係り合いたくなくなるが…
少なくともヘルプ読んでくれよ。
DirectX AppWizardが吐き出すCD3DFileクラスをちょっといじればそれくらいできるぞ。
この程度なら掲示板で聞くより調べた方が早いと思う。 これだけしっかりしたドキュメントが用意されているんだし。 ID3DXMeshのメンバを一通り調べるのに30分もかからんだろ。 GetFVFの使い方が分からないならサンプルのフォルダでGetFVFで検索すれば すぐに見つかる。
そうか夏休みだったんだな
あぼーん
調べ方がわからなくて聞いている罠
夏休みにもなるとどこからともなくスゴい人がやってくるね。 いやぁ、世界は広いねぇ。
おいおい、さすがにネタだろう… まぁスレが賑わうのはいいことじゃ(・∀・)
専門卒、大卒どっちが使えるのかってのは気になるところだがね。
使えるヤシは環境にかかわらず独学で使えるヤシになった訳で。
使える使えない以前に、大卒でないと書類審査ではねられる罠。 「うちは学歴にこだわらずちゃんとみてます!」なんて建前だよ。 いいかげん気づけよ、未来がある(といいな)厨房ども。 同じできる人なら大卒から取るさ。
大卒は教えればできるようになるからね
結局ね、偏差値70越えたら知識なんてあることが前提だし、 ペーパー試験で差になって現れるのは知識とか知性じゃなく、 「他者の意図を読んで想定された解答を出せるか」なのよ。 そういうのって馬鹿にされがちだけど、実際極めて重要なわけで。 また卒業のために論文書いたりプレゼンテーションをすることになるわけだけど、 その経験は、曲がりなりにも 「他人に自分の考えを理解してもらうための説明ができる」一助になるわけだし。 大卒である方が有利、っていうのは「技術・知識」一辺倒ではなく そういう部分も含めての話だと思いますよ。 偏差値70切ってる方については憶測しか出来ませんが…。
>181 はげ同。
偏差値70以上 ≒ 上位2.3%(正規分布と仮定) 残り97.7%のヤシは使えません。
学歴の話してる奴は、ゲ製の数少ない まともな話ができるスレをつぶす気なんだな?
>>184 はげ同。
とりあえず場の空気を読むことを学んで欲しい、若者たちよ。
「その話はもういいよ」という無言の声が聞こえないか?
>>184 はげ同、これは巧妙な罠ね
偏差値70以上の国立大(文系だけど)卒で、今だプーたろうですが何か?(´Д⊂
187 :
:02/08/04 20:42 ID:???
>186 文系は偏差値が何であってもクソということは定説です。およびじゃない。
あぼーん
DirectX のスレだったのか
入学式、「日本ゲーム業界を支えているのはゲーム専門学校の生徒です!」と高らかに 宣言したのはうちの校長でした・・・・・・ 欧米のゲームプログラマーはほとんど大卒だったのを知ったのはその1年後でした。
(゚∀゚ ) アヒャ!
このスレも終わったな・・・ 2ちゃんねる式の掲示板で、DirectXのみに的をしぼったのを誰か用意してはくれまいか。
(゚∀゚ ) アヒャ アヒャヒャ!
>>196 BBXとか、他にもイロイロあるじゃん。
ともかく、この伝統ある良スレを荒らすのはやめてくれ。マジで。
200 :
127 :02/08/05 18:52 ID:???
レスありがとう。
>>129 ステンシルって使った事ないんだけど、マスクするエリアがたくさんあっても重くならない?
まぁ実験してみればいいんだけど、時間がない…(T_T)
>>130 このD3DPRESENT_PARAMETERSでの方法って、
・SwapEffectにD3DSWAPEFFECT_COPY
・FullScreen_PresentationIntervalにD3DPRESENT_INTERVAL_IMMEDIATE
を設定するってやつ?これやってみても駄目だったんだけど、何か足りないのかな…。
ちなみに実験環境は「RIVATNT2/DX8.1/Win98」「GeForce3/DX8.1/Win2k」です。
>>200 一応説明しておくけど、D3DPRESENT_PARAMETERSで設定する方法ではGDI使用中は
Presentは呼んじゃ駄目だよ。ようするに画面は更新できないって事。
それとステンシルは使えないよ。ステンシルでマスクできるのはバックバッファ。
ダイアログやコントロールをマスクしないといけないのはフロントバッファ。
202 :
名前は開発中のものです。 :02/08/05 22:33 ID:WmYu1GTw
Win2k, DirectX8.1, VC++6.0, GeForce2MX 32MB にて… 1.DX AppWizardでアプリを新規作成(急須のヤツ)する 2.変更ナシでビルドする 3.そのまま実行する 4.ALT+ENTERでフルスクリーンモードにする 5.ALT+ENTERでウィンドウモードにする 6.ESCで終了 7.エラーメッセージのダイアログが出てVCごと落ちる ヽ(`Д´)ノなぜじゃああああああああああああああああああ
>>202 同じ構成でも俺の環境だと落ちなかったが。
ドライバ最新にしてみたら?
>202 Detonatorを変えてやってみることをお勧め。気休めだけど、 最新のよりもWHQL認定ドライバを使うと良いかも。当方Ti4200 のWin98、Detonator30.82(最新β)を使ってるけど、このドライバ では、D3Dを使ったプログラムのデバッグモードに入れない。 途端に落ちる。
205 :
名前は開発中のものです。 :02/08/06 02:53 ID:PAyNJocw
すいません質問です メインループで HRESULT hr; LPDIRECT3DTEXTURE8 texture; hr = D3DXCreateTextureFromFileEx(lpD3DDEV,"gazou.bmp",0,0,0,0,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,D3DX_FILTER_LINEAR,D3DX_FILTER_LINEAR,D3DCOLOR_XRGB(0,255,0),NULL,NULL,&texture); if(hr != D3D_OK){ return false; } texture->Release(); texture = NULL; と、実行させたのですが タスクマネージャを見ていると、メモリの使用量がどんどん増えていってしまう texture->Release(); texture = NULL; を入れているのでメモリは増えないと思ったの出すが、何ででしょうか?
while(1){ OutputDebugString("最適化ばかりしててコミケ落とさないでください!\r\n"); GameMain(); Test_205(); }
>>205 マジでそこが原因なの?
コメントアウトしてみた?
ついでに蛇足だけど、SAFE_RELEASE(dxutil.h)や
if( texture != NULL )
{
texture->Release();
texture = NULL;
}
したほうがよさげ。
208 :
205 :02/08/06 04:44 ID:A065mayA
>>207 問題のところをコメントアウトにして実行させるとメモリが増えるようなことは起きませんでした。
ためしに、別に小さいプログラムを作って同じ事をさせても同じ現象が起きなかったので
なにか、別のところが間接的に影響を与えているのかな、もう少し調べてみます。
209 :
205 :02/08/06 05:09 ID:???
解決しました。 ↓こいつが原因でした、何であーなのかわからんが、やっと寝れる。 /* * デバッグ ヒープのフラグを設定して、ヒープのリンク リストに解放 * したブロックを保持します。これにより、解放したメモリの不注意な * 使用を検出できます。 */ int tmpDbgFlag; tmpDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); tmpDbgFlag |= _CRTDBG_DELAY_FREE_MEM_DF; tmpDbgFlag |= _CRTDBG_LEAK_CHECK_DF; _CrtSetDbgFlag(tmpDbgFlag);
>メインループで メインループで確保と解放を繰り返してんのか!?Σ( ̄▽ ̄;)
211 :
202 :02/08/06 06:26 ID:???
おはようございます。
>>203-204 そう思ってドライバ更新したにもかかわらず
>>202 の状況なわけですよ。
ウィンドウモードなら何の問題もないので当面フルスクリーンナシでいくかぁ…
#フルスクリーンで遊ぶユーザーが多いと聞いたが…
212 :
名前は開発中のものです。 :02/08/06 06:29 ID:gQhH5TM6
213 :
名前は開発中のものです。 :02/08/06 08:21 ID:mY.DofG6
>>209 _CRTDBG_DELAY_FREE_MEM_DFのフラグがあると、メモリ領域は解放フラグをつける
だけで、実際には解放しません。この場合、解放するのはプログラム終了時。
メモリ不足の状態を再現するのに使えるらしいです。
MSDNにもちゃんと書いてあるので読もうね。
ちなみに、_CRTDBG_LEAK_CHECK_DFはプログラム終了時にリークがないかチェックします。
215 :
◆KeJ3pYYQ :02/08/06 09:51 ID:HhMbK2lE
メタセコイアで、半球を二つ組み合わせた、くす玉みたいなオブジェクトを作って、 それをxfile書き出しして表示させてるんですが、ぴったり二つくっつけてもまん丸 に見えません(少し縦に細く見えて、つなぎ目が目立ちます)。 最初から球状のオブジェクトなら、ちゃんと丸く見えます。 半球状の物を二つくっつけて、ちゃんと球状のオブジェクトとして見せるにはどうすれば ヨイのですか
216 :
127 :02/08/06 09:54 ID:???
>>201 ぐぁ。という事は、Dx8でフルスクリーンで画面更新しつつ
GDIを使うのは不可能ってことですか。
どうしても必要なら、DX7でやるかDX9を待つしかないのね…(;_;)
またはそれぞれ自前で実装するってのもあるか。
>215 境界の法線をなんとかしる メタセコにその機能がなければどうしようもないんじゃない? もしくは法泉のつじつまが合うように工夫しる<だめかも
うちのIMEは何度もコメントで「法線」つかってるのに「法泉」かぁぁぁ
219 :
◆KeJ3pYYQ :02/08/06 14:16 ID:HhMbK2lE
>>218 >メタセコにその機能がなければどうしようもないんじゃない?
なんて事を言うんですか!じゃあどうしろと言うのですか!!!
ところで、xfileをロードした後にプログラムで球を二つに割るというのはどうでしょう
まあそれも手だわな
221 :
205 :02/08/06 15:47 ID:???
>>214 なるほど、原因の理由がわかりました
ありがとうございます。
>>219 割れてない状態のXファイルと割れた状態のXファイルを2つ用意するとか。
半球ぐらいなら最初からプログラムで生成してもいいんじゃないかの
>>219 >なんて事を言うんですか!じゃあどうしろと言うのですか!!!
激しく厨房臭い
225 :
◆KeJ3pYYQ :02/08/06 20:44 ID:w4Cz3L1Q
>>224 すんません、そこは失笑するところなんです
あとポリゴンを細かーくするとかっすかね・・・
テキスト形式で吐き出して、自分で頂点一つ一つ修正しろ。
なんで三角関数使って動的に生成しないのん?
>>227 そういう例外的なことが出来るほどプログラムが抽象化されてないんです
ステンシルバッファで切るとか・・・ まあどっちにしても変則的になるが
Xfileはそのまま二つ読み込んで、中心点を使って法線を張り直せばいいのでは・・・? 中心点と円の表面の点を通るベクトルを法線にすれば、継ぎ目は見えないのでは?多分。
俺はアマちゃんだが、法線ベクトルがよく分からない。 法線はポリゴンの三頂点の内積とは限らんの? 法線をxfileに持たせるとか持たせないとか。その辺がよくわかんないズラ
ここでの法線は頂点法線 DirectXのヘルプにも載っていること 尼ちゃんも風呂も関係ない
なんのことはない、「英語を読めないと2流以下になる」という 当たり前の結論が当たり前に出ただけに留まりましたな。
頂点法線て何スか
つうか内積はスカラだろ・・・外積と書きたかったんだろうが、、 取りあえず高校から勉強しなおせ。話はそれからだ。
つまり、知らないと
だらだら質問してんじゃねえ。少しは自分で調べろ
サクッと教えてよ
死んでも嫌
ヽ(`д´)ノ
あぼーん
高校の幾何レベルの知識がない奴に恵む気にはなれんな。 いい機会だから先生に聞いて見ろ。見直されるぞ(w
あぼーん
知ったか厨と終了厨が来た
食物連鎖の関係だね。 (食う)>(食われる)で表記すると、 終了厨 > 知ったか厨 > 教えて厨
教えて厨は知ったか厨に食われるのかYO
終了厨が連鎖の頂点かYO
知ったか厨ってのは高校幾何レベルの説明を御丁寧に説明していい気になる 奴のことかと思った。
>>228 自分のプログラムじゃないの?
だったら自分で半球の.x fileを書き出すプログラムを書けば済むかと。
つーか、メタセコとかってどういう基準で法線計算してんの?適当?
アホか。物体を分けてる時点で頂点が共有されてないんだから 当然法線も違ってくる 切断面に透明ポリゴン置いたら回避できねぇかな? (DirectXで表示するなら、また別の問題があるけど)
>>251 だから、その頂点が共有されてない場合の法線の取りまわしについてだよ
意味がわからん。 メタセコの仕様に文句あるなら自前で計算するしか無いじゃん 帰れよ
>>249 そうなんですが、実際に出したいのはもうちょっと複雑で、モデラーでないと作れそうにないんだよ・・・
つーか、球にそういうテクスチャ貼ってアルファテストで抜きゃいいじゃんという気がしてきた
球体のメッシュにマテリアルに貼り付けたいのですができません。 LPD3DXMESH mesh=NULL; D3DMATERIAL8 mat;を宣言 Init3D関数内で mat.Diffuse.r = 1.0f; mat.Diffuse.g = 0.0f; mat.Diffuse.b = 0.0f; mat.Ambient.r = 1.0f; mat.Ambient.g = 0.0f; mat.Ambient.b = 0.0f; mat.Specular.r = 1.0f; mat.Specular.g = 0.0f; mat.Specular.b = 0.0f; mat.Emissive.r = 1.0f; mat.Emissive.g = 0.0f; mat.Emissive.b = 0.0f; としてマテリアルを赤く設定したのち D3DXCreateSphereで球体メッシュを生成。 Render関数内で lpD3DDEV->SetMaterial(&mat); mesh->DrawSubset(0); とやったのですが、表示される球体は真っ白です。 なぜこうなってしまうのでしょうか?
>>254 難しく考えるとハマるという良い例になった
レンダーステートとテクスチャのステージステートの設定。 わからなけりゃフレームワークつかえ
DX8で IDirect3DDevice8::CreateAdditionalSwapChainの オモロい使い方てありまへんか
>>255 ライトの設定がおかしいとそうなった気がする
255です。 テクスチャ貼り付けちゃえば赤くできるのですが、ちゃんとマテリアル使えるようになりたいと思いまして。 ライトはつかっておりませんが、 InitRender関数内で lpD3DDEV->SetRenderState(D3DRS_LIGHTING, TRUE); とすると、画面上のポリゴンが真っ赤になってしまうのです。 じゃあ、球体を描画する前にTRUEにして終わったらFALSEに しようとおもったのですが、そうすると球体が見えなくなってしまいました。 どうやら、テクスチャを貼り付けたポリゴンのみに作用しているようなのです。
255です。 アルファブレンディングの設定をFALSEにした後に描画したら 赤く表示することができました。
>>261 まさかとは思うが、透明度を0にしてないだろうな?
どんな色をつけてライトを当てても透明度が0なら色はつかないぞ。
え、マテリアルもRGBAのようなアルファ値があるんですか? mat.Power=1.0fとやればいいってことですか?
D3DMATERIAL8 の定義をよく読め。 あとこれはどうでもいいことだけど、matと略すと行列と間違えるから、 俺はmtrlを使っている。ま、こりゃどっちでもええことだけど。
そうそう、matは使わないよね 俺はmateだけど(ダサッ mtrlみたいな一文字飛ばし略語もなんかいやん
一文字飛ばしじゃなくて母音飛ばしだよ。よく使う手。mjskみたいなもん。
mjskってなに?(俺アホ?
270 :
名前は開発中のものです。 :02/08/08 12:05 ID:/HiLzdeI
投影テクスチャ使ってキャラの影を落としたいんですが どうすればいいんですか?
ん?
漠然とした質問は返事しにくい。 要点をバシッと決めてくれ。
VCつかってやってるんですが、入力支援機能を使用可能にするにはどうすればいいのですか?
統合環境のエディタでソース開いて「::」とか 打ち込むと出てくるうざいアレのこと?
例: ワークスペース - FileViewに、「DirectX」というフォルダを作る DirectXのincludeファイルをプロジェクトに追加。 そこで追加したファイルは邪魔なので最初に作った「DirectX」フォルダに分けておく とかすれば、入力支援機能でDirectXの構造体を使えたりも駿河
もうちっと詳しく教えてくださらないでしょうか?
278 :
> :02/08/08 21:52 ID:???
>>276 ダブルクリックしてファイルを開きたいときに見つけづらいからでは?
>>277 もう十分詳しいと思うぞ。理解力が足りない
どうも、理解できました。
DirectX8で2Dアクション(マリオのような)作る時って、 スプライトを使うべきか使わないべきか。
面白ければどっちでもいい、が遊ぶ側の本音だが、 いまどき横スク画面は壊滅的にダサくてダウンロードすらされない。 VB厨が垂れ流す駄ゲーと区別つかん。
HSP厨もな。
285 :
名前は開発中のものです。 :02/08/10 19:58 ID:PD7Pi8C6
レンダリングステートの変更のコストを抑えるために、 少しの違いでもステートブロックを作ったら ステートブロックの数が爆発しました。 ピクセル関連のステートだけですが、それでも64個。 もうひとつの選択肢として、レンダリングステートとテクスチャステージステートの キャッシュつきラッパー関数を作るのもあります。 みなさんどうしてますか?
>>285 ステートブロック作っても切り替えを実行しちゃったら変更コストは
あんまり変わらんのでは?
ステートごとにグループ化する努力のほうが効きそうな気がする
287 :
名前は開発中のものです。 :02/08/10 23:57 ID:9NCQqQXk
ステートの変更なんてたいして時間かかるものじゃ無いと思うけど。 どうせDirectX内部のどっかにある変数を切り替えてるだけだろ? 実際のレンダリングやら衝突判定やらにかかる時間に比べたら微々たるものだと思う。
ステート変更が入るとビデオカードが描画終わるまで待たないと いけないからその分遅くなるよ。 CPUとGPUは非同期に並列に動いているから、単純に変数を書き換 える程度じゃ済まない。
そういえば、レンダーステートの話で思い出したけど、PureDevice指定という のは、レンダーステートのGetが全て出来ない代わりに、GPUの高いパフォーマンス を得られると言う認識でいいのかな? プログラムを検証していて思うんだけど、SoftwareT&L環境下では当然 ながらパフォーマンスが頭打ち。上手く作ればもうちょっと速くはなるだろうけど、 HT&Lには到底及ばない。GeForce3世代になって、その差が目立ちはじめたけど、 皆さんはどの辺のパフォーマンスに主眼を置いてプログラムを作ってるのかな? 最近はHT&Lを前提にしたゲーム(Unrealエンジンとか)も増えているようだけど。 というか、この辺は新しくポリゴン数スレみたいなものを作ったほうが良いですか? 自分みたいなヘタレだと、最新のビデオカードのパワーは手に余る・・・。
softT&Lなんて無視に決まってんだろ。 差がありすぎて両立は無理
SoftT&Lは、市販ソフトでも「遊べるか知らんけど動く」までやれば十分。 今年中だと、Soft頂点シェーダは微妙。 Doom3で底上げ期待。
近頃はHWT&Lを省略したチップが増えてきたから微妙だな。 CPUが速くなっているからそれで補うってのがメーカーの言い分だけど、 速いCPU使ってる奴がそういう安物ビデオカードを使うとは思えない。 結局、安物ビデオカードを買う奴はCPUも遅いんじゃないかな。
>>287 たとえば
ステートAに切り替え→描画1→ステートBに切り替え→描画2→ステートAに切り替え→描画3→
よりも、
ステートAに切り替え→描画1→描画3→→ステートBに切り替え→描画2→
のほうが高速だよ。
>>293 ステートAに切り替え→描画1→ステートBに切り替え→描画2→ステートAに切り替え→描画3→
はリア厨でもやらんだろ~
確実に遅い例にはもってこいだがちょっとワラタよ
メッシュの透明に描画するには、ライトの宣言は必須なんですか?
俺はやるよ つか、時間かけてる間に性能が上がるので最適化いらん(泣 Xファイル使ってるような奴は皆そうでしょ。 細かいコントロール不能だし そーでなくてもピーク性能ってよくわからんよね 測定方法もなんか難しいつーかコツがあるみたいだし…
>>293 半透明オブジェクトや、エフェクトで加算合成じゃないビルボード
のZソートで結構ある
フィルレートが一番ネックになるので結構あるよ。 俺のマシンは出来るだけ前から書くのが一番だ。 Xファイルの連打ってステート変更もしちゃうのか??? そら使いにくい罠
299 :
名前は開発中のものです。 :02/08/11 07:31 ID:q2d3/uDw
Xファイルの質問です。 XファイルのテンプレートにAnimationKeyというのがあって、 そのメンバにキーの種類を示すkeyTypeがあり、ヘルプを見るとこの値の意味するところは 0:回転、1:スケーリング、2:位置、3:行列キー となっています。 ところが、とあるソフトでXファイルを吐き出すと、これが4というものが 出る場合があります。4は一体何を示しているのか、分かる人がいたら教えて下さい。
スキンメッシュのサンプル読む限り 4が行列キーだな 3は登場しない前提で対応するコードが書かれていてない
すまん。書いてあった。エラーです(藁
とあるソフトが何か気になる…
今まで何も考えずにD3DXVec3TransformCoordを使っていましたが、 何気にヘルプを眺めているとD3DXVec3Transformを発見 Coordのほうには「・・・その結果を w=1 に射影する」と書かれているのですが これは無駄に/wが計算されていたのでしょうか???(普通のトランスフォームだから常にw=1) まさに鬱だ市悩
と思ったらD3DXVec3TransformはVECTOR4用だった・・・ でも「・・・その結果を w=1 に射影する」が気になる 結局よく解らんので自前にしよう。そうしよう。 やっぱり鬱だ市悩
305 :
名前は開発中のものです。 :02/08/11 13:09 ID:aO/cH.IU
スキンメッシュで質問です. 頂点法線も頂点と同じように回転の重ね合わせで求めるのですかね. n' = α0*n*R0 + (1-α1)*n*R1 毎フレーム毎ポリゴン外積,正規化していられませんよね 間接ごとに別れたモデルをワンスキンにしようと思ったのですが,LVERTEXにしたらせっかくのワンスキンが台無しかと思いまして. skinnedmeshサンプルはちょっと読む気になれませんでした.お願いします.
306 :
305 :02/08/11 13:28 ID:???
あ,結局正規化は必要ですね. ブレンド無しのワンスキンモデルにしておくのが無難ですかね. ローポリにする技術も無いですし.
よくわからんが、一般的には法線に回転をかけるような事はしないYO 光源を回転させて法線に掛ける。この方が早くてウマー
えっと,ゲーム内で他にもいろいろオブジェクトがあるので光源を回転させるわけには行かないのですが. それと自分で頂点計算していて,バーッテクスシェーダーとかではないのですが...
スキニングするときは法線の合成してからライティングするのが普通だと思う
スキニングするときって法線合成するの? 書籍には座標の合成の仕組みばかりで書いてないよねー 正直しなくても誤魔化せるような気もするんだけど バンプマップの法線なんかどーすんだー
>>311 8.1のskinnedmeshのシェーダー見れば?
必要ならばやるべし。
nVidiaのサンプルだとDotProduct3バンプの
基底ベクトルの合成もやってる
SmartJoyパッドを使って 感圧ボタンをDirectXでどうしても使いたい。 あれ使えれば、かなり幅が広がってくるのにね。
314 :
305 :02/08/12 02:55 ID:???
>>309 わかってないんです...
>>310 頂点と同じように(移動はなしで)ということですね.
>>311 まだ実際にコード書いていないのでいろいろ試してみます.
計算が倍以上膨れ上がりますからね.
>>312 頑張って読んでみます...
315 :
305 :02/08/12 09:01 ID:???
500△ポリのモデルで試しましたが、 複数のボーンから影響を受ける頂点が数十個だったので法線計算してもぜんぜん重く無かったです.
>>313 SmartJoypad自体が対応してないと思われ
>>315 ローポリ過ぎない? ゲームによって違うだろうけど。
これから出るゲームなら、デザイナーがどれだけ頑張っても
「ショボイ」で片付けられちまって報われない。
318 :
305 :02/08/12 10:21 ID:???
>>317 確かにショボイです.
デザイナ=プログラマ=私(素人)なので報われなくてもいいのです.
ある程度形になって,報われたくなったらモデルを外注したいですね.
DirectX8.1SDKをインストールしたんですが容量不足で 失敗したらしく、アプリのアンインストール項目にすら 出ていなかったので、フォルダを削除しました。 以後インストール出来ず、OSの再インストールすら青い 画面で起動不能に・・・2日かけて再起動まで成功。 DirectXを再インストールするにはどうすれば良いの でしょうか(;´Д⊂)
>以後インストール出来ず、OSの再インストールすら青い >画面で起動不能に・・・2日かけて再起動まで成功。 感想で悪いけど、OSをクリーンインストールしなおしたほうがよさげ…
321 :
名前は開発中のものです。 :02/08/12 13:38 ID:ui+7Gm17
dxは普通に上書きインストール可能だと思うが ブルースクリーン出るマシンがいかれてんじゃ? だいたい、容量不足で失敗つーのも、珍しい。 最初にチェックあるのに(あてにならんが
322 :
319 :02/08/12 17:48 ID:???
preparing to install(つまり一番最初)で 1628:Failed to complete installation.って 出てまうですよ(;´Д⊂)鬱だ氏のう・・
323 :
まあ :02/08/12 18:27 ID:???
今後不安定なまま制作を続けてもしょうがないのだから クリンストールしちゃいましょう
>319 オーバークロックとかしてないか? そもそも、DirectXのSDK入れたぐらいで容量が足りなくなるぐらいHDDに 空きが無かったら、Windowsそのものがちゃんと動かない気がする。
325 :
319 :02/08/12 22:50 ID:???
HDDの容量は600Mほどあるはずなんですが・・・ 8.0aでも駄目だったらクリーンインストール汁(;´Дm)
少ねぇ 安いんだからそのくらいケチるなyo
win95だったりして
>>326 再インストールが億劫でウチも似たような感じだ。
開封してないドライブが山積みになってるほ。
329 :
名前は開発中のものです。 :02/08/13 03:23 ID:PImLDq+L
DirectX8.0 のスプライトを使って描画をしてるのですが、 画像がぼやけてしまいます、ぼやけないようにするには どうしたらいいのでしょうか。
過去ログを読めばボケ解消 頭のボケは直らんがな
うむ。 過去ログにズバリそのものがでてる。
332 :
329 :02/08/13 07:29 ID:mgK0hkIz
くっきりできました。 テクスチャーの読み込み時に変なフィルターかけてました
333 :
319 :02/08/13 08:43 ID:???
8.0aでインストール出来ました(´・ω・`)thx
334 :
名前は開発中のものです。 :02/08/13 18:46 ID:sLcDe9s2
みんなバージョンいくつで開発してるの? 8.xは情報があまりないから7をダウソ中(鬱
8以降でフォントが手軽に扱えなくなったのが辛いね。 ゲームの開発だったら画面に文字入れないと辛いだろうし、 当分の間は7がお手軽でお勧めだと思うよ…。
つーか、8が一番使いやすい
3Dを扱う場合は楽だよね。<8 特に初期化が。
Builder使いにはどうなんでしょうね
Builder使いは今でもDDraw3でシコってなさいってこった
シコシコシコシコ・・・ハァハァ(;´Д`)339さぁん・・・ゥッ
ポリゴンの表示処理で悩んでるのですが、 1) 好きな時に表示 2) 1回のBeginScene()~EndScene()間で一括で表示 3) 2)を行った上さらにデバイスを極力いじらないようプリミティブをソートして一括で表示 最も簡単なのは1)なんですが、速度が気になります。 3)はテクスチャだのαブレンディングだのを考えるとあまり効果がなさそうです。 みなさんどうしてますか? 上記の方法以外の方法とかもあるんですか? それとも「そんな大差ないよ」ですか? お聞かせ願います。
すぐに描画するコマンドと バッファに溜め込むコマンドと バッファ内を描画するコマンドと バッファをソートするコマンド を作る。後は好きにする 最後の処理にバッファ内に未描画のものが残ってたら、自動的に(ソートして)描画
キタ----(・∀・)----ッ!! Builderで付属のサンプルを動かすことに成功。 やっとヨチヨチできそうです。 ごめんね、庭球で。
がんがれ
builder捨ててアカデミックでも買えよ
メッシュ用データーを色々いじる(DX形式に再編してくれたりSTRIP作ってくれる)ライブラリどっかにない? あんま省力化には興味ないかな? STRIPはNVidiaの奴がいいのかな
347 :
名前は開発中のものです。 :02/08/16 16:03 ID:cDFx8JRk
DirectSpriteて加算合成できますか?
DirectSpriteって何ですか?(藁
DX9で導入されるスプライト専用API
そんなもん ない
351 :
374 :02/08/16 17:59 ID:???
ごめん DirectX8のスプライトのことです。
初歩的な質問です。 フルスクリーンにすると他のウィンドウを操作することはできないんですか?
できる
「初歩的な質問です。」ってよく見るとすげぇおかしい
どういう判断で初歩的と判断できるのか、小一時間問いつめたい
Spriteつかわんからわかんないなぁ Textureなら加算合成できるけど… …Spriteで加算合成ってどういうときに使うんだ?
>>356 君はSpriteもTextureも分かってないよ。もしくはへんな理解。
DrawSubsetは遅いんですか?
359 :
名前は開発中のものです。 :02/08/17 02:20 ID:MCkIbjVq
誰かDirectXの全体像をUMLで書いた人って居ませんか?
360 :
名前は開発中のものです。 :02/08/17 02:55 ID:FQs5sThb
一気にクソスレ化しましたね
元からクソスレだよ
昼夜のあるゲームって、普通はどうやって作ろうとするの?
363 :
ポヤッチオ作れ :02/08/17 17:56 ID:IsKEPd3F
現実の時間経過とは別に、ゲーム内世界の時間経過という要素を
導入する手法。多くはRPGにおいて、登場人物の台詞や行動を時
間毎に異なるものにすることで、人々の生活感を表現する。SLGで
は能力や属性が昼と夜で変化するユニットとして用いたりする。
昼・夜の二値でモデル化することが多いが、もっと細かく分けること
も珍しくない(ギャルゲーなど)。
しかしそもそもDirectXじゃねえし、
どういう昼夜がやりたいかわからんよ。
>>362
ambientライトや街頭など(Pointライト)とかの値の事じゃね?
義務教育で「質問の仕方」と「検索の仕方」ってのを必須科目にしてほしい。 最近特に思う。
ライトの色とかか?
>366 最近は親も解ってないようだから
つか、普通、義務教育終われば、身に付いてる筈なんだが…
むしろ国民の義務に汁
質問の仕方はともかく、 検索の法はまた別のスキルじゃね? まぁ、考える頭があれば問題にならないけど。
374 :
362 :02/08/17 21:10 ID:???
箱庭モノとかの 聞きたかったのは 街(近代的なの、例えば夜は街灯や行き交う車のライトが点くもの) の絵とかをイマサラ256色平面で書きたくなかったんよ。 DirectXすれだし、グラフイツクに関してすてす。 稲光、新月、満月、晴れ、曇り、雨、夕焼け、夏、冬は積雪、とかのヤシ。
好きなタイプのライトを設置して色を設定するだけじゃん。
376 :
362 :02/08/17 21:17 ID:???
>375 それだけだとちょっと違うかった
どう違うんだよ
378 :
362 :02/08/17 21:35 ID:???
影の濃さかなー。 うー 積雪状態への移行は現状でも一気に切り替えしか無理なのだろうか・・・
>362 真面目に聞きたいなら真面目に書けよ
うーとか言う前に解りやすく質問まとめろ
381 :
362 :02/08/17 21:54 ID:???
どうやら義務教育が足りていないようでした。 失礼しますた。
「○○みたいなライティング処理したいんです。 △まではできますが□がわかりません。」 やや厨くさいけど、具体的で答えやすいかもしれない質問の例。
383 :
名前は開発中のものです。 :02/08/17 23:18 ID:KfqT+kJi
>>378 雪のかぶってるテクスチャと
かぶっていないテクスチャを用意して
α値を積雪具合に近似して合成・・・
くらいしか思いつかんね
雨なら雨跡とか綺麗に出来そうだけど(っていうか完璧?)、
雪だと厳しいかな?
メガデモなら可能かもしれないけど、
ゲームに使うのはちょっと無理かなぁ?
雪の照り返しを再現できてないって事か? リアルタイムは無理なんじゃないの。
385 :
362 :02/08/17 23:48 ID:???
やぱり無理っすか・・・ 五・六年後に期待しよう・・・ ところで、DX9はちょっと楽しみ。 機能が、ではなくて、どれぐらい環境が分散しちゃったり、 プログラマーの能力が単純比較し辛い状況に陥るか、とかが。
もうすぐだから、まぁ待て。
そうか。お前らみんなブロードバンド対応か。チッ 感想聞かせてください。
( ´,_ゝ`)プッ
>>388 貧乏人はネトゲやんなくていいよ
頼むから早く夏休み終わってくれ。(切実
>>391 ログ読めば、ここがずっとこの調子で来てることに気付くぞ普通。
394 :
:02/08/18 15:38 ID:???
Microsoft DirectX Mailing Listで読んでないメールが5000を超えました。 わーい(鬱
ゲーム開発の有名なMLって何があるんですか
海外で良いなら2つほど。 日本でもALICE softの開発者の誰かが開いてたようだけど、 ページが行方不明。
話がとまっとるのー 入退会サーバー落ちとるのー
そのセミナークソじゃん 過去数回でたけど無駄無駄
セミナーなんかで本気出されてもな
セミナーいかなかったら何時寝てるの?
??過去とかじゃ無くて… 今回の話なんだが… 今回は、マイクロソフトが協賛で、DirectX開発のチーフが来日、 講義が在るんだが、開発者より解るの? 皆、すごいんだんね…
開発チーフが来ようが雑誌に書いてあるような 説明するだけだよ それにDX9のハードを先行して触ってる奴以外は質問しようがないだろ そーいう人はイチイチ質問する程レベル低くないし 全く無駄とはいわんが。行く必要はない
>来いや!ゴルァ! 行くぞ じゃないところが関係者ですか? 毎回盛り上がらないから、必死だな Soft別のは 金払ってなんで宣伝聞かなきゃならんのつー内容だし ゲーム会社のは サパーリノウハウ明かさないし もうやめたら?
無料なら参加するよ。うん。
>ゲーム会社のは サパーリノウハウ明かさないし ノウハウって具体的にどういう事が聞きたいの?
日本版gems
プログラムに目を通してみたけど、DX9のセミナーって1つだけじゃん。 2-1-Aや2-2-AもDX9の話は出てきそうだが。 目玉は2-3-Aのエリアライティングじゃない?
毎回「今回は面白い」「今回はためになる」って言われて参加してるんだけど… 正直、時間の無駄だったことがほとんど
Webで情報とった方が早いし、安いし、詳しいよ Webで情報取れないような奴がセミナーで話し聞いたところでわからないしね
前どっかのスレで「仕事中に検索すると怒られる」と言ってた奴がいたが、 そういう糞な会社が金だして従業員を参加させるのがその手のセミナーだ。 自腹で行くこたぁないよ。
413 :
名前は開発中のものです。 :02/08/21 20:15 ID:gBdbJDqq
DirectDrawだけじゃ半透明とかアルファブレンドの処理ってできないのね…。
>>414 DirectXなんて普段使わんもんだから。
どーやらDirect3D使わないとだめみたいね。
無理ぽ
アルファ処理だけなら自前でやったら?
417 :
名前は開発中のものです。 :02/08/21 20:52 ID:gBdbJDqq
できなくは無いと思うんだけど・・・ やっぱ速度遅いですねぇ。
あ、あげちゃった。
>>417 やる前から速度がどうこういって結局何もやらない奴か
実用的な速度になるかどうかは作ってみてから決めればいいだろ
でも、結局Direct3D使った方が簡単な気がする・・ 速度も速いし。ビデオカードに3D機能が必要になるけど。
>>420 アマチュアが作るときくらいは、その位環境を絞ってももういい気がする。
逆にアマチュアだからこそ最適化に凝りたい、と言う人もいるだろうけど。
でも、X9からはD3Dが最初からGDIに組み込まれて半透明の転送も
サポートされるんだっけ?
423 :
:02/08/22 02:26 ID:7yeuCaf2
危険な香り ―プログラミングに対する認識が変わる 高校生のころ、 2chの「鬱だ氏のう DirectX」スレッドのタイトルを眺めただけで興奮したものだ。 情報交換や雑談としてためになる、というより、 こういうスレッドはプログラミングに対する認識が変わってしまうという、 危険な香りも感じた。 その感じはもちろん正しいものだった。 DxirectXのバージョンアップはプログラマーにとって危険なものだからだ。 脳のOSとなるようなSDKは、決して安全なバージョンアップに堕することがない。 だから「DirectX9」に期待する。
> 脳のOSとなるようなSDKは、決して安全なバージョンアップに堕することがない。 どなたか人間の言葉に翻訳してください。
>>424 個人の感性は世界をかけめぐるインターネット時代の
充実したWebサービスや高度な分散システムにとって、
VisualStudio.Netはもっとも優れたソリューションといえます。
Webブラウザのセキュリティホールのような避けることが
困難なトラブルにも迅速に対処するインテリジェント・
パッチアップ・サービス。世界のハッカーたちによる、
さらなる挑戦があなたを奮い立たせます。
>>424 これだろ
http://game.2ch.net/test/read.cgi/gamedev/1029865211/70 混沌と欲雲が凝縮した2chへようこそ!
無からのコンテンツ・ソリューションをより快適に、よりリッチに
円滑に進めるべく我々ハッカーたちは、様々なアプローチで各々の
顧客に対する要望を可能なかぎりスピーディにそして的確に解決することを
約束します。
我々は貴方の競合他者(主にニチャンネラー)に対抗しうる強力なサポートと
堅牢なソフトウェア・コンポーネントを迅速に提供するばかりでなく、
メンテナンス、トラブルシューティングなどご購入後のあらゆるアフターサポートも
余力余すことなく提供することを誓って止みません。
さぁ、我々ハッカーの扉はこちらから↓
スルー↓
あぼーん
あぼーん
厨房も厨房なりに有意義だと思ってるスレに終了だすから報復されるんだって
ヘルプにのっている球状環境マップのテクスチャ座標を求める式 u=Nx/2+0.5 v=Ny/2+0.5 なんですが、uv座標のv軸って下向きですよね。 これだと上下ひっくり返ってしまう気がするんですが、僕が何か勘違いしているのでしょうか。
座標系というものを勘違いしてます
やはり僕が勘違いしているのですか…う~んわからない。 法線NxNyはローカル座標でuvはテクスチャ座標ですよね?
>>430 有益なスレなら張られても意味がない。気にしないことだ。
>>436 はい、そうなんですが…
今のところはv=-(Ny/2)+0.5とすることで目的の描画をさせることができています。
でもホントはこんな修正する必要ないんじゃないかなあと。
DirextX9のβをインストールしました。特に問題なく使用できているのですが、 最近「期限が切れています」と、新バージョンへのアップデートを促すアラートが ちょくちょく表示されてしまいます。DirectX9の新βなどは、あるのでしょうか? 個人的には9を使いつづけることよりも、むしろ8.1に戻したいのですが、 どうすればいいでしょうか?再インストールですか?
441 :
:02/08/23 14:35 ID:???
DirectMusicの3Dサウンドバッファの取得で詰まっています。 自分の周りの色々な方向/位置から音が聞こえてくるようにしたいのですが、 GetObjectInPathで取得したバッファにSetPosition等をすると Pathに含まれる全てのサウンドの位置が変わってしまいます。 音声ごとのバッファの取得方法を教えていただきたいです。 DirectSoundで自前のでバッファを作成して 自前でwavの読み込みをすればできるような気もしますが、 なるべくDirectMusicをベースにして作成したいです。 ご教示よろしくおねがいします。
>>422 アルファブレンドのソフトウェア処理で最適化に凝るのも良いけど、
プログラマ以外の人にそれを見せても何とも思われない・・・
ハッキリ言って、ハードウェアをバリバリ使って作った方が断然素人ウケする。
そりゃ、他の人が作った非常に良く出来た最適化コードなんかを見ると
スゲーと思いますが、そんな事は一部の人間しか分かりません。
人気ゲームを作るには、ハードウェア処理優先で作るほうが絶対良いですよ。
今さら語り尽くされたαブレンドごときで最適化云々言っているのは かっこいいどころか恥ずかしい
確かに。
なんか面白い物作ってる奴のHPとかしらない? 結構、回答のレスがつくけど、そーいう人は何作ってんだ? 僕はラッパーつくっててクラス設計で頓挫中。しばらくほっておくと 綺麗に忘れてるので同じところ回ってます
>>445 ちょっと触って、何か作ろうとして、途中であきらめて、
単なる技術デモ・検証程度で終わる人が多いかと。
本当に出きる人は本職の方が忙しくて面白いもの作ってる暇がなかったり。
(国産XBOXゲー、デキはいいと思うけどね・・・売れないだけで)
>検証 ゲームとして要素を組み合わせるまではいかないで、疑問点や 納得いかない点を突き詰められたらやる気失せる、とか?
「あとはすごいモデルとすごいBGMとすごいシナリオと 製作時間さえあれば、このゲームは史上空前のものになるな。 俺って天才だ・・・・」
>>447 ゲームに組み込もうとしたらデータ形式の変更やレンダリングエンジン
の組みなおしが必要だったりして、すでに出来上がってるのがあると、
そこまで手を出せないということかもよ
450 :
名前は開発中のものです。 :02/08/24 16:09 ID:nIDqas2v
>>437 >>432 の式は一般的な球状環境マップを扱う公式。
んで、テクスチャが上下逆なのはDirectXというかWindowsの仕様。
ただそれだけ。
451 :
名前は開発中のものです。 :02/08/24 16:27 ID:nIDqas2v
やる気が失せるというか、自分が作っているコーポネントに被ってるやつが SDK等にあったりするとガクッとくる。 nVidiaのテクスチャ用のクラスとか、自分が作ろうとしていたものより 全然良い出来なんで、このまま作るかそれとも割り切ってこいつを使うか迷った。
>>451 優越感に浸るために見てるの?
自分より優れたものを見たいから見てるんじゃないの?
>>452 ?車輪の再発明の危険と、資料探しの時間浪費のジレンマに
悩んでいるだけのように見えるんだけど?というかレス番間違い?
見つけたライブラリの出来が良くても、自分の予定を組み上げて
しまっているのなら、そのまま元の予定で行く方が堅実かも。
確実に楽になるなら別だけど。
っていうか、人のライブラリ使いたくないよね。勉強にならんし。 本当は車輪作ってる場合じゃないんだろうけどね
455 :
名前は開発中のものです。 :02/08/24 20:46 ID:BJyMAVuF
質問です。モデル間の衝突判定を簡略化するため円柱を使おうと思うのですが 円柱と三角形の交差判定のアルゴリズムでいいのありませんか。
>>454 勉強と実製作はある程度割り切って考えた方が良いと思う。
というか自分に言い聞かせてるような物だけど。
>>450 レスどうもです。なるほど、そういうことですか。
OpenGL向けのページでも同じ式だったのでおかしいなとは思っていたのですが。
>>455 DirectXの質問では無いような気もしないが、
もう普通に考えた通りで良いんでは?
先ず円柱を上部と下部の円で捉える、そして其の二つの円の
中心を結ぶ線分、この三つ(上部円、下部円、線分)と
三角形から導かれる平面との判定をすれば良いのでは?
……まさかソースくれって話じゃ無いよね?
>>458 いかん!違うスレのコテハンつけたままだ。
逝ってしまった。2Ch初心者バレバレか…
>>458 後、円の半径の値で、線分と点(三角形の各頂点)との判定も必要か。
461 :
名前は開発中のものです。 :02/08/25 03:18 ID:Kq2PLf7r
DirectInputのマウス座標を絶対値と相対値、両方取得するにはどうすればいいんですか? システムマウスのIDirectInputDevice8オブジェクト2つ作ることってできるんでしょうか? 自分で試せばいいのですが面倒なので誰かやり方知ってる人が居たら教えてください。
>>461 最後の1行が気に入らない。
だから適当に教える。正しいやり方かどうかは知らん。
絶対値モードでやって、自分で前フレの値を取っておいて
それと今フレの値で相対値を出す。
どうかな???
463 :
461 :02/08/25 04:12 ID:Kq2PLf7r
>>462 すみません。
答えてくださってありがとうございます。
相対値とはマウスの移動量を知りたいのですが、前フレの絶対値と比較して計算するとカーソルが画面の端にあるときに画面の外側にカーソルを移動させたときに正しい移動量が求められませんよね?
マウスなんて、通常のメッセージプロシージャで十分。 キーボードはGetAsyncKeyState()で十分。 DInput使うのはパッドの時だけじゃ。
>464 パッドだってjoyGetDevCapsがあるやん。
>>463 画面外に相当する値ならば自分でクリッピング
467 :
名前は開発中のものです。 :02/08/25 15:03 ID:X4JD8AfK
Xファイル内のSTRING型のメンバをGetData()で読むのに、 DWORD dwsize; BYTE *pb; lpXFileData->GetData("メンバ名", &dwsize, (void**)&pb); だと毎回dwsizeが4になるんですが、何か間違っているんでしょうか?
>>467 君の場合、DWORDが4Byte環境なんでしょ?
>>468 おかげで読み込めました。
pbの内容を勘違いしていました。
ゲーム製作ってハイレベルなことだと思ってたけど なんでAAばっかなんだろう
コピペはともかくAAはハイレベルな技術
スターブレンドα
DirectXはC++使えるから、一部のゲーム機よりハイソな職場
DirectInput使って毎フレームごとにGetDeviceStateでキーボードとマウスの入力をチェックしているのですが、 一度押したキーがずっと押しっぱなしになるという現象がたま~に発生してしまいます。 (常に( keyboardBuff[ほにゃらら] & 0x80 )でtrueが返ってくる) どんな原因が考えられるのでしょうか?
>>474 ちょっとわからない。
DirectInput使わない状態でもなる?
ああっと、ようは非DirectInputのWindowsのAPIでもなるかなってこと
>474 デバッガのなんかのスレッドが落っこちるときじゃねえ? バイナリ単体では発生しないみたいだから俺は気にしてないけどw
>>475 なるほど。WinAPIで試してみます。
あ、あと、押しっぱなし状態になる直前なんですけど、
前兆があって必ず4,5秒固まります。
で、動き出すと同時に直前まで押してたキーが押しっぱなしになるという感じです。
479 :
477 :02/08/27 22:44 ID:???
>478 あ、やっぱりそれだよ。アウトプットウィンドウで、なんかのスレッドが終了するときだ。 気にしてないけど、やっぱ気になるから防ぎ方知ってる人いたらおせーて
DirectSoundってアプリのウィンドウが非アクティブになると再生止まるけど、 これ防ぐ方法で何か知ってる人はいらっしゃいませんか?
>>481 DirectSoundの役割を考えるが良い。
さすれば汝の疑問は解決しよう。
DirectX経典にはDirectSound以外にも音を司る技法が記されているのだよ。
汝、信仰を深めよ。
>>482 DirectMusicになるんでしょうかねぇ。。
ちと諸事情でサウンドの生PCMデータを再生しなきゃならないんで、
DirectSoundだと楽でいいかなぁ、と思ってたりするんですが。
484 :
名前は開発中のものです。 :02/08/28 02:04 ID:21zL3Wvr
DirectX7 の Bltメソッドで、 VRAM上のサーフェスを、丸ごとシステムメモリサーフェスに 等倍コピーしたのですが、遅すぎて困っています。 (640x480の2回コピーを1セットとして、1秒間に10回行かない) セレ1200+GeForce2MX(32M)と、P3-600+ATI RageM(4M)のノートで、 ほぼ同じ結果が出るのですが、仕方のない事なのでしょうか? 若しくは、何らかの解決方法があるでしょうか? (両方VRAM上とか、両方システムメモリ上っていうのは別として。) ご経験の方が居ましたら、情報頂けると嬉しいです。 あと、(この件についての)資料HPなどがありましたら、教えて下さい。
Directx8で開発を行っています。 フルスクリーン(640*480)に設定したのはいいんですが、 実行後、Alt+Tabで通常のスクリーンサイズ(1024*768)に戻し、 そのご復帰しようとすると、復帰できません。 640*480の灰色のウィンドウが1枚、 1024*768のデスクトップに表示されており、 なんの反応も示しません。Alt+F4で落ちますけど。 復帰って、できないんですか? 私のソースが悪いだけですか?
>>485 VRAMの内容を戻すのはシステムじゃなくてプログラム側の仕事
俺も昔ハマったんで解決策書いときます。 毎フレーム描画する前にTestCooperativeLevel。 DEVICENOTRESETが帰ってきたらResetしてやるべし。 Reset時にMANAGEDじゃないデバイスオブジェクトの無効化、復元も忘れずに。
>478 会社のWin2kではそれ置きます。 CPUを新しいのにしても無駄でしょう。1.5Gだし。 でも自宅のXpでプログラムしてると起きたことありません。
489 :
夏房 :02/08/28 05:40 ID:PGMDNgH5
>>484 フィルレートって奴を検索して学ぶんだな。
以上。
>>484 VRAM->システムメモリ
VRAM<-システムメモリ
は激重なのが今のPCの通例です。
コンシューマ感覚で造ると痛い目見ます。
>>485 そのレベルなら、、とりあえずの完成品を目指して、
elなりなんなりを使うなりした方が良いのでないか?
扱っているバージョンが8でないものは駄目だろうけど。
世間一般のライブラリ使用ならその辺を考える必要も少なくて良いと思う。
頭から尻まで、そして頭だけ作って終わる。。。
うりゃage
画像のローディングにスレッドを使おうと思ってるんだけど、 メインのスレッドでシーンをレンダリング中に他のスレッドで テクスチャをロックしても大丈夫かな? IDirect3D8::CreateDeviceで D3DCREATE_MULTITHREADEDを指定したら大丈夫っぽいけど 誰かやったことある人いない?
初心な質問ですみません。。 マテリアルのα値って、影響しないんでしょうか? 頂点のディフューズ色にα値を入れたときは半透明になるんですが、 マテリアルだと反映されないです。。
あれ。。前に作ったメッシュの描画ではマテリアルのアルファが反映されてました。。 どっか設定が変なのかな。。
496 :
494 :02/08/29 11:30 ID:???
結局上手くいったのですが一つ気になったことがあります…。 ディフューズ色がある頂点バッファはマテリアルのアルファが反映されないんですが、 ディフューズ色がないほうは反映されました。これはこういうもんなんでしょうか?
497 :
:02/08/29 13:00 ID:???
TextureStatgeState,RenderStateあたりは キッチリ理解してちゃんと設定しといたほうがイイと思われ... こんなもんかな?でうまくいったからそのまま開発を進めると、 他のグラフィックカードでは変な動作になったりしてデバグが大変になる罠
>>496 ヘルプ「ライティングにおける数学的計算」で検索。
色の決定に関する全ての事項が一つの数式にまとめられています。
これさえイメージできてれば自由自在に色を扱えます。
「「「Π
((((´ー`)/"
<<<( ヨメヨ.)
.ノノノ ゞ
499 :
494 :02/08/30 12:15 ID:???
>>497 >>498 レスありがとうございます~。
確かにTextureStageState、ライティングの計算ともに、あまり理解してませんでした。
まだまだ勉強すること沢山だ~… 頑張ります。
500 :
500 :02/08/31 00:16 ID:???
500
sdkのスキンメッシュのサンプルの SetTimeのMatrixKeyって補完のところは手抜き? 行列の補完てどうするの?
502 :
:02/08/31 18:23 ID:???
たしかマトリックスキーの時は補完無しで 位置・スケール・回転の時には補完ありになるんだったよね? マトリックスの補完はできないと思うので、 補完したかったらマトリックスキーでなく、 位置等の情報を持つXファイルを作れば良いと思われ... 速度優先でやりたかったら、各フレームごとにサンプリングして マトリックスキーをいっぱい作る。
行列をQuaternionに変換するやり方を知らんのか?
x補完 o補間 MatrixKeyとはスケールと平行移動も込み?
Xファイルから読み込んだメッシュのバウンディングボックスを 作るために、D3DXComputeBoundingBoxを使おうと思ったんですが 数値がおかしく、うまく作れません。 第一引数に渡す頂点データのバッファへのポインタってD3DXLoadMeshFromXの 第四引数じゃだめなんでしょうか?
>>505 サンプルはLockしてそのポインタを渡しているから俺もそうしているが、
それ試して上手くいかなかったらソースの一部を書いてくれ。
507 :
名前は開発中のものです。 :02/09/01 15:06 ID:xIdjFJT5
>>503 やって見たんですがスケールが変になります。
うまくやる方法ないでしょうか。
キーフレームが細かければ全メンバの線形補間の方が再現性たかいです・・・
m._11 = lerp( t, m1._11, m2._11);
m._12 = lerp( t, m1._12, m2._12);
m._13 = lerp( t, m1._13, m2._13);
m._14 = lerp( t, m1._14, m2._14);
m._21 = lerp( t, m1._21, m2._21);
m._22 = lerp( t, m1._22, m2._22);
・・・・
>507 マトリクス→クォータにオン→D3DXQuaternionSlerp→マトリクス じゃ駄目なのか?
509 :
507 :02/09/01 16:16 ID:???
こうやってます・・・ D3DXVECTOR3 pos; D3DXQUATERNION q, q1, q2; D3DXMATRIX r, t; D3DXVec3Lerp(&pos, (const VEC3*)&m_pMatrixKeys[dwp2].mat._41, (const VEC3*)&m_pMatrixKeys[dwp3].mat._41, fLerpValue); D3DXQuaternionRotationMatrix(&q1, &m_pMatrixKeys[dwp2]); D3DXQuaternionRotationMatrix(&q2, &m_pMatrixKeys[dwp3]); D3DXQuaternionSlerp(&q, &q1, &q2, fLerpValue); D3DXMatrixRotationQuaternion(&r, &q); D3DXMatrixTranslation(&t, p.x, p.y, p.z); pframeToAnimate->matRot = r * t;
510 :
名前は開発中のものです。 :02/09/02 01:57 ID:5xwxSg5f
Directx8を使っています。 Zバッファを有効にしながらアルファチャンネル(カラーキー)で抜けを作ったポリゴンの 描画はどうすれば良いのでしょうか? 今は、抜けの部分にもzバッファが適用されてしまいます。
>>510 一般的には、アルファテストで抜けの部分を描画しないようにする。
アルファの微妙な濃度が重要な場合は、どこまでやるかによる。
Z書き込みなしで オブジェクト単位/ポリゴン単位 でZソートとか。
512 :
510 :02/09/02 02:23 ID:???
>>511 ありがとうございます。
アルファテストでD3DCMP_GREATERを設定することで解決しました。
一般的、ねぇ。。。
Dx8以降なら一般的と言えそう
515 :
510 :02/09/02 11:13 ID:???
>>513 他にも方法があるのでしたら教えてくれないでしょうか?
箱の中に水を張って水面の反射と屈折をシミュレートするプログラムを作成しています。 水面にマルチテクスチャで反射と屈折のテクスチャを合成して張っています。 で、反射はキューブマップを使って求めているのですが、屈折の描画方法で詰まっています。 屈折したベクトルと箱の交点を求めることでテクスチャ座標は求まるのですが、 箱の底面で交わるとは限らず、側面と交わることもあります。また、水中に物体を沈めた場合、 その物体と交わる場合もあります。 そういうような底面以外で交わった場合には、底面のテクスチャだけではどうしようもなくなってしまうのですが、 どうすればいいのでしょうか?
>>516 で、何の市販ゲー?
タイトル教えてよ。
水中に物体を沈めるとキビシイけど 底面と側面だけならなんとかなりそうな気がするよ
PixelShaderが動いてくれません。誰か教えてください。 D3DCapsで確認してPixelShader1.0未満だったので D3DDeviceはSOFTWAREで初期化しました。 カードはGeForce2GTS OSはWinXP Pro ,DirectX8.0SDK 鬱です。オナガイします
SOFTWAREで初期化ってなんだ? SoftwareVertexProcessingの事? HEL(REF)の事?
>520 長かったので勝手に省略しました(^^; SOFTWARE = SoftwareVertexProcessing 現在はこんな感じで初期化です pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, ...
リファレンスラスタライザでやってみろ つか、GF2なんて糞カード捨てろ
... D3DDEVTYPE_REF,hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE, ... でも動かないし、 サンプルであるMFCPixelShaderでも真っ黒のまま動かない、、 あきらめてGF2からRadeon9000に変えますw
>>516 水中の物体は自力で屈折線が物体と交わってるか調べるしかないんじゃないかなぁ…。
壁の方は、屈折線が壁にぶつかったら、底面を延長させた平面にぶつかるまで延長させて、
そこに対応するテクスチャを貼る感じになるんじゃないだろうか。
これはGemsにもやり方が載っているので参考にしてみるといいかも。。
525 :
524 :02/09/03 01:47 ID:???
あ、つまり屈折用のテクスチャは1枚だけでよい、ってことです。 回って漢字の内外正方形の四隅を繋いだ感じなんだけど分かりますかね
526 :
524 :02/09/03 01:58 ID:???
>壁の方は、屈折線が壁にぶつかったら、底面を延長させた平面にぶつかるまで延長させて、 意味不明な日本語ですた(汗 屈折線が壁にぶつかっても、 延長させた底面と延長させた屈折線の交点を求めるってことです その交点のテクスチャ座標に壁のテクスチャ座標の画像を貼るわけですな 自己レスでスレ汚してしまってスマン
変な現象に困ってます なぜかD3DXFONTの描画をやめるとアプリが劇重になります lpFont->DrawText("test", -1, &rc, DT_NOCLIP, D3DCOLOR_RGBA(255,255,255,255)); ↑をコメントアウトすると40~50秒くらい固まって、その後終了キーの入力を受け取って、 終了するといった具合です 固まっている間は、カーソルもほとんど動きません(動いてもかくかく) デバイスの作成や、レンダリングステートなどいろいろいじってみましたが、どうもフォントが原因のようなのです DX8.1,Win2Kです(WinMeだと起こらなかったです) どなたかこんな現象に遭遇された方いますか?
>>509 俺は行列の補間やったことないから自信ないけど、それスケーリングどう見ても無視してない?
最初は遅くなってもいいから、行列を一旦スケール、回転、移動の3つに分解してみては…。
速度の最適化は動いてからでもいいですから。
>>508 オレーたん発見ー… 明らかにスレ違いですがレースゲー頑張ってください。
あそこのスレでは書き込むと自演っぽく見えるので(汗
529 :
528 :02/09/03 08:17 ID:???
今書いてて思ったんだが、行列を全てアフィン変換へ分解できるのなら、 ロード時に拡大回転移動の3つのキーへ変換してしまえば、 SetTimeのMatrixKeyの補間は不必要なのかな? これって間違ってる?
530 :
516 :02/09/03 11:25 ID:???
>>524 レスどうもです。
底面と側面を一枚のテクスチャで扱うわけですね。
なんとなく側面の水面の上と下の部分を上手く合わすのが大変そうな
気がしたりもするんですが、なるほどやってみます。
531 :
名前は開発中のものです。 :02/09/03 13:37 ID:eoJAGzi4
DirectAudioで普通にwavを再生すると、 自動的にストリーミング再生にしてくれるようなのですが、 このあたりの設定ってどこで指定するのでしょうか? バッファサイズとかの設定はDirectSound使わないとだめ? LoaderさえあればDSound使うのですが。DSUTILってのもありますがね。
>>531 パフォーマンスのバッファ管理に何か不満があるの?
何故バッファサイズを設定したいのか教えて欲しいかも。
もしDirectSoundで再生するにしても、WAVE FORMATは簡単だから読み込みは楽だ。
ただ、このスレのちょっと前にもあったように、
今更DirectSoundを使う必要性もないんじゃないかと思う。
>532 特に不満はないんですけどね。 ストリーミングか否かを明確にできればいいかなぁと。内部ではそんな区別は無いのかな? ところでボリュームを個々に設定するのにAudioPathをそれぞれ作るのでいいのですかね。 セグメントとAudioPathは一まとめに扱うか。。。むずいな。。。
>>533 不満がないならDXAudioでいいと思う。
折角内部を隠蔽してくれてるんだし深く追求しなくても…
ちなみにDXAudioではIPersistStreamあたりでデータ転送の仲介をしてるはず。
結局どんなデータでもストリーミングになるんでない?
MSのDirectX開発ページんとこにカスタムローディングの説明があるから見てみるべし。
ヘルプにも載ってるかも… よく見てないけど。
AudioPathも、LoadObjectFromFileとセットでCreateAudioPathするだけだし。
それほど難しくないと思う。
535 :
516 :02/09/03 18:18 ID:???
>>524 やってみますた。
この方法、あらかじめ陰のかかったテクスチャ用意しないとダメっぽいっすね…
あと水面の上下で箱の角がうまいこと一致しないっす。
これは俺のテクスチャ座標の求め方間違ってるからなのかな。見直そう。
>533 難しいのはいろんな概念が一気に出てきたためで、扱いは簡単ですね。 詳しい解説どうもです
537 :
524 :02/09/03 21:33 ID:???
>>535 確かに水面の近くでテクスチャがずれそうですな。
この辺どうなってるのかは俺もよく分からんです… 役立たずでごめん。
陰についてはDXならシェーダで何とかならんかなぁ。
底面にぶつかった座標値からだせそうな気も…
これまたシェーダやり始めたばかりでよくわからんです(涙
538 :
名前は開発中のものです。 :02/09/04 02:50 ID:xIbAbvD0
Directx8で質問です。 ラグナロクオンラインのように背景ポリゴン、キャラ2Dみたいにする場合、 2Dキャラ表示用のマトリクスはどう作ればよいのでしょうか?
一般的ビルボード行列は、 _11~_34まで逆ビュー行列。_41からはx,y,z,1 でも俺は 「地面に立っている、少し奥側に傾いた板」を使い、行列は 普通でやってます。理由は 頭が地形にめり込むのを抑制するためと、 多少パース付かないと味気ないから。 足のつま先が地面にめり込むのを抑制するためには ビルボードをカメラ方向にわずかに近づけてる。 転置ビュー行列の_31,_32,_33をある割合でx,y,zから引く。 はっきりいってビルボードはうんざり。 次のプロジェクトからは使いたくない。
540 :
539 :02/09/04 03:44 ID:???
あくまでビルボードがメインのゲームってことね
541 :
538 :02/09/04 04:13 ID:???
>>539 >>_11~_34まで逆ビュー行列。_41からはx,y,z,1
できました。ありがとうございます。
>足のつま先が地面にめり込むのを抑制するためには
>ビルボードをカメラ方向にわずかに近づけてる。
>転置ビュー行列の_31,_32,_33をある割合でx,y,zから引く。
めりこみの抑止ですが、Z値をコントロールすることで回避は
できないのでしょうか?
>>541 D3DRS_ZBIAS だけど
どれくらいの効果かはやってみないとわからん
ZBIASって効果ないよ。同一平面の前後(壁と弾痕とか)位しか効果がない
最近D3Dやって思うんだけどOpenGLの方がクウォリティー高くない?
>>最近D3Dやって思うんだけどOpenGLの方がクウォリティー高くない? いまいち抽象的すぎて言いたいこと分からんが、 今となってはドライバの対応状況の万全さでD3Dかな。 結局ね、ゲーム屋に言わせればAPI(インターフェイス)なんて なんだっていいのよ。どうせラップせねばならぬし。
>>544 動作環境が広い面ではOpenGLだが結局は545の通り。
英語圏ではOpenGLでゲーム製作は多いし、
使えるライブラリではこっちの方が多いかな?
OpenGLのメジャー作といえばQuake3
ID3DXSprite::Begin ID3DXSprite::Draw ID3DXSprite::END この流れでスプライトを表示しようとすると、表示できませんでした。 IDirect3DDevice8::BeginScene ID3DXSprite::Begin ID3DXSprite::Draw ID3DXSprite::END IDirect3DDevice8::EndScene こうしてやるとスプライトを表示できました。 でも前者のやり方でスプライトを表示できている人もいる みたいなんですが、うちの環境が変なんでしょうか? ソフトはVC.NETで、OSはWin2k、 DirectX SDK のバージョンは8.1なんですけど。
>>547 ID3DXSpriteの説明に、ID3DXSprite::BeginはIDirect3DDevice8::BeginSceneの代わりには使えないと書いてある。
もしそうやってるソフトウェアがあったとしてもそんなの気にしない。SDKのとおりにしる
>>548 自分のPCがおかしいのかという不安が解消されました。
ありがとうございます。
550 :
名前は開発中のものです。 :02/09/05 01:31 ID:/DOtiz09
ビルボードで貼り付ける画像の解像度は描画速度に関係してくるのでしょうか? 例えば16×16の画像を2倍に拡大した場合と32×32の画像をそのまま使用した場合で 解像度が低い方が描画が早かったりするんでしょうか?
>>550 理屈ではもちろんそうだが、その例では目に見える違いがでないかもしれない。
テクスチャ転送量全体を考えてみるべし。
むやみに低解像度にして画面がしょぼくなったら損だよ
552 :
名前は開発中のものです。 :02/09/05 15:24 ID:XAnwUSlO
だれかOgg Vorbis形式の再生方法教えて! ov_openするとアクセス違反になる..なぜじゃー(>_<)
>>552 もしかしてDLLのプロジェクトで作ってたりする?
俺も前にやったんだけど同じところでアクセス違反になって不思議だったんだが…
違ったらごめん。ちなみに解決策はコード生成でDLL(マルチスレッド)だ。
なんでそれで動くかはわからん(ぉ
554 :
名前は開発中のものです。 :02/09/05 15:40 ID:XAnwUSlO
>>553 うおぉぉーーー!あなたは神様です(T-T)
マジでそれでうまく行きました(^^)
ありがとうっす♪
>>554 まさか本当にDLLで作っていたとは(笑 まぁ、解決してよかった。
それにしてもOgg Vorbisは本当にいいな。
再生するだけなら扱いも楽だし。ライセンス料かかるMP3は消えてよし。
556 :
名前は開発中のものです。 :02/09/06 01:43 ID:3M9KUq9c
DirectX7から8へ乗り換え中です。 SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA); SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA); 7のときはこんな感じでアルファブレンドができたのですが、8だと ただの抜けあり描画になってしまいます。 テクスチャはBMPでカラーキーを使用しています。 他になにか設定が必要なのでしょうか?
>>556 試しに↓も入れてみてくれ
SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); もな
>>556 8からカラーキーの使用は無くなった筈だが…
TGA若しくはDDSでアルファ情報があるテクスチャを使うんじゃ?
因みにDDSはSDKのUtilitiesのTextureToolで作れるよ。
560 :
556 :02/09/06 02:19 ID:3M9KUq9c
>>557 入れてみましたが駄目でした。
SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
これも入ってます。
SetRenderState(D3DRS_SRCBLEND,D3DBLEND_ONE);
SetRenderState(D3DRS_DESTBLEND,D3DBLEND_ONE);
この設定で加算はできています。
>>559 7にあったカラーキーが無くなって今までアルファブレンドだった
設定でカラーキーが使えるようになったと解釈して良いですか?
今までのアルファブレンドはどこに?
TGAのアルファプレーンは反映されるのですが、それだとプログラム側で
アルファ値をコントロールできないので、頂点アルファあたりを使って
アルファブレンドをやりたいのです。なにか良い方法ないでしょうか?
561 :
名前は開発中のものです。 :02/09/06 02:25 ID:KmTxppnE
なあ、テクスチャの方はαを設定したのか?
562 :
556 :02/09/06 02:29 ID:3M9KUq9c
563 :
名前は開発中のものです。 :02/09/06 02:29 ID:KmTxppnE
SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_BLENDDIFFUSEALPHA );
これやらないとテクスチャはαブレンドにならないけど、
こういう話とは違う?
>>560
564 :
556 :02/09/06 02:54 ID:3M9KUq9c
すいません。この設定が効いてませんでした。 SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); ちゃんと出るようになりました。カラーキーの部分の抜けを適用したまま 半透明レートを頂点カラーでコントロールできます。 答えてくださったみなさんありがとうございましました。
565 :
名前は開発中のものです。 :02/09/06 02:56 ID:KmTxppnE
良かったね。おめでたう。
566 :
名前は開発中のものです。 :02/09/06 03:02 ID:NU3TRrfk
凄く初歩的な質問なんですが。 床などにテクスチャを貼る場合、 テクスチャの画像を大きくして並べる数を少なくするのと、 テクスチャの画像を小さくして並べる数を増やすのではどっちが軽いんでしょうか?
速度的には同じ。 メモリ的には小さい方が軽い。
テクスチャの画像を大きくして並べる数を少なくするのは歪みが生じない? 今のDirectXは平気になったんか?
昔のソフトでよくあった、テクスチャの繋ぎ目に隙間が開いてしまう現象 はなんだったんだろう? 今でもコントロールパネルから調整できるよねぇ?
570 :
名前は開発中のものです。 :02/09/06 03:26 ID:m11JpBjY
ありがとうございます。 画像を小さくして並べる数を増やす方が良いのですね。 参考になりました。
テクスチャ繋ぎ目のすきま。 プログラマが固定小数点信者だったからとかない?(憶測
おいおい、ポリ数が多くなりすぎて逆に遅くなるだろ
面がでかすぎるとライティングも困る
その辺のバラス取りが泣ける。性能UPによって変わっていくし…
Gx00系は画面真っ暗。表示されず。
Gx00系ってMatroxのアレのことと今知った
>>575 Gx00系で何をすると画面真っ暗なんだ。大丈夫なのかお前。
Gx00系って、、、G4x0以外は使えねぇだろ…g200とか
G400もつかえねーけどな 450は氏欄
G400はバンプマップで地球儀だせるよ。それ以上は無理
>>579 どうでもいいが、つかえねー理由ぐらい書いとけよ。
抜き色がおかしくなる
俺はGeForce4Tiが現役マシンだが、G400も過去に使ってた。 具体的にDirect3Dの何を使ったら抜き色が変になったかを 書けば対策方法を教えるが?
>>579 =
>>582 >抜き色がおかしくなる
なぜ抽象的な表現を使う。
具体的に書いてみ。
何をしたら抜き色が変になったんだ。
つーか ○×のビデオチップが使えねーとかどうだとか そういう話以前の問題だろ。
RenderState設定をいい加減にしてるだけだろ
587 :
名前は開発中のものです。 :02/09/06 11:26 ID:2HBzLxJN
Gx00だと半透明の出具合が違うな。 GeForce系やRADEONでは大丈夫な設定でも。 なにか設定抜けてるのかな。
588 :
名前は開発中のものです。 :02/09/06 15:51 ID:f2V/Iqy/
Ogg vorbisの曲データからPCMデータを抜き出して DirectSoundに渡して再生するサンプルを誰か作ってー
すごいクレクレ君だな。
>>588 1)OggVorbisをWAVEファイルへ変換するソフトを作る
2)WAVEをDirectSoundで再生するソフトを作る
1はOggVorbisのSDKに九割方は同じのがあるし、2なんてWeb探せばどこにでもあるだろう?
しかも両方とも100行以内でかけるような簡単なものだ。
1と2ができるなら一緒にしてできないなんてことはありえまい。少しは自力でやってみ。
591 :
531 :02/09/06 17:13 ID:???
DirectMusicのSetVolume×10パス分を毎フレーム呼んだら死んだ。 なんじゃコリャ。激重い。 やっぱゲームの効果音にはDirectSoundなの?
>>591 もしかしてSetVolumeって自動でフェードっぽいことしてくれないかなぁ?
ちとわからないんだけど、英語ヘルプにどうもそれっぽいことが書いてある気が…
dwDulationに与える値を設定してみてちょ
593 :
592 :02/09/06 19:08 ID:???
>>591 今実験してみたけど、DirectMusicって自動フェードしてくれるみたいよ。
やっぱDirectMusicマンセーだな(w
う~ん。フェードっつっても超非線形なのでやっぱ毎フレーム指定したいかも。 既にインターフェースそのままでDSoundにごっぞり鞍替え中。 でも自動でフェードしてくれるのは知らなかった。サンクスコ
PerformanceのInitAudioでDirectSoundのインターフェイスをとれば、 DMusicとDSoundを共存させられる気も。
596 :
名前は開発中のものです。 :02/09/06 22:43 ID:/3OZCZxa
DirecDrawで、オフスクリーンサーフェスにTGA形式の画像を読み込みたいんだけど これって自前でTGA解釈するしか方法ないのかな? (バイナリとして読み込んでヘッダフッタ削ってDIBにするとかみたいな) ・・・今更DirectDrawとかいうな
>>596 海外のその手のサイトに行けば腐るほどそういうライブラリが
転がってるんでないの
598 :
名前は開発中のものです。 :02/09/06 23:27 ID:/3OZCZxa
ごめん、ぐぐってたら考えが変わってきた DirectX8.0SDKからDirectDraw弄る際のリファレンスってどこにありますか? 手持ちの日本語ヘルプファイルには無かった・・・
599 :
531 :02/09/06 23:27 ID:???
鞍替え完了。サクッとFPSキープ。
DSUtilを読んでたら、publicメンバのGet関数を発見した。
>>595 DirectMusicは規模がでかいのであんまり関わりあいたくないかも。
waveしか使わなかったらDSoundのみもありですな。
>>598 ない。DX7のヘルプはMicrosoftのサイトに置いてあるからそれをDLしる
>600 すいません ddutil.h読んでたら謎が解けました ごきげんよう
602 :
名前は開発中のものです。 :02/09/07 00:24 ID:iRBKvDit
DirectXに何の関係が?
DirectX9beta
605 :
名前は開発中のものです。 :02/09/09 03:59 ID:oCHjDl9e
606 :
名前は開発中のものです。 :02/09/09 11:58 ID:LhGt96LR
Ogg Vorbisって1回全部読み込んでPCMデータにしてからじゃないと 再生できないのかなぁ??(ov_readを全データ分,前処理でするって事) それとも手作業で別スレッド作って読み込みつつ再生しないといけないの? MCIみたいに自動的に別スレッドで読み込みつつ再生してくれる方法ってないの? どなたか知ってたら教えてくださいm(__)m
>>606 すれ違い。
それにストリーミング再生くらい自分で作れないと駄目。
しかもOggVorbisに限った話じゃないし。
リアルタイムアクションゲーのBGMってことで DirectSound + OggVorbisで64bpsの曲を流したら、 数秒に1回、一瞬ラグ入るんですが、みんなもそう? やはり重いのかな。 CPUはP4 1.7G です。
>>608 BGM切ると正常になるならOggVorbisのせいかもしれないが、
OggVorbisのデコードの仕方に問題がある可能性も否定できない。
うちでもOggVorbis使ってるが固まることがないから。
>>609 バッファがでか過ぎたようでした。500kありました。
十分小さくしたら問題なくなりました(16kでも行けた)
612 :
611 :02/09/11 02:23 ID:6aqmQWZz
age忘れゴメソ
>>611 コンパネ→DirectX→Direct3D で Use Debug Version にして
デバッガで走らせると、アドバイス的なメッセージもガンガンでてくるぞ
デバッグメッセージを受け取れる状態で実行しないと効果がない罠
デバッガで走らせると、と書かれてあるように見えるが
616 :
名前は開発中のものです。 :02/09/11 05:13 ID:QUS9ooCg
>611 ハードウェアアクセラレータ最大 になってる?
617 :
611 :02/09/11 06:07 ID:???
>613 デバッグバージョンのランタイム持ってなかったのでDL中です アドバイスthx >616 環境はPenIV1.8GHz512MB GeForce4Ti4200DDR128MBと申し分ない雰囲気です
618 :
611 :02/09/11 06:59 ID:???
デバッグ用ランタイムで走らせてみたら 「指定されたウィンドウはフォーカスを受け取れない」 ・・・ えぇ、ウィンドウもラッパークラス作ってたんですが メンバじゃなくて関数ローカルのHWNDでCreateしてました・・・ はずかしー
ヤレヤレだぜ。
620 :
名前は開発中のものです。 :02/09/11 22:17 ID:RNHebZSv
DirextX8.1のIDirect3D8::CreateDeviceに渡す構造体の D3DPRESENT_PARAMETERSのFullScreen_RefreshRateInHzに D3DPRESENT_RATE_DEFAULTとか D3DPRESENT_RATE_UNLIMITEDを設定してデバイスを作成した時 設定されたリフレッシュレートを知りたい場合はどうすればいいんですか?
Visual C#とDXVBLib(Direct X 7.0 for Visual Basic)で簡単なチャットをつくろうと思っています。 DirectPlayのReceiveでDirectPlay4のQueryInterfaceに失敗しました。 というエラーメッセージが出ます。 エラーメッセージの意味がわかりません。 解決方法とかってあるんでしょうか。
Visual C#とDXVBLib(Direct X 7.0 for Visual Basic) ~~~~~~~~~~ ~~~~~~~~~~~~~ 1行目の時点で何か失敗しそうな予感がするのは私だけなのでしょうか…?
レスありがとうございます。 Visual C#でDirect Xを使おうとすると DXVBLib(Direct X7.0 for Visual Basic)ぐらいしか見当たらなかったので 今はDXVBLibを使っています。 DXVBLibはComコンポーネントなので、 どの言語でも利用可能かと、、、 それと今のところは上以外不具合はありません。 よろしくお願いします。
626 :
名前は開発中のものです。 :02/09/12 00:22 ID:xMICRC4q
>>621-622 うーんやっぱりデフォルトのときに0が戻ってくるのが困りますね
マイ黒ソフトの考えることはよーわかりません
可変FPSはあきらめて60固定でするしかないのかな?
どうもありがとうございました
ハァ? 可変FPSについて誤解してないか? 普通はフレーム処理にかかった時間を記憶して調整するだろ
液晶のリフレッシュレートってどうなってるの?
液晶ベンダー次第
日本語マニュアルって8.1のはないの?
ないよ
フルスクリーン<->ウィンドウの切り替えって IDirect3D8::CreateDeviceで対応したデバイスを作り直すって事でいいのかな・・・
>>633 renda- sute-to de risetto
まちがい プレゼントパラメータ設定してリセット あーはずかし・・
636 :
633 :02/09/14 23:21 ID:???
リファレンス見ました テクスチャとか全部破棄してIDirect3DDevice8::Resetするんですね ありがとう
D3DPOOL_MANAGEDにしとけば破棄しなくても済む?
>>637 うん。
でもD3DXSPRITEとかあのへんのは破棄するしかないので諦めてやるしかない。
>D3DXSPRITE 使う必要性が見あたらないので、使わなければ良いだけでは?
ターゲットが WindowsXP なので mciSendCommand , mciSendString の代わりにDIRECTSOUND で 音を出す必要が出てきました。 (NT4で動いたプログラムが動かんとは…) そこで mciSendString("play hogehoge notify", NULL, 0, hWnd); のように実行が終わったら特定のウィンドウにメッセージを 送るための仕組みはあるのでしょうか? なかったら別スレッドを立ててそういうルーチンを組まないといけないのでしょうか?
>>640 DirectX7のヘルプだとチュートリアルの中に「再生の通知の処理」という項目があるけど。
642 :
640 :02/09/15 18:00 ID:???
わかりました。もちっとDirectXのサンプルソースをなめまわしてみます。
>>640 うちでは、mciで普通に動いているけれど・・
時々TRIANGLESTRIPはパフォーマンスがいいからそっち使おうって話を聞きますけど、 実際のところTRIANGLELISTなんかよりもよかったりするんですか? 例えばハイトフィールドをDrawIndexedPrimitiveで描画するとして、 TRIANGLELISTなら一発で描画できるけど、 TRIANGLESTRIPでは帯を何度か描画しなきゃならないっすよね。 COM呼び出し回数を減らすのも十分な高速化だと思うんですが…
原則的にはそう。 ただしご指摘の通りDrwPrimitiveのオーバーヘッドが大きいのでDirectXでは効果が薄い (OpenGLなんかは早いよ) 市販ゲーなら必須かもしれんが、趣味プロなら要らないかも まぁそーいったチューンを楽しむのも趣味プロの一環だろうけど
646 :
644 :02/09/17 16:13 ID:???
>>645 オーバーヘッド考慮しなければ高速なんですね。
Strip化とDrawPrimitiveの回数減らすのって全く逆になりそうだし、
実際どちらがいいのか不思議で仕方なかったんですがスッキリしました。
ありがとうございます~
3角形を書くのには3頂点必要だけど、ストリップなら+1頂点で三角形が書けてしまう 100個の三角形書くのに listなら 300頂点、stripなら99+3頂点。役1/3 後オーバーヘッドだけじゃなくて、最近のビデオカードは頂点キャッシュがあるので、キャッシュヒットすれば 演算が省かれるので差がつきにくいつーのもありかと
皆さんはSetTextureStageStateとかSetRenderStateとかでステータスを変えて描画した後どうしてますか? 変える前のステータスはGetで保存しておいて、終わったら全部復元みたいな感じなんですかねぇ 書き換えたステータスが他のところで影響したりしてしまって結構面倒。。 Direct3Dにレンダーステートのスタック機構が整ってるとうれしいとか思う今日この頃
COM呼び出しってそんなにオーバーヘッド無いぞ、 コストは普通の仮想関数呼び出しと変わらない。 DCOMはプロセス超えるからオーバーヘッドあるけど。
んじゃ単に関数呼び出しが重いってだけ?
>>648 スタックだとOOPと相性が良くない罠。
ステートマシンだからD3D8の様な形に出来たと思う。
652 :
640 :02/09/18 01:34 ID:???
>>643 うちではmp3の読み込みと再生を全部mciでやってたけど、
codecが腐ってたからどえりゃあ不安定で再生できたりできなかったりしたんですよ。
とりあえずwavに交換してその場はしのぎましたが、
ファイルサイズを小さくするのが至上命令なんで
mp3の再生をDIRECTSOUNDで行おうかと考えたんですよ。
ライトマップ使ってるんでほとんど ストリップになりません・・・ って俺だけかな。工夫が足らない?
>>652 世の中にはOggVorbisという便利なものがありますよん。
圧縮率・音質ともに良好なので念のため考えてみるべし。
>>647 インデックス使えばストリップ使う必要性が全くないと思うんだけど・・・
結局、キャッシュヒットするようにIndex並べるつーのはStripに近いきがするけどね SD-RAMからRIMM1066なって転送スピード10倍とかになったので リファレンスラスタライザーもちっとは動くかと思ったら、やぱし全然駄目ですた ソフトレンダのVirtualONはどうかと思ったら MMXに対応していません とかエラー出やがります ショボーン
658 :
:02/09/19 01:18 ID:???
Direct3Dのテクスチャの張り方で困っています。 地面にテクスチャをタイルのように並べてマップを表現しています。 一気に書けるように、256*256pixelのテクスチャを64*64単位のパーツを分けて 地面にペタペタ張っているのですが、 継ぎ目に隣のテクスチャが微妙に見えてしまいます。 頂点がpixelの中央になるようにuvを、例えば (0.0 , 0.0)-(0.25 , 0.25)から (0.0+0.5/256 , 0.0+0.5/256)-(0.25-0.5/256 , 0.25-0.5/256) のように変更してもダメでした。(遠ざかるにつれ継ぎ目が見える) ミップマップが効いているため、遠くのポリゴンでは +0.5/256 でなく +0.5/128 等に変更しないとダメのようです。 どのようにすればこの問題を解消できるのか 教えていただきたいです。よろしくお願いします。
超FAQ
IDirectMusicSegment8::SetLoopPointsのmtStartとmtEndって どんな数値入れればいいのでしょうか? ms単位だと変な位置でリピートするのですが、教えてくださいお願いします。
頂点キャッシュってDrawIndexedPrimitiveじゃないと意味ないよねえ・・・
>>660 DirectMusicってms単位じゃなくてMIDIみたいなTick単位じゃなかった?
使ったことないから自信ないけどそうだった気がする
Xファイルをオリジナルフォーマットにコンバートしたいのですが IDirectXFileEnumObject::GetNextDataObject()が DXFILEERR_PARSEERRORを返してwhileループから抜けてしまいます ↑はヘルプを見る限り返さないはずですが・・・ あとIDirectXFileData::GetType()でGUID拾ってくるのですが これはCOMオブジェクトを作れと言ってるのですか? ヘルプの DirectXGraphics->高度なトピック->Xファイル->使い方->ロード だけだと情報が少なすぎます どうかご教授お願いします プログラム版の方にも書いたんですが進行遅そうなので こっちに書かせていただきましたごめんなさい
>>660 何かキーが押されたらIDirectMusicPerformance8::GetTime()で
その時点のMUSIC_TIME拾ってそれをメモっといて
IDirectMusicSegment8::SetLoopPoints()
に渡せばいいんじゃないかな
8始めたばっかでAudioはやってないけど7の時はそれでできますた
漏れはXFileの解析で苦しんでるんですよ誰か教えて
665 :
664 :02/09/20 00:08 ID:???
そうそうMUSIC_TIMEはロードした時点から更新されるので 曲の位置=nowtime-starttimeだったっけ7は
Xファイルの変換って、MSのルーチンを使うと大変だよな。 直接読んだ方がイイよ。
667 :
663 :02/09/20 00:10 ID:???
>>666 Xファイルのフォーマットはどこで調べられますか?
669 :
663 :02/09/20 00:22 ID:???
>>668 ヘルプに書いてあるのは知ってましたが
たくさんあるテンプレートやトークン全て考慮して自力でやる方が
MSのルーチン使うよりも簡単なんですか?
>>663 .Xファイルは実は自前のルーチンも持っているんだけど、
今回はあえてD3DXライブラリを使って試してるとこ。
漏れも今いろいろ試してるので、何か分かったら書きます。
期待せずにまってて頂戴。
途中で投げ出しちゃったらごめんなさい。w
なんか言いがかりに近くなってきたな。 ここはゲ製だから、666はゲームが内部に持つローダーと仮定しているのだとおもう。 それならば対応すべきテンプレートなどたかが知れてる。それともツールでも作るのかね?
673 :
663 :02/09/20 00:34 ID:???
>>672 ローダーだったらD3DXCreateMesh()が簡単だからそれ使ってるけど
674 :
671 :02/09/20 00:36 ID:???
独自形式で必要な情報だけを、Xファイルから取ればいいのなら、 テンプレートなんてほとんど無視できると思うんだけど。 どーですかね?
はぁ??
676 :
663 :02/09/20 00:39 ID:???
D3DXCreateMesh()->D3DXLoadMeshFromX()の間違い
>>674 テンプレートとかよく分かってないんで勉強が必要です
677 :
675 :02/09/20 00:39 ID:???
もしやおまいら スキンメッシュの分割自前でやっとるん?
679 :
672 :02/09/20 00:41 ID:???
俺がここで言ったローダーは解析部(パーサー)のことを指してるのですよ
>>676
680 :
663 :02/09/20 00:43 ID:???
>>674 最低限必要なデータは頂点、インデックス、マテリアルですが・・・
682 :
663 :02/09/20 00:50 ID:???
>>681 Xファイルから独自フォーマットのコンバート
欲しいサブセットデータは頂点、法線、テクスチャuv、
ストリップインデックス、マテリアル、テクスチャファイル名
と多分こんなもんです
>>682 それならばSDKの例のサンプルで読めるな。
読み込んだら好きなように吐き出せばOK。
684 :
663 :02/09/20 00:55 ID:???
>>683 8.0SDKですがXファイルのサンプルなんてありましたか・・・
うかつですた
685 :
663 :02/09/20 00:56 ID:???
皆さんレスありがとうございます
===完===
VS2.0 PS2.0 の資料なんてまだないよねえ・・・
688 :
名前は開発中のものです。 :02/09/20 17:41 ID:4/XpyZrj
また質問しますが許してください Xファイルからコンバート中なのですが ID3DXMeshの個々のサブセットのストリップインデックススタート値と 個々のサブセットの面の数はどうやって調べればよいのでしょうか? コンバートした後にIDirect3DDevice8::DrawIndexedPrimitiveを 呼び出すときに使うので・・・ あとD3DPRIMITIVETYPEを調べるのは不可能ですか? よろしくお願いします
689 :
688 :02/09/20 17:45 ID:???
つけたし サンプルのPick Polyを参考にしながらやってます
690 :
688 :02/09/20 18:33 ID:???
ヘルプを見ていたらID3DXBaseMesh::GetAttributeTable()が 使えそうな気がしてきますた これでやってみます これで合っていたらお騒がせして申し訳ありませんでした
ある場所でD3DXCreateTextureFromFileExAを呼び出すと、 別の場所でkernel32.dllのエラーが起きるとかいう不可解な状況なのですが… (それもプログラム始まって数行目の凄い簡単なコードの場所で) まさかこんな状況になった人ってほかにはいませんよねぇ(汗 ちなみに環境はWin2k/VS.NET/DX8.1/MultiThread/Unicodeでコンパイル、 実行環境は他人のマシンでWin98上書きMe/DX8.1らしいです(かなり古いらしい) 当然ながら自分のマシン上では問題なく動きます。それだけにデバッグしにくい…
ちなみにD3DX~関数をコメントアウトするだけでちゃんと動くという… リンカとかコンパイラとかのバグかと疑いたいです(w
693 :
688 :02/09/20 20:01 ID:???
>>691 漏れにはお手上げです
動作環境のテストは個人では難しいのでは?
ID3DXBaseMesh::GetAttributeTable()はID3DXMesh::Optimize()しないと
駄目らしい・・・んでOptimize()の呼び方が間違ってるのか失敗しる
それで最初の質問
ID3DXMeshの個々のサブセットのストリップインデックススタート値と
個々のサブセットの面の数はどうやって調べればよいのでしょうか?
あとD3DPRIMITIVETYPEを調べるのは不可能ですか?
どうかこのウツケな漏れにお教えください
スレ汚しごめんなさい
694 :
691 :02/09/20 20:11 ID:???
>>693 D3DXMeshって三角形リストのみじゃなかった?
>>691 > /Unicode
Unicodeにする必要性はサテオキ
win98でunicodeプログラムって正常に動くんだっけ?
あと、unicodeなのに D3DXCreateTextureFromFileEx"A"
とはいかに。Wな気がするが。
696 :
691 :02/09/20 20:59 ID:???
>>691 MSLUを使えばWin98上でUnicodeも動くし、
マルチバイトでW版が使えるのと一緒でUnicodeでもA版は動くよ
LPDIRECT3DDEVICE8 CreateDevice();
LPDIRECT3DTEXTURE8 CreateTexture();
int WINAPI WinMain(...)
{
HINSTANCE hDll = LoadLibraryA( "unicows.dll" );
someclass* instance = new someclass;
LPDIRECT3DDEVICE8 device = CreateDevice();
LPDIRECT3DTEXTURE8 texture = CreateTexture();
texture->Release();
device->Release();
delete instance;
FreeLibrary(hDll);
return 0;
}
の、new someclsssのところで死ぬんですよ。
んでCreateTextureをコメントアウトすると動く… 不可解すぎ(汗
UNICODE使うのやめれば?
698 :
691 :02/09/20 21:14 ID:???
Unicodeは関係ないと思うんだけどなぁ… とりあえずUnicodeチェックはやめてみようと思います。 しかしテストしてくれる人に会えるのが3日に一度でテストすらできず…
極当たり前に考えて、Win98上のUnicodeなんて信用できないだろ。
700 :
691 :02/09/21 00:30 ID:???
すまんす、結局Unicodeが原因ですた… ただ、結局Unicodeで動いてます。 今までunicows.libをリンクしてただけだったんですが、 MS公式サイトの説明通りに/nodでkernel32とかを無視させるようにしたらいけました。 D3DXCreateTextureFromFileで死んでたのは多分、 関数内でUnicows.dll内のファイル系関数を呼ぶのに失敗してたんじゃないかな? という感じです。どうもお騒がせしました…。
わざわざトラブルを抱え込んで自爆というオチか。アフォ丸出しだな
702 :
名前は開発中のものです。 :02/09/21 10:03 ID:viCl1ubd
VC5.0+DX8.1bSDKでコンパイルすると 'UINT_PTR' : 定義されていない識別子です。 とか出てエラーになるのですが適当にtypedef int* UINT_PTR;と入れても '&' : 不正な左オペランドです。 とか出るのですがVC5.0+DX8.1bSDKの組み合わせは駄目ですか? FAQかもしれませんが検索してもヒットしなかったのでよろしくお願いします
とりあえずUINTはunsigned int ニダ
704 :
702 :02/09/21 10:38 ID:???
たぶんVC6.0以降のの~\VC\include\*.hで定義されていると思うのですが UINT_PTRとはどういった型なのかを教えて下さい d3dx8math.hのstruct _D3DXMATRIXA16の中のnewオーバーロードで エラーが出てしまいます
grepしたらこんな感じ <basetsd.h> #ifdef _WIN64 typedef unsigned __int64 UINT_PTR, *PUINT_PTR; #else typedef unsigned long UINT_PTR, *PUINT_PTR; #endif
706 :
702 :02/09/21 10:58 ID:???
>>705 d3dx8math.hにぶち込んだらとおるようになりますた
たいへんたいへんありがとうございますた
707 :
702 :02/09/21 11:05 ID:???
なんか衝突する場合もあるみたいなので代わりに d3dx8math.hに#include <basetsd.h> としたら大丈夫みたいです
2D的に扱いたいのでWorld-View-Projectionは変更しないという前提で、 スプライトを描画する場合VertexBufferは4頂点分の大きさが必要だけど、 何種類ものスプライトを表示する場合、やはりVertexBufferは1スプライト に1つ作成するものなのでしょうか? 考えてるのは、グローバルに1つスプライト用のVertexBufferを作っておいて 描画するときに、VertexBuffer更新する方法なのですが みなさんどうしてますか? もしかしてスプライトの場合でもVertexBufferを固定で、一つ一つ WorldTransformかけてるのかな?
>>708 深く考えずにTLVertexとDrawPrimitiveUPでいいと思う
710 :
708 :02/09/21 21:49 ID:???
>709 確かにそうなのですが。(以前はTLVertexとDrawPrimitiveUPを使ってました) しかし、今回はShaderを使うこともあり、どうしてもVertexBufferを 使うしかないんです。 例をスプライトからパーティクルに変えますが、 class ParticleList { Particle par[1000]; VertexBuffer* vb } と class ParticleList { Particle par[1000]; VertexBuffer* vb }
711 :
708 :02/09/21 21:53 ID:???
ゴメン送信してもうた。 ---- class ParticleList { Particle par[1000]; static VertexBuffer* vb } では、どっちがいいかな? 毎フレームパーティクルの座標は書き換えるので、大きいVertexBufferを 作って全てのパーティクルで共有した方がいいと思うんだけど。
俺だったら、MAX_PARTICLEサイズのバッファー一回つくって、 あとは毎フレームそれにつっこんで1回のDrawで描くよ
713 :
709 :02/09/21 22:55 ID:???
一度にスプライト描画するんだったら、 MAX_SPRITE分の四角形を描画できる三角形リストのIndexBufferを用意 IndexBufferは何度描画しても変わらないから最初に初期化だけしとく 後はスプライトの四点をVertexBufferに書き込んでいってDrawIndexedPrimitive ただこれは一歩間違うとUP系より遅くなる可能性があるんで注意 メインループのスケジューリングが結構大切です (Presentの"直後に"DrawIndexedPrimitiveを呼べないなら、 DrawPrimitiveUPで早い段階からスプライトを1つずつ描画したほうが早い場合も)
714 :
709 :02/09/21 23:01 ID:???
俺はいろいろやってみたことあるよ。UPは結構優秀。 nvidiaのサイトで拾ったDynamicVertexBuffer/DynamicIndexBufferの テンプレート使ってUPと対等。 事前にIndexBufferを用意してやっとDrawIndexedPrimitiveUPに勝てた。
716 :
名前は開発中のものです。 :02/09/22 04:32 ID:fagAZlUu
LPDIRECT3DTEXTURE Image; void load(LPDIRECT3DDEVICE8* pDevice,char* filename){ D3DXCreateTextureFromFile( *pDevice, filename, &Image) } がD3DXERR_INVALIDDATAを返して失敗します。 これを呼び出す前にメッシュのロードに成功しているのでpDeviceにはしっかりとした値が入っていますし、filenameも"a.bmp"でフォルダにa.bmpも存在しています。 いったいなにが悪いのかわかりません。
>>716 カレントディレクトリがどこか確認しる。
718 :
名前は開発中のものです。 :02/09/22 05:15 ID:fagAZlUu
>>717 Debugから直接アプリを起動しているので間違いないとおもいマス。 エラーのチェックはこうやってます。 switch(D3DXCreateTextureFromFile( *pDevice, filename, &Image)) { case D3DERR_NOTAVAILABLE : MessageBox (NULL,"NOTAVA","e",MB_OK);break; case D3DERR_OUTOFVIDEOMEMORY : MessageBox (NULL,"OUTOF","e",MB_OK);break; case D3DERR_INVALIDCALL : MessageBox (NULL,"INVAOLODCA","e",MB_OK);break; case D3DXERR_INVALIDDATA : MessageBox (NULL,"INVAILDDATA","e",MB_OK);break; case E_OUTOFMEMORY: MessageBox (NULL,"E_OUTOOFMEMA","e",MB_OK);break; }
うちのGeForce3では期待した動作をしてくれるんですが、 知り合いのMatroxのVGAで動かしたら駄目らしいんです。 ここまではよくある話なんですが、ちょっと不可解なので… ALPHAOP と COLOROP にそれぞれ STAGE0 に D3DTOP_MODULATE, D3DTA_TEXTURE, D3DTA_DIFFUSE STAGE1 に D3DTOP_MODULATE, D3DTA_TFACTOR, D3DTA_CURRENT と指定するのと、 STAGE0 に D3DTOP_MODULATE, D3DTA_TEXTURE, D3DTA_TFACTOR と指定するので表示結果が変わってしまいました。 具体的には、最初のほうのTFACTORが影響されてない感じでした。 (頂点ディフューズ色は0xFFFFFFFFでデフォルトと一緒にしてます) テクスチャステージも3まで対応してるとD3DDEVCAPS8には出てるし、 他に考えられる原因が分かりません…。
>>718 話題はずれるが、今後のためにD3DXGetErrorStringを見といた方がいいぞ
VCのデフォルトっぽい構成で、カレントディレクトリはmyprojと仮定。 myproj\data\mesh.x myproj\data\a.bmp myproj\debug\prog.exe D3DXLoadMeshFromX("data\mesh.x"...);で読んだら "a.bmp"のパスは"data\a.bmp"
722 :
名前は開発中のものです。 :02/09/22 07:53 ID:fagAZlUu
なんか、成功しました。カレントディレクトリの問題だったようですぅ。
>>719 リファレンスラスタライザではどうなる?
リファレンスと異なるならMatroxに報告してあげるとか・・・
>>722 よくある間違いだ。過去ログ見るひとのために一応書いておくと
./debugのアプリは ./ に移動させてから実行しないといけないんだよな。
725 :
719 :02/09/22 13:55 ID:???
>>723 うちの環境のREFで実験したら、期待通りの動作でした。
Matroxの最新ドライバで試すのをすっかり忘れてたので、
それで駄目だったらMatroxに通報してみます
この間やっとDX8.1bSDK入れたんだけどDX7でやってた IDirectMusicLoader::GetObject()が全角ファイル指定すると 失敗するようになったんですが前のプロジェクトは全部捨てろと MSは言ってーるのですか?・・・半角カタカナは前からだったけど
>>719 D3DTA_DIFFUSEとD3DTA_TFACTORは同時に使えない環境がある。
SDKの説明にもそんなことが書いてある。
NVIDIAでも同時に使えるようになったのはGeForce3から。
728 :
719 :02/09/22 19:56 ID:???
>>727 へぇぇ、そうだったのかー
ってことは、結構ハードウェア的には厳しい実装だったのね・・
情報ありがトン
起伏のある地形をxファイルで読み込んで その地形の上をカメラが移動する、という風にしたいのですが 地形が盛り上がっているところや凹んでいるところで カメラの高さをどのように上げ下げするのかわかりません。 検索したところBSPというものが引っ掛かったのですが これを用いる方法しかないのでしょうか?
初歩的な質問ですいません。 キーワードだけでも教えていただけると助かります。
起伏の形状を取り出してx, y座標からz座標を求めればいいんじゃなかろーか
起伏のある地形ということならHeightFieldがいいんじゃないか? これならx座標とz座標に応じてフィールドのy座標が決まるから、 それにカメラの高さを加えてやればいいだけだな
ちなみにこう。 float field[FIELD_SIZE][FIELD_SIZE]; initialize(field); int camera_x = hoge(); int camera_z = hage(); float camera_y = field[camera_x][camera_z] + camera_height; このままだとカメラの移動に応じて高さが一気に変わるから適当に補完とかしる
ただ、HightFieldだと広めのマップが表現できない
735 :
名前は開発中のものです。 :02/09/22 22:19 ID:jVKC+C+L
>>734 そこは頭の使いようだろ?
HightFieldというアルゴリズム自体にはなんの問題も無い。
>>729 BSP(Binary Space Partition)と
>地形が盛り上がっているところや凹んでいるところで
>カメラの高さをどのように上げ下げするのか
はあまり関係ないよ。
BSPは空間分割のデータ構造とか探索のアルゴリズムの手法で、
君が求めてるのは多分ポリゴンメッシュとカメラオブジェクトの
当たり判定の話だしょ。
737 :
名前は開発中のものです。 :02/09/22 22:45 ID:jVKC+C+L
729は平面の式について調べれ。
738 :
名前は開発中のものです。 :02/09/22 23:03 ID:UA7t4cRe
DirectShowの話題はまだー?
>>729 正解などない。
どのようにと聞かれても、地面の起伏に応じてカメラ動かせ
としか答えようがない。君にビジョンがないと話が進まないな。
BPSは今のところ本質的には関係ない。
DirectDrawの話題はまだー?
>>729 皆、小出しだね。そりゃ調べる力も必要だろうが…
漏れのやり方で良いなら、
先ず、ポリゴンは三角形として話を進める。地形は3ポリの集合。
ココで使うのは、平面の方程式、ax+by+cz+d=0って奴。
之を変形して、d=-(ax+by+cz)と考える。
んでカメラが居るポリゴンの位置(XZ平面での)を調べる。カメラで解らないのはY情報なんだから解るでしょ?
ココで其のポリゴンの三頂点のどれでも良いから、一つチョイスする。
その頂点と、他の二つの頂点でベクトルを定義して、外積か何かで法線ベクトルを出す。
そいつを単位化して、各要素をa,b,cとする。次は選んだポリゴンのX,Y,Zをx,y,zとして
d=-(ax+by+cz)の計算をしてdを求める。
こいつの値は変数にでもぶっこんで、値は知らなくても良い。
そして最後に、また変形、y=-(ax+cz+d)/bで考える。
ココでx,y,zはカメラの位置ベクトルの各要素、つまりyが求まる。x,zは解っているので
a,b,cは先程の法線ベクトルを単位化した各要素、dも先程求めた物。
つまりy以外は全て値が出てるよね。
お終い。
743 :
742 :02/09/23 07:09 ID:???
>次は選んだポリゴンのX,Y,Zをx,y,zとして 間違い。スマソ 次は選んだ頂点のX,Y,Zをx,y,zとして
カメラの乗っかってるポリゴンの 3頂点の重み付き平均でいいんじゃないの?
>>742 要約してみた。
D3DXIntersect
以上(ワラ
D3DXCreateMesh()使って作ったメッシュに頂点情報とか 入れるにはどうすればいいんですか? またはそれが載っているサンプルを教えて下さい
>>746 んなんロックして流し込めばいいだけだ。
つか、教えて君モロ出し系で質問するなら
「物凄い勢いスレ」とか「初心者歓迎スレ」のほうがいい。
ここだといきなり噛み付かれても文句いえねーよ。
749 :
742 :02/09/24 03:03 ID:???
>>745 そうきましたか…
ココはDirectX板だから関数があれば、それを教えれば良いのかも知れませんが…
処理的に何をやってるのか解らないで、使うってどうなんでしょう?
始めたばかりの時、行列で回転かけるのをRotation関数使わないで
ロックして全頂点をループで自前の行列計算したりってやりませんでした?
用意された関数オンリーな人って、バーテクス、ピクセルシェーダーとか
出来るようには、為ら無いんじゃ…
750 :
:02/09/24 04:10 ID:???
でも742の方法はイマイチな気がするのはオレだけか? イチイチ平面の方程式にしないほうがイイんでないか? xファイルを読み込む。カメラ位置はp0とする(x,zは特定されている) 頂点/インデックスバッファをロックして頂点データp1,p2,p3がまずわかる。 p1+a*(p2-p1)+b*(p3-p1) = p0 をp0のy座標,a,bについて解く a >= 0 , b >= 0, a+b <= 1 ならそのポリゴン上にあるので求まったp0を採用 ポリゴン上になかったらほかのポリゴンを探す でいいんでないか?知らんけど んで、この方法だと毎フレームごとにポリゴンごとに判定しなくちゃイケナイから重い 初歩的な最適化の方法としては、画面をxzのグリッドで分けて、 グリッドごとに衝突する可能性のあるポリゴンのテーブルを作っておく そーすっと、カメラの属するグリッドのポリゴンでのみ判定すればよくなる。 グリッド間隔は小さいほど効率が上がるがそれだけメモリを消費するんでテキトーに。 あとはアレだ。イチイチ頂点バッファのロックアンロックを繰り返すと重くなりそーなんで 頂点データは必要な部分をコピーしといたほうがいいな。 オレのラベルではこんくらいしか方法は思いつかん。もっとイイ方法があったら教えれ。
751 :
742 :02/09/24 06:50 ID:???
>>750 744の3頂点の重み付き平均って奴ですね。
内分の関係を逆に捉えて、条件が満たされていれば点と点を内分する状態であると。
やはり、人のやり方って勉強になりますね。
こう言う、数学的なルーチンワークって面白いですよね。
>ポリゴン上になかったらほかのポリゴンを探す
これが、プログラマの腕の見せ所ですね。当方はへっぽこ専門生なんで
数学はともかく、プログラムはイマイチです。ここの最適化が重要ですね。
>>751 3頂点の重み付き平均って奴ですね
違うぞ。
753 :
742 :02/09/24 22:49 ID:???
>>752 4頂点の重み付き平均でした。失礼しました。
754 :
名前は開発中のものです。 :02/09/25 19:54 ID:MSCNJlmH
MDX age
755 :
名前は開発中のものです。 :02/09/26 01:23 ID:Th5mYXTg
カスタムVERTEX SHADERをいじるとき、適当なことをやるとwin2000でも青画面になるのですが、どのようなときに青画面になりますか。
757 :
名前は開発中のものです。 :02/09/26 04:28 ID:Th5mYXTg
一歩足りてないな。
755 名前:名前は開発中のものです。 :02/09/26 01:23 ID:Th5mYXTg 757 名前:名前は開発中のものです。 :02/09/26 04:28 ID:Th5mYXTg
(゚∀゚)アヒャ!
761 :
名前は開発中のものです。 :02/09/26 10:20 ID:ANzLdQ8E
DirectX8.1で画像を1枚表示させるだけのプログラムで、 うちのマシンだと、たまにFPSが1も出ないような状況が起こってしまいます。 そんなに性能のいいマシンではないのですが、普通のDirectXを使った ゲームはFPS60で普通に動いてます。 なんでそうなるのでしょうか。 再現性のないバグなのでよくわかりません。
グラフィックボードぐらいかいてくれろ
> そんなに性能のいいマシンではないのですが、普通のDirectXを使った > ゲームはFPS60で普通に動いてます。 UnrealTournament2003やBattleField1942でFPS60出てるなら、プログラム側のバグかと。
実行環境と普通のDirectXを使ったゲームってのが分からないとな。 あと1枚画像を表示させるってのも具体的にどうやって表示してるのか。
>>761 >たまにFPSが1も出ない
DirectXの側でその手の不具合は聞かないな。
アプリのほうで凡ミスをやってる予感がするな。
戻り値はチェックしてるか。SDK付属サンプルは無事に動いてるか。
サンプルが無事に動いてるならそっちを参考にしたほうが早いぞ。
あとはアンチウイルスツールとかの常駐ソフトの所為かもな。
>>761 ドライバは最新のものにしてる?
古いものだと新しいDirectXに対応してなくて
変な現象が起こることがあるよ。
ノートンのAntiVirusでAutoProtectを有効にしてると BattleField1942の通信対戦中にフレームレートが 極端に落ちる現象がたまーに起きる。それ以外は知らない。
ここは素晴らしいインターネットですね。
六角大王でXfileを出す方法を教えてください、おながいします。
770 :
名前は開発中のものです。 :02/09/26 12:02 ID:Th5mYXTg
>>761 FPSを格納するバッファを更新してないかったというオチでしょうか。
あと、1枚表示させるだけの静止画だとFPSがどんくらいか判断しづらいです。
>>769 3dsに変換してconv3dsという糞ツールでxに変換してください。
771 :
767 :02/09/26 12:03 ID:???
ちなみにその現象が起きるのを確認した環境は Win98SE+DirectX8.1b BattleField1942(製品版) ビデオチップはGeForce4Ti4200。 ドライバはBeta Detonator 40.52だ。 761の環境はどうだ。
>>761 HDDにアクセスしにいってるとかそういうのは無いか?
>>769 スレに合ってる内容とはとても思えないが…
とりあえずデータコンバータとしてもMetasequoiaをお勧めしとこう。
詳しくはMetasequoia公式のデータ交換の項を読め。
774 :
名前は開発中のものです。 :02/09/26 12:10 ID:Th5mYXTg
たまに、だからちがうか。
スレ進行停止>質問>怒涛のレス>繰り返し
Metasequoiaもあと2,3年したら どこかの会社が買い取って入門用3Dモデラ\39,800-とかで売り出すことになるんでない
ゲーム用の音楽素材として、ループする音楽を作りたいのですが フリーで何か良いソフトはありませんか?
あまりにもスレ違いすぎるぞ。
779 :
名前は開発中のものです。 :02/09/26 18:20 ID:Th5mYXTg
>777 DirectX付属のDirectMusicComposerとかいうのがあったと思います。
ぼかしテクスチャを作ろうと思ってレンダリングしたテクスチャを、 SetTexture( 0, &rtex ); SetTexture( 1, &rtex ); SetTexture( 2, &rtex ); SetTexture( 3, &rtex ); のように4つのステージにセットしてピクセルシェーダーで 加工しようと思ったらt0以外ではうまくピクセルが取れなかった。 CopyRectして使ってみてもやはりステージ0以外ではうまくいかない。 ロードしてあらかじめ用意したテクスチャを使用した場合はどの ステージのテクスチャもうまく取れたけど何か分かる人いない?
>>780 テクスチャ座標を適切にセットしてないだけかと。
782 :
名前は開発中のものです。 :02/09/27 05:37 ID:BHwi6z60
DirectMusic Producer でした。
783 :
名前は開発中のものです。 :02/09/27 05:44 ID:XQiRpxo1
>>780 普通は問題なく出来るぞ。
具体的にどういう手順で失敗したのかを書けば
原因は見えると思うが、780の説明だけでは何とも。
>>780 もしかして使用してるピクセルシェーダーのバージョン、1.4だったりしない?
1.4ならテクスチャステージと同じ番号のレジスタにしかテクスチャロードできなかったような・・・
texldする時も
texld r0,t0
texld r1,t0
texld r2,t0
texld r3,t0
ってしないとだめだし、つーか基本か。
見当違いだったらすまん。
786 :
780 :02/09/27 21:25 ID:???
>>781 UVはちゃん設定してるのでロードしたテクスチャでぼかすと
UVがうまくずれてぼけてます。つまり期待通りの結果。
>>784 普通に考えたら簡単に出来るよね。ロードしたテクスチャと
レンダリングしたテクスチャに何か違いでもあるんだろうか。
でもなんかSetRenderStateとSetTextureStateの設定で
いろいろ症状が変わるので調査中。
SetTextureを0~3まで順番に設定していくと、段々テクスチャが
何かとαブレンドされて薄くなったりしてる。
>>785 PS1.0なんだけどね。
うちはGeForce2MXだから来週また会社で試してみます。
みんなありがとね。
The Dot Net Zone is a resource for wanna-be Dot Net Wiz kids, primarily aimed at people who have nominated C# (CSharp) as their language of choice, and have a hankerin for writing games. どうやらDirectX9は.NET完全対応のようですね。 C#しか持ってないんで対応しなかったら…
788 :
名前は開発中のものです。 :02/09/29 15:52 ID:MTZiZpi/
プログラムのことでなくて恐縮なんですけど DirectX8SDKのインストールのことで質問です。 Windows2000にSDKをインストールしようとすると "unable to create installdriver" というエラーが出てとまってしまいます。 もしよかったら解決法を教えてもらいたく思います。 どうぞよろしくお願いします。(既出だったらすいません)
たぶん諦めるしかない どうしても入れたければOSの再インストール。 あ、PlatformSDKをフルで入れれば入るからそれでもいい。 ただし、ランタイムはRetailなのでデバッグやりづらいかもしれないけど
別にインストールしなくてもアーカイブの内容をそのままコピーすればすむのでは?
>>788 管理者権限がないとインストールできないと言うオチでは?
792 :
788 :02/09/29 20:18 ID:???
どうも本当に親切なレスありがとうございます。
>>789 OSの再インストールってことはやはりインストール順番がまずかったのでしょうか?
SP3→デバドラ→DirectX8SDK
ってやりました。
PlatformSDKっていうのは何ですか?
MSNのヘルプでそういう項目もあった気もしますけど、それのことでしょうか?
>>790 後にランタイム版のインストールなら成功したので、
Libファイルとヘッダファイルのみコピーで大丈夫でしょうか?
>>791 うーん、ちゃんとadministratorでログオンしてます。
こういうときはエラーメッセージ "unable to create installdriver" でgoogleしてみることをオススメする
794 :
788 :02/09/29 20:44 ID:Ifw9RZf/
>>793 もちろんしました、
でも検索結果は望むものがでなかったんです
ほかにもいろいろ検索ワードを変えてやったりしましたがだめでした。
ほかにもいろんなWin2000のトラブルが書いてあるホームページなども
調べたけどだめでした。
1時間しらべてどうしても見つからなかったので
ここで質問させていただきました。どうかよろしくお願いします。
795 :
788 :02/09/29 20:47 ID:Ifw9RZf/
>>793 ごめんなさい。間違えてました。
うちのエラーメッセージはそれじゃなかったので勘違いしました。
どうもありがとうございました。
そのワードで検索した結果で解決しそうです。
ほんとにすいません。どうもありがとうございました
796 :
788 :02/09/29 20:49 ID:Ifw9RZf/
・・・ さらにごめんなさい 検索ワードまで一致してましたね・・・ ほんとにすいません、反省してます。 どうも検索ワードが悪かったです、まさかそのままいれて結果がでるとは 思わなかったので試してませんでした、すいません
797 :
780 :02/09/30 20:03 ID:???
4テクスチャステージでのぼかしテクスチャ作成の件だけど 問題解決しました。 SetTextureState( 0,D3DTSS_COLOROP,D3DTOP_MODULATE ); これをステージ0だけじゃなくて1~3ステージにもやっていたのが 原因でした。理由はいまいち飲み込めてないけど。 で、この先に進むわけだけどぼかしテクスチャを3枚ほど用意したいので レンダリングターゲットからCopyRectした画像で動的にMIPMAPを 作成したいです。ただ動的MIPMAPはネット上にもあまり資料が ないのでやり方が分かりません。誰か分かる人いませんか? あとぼかしテクスチャからMIPを作るかMIPを作ってから それぞれのレベルでぼかしテクスチャをレンダリングするか迷うなぁ。
動的MIPMAPはDirectX9で強化されるからそれを待て、なーんてね
DirectX9 早く正式版でないかぁ。 こっそり(?)2D周りも強化されているのが嬉しい。
おまえらNDAを守りなさい
798,799 ぐらいの内容なら、CEDECで一般向けに公開されたので無問題
802 :
780 :02/09/30 23:09 ID:PG8kIa+b
>>798 CEDEC行って動的MIPMAPが強化されるのは知って
るんだけどDX8でも出来るんじゃないかと思って。
出来ないんだったら1/2サイズのテクスチャにバイリニア
掛けてレンダリングして作っていかないとダメかな?
803 :
780 :02/09/30 23:12 ID:???
ミス。1/2のサイズのポリゴンに張ってレンダリング しての間違い。
DirectX9ってどこがNDAにする必要あるんだ? MSは開発者のキモチしらねーアフォか? ベータのSDKくらいすぐ公開しやがれ! 何ヶ月待たせてると思ってるんだ!
SetRenderTargetの負荷が低いことを祈るしかないねえ・・・ ところで便乗質問なんだけど、SetRenderTargetするときは BeginScene/EndSceneで区切る必要ありますか?
806 :
780 :02/10/01 00:41 ID:???
SetRenderTargetってBegin-Endで区切らなくても使えるよね。 ただSetRenderTargetって2の累乗サイズのテクスチャじゃないとね。 CopyRectの負荷がもったいないので512*512にレンダリングして 640*480に戻すってのもアリかなぁと思ったりもする。 これなら解像度の低いRenderTargetを複数用意してレンダリングを 回せば簡単にMIPが作れるね。 ああ、それでDX9にはマルチレンダーターゲットとかいうのが付いたのか。
807 :
780 :02/10/01 01:10 ID:???
DX9で一つ気になる事が。VertexShaderのbレジスタだけど ifやcallでしか使えないらしいけど頂点毎に判定するんだろうか。 どうせ定数としか比較しないんだからDraw発行した時にシェーダー を最適化して頂点毎にifで判定なんてしないようになっていればいいが。 もし頂点毎での判定ならどうしても必要な時以外はifは使えんよな。 あと計算結果との比較や頂点毎にスケルトン数を持たせてその数で 処理を振り分けたり出来るんだろうか。
マルチレンダーターゲットはATIのチップしか対応してねーから意味ねー罠。
809 :
名前は開発中のものです。 :02/10/01 01:59 ID:q1lKlffC
お菓子版 ▲至福▲ おいしい菓子パン part4 ▲極楽▲
ここスレにいる
>>220 は基地外です。自分がこのスレの中心的な存在でなければ
気がすまない新参者を受け入れようとしない閉鎖的な人間です。
そのためには自作自演も当たり前のようにします
そんな態度が周りに不快感を与え、知らず知らず敵を作っているのです。
本人は気づいているのでしょうか
よろしければ一度見にいってくださいこのスレには彼の執念を感じます
↓
http://food.2ch.net/candy/#3
810 :
名前は開発中のものです。 :02/10/01 13:41 ID:pawwJ8Cr
IDirectXFileDataのメッシュオブジェクトから IDirectXFileData::GetNextObject()を呼んでも 子供のマテリアル等にいかなくてNOMOREOBJECTを返すのですが どうなってるの?ちなみにairplane 2.xで試してます
>>810 サンプルとしてはちょっと過剰機能かもしれないが、
SkinMeshのLorderサンプルに答えがあるよ。
兄弟オブジェクトと子供オブジェクトは違うということに注意だな。
>>811 SkinnedMeshに手を加えてやってます
IDirectXFile::CreateEnumObject()
=>IDirectXFileEnumObject::GetNextDataObject()
=>IDirectXFileData::GetNextObject()
=>IUnknown::QueryInterface()で取得した
メッシュオブジェクト(IDirectXFileData)で
IDirectXFileData::GetNextObject()を呼んでるのですが
MeshFaceWraps MeshTextureCoords MeshNormals
MeshVertexColors MeshMaterialList
はメッシュの子供ではないのですか?
ヘルプに書いてあるオプションのデータ要素は
子供かと思っていたのですが
813 :
811 :02/10/01 19:43 ID:???
>>812 っていうかメッシュ読み込むんでしょ?
それならD3DXLoadMesh~系の奴ならマテリアルとか自力解析する必要ないと思うんだけど…
何か特別なことやりたいのかな?
814 :
780 :02/10/01 22:45 ID:???
SetRenderTarget使ってぼかしテクスチャを3つ用意してみた。 512*512(元)と、512*512と256*256と128*128のぼかしテクスチャ。 あとはデプス値によってブレンドするみたいだけど、どうやるか分からん。 512*512の元画像のデプスバッファをテクスチャステージにセットして ピクセルシェーダーで読むんかな? でもダブルスチールはテクスチャ3枚とぼかし量のルックアップテーブル らしいからデプス値はやはり元画像のアルファチャンネルに描くのか。 じゃないとテクスチャステージ4つじゃ足りないし。 すると元画像のカラーとデプスをステージ0と1にセットして アルファにデプス入れ込むシェーダーで一回レンダリングするのか? 確かにこんな風にすればピクセルシェーダーで8ビットのデプス値を 取れそうだけど。すると256個のルックアップテーブルを確かに 参照させられそうだ。あとはルックアップテーブルの計算方法が わかればいいけど難しそう。
>>815 激しくスレ違いだけどVCでループカウンタがいくつのときにブレーク!とかってやっぱできるのかな?
できるんだろうなぁと重いながら、if文書いてブレークさせてる俺が憎い!
>>816 できますよ
編集->ブレークポイント->条件で
819 :
名前は開発中のものです。 :02/10/02 17:56 ID:2iij7o2x
ID3DXMeshをoptimize()したオブジェクトのマテリアルとその数と テクスチャ名が知りたいのですが何か方法はありますか?
820 :
780 :02/10/02 22:39 ID:???
>>814 でデプス値の取得方法を適当言ってたので訂正。
どうやらレンダリングしたカラーとデプスバッファを後から
合成するんじゃなくて元画像をレンダリングする時に頂点カラーの
αチャンネルにデプスを入れておくらしい。if氏のサンプルから判明。
同じようにやってみて、ピクセルシェーダーでmov r0,t0.aって
やったらグレースケールでデプス値を描画出来た。
あとはぶんか社のwebの資料を参考にするか。
821 :
名前は開発中のものです。 :02/10/03 00:27 ID:jFd/DQhs
XBOXは ほら、メインメモリのVRAMが共通のヤシ(なんつーんだっけ?)だから CPUからZBufferへのアクセスが自由らしいぞ PCの場合はZBuffer読み込み制限きついよねー アルファにいれても8bitでしょ? と、Masaさん周辺が言ってたと思った
822 :
名前は開発中のものです。 :02/10/03 00:28 ID:jFd/DQhs
メインメモリとVRAMが共有のヤシ
823 :
名前は開発中のものです。 :02/10/03 00:31 ID:jFd/DQhs
UMAでした。ウマー
824 :
名前は開発中のものです。 :02/10/03 00:44 ID:jFd/DQhs
ZBufferのアクセスはDX9で改善されてないかな? つかDX9まだでないの~~?
825 :
780 :02/10/03 00:53 ID:???
>CPUからZBufferへのアクセスが自由らしいぞ へぇ~、確かに便利だね。 でもデプス値が欲しいのはピクセルシェーダーでブラーテクスチャを ブレンドする時だと思うから結局CPUではアクセスしないので αチャンネルに入れるしか無いような気がするなぁ。 つーか、まさかGPUの仕事を低速なCPUにやらせてるのか? あしたwebの資料をあさってみるか。
Direct3D7でトゥーンシェーディングやりたいんだけど、 輪郭をレンダリングするにはどうしたらいい?
>>826 実装の方法は自分で考えてって前提なら。
ポリゴンの法線が視線(カメラ)の向きと直角なら、黒くする。
レンダリングするオブジェクトより、少しだけ大きく
ポリゴンが裏向きのオブジェクトを用意して同じ位置で一緒に描画
ちょー思いつき。
フリーソフトでアニメーション付Xファイル吐き出し出来るソフトありますか? へっぽこ専門学校生なんですが学校まで行ってソフト使いに行くのが億劫なんで。 メタセコからmikoto経由のXファイルアニメ吐き出しは変換ソフトが今非公開らしいし。
>>828 mikotoのファイルパーサを作る。
実力付くぞ~。専門学校生ならやっといて損は無い。
831 :
名前は開発中のものです。 :02/10/04 00:00 ID:37NScLDw
DolphinVSを改造して、オブジェクトの下面に波の映り込みを描かない 方法を模索してましたが、挫折しそうです。 GeForce3つかってます。D3DTOP_LERPとかいろいろやってみたけど うまく行きません。助けてください。
832 :
名前は開発中のものです。 :02/10/04 00:39 ID:Ry8odqE2
わざわざリクエストなんかせんでも 固定T&Lでのセルシェーディングなんざ ネット上に資料がゴロゴロ転がってるぞ。 googleで toon rendering とかで検索してみ。一発よ。
if氏のシャドウのサンプルはセルフシャドウがちらついて 変なのが残念。
DirectX9!!
ハァ?
初心者の雑魚なんですが質問させてください。 DirectX8.1のDirectGraphicsについてなんですが 2D描写の時、サーフェイスを作ってブロック転送するとうまくいくのですが スプライトでやろうとすると、 縦横のサイズを2の累乗でスプライトを作成すれば問題ないのですが、 それ以外の場合、伸びたりちじんだりしてしまいます。 やはりこれもテクスチャの制限というかビデオカードに依存するものなのでしょうか? 640*480でアルファブレンディングして2D描画(のべるげーのようなもの)がしたいのですが どうしてもうまくいきません。 サーフェイス間でアルファブレンディングなどは不可能なのでしょうか。 素直に7までのDirectDrawを使うべきなのでしょうか……
>839 漏れも初心者なんで細かいことはわからんが、確かDiorect3D系は縦と横がそれぞれ2の累乗の画像サイズじゃないとおかしくなる。 ビデオカードではなくDirectXの仕様みたいなの。 1024*512で画像作って、入れるか、512*512を拡大縮小して640*480にはめ込むなんてのもあり。 ていうかDirectDrawを使ったことが無いのでわからんちん。DirectGraphics簡単すぎねん。 ちなみにスプライト関数はお勧めしない。うちだけかもしれんけどなんか沢山だすとやたら重い。 頂点データで自前スプライト関数を作るのをお勧め。どうせ作るやつに併せて関数組替えるんだし細かいトコまで指定できるそっちのが良いかと。 初心者の漏れが言うことなんで自信なし。 このスレ見てる人はもっと上手い事言えると思うけど。
>>839 確かスプライトは勝手に伸縮するから、空のテクスチャを作った後に画像を
転送するとかそういう工夫が必要だったはず。
最近はエロゲでも640x480より大画面のゲームあるだろ。 2D野郎はけち臭いし面倒くさがり。 そのくせMMXやらSSEの自慰的最適化は大好き。 面倒なのが好きなら256x256を5枚確保して分割しろ。 5枚目は128x256に分ける
フルスクリーンってFPS自動調整してくれるんですか? ウインドウだと1000FPSなのにフルだと70~80になります。
845 :
816 :02/10/05 07:46 ID:???
846 :
名前は開発中のものです。 :02/10/05 09:18 ID:CpVGlNaL
>>844 リフレッシュレートに同期してんじゃねぇの?
デフォルトでは同期だっけ?
>>839 テクスチャのサイズは累乗の制限を受けるが
画像自体が勝手に伸びたり縮んだりすることは絶対に無い
D3DXでわざわざ伸張フィルター付で読み込んでいるとかいう落ちでは?
848 :
名前は開発中のものです。 :02/10/05 10:14 ID:CpVGlNaL
ifさんのHPいつのまにか消えてる~? 消息知らない? 大体煮詰まってくるとHP消しちゃうんだよなー おながいしますよ
849 :
839 :02/10/05 10:19 ID:???
>>839 テクスチャ読み込み時にD3DX_FILTER_NONEを指定しなさい。そうすれば累乗でできた余白は黒になる。
>>839 1024*512のテクスチャを作って640*480のBMPとかを
読み込ませてポリゴンに張って使えばいいと思うよ。
ただし、ピクセルとテクセルが完全に一致しない事がある。
座標に0.5の補正を掛けてもダメで、ドライバーの設定を
いじってもダメだった。元絵が微妙にボケる可能性あり。
>>842 >最近はエロゲでも640x480より大画面のゲームあるだろ。
>2D野郎はけち臭いし面倒くさがり。
CDの容量とかデザイナの手間を考えて640*480にするんじゃねぇの?
エフェクトとかも考えると640*480じゃないと古い機種はつらい。
>>848 if氏のはこっちに引越し。
http://www.t-pot.com/
852 :
名前は開発中のものです。 :02/10/05 11:56 ID:CpVGlNaL
DrawIndexedPrimitiveの2番目の引数MinIndexの説明で 「この呼び出しの間に使用される頂点群に対する最小の頂点インデックス。」 ってなってるんですけど、これは4番目の引数StartIndexの説明 「インデックス配列の中で頂点の読み取りを開始する位置。」 と何が違うのでしょうか?
修飾子を外していくとわかる 1つ目は「頂点群に対する最小の頂点インデックス」 2つ目は「インデックス配列の読み出し開始位置」 対象が違うっしょ
StartIndex。インデックスバッファの MinIndex インデックスバッファの中の値の最小値。「頂点バッファの 開始位置」みたいな使い方。
モーションが大変ってのはわかるんですが、シェーダーとか 一通りいじってきたので、そろそろモーションやろうと思ってます。 IFさんのページとか見たのですが、もっとじっくり知りたいのです。 おすすめの本とかサイトとか在りますでしょうか?
858 :
名前は開発中のものです。 :02/10/05 23:17 ID:Lt8u7Bgr
DotProduct3バンプ+加算マルチテクスチャ 現在PixelShaderを使わないでやってますが、 ほとんどマルチパスになっちゃってます。 普通xバンプ + 加算xバンプ やっぱもったいないですか?
頂点群に対する最小の頂点インデックス 最小って何が最小なんですか? 描画のタイプ(TRIANBLEFANとか)とプリミティブの数の二つの引数から 呼び出されるインデックスの数がわかるので、この二つとあとはインデックス バッファの開始場所の引数だけあればいいってことではないのですか?
860 :
名前は開発中のものです。 :02/10/06 00:41 ID:4rON28Od
>>859 2番目の引数MinIndexと3番目の引数NumVerticesというのは、
頂点バッファにあるN個の頂点のうち
「MinIndex番目からNumVertex個使う」
という指示なんだろう。
この範囲の頂点をハードウェアに送ったりT&Lしたり
なんらかの最適化に用いるんだと思う。
3D STUDIO MAXで吐き出すXファイルってのはモーションが付いてくるのですか? 棒を作ってボーン二個でうねるアニメを作りSDK付属のXファイルを吐き出しましたがメッシュビューワーでアニメーションしません 休日使って学校行ったのに何も進展なかったら欝だ・・・。
棒でボーン あぼーん 不幸
SetTextureStageStateが思い通りに行かなくて困っています。 質問なんですが、 SetTextureStageStateで テクスチャのアルファを参照するようにしているときに、 RGB565のようなアルファをもたないテクスチャを割り当てたら、 アルファは 0、1 どちらと見なされるんでしょうか?
>>862 ついてくる。
というか、Xファイルをテキストで出してみればわかる。
ちなみにMAXの場合、モーションなんかより
スキニング情報を出力させるのが厄介
(アニメーションしないのもそのせいだろう)。
プラグインのReadmeに書いてあるから読んでみ。
そもそもMAXは設計がおかしいから(機能追加による無意味な肥満化)
可能であればMayaなりXSIに移行することを勧める。
ついでに言うと、はじめはXファイル使うのもいいが、
3Dの仕組みわかってきたら自分でプラグイン作ることも勧めておく。
866 :
名前は開発中のものです。 :02/10/06 09:01 ID:PrcbrNwY
3DツールのSDKが英語なのが辛い MAXのSDK 日本語化が完全に終わってない、つかする気もない模様。詐欺だ。明記しとけ 文句言う方がヘタレですか、、、ショボーン 各ツール触ってないと、内部構造まで比較できないっすよねぇ 購入前にSDKあまり覗け無いし… MAXは醜いのか… 割とmaxフォーマットが広まってるので大金だして買ったのに鬱~
だいたい基本である3Dモデルを個人で手軽に作れない時点でこの業界終わってるよな。
著作権フリー素材集ってあんまり出回ってないのかな?
もしも。 もしもゲーム用の著作権フリー素材集を公開したところ、 著作者を明示せずに無断で流用する連中が横行し、 自分の素材が使われたゲームが見たいと思っても誰も作者に報告しない。 あまつさえ散々利用していたはずの連中に匿名掲示板で中傷される。 そんな状況だったらゲーム用のフリー素材集をどれだけの人間が公開するだろう? あなたは素材製作者に対してどれだけのものを還元してきたのだろう? 結局、他人の善意を引き出すことができるのは自分の善意だけだ。 誰かがやることを期待するよりも自分が先鞭をつけることが先ではないのか?
>>870 あーいやそのフリー公開じゃなくて・・・
音楽とか効果音とか壁紙とかって売ってるじゃない
そういうの
3Dはピーコ品じゃないと手出すのもバカらしいくらいソフト高いからな~
873 :
名前は開発中のものです。 :02/10/06 12:30 ID:PrcbrNwY
どんなデーターを期待してるんだ? 人体だって それなりに公開されてるだろ。Mikotoのデーターとかな まず、コンバーター作ってプログラムに組み込んで、ゲームなり動く状態になったら それを見せてデーター利用の交渉しろよ
>865 ありがとうございます。 Readme訳して勉強してきます。 学校がMAXとLightWave置いてあるんでそれを使ってるんです。 LightWaveは友人いわくテクスチャ付ワンスキンアニメの出力にバグがあるとかなんとかでMAXをやって見たんですが。
ああ、素材スレありましたね そっち行きます
876 :
名前は開発中のものです。 :02/10/06 14:11 ID:OgV3YXy2
リアルな爆発シーンを、パーティクルを使って描画しようと思っていますが、 自分で作ったプログラムを動かしてみても、しょぼい爆発しか描画されません。 というか、ただのビットマップが数個重なって(αブレンドはしたけど)表示されるだけです。 画像は、windowsのペイントのスプレーでちゃちゃっと書いたようなものなのですが、 これが原因なのですか? どうしても爆発が粗く見えるのです。 それとも、DirectXの描画機能で、ぼかすなどの機能があるのですか? それとも、プログラム中で画像をぼかす機能を自分で実装するのですか? みなさんどうやってます?
>3DツールのSDKが英語なのが辛い >MAXのSDK 日本語化が完全に終わってない、つかする気もない模様。詐欺だ。明記しとけ 翻訳ソフト通してある程度判断すればいい。つーか英語覚えなさい。 モデルの出力プラグインならMSもソース付きで公開してるし あるものを解析して吸収するべし。 正直日本語マニュアルが無いと何も出来ない奴はヘタレ。
879 :
名前は開発中のものです。 :02/10/06 16:06 ID:PrcbrNwY
ま、そうなんだけどね、日本語マニュアル って文中のリンクが全部切れてるしゴルァ って感じ リンクの張ってないOnlineDocなんて読めるかゴルァ 印刷してもまた別の面で不便
880 :
名前は開発中のものです。 :02/10/06 16:42 ID:tRa4bAyP
みんな、新しい顔文字ができました。いっぱい使ってください! σ゚д゚)ボーノ ボーノとは、イタリア語で「おいしい」という意味です。 2chでメジャーの(゚д゚)ウマーに対抗して(?)できたようです。 ※ちなみに、絵の意味は、イタリア人によく見られる、 おいしいときに指をほっぺにあてる仕草です
>>880 そういうくだらないことは他のクソスレでやってくれ
ちょっとまってくれよっ。このスレがクソスレじゃないって証拠がどこにあるんだ!?
そこかしこに
>>871 売っている素材集は基本的にゲーム等には使えないよ。
普通はテクスチャ等を単体で抜き出せるような用途には使用不可能。
ようするにプリレンダムービーにしか使えない。
ここはこの板でも数少ないまともなスレだろうが
>>884 いや、だから著作権フリーの、と書いてあるんですが・・・
887 :
名前は開発中のものです。 :02/10/06 18:21 ID:OgV3YXy2
DirectXには加算合成はないようですが、光とかってどう表現したら よいのですか?
> DirectXには加算合成はないようですが ポカーン
>>887 ライティングはdiffuseやspecularやambientなどで表現します。
というかprogramable shaderがあることだし、方法は無数です。
ファミコンではドット絵で表現した。
聖人は言葉で表現しました。
WinGLは236色(だっけ)中の近い色と置換する変換テーブルだっけ?
887に光明あれ。首をくくればおそらくJacob's ladderを視れる
>>887 ある、馬鹿なことを言う前にヘルプで確認しろ
>887 ていうかDirectDrawですか? それなら自前でピクセル毎にがんばって。 3D|Graphicsならヘルプを読みましょう。
DirectXGraphicsでの2D描画です。 頂点バッファを使わないでもできますか?
何度もヘルプを見ろと書いてあるはずだが読んだのか?
>892 出来る。 SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE); 透明On SetRenderState(D3DRS_SRCBLEND,D3DBLEND_ONE); 黒抜き SetRenderState(D3DRS_DESTBLEND,D3DBLEND_ONE); 加算 この後に描画するものはすべて加算になる。 戻し方は探せ。応用だ。
896 :
895 :02/10/06 21:56 ID:???
>894 逆ギレするくらいならこんな簡単なことで聞くな。ヘルプに載ってるんだから
別にヘルプに載ってる事ぐらい教えてやればいいのに。 ここのレベルが低い事ぐらい見ればわかるんだから相手に合わせろよ。 素人の書き込みにカリカリするなら来ないほうがいいぞ。
逆だ 素人がわからないことはヘルプに載ってるがヘルプに載ってないことこそ経験者に聞く必要がある。 相手に合わせろというくらいならおまえが相手に合わせてヘルプを読め。 そもそもDirectXSDKを使うのにそのヘルプを読まないとはどういう神経してんだ。
>898 その低レベルに聞かなきゃならんヤツならそのレベルを超えるべくここに来ないでもっとレベル高いとこ行けと。
>895 899 900 廚にかまうな。駄スレ化する。
そろそろ次スレの準備
で、どんなレベルの話ならOKなんだ? ネットで検索すれば出てくる話題はNGか? 英語資料読みもしない奴の質問もNGだよな。 とりあえずシーグラフレベル以外は質問すんなよ。
まぁまぁマターリ。 あまりにもアレだったら、初心者スレか物凄い勢いスレに誘導すればいいじゃん。 レベルの話自体が荒れる兆候なんだって。
最低限ヘルプを読んで、それで意味が分からなければ聞けばいい 努力が見られない人間に気持ちよく答えてやれる人間は少ない
>906 そうそう、それよ。 たとえば「ヘルプを見たけどどのような命令で加算ができるのかわかりません。DrawPrimitiveに何かやるのでしょうか」 みたいな初心者だけど色々試してそれでも分からん(↑この場合的違いなんだが)とかだったら答えやすい。 レベルとかじゃなく、態度やな。例えレベル高くても慇懃無礼なヤツには対応するのも面倒。 超初心者でも丁寧かつ行動してるやつなら応える。
初心者を抜け出したと思ってる奴が一番態度悪いよな。 変にプライド持ってたり自分の考え押し付けたり。 まぁそーゆー奴の質問にはGoogleのアドレスと 検索キーワード教えてやるだけ。 実際検索も出来ん奴は叩かれておしまい。
次スレまだ?
こんなレベル低いスレ要るのか?
低いかどうかは知らんが、要る。
>908 まさに初心忘れるべからずですな。 >910 それをいったらこの板の存在が
>それをいったらこの板の存在が 何か勘違いしてない?この板は隔離板でしょ。 ちゃんと機能してるんじゃないの。
>913 ゴメン納得
じゃあ必要と思ってる人が次スレ立てといてくれ。
〔夏みかん かくれんぼのやり方 大公開!!【今なら】〕
1. まずAを
>>1 とし、Bを
>>2 から
>>100 までとする。
2. そしてAはひたすら逃げて、BはAを追いかける。
3. 始める前にAは夏みかんを右手に持つ。
4. そしたらAが夏みかんを持った瞬間にスタートする。
5. で、Bの人が「あいつがAだー!!追えー!!!!」と言いながら追う。
6. その時Aはちゃんと夏みかんを持っている。
7. ルールは簡単。Aが夏みかんを落としたりBの人に捕まったらギロチンで死刑。
8. 後はAの地獄ゲームの始まり!!!(ワクワク
∧_∧ マテー ∧_∧
( ´∀`) (・∀・; )
( B つつ ( A つつ
/ / / / / /
(__)_) (__)_)
てすつ
919 :
名前は開発中のものです。 :03/06/12 11:39 ID:4dtzK4SQ
他のアプリケーションの フルスクリーン/ウィンドウモード の切り替えをする プログラムの作成は可能でしょうか?
あぼーん
922 :
名前は開発中のものです。 :03/06/13 01:58 ID:d/L6f6Yy
class CDirectDraw { static LPDIRECTDRAW m_lpDD; public: LPDIRECTDRAW *GetDirectDraw(void) { return m_lpDD; } // 以下略... }; class CSurface { public: HRESULT Create(...) { LPDIRECTDRAW lpDD = CDirectDraw::GetDirectDraw(); lpDD->CreateSurface(...); // 略... } }; 当然ですが CSurface::Create() を呼ぶ前に CDirectDraw は初期化されているものとします。 こんな設計はタコですか?
923 :
922 :03/06/13 02:08 ID:d/L6f6Yy
誤:LPDIRECTDRAW *GetDirectDraw(void) { return m_lpDD; } 正:LPDIRECTDRAW GetDirectDraw(void) { return m_lpDD; } 鬱だ氏のう
正二十面体の作り方を教えてください
______ /_ | /. \ ̄ ̄ ̄ ̄| / / ― ― | | / - - | ||| (5 > | | | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | | | ┃─┃| < このスレは既に終了してしまった || | | | \ ┃ ┃/ \ 正直、スマンカッタ | || | |  ̄ \_________
G┗┫o皿o┣凸gle < 「正二十面体」で検索しろや
927 :
922 :03/06/13 18:52 ID:d/L6f6Yy
誰か教えてん!
「正:」じゃねーだろ static LPDIRECTDRAW GetDirectDraw(void) { return m_lpDD; }
あと、設計がタコかどうかは、勝手にしろという感じだ。 要は参照カウンタをちゃんと処理するか手を抜くかだ。 CSurfaceだけを他のプログラムで流用可能にするならこういうのもどうだ HRESULT CSurface::Create(LPDIRECTDRAW dd) { ASSERT(dd); HRESULT hr = dd->CreateSurface(...); m_lpDD = dd; m_lpDD->AddRef; }
930 :
名前は開発中のものです。 :03/06/14 22:20 ID:cTPST66H
質問です。 Zバッファーのフォーマットについて質問です。 Zバッファーの設定で 16bitや、32bitに設定することが可能ですが、 内部で扱っている ピクセルの型は何になっているのでしょうか? 32bitが float型 だとは、おもいますが、 16bitは どういう型で 扱っているのでしょうか? もしかして Zバッファーは、浮動少数ではなく 整数で扱っているのでしょうか?
整数だよん。頂点変換後のZの0.0~1.0がそのままリニアにマッピングされる……ハズ。
932 :
930 :03/06/15 03:23 ID:IItMzzO8
>>931 整数なんですね。
32bitであれば、
頂点変換後のZ値0.0f~1.0fを
0x0~0xFFFFFFFF
に変換しているということなんですね。
ただなぜ浮動少数ではなく整数なのか疑問ではあります、
透視変換した後のZ値を そのままバッファーに書き込まずに、
浮動少数から整数にコンバートしたものを書き込むのはあきらかに
コストがかかるきがします。
整数で扱うメリットは、Zバッファのピクセル1個あたりを16bitなどにしてメモリを小さくすることできるから
ということでしょうか?
もしほかにメリットがあればおしえてください。
0.0~1.0の範囲にあれば、整数になおすのは単に仮数部を取り出すだけで 済むぞ。
そゆことでんな。
>>932 浮動少数で扱っているのは頂点単位での話。
セットアップエンジンによって変換されて、ラスタライザが扱うのは
固定少数なのが普通かと。
といっても、ピクセルシェーダ2.0からはラスタライザが浮動少数を
扱えなきゃいけなくなったから、今では状況が変わってしまったが。
DX9から浮動少数のZバッファフォーマットも対応したから、そっちを
使っているビデオカードもあるかも。
(D32等のフォーマットはどうせLockできないから既に使っているかも?)
>>924 計算式に興味がなくて、手っ取り早くデータだけがほしい場合は
LightWaveにプラグインがあるので、誰かにたのんで
そっから出力するといいかも。
937 :
名前は開発中のものです。 :03/06/19 08:35 ID:WowxRFTC
濡れにはチンプンカンプンだ。 がんばってくだせぇ。
938 :
名前は開発中のものです。 :03/06/19 13:39 ID:huxG79qD
Direct3Dを使って円を描画したいんですけど 普通の円、塗りつぶした円とかなんですが・・ やりかたがよく分かりません 教えて頂けないでしょうか? DrawPrimitiveとかを使って描けますか?
939 :
ちよ :03/06/19 15:18 ID:J/0rHTBe
>>938 DrawPrimitiveを使用しても きれいな円を描くには、
ポリゴン数がかなり必要。
円のテクスチャーを用意するのが簡単で良いんじゃない?
グレースケールで作っておいて色を変更したいときには
頂点カラーを設定するのがよさそう。
スクリーンバッファをロックしてピクセル単位で塗りつぶす方法もあるが、
遅くて使いものにならないとおもう。
ピクセルシェーダが使えそうな気がした。いや、知らんけど。
942 :
名前は開発中のものです。 :03/06/20 00:28 ID:PhCMIKkN
確かに単純な円ならピクセルシェーダでも描けるな。 ただ精度がちょっと心配かも。 PS2.0なら問題ないんだけどさ。
945 :
あぼーん :03/06/20 02:00 ID:QGuS5T92
946 :
938 :03/06/20 22:19 ID:z58H3NHE
>>940 レスどうも。
実用速度を考えた場合は、やはり円のテクスチャーを用意するのがよさげですね。
時と場合によって、バッファのDCにAPI使う方法と
テクスチャーで使い分けする事にします。
俺はテクスチャよりポリゴンの方がいいと思うがな。 どうせファン1つで済むから1ポリゴン≒1頂点だし。
949 :
名前は開発中のものです。 :03/06/24 13:33 ID:KCeWITLJ
DX9のテクスチャからサーフェスを取得して、GetDC()でHDCを取得したんだけど これってデバイスコンテキスト用API(?)のSetPixel()とかBitBlt()とかは 全部つかえるもんなの? GetDC()には成功したんだけど、なにやっても真っ黒なんだよねー(泣)
使えるよ。 っていうか、本当にGetDCは成功してるのか?
951 :
949 :03/06/25 13:10 ID:t/sv5vGp
黒くなったのは、GetDC()したからではなく、 テクスチャ作成時のフォーマットをD3DFMT_X8R8G8B8に したのが原因だったようです。 でもなんで黒くなるのか分かりません。 昨日は頭が回ってない状態で質問してしまったです。 正確には、画面上の任意座標に絵を2Dで表示させる為に テクスチャを用意して、それをスプライトを用いて Draw()するようなことをやっていました。 上記フォーマットで作成した場合、指定した位置に 真っ黒で表示され、GetDC()で書き込んだ内容が ウインドウの左上位置(0,0)に表示されてしまいました。 うーん、自分、テクスチャとサーフェスをよく 理解していないのかもしれません。 GetDC()はちゃんと成功しています。
>>951 結論から言うとGETDCで得たDCに直接書き込んでも実用品になりません。
ちらつくだけです。
コンパチブルDCをつくりDIBを作成
テクスチャも作成してそこから転送 このときテクスチャはARGBのデーターです。
そのテクスチャをポリゴンに貼り付け
真っ黒なのはアルファデーターを考えてないからかもしれないからかな?
アルファデーターはどこでどうされてるのでしょうか?
なんでテクスチャにGetDCしてちらつくんだ? そんな話は初めて聞いたけど?
954 :
名前は開発中のものです。 :03/06/26 19:31 ID:5GfwaFR5
つーかみなさま ID3DXEfectPoolって使えてます? インスタンス化したインターフェイスを D3DXCreateEffectに渡すとエラーになるんですよね。 渡すだけなんで何かミスしてるとは思えないし。 DX9aSDKじゃないんでそれが原因ですかね?
955 :
名前は開発中のものです。 :03/06/26 19:40 ID:5GfwaFR5
GetDCはフォント関係とダイアログ表示だけにするべきだと思うな。 それ以外のことはD3DXでより簡単にいけるでしょ。
956 :
名前は開発中のものです。 :03/06/26 19:53 ID:5GfwaFR5
あともう1つ質問。 環境マップを使ったエフェクトで最終的な色出力式ってどうすりゃいいのかな? デカールテクスチャ色xデフューズ色+スペキュラ色+環境マップテクスチャ色+アンビエント色 でいいの? デフューズ、スペキュラと環境マップをどう絡ませるべきなのかわからんす。
>>953 テクスチャを経由する場合は透明部分がいるからアルファ付きにする必要があるが
そうするとGetDCが出来なくなる
958 :
名前は開発中のものです。 :03/06/26 23:05 ID:UzXWyRBe
グラフィックメモリの消費量(or残量)を調べる方法ってあるのかな? 自前のプログラムが、どれくらいメモリを消費するか調べたいんだけど。 これはDirectXのAPIじゃなくてWindowsのAPIとして用意されてるのかな?
959 :
_ :03/06/26 23:11 ID:j8CcaA+E
>>958 i810みたいなのがあるから、簡単にはわからないみたいよ。
一度チャレンジしたことがあるんだけど、正確な数値は得られなかった。
>>957 フォント程度ならアルファが無くても平気だょ?
そしてフォント以外の部分も塗りつぶされる
963 :
名前は開発中のものです。 :03/06/27 21:33 ID:3azb0OQf
フォントは意外と強敵だよ。 綺麗に出そうとするとこれがまた難解でな。
なんか透過処理するにはαが絶対必要だと思い込んでる奴多いな。
フォントのアンチエイリアス処理は特許になってなかったっけ
>>966 勘違いかもしれん。MSがtruetypeのレンダリング処理のどこかに
特許を持ってるか何かで、XFree86関連のtruetype対応が一部止まって
るとかいう話を聞いた
Appleの特許じゃない? Apple、TrueType、特許で検索すると記事が見つかる 結局どうなったのか知んないけど
969 :
名前は開発中のものです。 :03/07/04 22:02 ID:Mh/sei2x
DirectX8で平行投影をするにはどうすればいいのですか?
970 :
_ :03/07/04 22:12 ID:B5C7015r
>>969 1. マルチポストかおめー
2. ヘルプちゃんと読め
972 :
名前は開発中のものです。 :03/07/05 11:52 ID:97/cMruB
視点移動の質問です D3DXMATRIX m_matView;//以前のビュー行列 D3DXMATRIX m_matCLocal;//カメラローカル行列 D3DXMATRIX matR; D3DXQUATERNION q; D3DXVECTOR3 m_vYPR; D3DXMatrixIdentity(&m_matCLocal); D3DXQuaternionRotationYawPitchRoll(&q,m_vMovYPR.x,m_vMovYPR.y,m_vMovYPR.z); matR=m_matView; matR.m[3][0]=matR.m[3][1]=matR.m[3][2]=0.f; D3DXMatrixRotationQuaternion(&matR,&q); m_matCLocal=m_matCLocal*matR; これだとy軸眺めたときにヨーがロールになってしまうんですが なんか間違ってますか? クォータニオンってジンバルロック無いと思ってたのに・・・ ご教示お願いします
これってYPRに相当するQuaternionを作ってるんだよねえ・・・ YPRで管理すること自体がジンバルロックの原因だということを理解していない?
974 :
無料動画直リン :03/07/05 12:12 ID:F0qUjL+p
975 :
972 :03/07/05 12:22 ID:XM0AoxQ8
>973 オイラー角管理になってしまうからですか クォータニオンのみで管理するんですか・・・分かり難いなぁ 他の方法を考えて見ます巣
976 :
名前は開発中のものです。 :03/07/05 16:38 ID:7s13lWZW
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
ネットで稼ぐならこれ。完全無料!!
リンクスタッフになれば小遣い稼ぎができます!!(右上に登録画面があります)
[報酬について]
クリック報酬・・・1クリックされる度に10円の報酬
バナー紹介料・・・リンクスタッフ登録の度に1000円の報酬
キャンペーン・・・今なら登録するだけで1000円プレゼント
間接報酬・・・紹介者が得た報酬を何割か加算いたします
ボーナス・・・優秀サイトには、報酬に応じてボーナス有り
単純に考えて1日100人クリックしたとすると、100人×10円×30日=30000円(一ヶ月)
そこらへんの掲示板に貼り付けていけば100クリックなんてスグです。
その他、自分の貼り付けた広告から誰かがスタッフになると1000円もらえるので
1日5人スタッフを紹介できたとして1000×5×30=150000円
30000+15000=180000!!間接報酬などもありますので一ヶ月に10万円以上は稼げます!!
http://www12.ocn.ne.jp/~sihori/com.html ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
977 :
名前は開発中のものです。 :03/07/05 21:03 ID:DVozr+6k
行列関数について 初歩的な質問です。 D3DXMATRIXpt; D3DXMatrixIdentity(&pt); pt._41=0; pt._42=0; pt._43=-1; D3DXMatrixRotationX( &pt, D3DXToRadian(90) ); カメラ位置はz-4 方向は000とします 手前の点を X軸に沿って上向きに90度回転 ptの値の変化は_41=0 _42=1 _43=0 というのを期待したのですが、(x0 y1 z0) 実際は別のフィールドに値が書き込まれ_41 _42 _43には0が書き込まれます。 回転後の座標を得る為にはこの結果を、さらに何かの関数を通さないといけないのでしょうか? それとも根本的に間違っているのでしょうか? 初歩的な質問ですみませんが教えてください。
978 :
直リン :03/07/05 21:12 ID:F0qUjL+p
>>977 なんで回転行列を作成する関数で計算結果が出るんだ?
ついでになんで回転させると座標が変わるんだ?
お前の地球儀は回転させるとどこかに吹っ飛んでいくのか?
981 :
無料動画直リン :03/07/05 23:12 ID:F0qUjL+p
982 :
名前は開発中のものです。 :03/07/05 23:44 ID:DVozr+6k
>>979 980
D3DXMATRIX pt,pt2,pt3 ;
D3DXMatrixIdentity(&pt);D3DXMatrixIdentity(&pt2);
pt._41=0; pt._42=0; pt._43=-1; //惑星座標
D3DXMatrixRotationX( &pt2, D3DXToRadian(90) );//原点で回転
D3DXMatrixMultiply(&pt3,&pt2,&pt);
となると、まず原点(公転)で回転してそれを惑星と乗算すると良いのですか?
これでも0、1、0にはならないのです。
何故なのでしょうか? あほな私に教えてください。
983 :
名前は開発中のものです。 :03/07/05 23:57 ID:bi3MZju7
>>982 行列の平行移動成分と、ベクトルの座標を混同してるんじゃねーの。
>971 聞くのは一時の恥 聞かぬは一生の恥
>>985 わからんやっちゃな。マルチポストはまた別の恥だ。
つーか、もう別の場所で答えもらってるんだから大人しくしとけ。
>>982 どうしても0,1,0が欲しいのなら
D3DXMatrixMultiply(&pt3,&pt,&pt2);