> 使い捨てアプリはC#
使い捨てアプリは板違いだから、ゲ製的にはC系使いはC#イラネって事か…
942 :
名前は開発中のものです。:2007/05/14(月) 02:38:58 ID:vfAgKAOX
>>936 そのためのDispose
>>switch ステートメント : C++ の switch ステートメントとは異なり、C# は、ある case ラベルから下にある case ラベルへの移動をサポートしていません。
>なんでみんなが慣れた動作を変えようとするのかわからん
諸悪の根源だからな。
基本的にC++と互換性はないよ。そのまま移植はありえない。
C#というより.NETFrameworkのランタイム使えれば.NET使えば良いだろう。
使えなければC++のネイティブが良い。
DirectX環境でランタイム使えないのはさすがにありえないけどね。
Managed使ってみてもなんか気持ち悪いしな
慣れればいいんだろうけど
>>898 >だから変形させるときだけ変形させたいメッシュに挿げ替えてもいいわけ
ねえ・・・結局最初からマップチップで描画すりゃいいじゃんソレ・・・。
>>941 >使い捨てアプリは板違いだから
心の狭い香具師だな
.NETの参照型、値型の縛りは気持ち悪い。
何でヒープ型とスタック型にしなかったんだろ。
こっちの方が自然だし、自由度が高い。
>>945 変形させるとなるとかなり目の細かいメッシュが必要だから常時だしてると重くなるよ
>>947 それだとユーザ定義型でスタック型とヒープ型を混ぜられなくなるんじゃない?
無理矢理混ぜられるようにあれこれ弄りだすと結局今の値型になりそうだけどその辺どうよ?
それとも混ぜられなくておkにするの?
>>947 それともC++みたいに確保時にスタック上とヒープ上の選択ができるようにするってこと?
ヒープ型とスタック型って響きは自然だけど、どういう仕様を意図してるのかいまいち分からん。
{
value_t value0; // スタック型
value_t value1 = value0; // スタック型は常にコピー
value_t^ pValue0 = new value_t(); // ヒープ型
value_t^ pValue1 = pValue1; // ヒープ型は参照カウント増加
value_t^ pValue2 = ^value0; // オートボクシング
} // スコープを外れるとスタック型は、Disposeコール
っていうかC++/CLI?
>>948 CPUかフィルレート律速の状況なのに、頂点数減らすために
わざわざ柔軟性の無い実装に変えても意味ないでしょ。
まぁ一般的に頂点シェーダーが吊る事ってまずないからなぁ・・・。
元は画面いっぱいのチップが重いって話なんだしDP量に比例するCPU負荷の話だろ。
954 :
名前は開発中のものです。:2007/05/15(火) 15:46:48 ID:247W4gkD
すみません
>717のLueというライブラリは何かの略称でしょうか?
ぐぐっても出てきませんです。
ありがとうございます
Blue Impulse に突っ込むところでした
957 :
名前は開発中のものです。:2007/05/15(火) 19:08:35 ID:f7G5sIdD
>>951 くだらねw
それじゃ、C++じゃねーか。
C#のいいところが抜け落ちてる
3Dモーションモデルの作成はやはり、photoshopを使うべきなんでしょうか?
ゲームやるならXSIFndか 金あるならMaxいっとけば?
・・・その人使い込んでないソフトのことも記事にしてないか?中立視点のようで温度差けっこうあるなw
俺はLightwave信者
ツールの信者は結構いるよな。
一度使ったら、他のツールを使うつもりにならないなぁ。
とりあえず、Max使い始めました。
俺もLightWaveだな
まぁこればっかりは好みだから仕方ない
Lightwaveって、一昔前にトゥーンが強いって聞いたけど、
今でもLightwaveがトゥーン最強?
>>963 好み以前に、趣味レベルだと価格の問題がw
趣味でMaxは手が出ないな。まぁ、gmaxで十分かもしれないが。
966 :
名前は開発中のものです。:2007/05/16(水) 20:54:55 ID:7cJo3Vs6
ビルボードを実装しようとしているのですが、上手くいかないので
どうか教えてください。
ビュー行列のm41、m42、m43 を0にして、その逆行列を
ワールド行列に設定して描画したのですが、
遠くの板ポリも近くの板ポリも全く同じ大きさに表示されてしまいます‥orz
と言うか、カメラ位置をフィールドに対しズームアウト、ズームインしても
遠くの物も近くの物もカメラの目前に張り付いてるように、常時同じ大きさと位置で表示されてしまうのです。
ビルボードに遠近感を持たせるにはどうすればいいのでしょうか?
RHWが何たらとも読んだのですが、具体的な実装法が全く分かりません。
何とぞご教授をお願いします
射影行列を設定しろ。
射影行列だっけ?
ビルボードってカメラ行列(ビュー行列?)のm41,m42,m43の以外の部分を
コピーしてビルボードを置きたい座標をm41,m42,m43に入れるだけだと思ったけど
メッシュは-z方向に向ければ、別に行列いじらなくてもそのまま使えたような・・・
射影変換無しでどうやって遠近のサイズを設定するんだ?
そのビックリな方法を言ってみろ。
位置に応じて単純なスケーリングを
まあ射影変換のことだけどな!
>>966 逆行列をとった行列が、
実はビュー行列じゃなくて、ビュー行列とプロジェクション行列の積
だったんじゃないの?
いかにもありそうだが
972 :
名前は開発中のものです。:2007/05/16(水) 22:38:21 ID:7cJo3Vs6
>>970 そのスケーリングの方法を教えてください。
ちなみに、IDirect3DDeviceにプロジェクション行列は設定してます。
ビュー行列の逆行列を、Deviceのワールド行列に設定して
描画すると、ビルボードの遠近感だけが全くなくなってしまうのです。
(DSpriteで描画したのと同じ感じになる)
具体的な方法を何とぞご教授くだされ
>>969 え?意味がわからん。
普通の、まーよくある描画までの一連の流れは辿ってるってこと前提だと思ったんだけど
ビルボードじゃなくてモデルの表示まではできてるって俺は勝手に思ってたけどそうじゃなくて
質問者は射影行列つーかワールドから画面に表示するまでの一連の流れができてない状態の人だったってこと?
俺は、ビルボードのローカル座標のあり方について聞いてるかと思った
>>972 てか、ビルボードじゃない普通の3Dモデルは表示できてる?
てか、3D空間は構築済み?
>>972 ビルボードの場合、オブジェクトの向きは、カメラの向きによって決まるけど、
オブジェクトの位置は変えちゃだめよ。
とりあえず、ビュー行列の逆行列(=カメラの姿勢行列)を求めてから
その平行移動成分(m41,m42,m43)に、位置座標を上書きすれば多分おkね。
今はきっと、全部のビルボードが、ワールドの原点に配置されているんじゃないかしら。
やっぱそうだよなぁ
#ああ、俺もビルボードのローカル座標とか違うこと言ってるわw
カメラの姿勢行列のm41,m42,m43以外の部分をコピーして来て
ビルボードを置きたい座標(ワールド)をm41,m42,m43に突っ込んで
できたもんがビルボードのワールド座標だよな
射影行列使ってやる方法もあるってことなんかな?
977 :
名前は開発中のものです。:2007/05/17(木) 00:19:03 ID:+BYlvm7I
シェーダで演算してその結果をID3DXEffect::GetIntで
取得できないかといろいろ試しているのですが
この方法は無理ですか?誰か助けて。
無理じゃね?
>>977 どっかのテクスチャに描画してその描画結果を取得するんじゃ駄目なの?
980 :
名前は開発中のものです。:2007/05/17(木) 01:25:44 ID:LzmNTBWG
>>975 それが無理なんです‥
やって見ればわかります。
ちなみに、カメラの位置は地面から垂直な天上から30度下げた位置にあり
つまり、地面とその上に立つキャラを斜め上から見下ろしてる状態です。
キャラをビルボードにすると、丁度キャラが地面に立ってるようになる訳で
ビルボードにした場合は、カメラに対して手前のキャラは大きく
奥のキャラは小さく表示されるべきなのに、上の方法を使用しただけでは
全部のキャラが手前奥関係なしに同じ大きさになってしまうのです。
ビュー行列の逆行列(シフト成分ゼロ)に加えて、もう一つ何かの計算が
必要だと思うのですが、どうかそれをご教授ください。
視線ベクトルと単位垂直ベクトルの外積を、単位化して水平ベクトル
^^^^^^^^^^^^@ ^^^^^^^^^^^^A
@とAで3D空間上にポリゴン表示。
>>980 >それが無理なんです‥
>やって見ればわかります。
いや、俺
>>975じゃないけど感覚でそうはならんはずってわかるっしょ
だってカメラの姿勢行列ってワールドに普通に存在するモデルとなんも変わらないじゃん。
その行列の位置座標を変えるだけなんだからこれでおかしいってことないでしょ。
仮にカメラの回転成分を
1000
0100
0010
にして位置座標だけ変えてみたら描画までおかしくなりそうか?ならないっしょ?
なにか別のことしててそれがバグってるんでしょ。
書いてて気付いたけど
もしかして
>>980ってワールドの拡大縮小を利用して描画のサイズを決定してるんじゃ・・・
要は、木のビルボードみたいに軸回転だけにしたいわけね。
985 :
名前は開発中のものです。:2007/05/17(木) 09:58:55 ID:LzmNTBWG
>>983 そうなんです。
もともとD3DTS_WORLDに、::D3DXMatrixScaling(1 / 1280, 1 / 960, 1 / 480)で生成した
スケーリング行列を設定してたので、先のビュー逆行列とスケーリング行列の積を
D3DTS_WORLDへ、新たに設定してます。
それはダメなのですか?
986 :
sage:2007/05/17(木) 14:11:34 ID:rJQ9Pieq
各オブジェクトの D3DTS_WORLD は共通で、代わりに位置座標は、
DrawPrimitiveUPかなんかで描画するときに、ポリゴンの座標を直接変更してるってこと?
もしそうなら、ポリゴン座標の変更はやめて、
各オブジェクトごとに、ビルボード行列*平行移動を求めて
D3DTS_WORLDに設定しないとだめね。
>>985 >それはダメなのですか?
うん
別にそのままでも動くっちゃ動くけど、色んな行列変換ができなくなるよ
こういうのははじめにデザイナさんと打ち合わせして寸法決めとかないと駄目
んでワールドの原点に普通に表示したときには
1000
0100
0010
0001
で普通に表示できないと苦しい
スケール使って調節するってのは普通はやんない。と思う。
スクリーン座標に対応させたビルボード用のビュー行列を用意しておいて、
必用なときだけ切り替えれば済む話。
989 :
977:2007/05/17(木) 23:31:15 ID:+BYlvm7I
>>978、979
テクスチャに書いてgetrendertargetdataでシステムメモリに
コピーというのはやったのですが遅いのでgetintを試したの
ですけど、getintは無理のようですね。ありがとうございました。