トップページ⇒tech
1001コメント300KB

【みんな】XNA 質問・相談スレッド1【初心者】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/09/23(日) 23:43:41
Microsoft XNA はマイクロソフトによって提供された、ゲーム開発のためのツールである。
XNA はマネージ実行環境を完備する。
2004 年 3 月 24 日、カリフォルニア州のサンノゼの Game Developers Conference で発表され、
2006 年 12 月 11 日にリリースされた。

XNA は「 XNA's Not Acronymed」 ( XNA は頭字語ではない)の頭字語である。


XNA デベロッパーセンター
http://www.microsoft.com/japan/msdn/xna/

xna スタジオ
http://xna-studio.jp/

XNA Game Studioメモ
http://www.saturn.dti.ne.jp/~npaka/xna/

ということで立ててみた。
0284デフォルトの名無しさん2009/02/21(土) 16:56:27
spritefontを二つ作る
無駄だから大きい方を縮小して描画した方がいい
0285デフォルトの名無しさん2009/02/21(土) 17:13:36
大きい方を縮小して描画するならspritefont二つ要らないのでは?
SpriteBatch.DrawStringでどうやって縮小描画する気か知らんけど
02862842009/02/21(土) 17:22:01
二つ要らないと言いたかった
縮小はscale引数があるだろ
0287デフォルトの名無しさん2009/02/21(土) 17:37:43
縮小なんて出来るんですね。すごいテクニックです
ありがとうございます。拡大は荒くなるからだめなんですよね

あと、キーの押された判定は使いたいボタン全部stateでPressedかどうか判定していくんですか?
なんかすごい長くなるきがするんですが、それに最初にヒットしたキーと最後とだと時間差ができませんか?
0288デフォルトの名無しさん2009/02/21(土) 17:51:27
GameComponentのコレクションに追加したクラスのDrawはどういう順番で呼ばれるんですか?
全クラスのDrawの中を自動で判別してZ深度の順で書き込んでくれるんでしょうか?
0289デフォルトの名無しさん2009/02/21(土) 17:54:03
バナナはおやつに入るのでしょうか?
0290デフォルトの名無しさん2009/02/21(土) 17:57:54
低脳質問厨は放置の方向で
0291デフォルトの名無しさん2009/02/21(土) 18:17:33
このスレいらないと思うんだけど
0292デフォルトの名無しさん2009/02/21(土) 18:24:17
初心者を脱した初級者にはよくあること
0293デフォルトの名無しさん2009/02/22(日) 11:09:38
初心者を脱した初級者にはよくあることなんでしょうか?
0294デフォルトの名無しさん2009/02/22(日) 12:05:03
GameComponentのUpdateOrder
0295デフォルトの名無しさん2009/02/22(日) 13:00:04
thx
0296デフォルトの名無しさん2009/02/22(日) 14:51:22
DrawOrderだろ?
GameComponentのUpdateとDrawの更新順序が同じとは限らないのに
0297デフォルトの名無しさん2009/02/22(日) 15:34:07
Drawable付きか
0298デフォルトの名無しさん2009/02/26(木) 23:20:46
3Dオブジェクトで背景まで透けて見えるわけじゃないんですが
見えないはずの裏のオブジェクトの一部が中が透けてみえているんですが
これはどうなってるんでしょうか
0299デフォルトの名無しさん2009/02/26(木) 23:48:55
たとえば手前に透明なものを先に書いた場合
色は書き込まれないけどZバッファには書き込まれるために
その後に書いたものでその物体より後ろにある部分は描画されない
完全に透明であればアルファテストをすることである程度回避できるが
半透明の場合はZソートして書き込むしかない
0300デフォルトの名無しさん2009/02/27(金) 00:19:13
透明な面は一つもないんです
法線もチェックして全ての面が外側に向いているのも確認したんですが
FBXファイルの中を理解して修正するしかないんでしょうか
この場合でもZソートというものをして奥にあるものから描画すれば大丈夫なんでしょうか?
透明なオブジェクトはないんです
0301デフォルトの名無しさん2009/02/27(金) 00:30:49
とするとZバッファがちゃんと働いてないだけじゃん。Zバッファ関係の設定と
変換行列があってる事を確認した方がいいんじゃないかと。
0302デフォルトの名無しさん2009/02/27(金) 00:47:12
SpriteBatchかなんかと同時に使っていて、レンダーステート壊してんじゃない。
0303デフォルトの名無しさん2009/02/27(金) 10:40:56
透明な面はなくてもテクスチャにα値が書き込まれてるとか
0304デフォルトの名無しさん2009/02/27(金) 11:19:48
thx。いろいろ調べてきました。
厄介なことに再現できなくなりました
graphics.GraphicsDevice.Clear(Color.Blue);
を
graphics.GraphicsDevice.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.CornflowerBlue, 0, 0);
に置き換えたら透けなくなったんです
が、そのあとまた
graphics.GraphicsDevice.Clear(Color.Blue);
にもどしたても透けないんです。クリーンもやりました
バグの可能性ありますか?
0305デフォルトの名無しさん2009/02/27(金) 11:31:54
戻した状態で表示位置を今の場所と重ならない位置にずらす
0306デフォルトの名無しさん2009/02/27(金) 11:39:32
どういうことですか
ぐるぐる回したり移動させて確認はしてるんです
0307デフォルトの名無しさん2009/02/27(金) 17:05:22
ジャギーを消す方法はありませんか?
0308デフォルトの名無しさん2009/02/27(金) 17:43:45
http://blogs.msdn.com/ito/archive/2008/03/08/tcr-for-fun.aspx
0309デフォルトの名無しさん2009/02/27(金) 18:21:04
おーできましたありがとう
どうすればいちいち聞かなくても調べられるようになるんですか?
本を買ってしまったら負けだと思ってるんですが、
XNAがなんなのかを理解するには本を買わないとダメな仕組みになってるんでしょうか?
収入に繋がる絶対的な確信がない限り経費は出せないと思うんですが、皆さんはどうやって習得したんですか?
0310デフォルトの名無しさん2009/02/27(金) 19:18:00
XNAに関する書籍はロクなのないからいいけど
それ以外の専門書は絶対に読んだ方がいいものがあるので
「本を買ってしまったら負け」と思ってる時点で負けてる
将来の投資としてお金が使えない人は技術者としてダメだと思う
0311デフォルトの名無しさん2009/02/27(金) 19:37:12
これ現代のファミリーベーシックだぞ
力抜けよ
0312デフォルトの名無しさん2009/02/27(金) 21:49:15
>>302
そうでした、SpriteBatchはコメントアウトしてたんですが
また入れたら透けるようになってしまいました。
前面に文字を入れたくてDrawの中で2Dと3D描画一緒に使ってるんですがまずいですか?
どうすればいいんでしょうか
0313デフォルトの名無しさん2009/02/28(土) 00:08:58
>>312
http://blogs.msdn.com/ito/archive/2007/03/13/spritebatch-part2.aspx
0314デフォルトの名無しさん2009/02/28(土) 00:47:29
ひとつひとついちいち聞いてたら切りがないし
自分で調べたり、なんとかコードを書くクセをつけないと
ゲームプログラム組めるようにならないぞ。
書籍とか技術資料に経費かけるのに勝ちも負けもないよ。
みんなそうやって技術を身に着けてる。
0315デフォルトの名無しさん2009/03/01(日) 13:14:15
お人好し。
0316デフォルトの名無しさん2009/03/01(日) 13:42:31
そうは思ってない人なんだろ

0317デフォルトの名無しさん2009/03/01(日) 14:04:06
hai?
0318デフォルトの名無しさん2009/03/01(日) 15:10:19
ださ
0319デフォルトの名無しさん2009/03/01(日) 20:24:39
ひとつひとついちいち相手してたら切りがないし
なんとかスルーするクセをつけないと
一生馬鹿のために貴重な時間を無駄にし続けるぞ。
0320デフォルトの名無しさん2009/03/01(日) 20:50:57
XNAで就職できるんでしょうか?
0321デフォルトの名無しさん2009/03/01(日) 22:00:17
>>320
実際に就職したい会社の採用ページを見れば分かると思います。
0322デフォルトの名無しさん2009/03/11(水) 00:17:54
本のこと聞いていもいい?
これと
XNAゲームプログラミング Xbox 360とWindowsのクロスプラットフォーム開発 赤坂 玲音
これだと
Microsoft XNAガイドブック Microsoft Xna Game Studio Express Creator's Guide
どっちが役に立つ?重視するのはXNAのテクニックやノウハウ
0323デフォルトの名無しさん2009/03/11(水) 00:21:08
ああ、俺も聞きたかった
XNAゲームプログラミング Xbox 360とWindowsのクロスプラットフォーム開発
この本、コンテンツパイプラインの拡張とかについては書いてあるんだろうか・・・
近くの本屋においてなかったんだよなぁ・・・
0324デフォルトの名無しさん2009/03/11(水) 00:50:27
コンテンツパイプラインの拡張書いてあった
目からうろこ
0325デフォルトの名無しさん2009/03/11(水) 00:58:30
赤坂氏って実績ある人なはずだけど
codezineの記事や過去に買った本の内容から、説明下手教え下手な人のイメージが拭えない…
買うなら他の買う…
0326デフォルトの名無しさん2009/03/11(水) 09:24:34
ソフトイーサの人もそんなイメージ
0327デフォルトの名無しさん2009/03/11(水) 21:15:03
じゃあ、おまいらならどの本買うのか教えてください。
0328デフォルトの名無しさん2009/03/12(木) 03:47:26
本は・・・買わんな・・・正直公式ドキュメントとネット上のリソースだけで充分だし、大体にしてまともな本でてねえと思う。
もし3Dの基本的なことから勉強したいなら、むしろXNA以外の3D関連の本買った方がいいんじゃないかなあ。
ちなみに俺が一番3D関連で役に立った本は、ロボット工学の本だ・・・
ロボット工学と言いつつ、ほとんど順動力学と逆動力学の事しか書いてなかったのだが・・・w
0329デフォルトの名無しさん2009/03/12(木) 03:58:44
人としてどこかがおかしい
0330デフォルトの名無しさん2009/03/12(木) 10:19:42
これがいいよ
Xna 2.0 Game Programming Recipes
(今ならXna3.0のも出てる)
0331デフォルトの名無しさん2009/03/12(木) 14:41:28
XBOXはコンテントの参照以外で参照追加したら動かないですか?
0332デフォルトの名無しさん2009/03/12(木) 15:30:38
追加できるものなら大丈夫だよ。
ほとんど無いけど。
自作かサードパーティ製の話かな?
0333デフォルトの名無しさん2009/03/12(木) 17:53:54
>>331-332
ハァ?クラスライブラリは普通に参照して動くだろ。
何のための.NETなんだよ。
サードパーティ製とかアホか。知ったか乙。
0334デフォルトの名無しさん2009/03/12(木) 18:05:36
参照するアセンブリが違うんだよ
mscorlib.dllからして違う
0335デフォルトの名無しさん2009/03/12(木) 21:59:45
クリエーターズクラブってなんでサインインできないの?
現状、全てのソフトがマケプレで公開されてるしレビューとかはどうなっちゃったの?
0336デフォルトの名無しさん2009/03/12(木) 22:13:10
レビューっていつの時代の話だよそんなのとっくに中止されてる
情弱にも限度ってものがあるぞ・・・
0337デフォルトの名無しさん2009/03/13(金) 14:21:00
公式サイトのあの情報の不親切っぷりで情弱というのなら、最早何も言うまい
0338デフォルトの名無しさん2009/03/15(日) 10:35:58
>>333
自分で作ったクラスライブラリ以外のライブラリはサードパーティ製
ソースで提供されてるものとは違うんだよ?
0339デフォルトの名無しさん2009/03/16(月) 02:47:06
新しい項目の追加でGemeCompornentをプロジェクトに追加し、
その中のUpdateにボタンを押した時のコードを追加したのですが、
プロジェクトを実行しても、そのコード、Update自体が実行されませんでした。
どうすれば追加したクラスのUpdateが呼ばれるようになるんですか?
0340デフォルトの名無しさん2009/03/16(月) 03:53:05
だれかー
0341デフォルトの名無しさん2009/03/16(月) 03:57:29
そのクラスをnewした?
という程度の問題ではないよな。
0342デフォルトの名無しさん2009/03/16(月) 04:18:50
newってもしかして
newしたあと自分でUpdate呼び出すんですか?
Updateは勝手に呼ばれるんじゃないんですか?
だとしたらもしかして、Initializeも自分で呼ばないとですか?
0343デフォルトの名無しさん2009/03/16(月) 04:29:24
あーごめん、newだけでは動かなくて、
Game派生クラスのComponents.Addを呼んでやらないといけない気がする。
0344デフォルトの名無しさん2009/03/16(月) 05:45:55
すごいありがとうできました。
0345デフォルトの名無しさん2009/03/16(月) 05:54:59
これはあまり使われないんですか?
どういう場面でGemeCompornentの派生が必要なんでしょうか
追加クラスのUpdateと、元のクラスのUpdateの呼ばれる順番はどうやってきまるんでしょうか
0346デフォルトの名無しさん2009/03/16(月) 10:15:59
XNA3.0のドキュメントみるといいよ、今は日本語もあるし。
Updateの順序はUpdateOrder
0347デフォルトの名無しさん2009/03/17(火) 04:30:10
全然わかりません
自分の実行順位は変えられないですか?
必ずメインのあとに追加の奴来るんです
0348デフォルトの名無しさん2009/03/17(火) 10:26:36
もう吊れよ
0349デフォルトの名無しさん2009/03/26(木) 23:08:05
実家に帰るから小さいノートに環境入れてみたら
グラボのスペック不足て実行できない><
0350デフォルトの名無しさん2009/03/27(金) 10:34:28
>>349
http://www.riemers.net/eng/Tutorials/XNA/Csharp/ShortTuts/Reference_device.php
0351デフォルトの名無しさん2009/03/28(土) 14:56:31
C#でDirectX扱うとしたら、いまのところこのXNAとSlimDXってところか。
0352デフォルトの名無しさん2009/03/30(月) 18:15:48
そもそも、パフォーマンスを要求される3Dゲームを.NETでやろうとしてること自体方向性として間違ってるんだよ
まさかM$が本気で同人ソフトの開発環境で商売になると思ってるはずもないし
仮にXNAが3Dゲーム開発業界で採用されるようになっても、ユーザーが満足しないだろそんなもん・・
0353デフォルトの名無しさん2009/03/30(月) 18:18:02
パフォーマンスを要求されるゲームならそれなりの環境用意して作ればいいじゃない。
0354デフォルトの名無しさん2009/03/30(月) 19:06:45
TriangleStripでジグザグに6点打って4面の長方形書くのはわかるんですが長くしないで次の段にする時って折り返すしかないんですか?
x,yの2階層ループで作成させる時うまく書けないんですがこれ絶対ひと筆書きにできないとDrawUserPrimitivesをxかyごとに
繰り返さないとだめですよね?
0355デフォルトの名無しさん2009/03/30(月) 20:18:29
ごめんオフセットの引数が用意されてたこれ使えば書けそう
0356デフォルトの名無しさん2009/03/31(火) 00:42:19
全面うらがえってるんですがこれ単純に裏返すにはどうすればいいんですか?
時計回りに描画するかどうかで分かれると書いてあるのを見たんですがTriangleStripにそんな状態なくないですか?
0357デフォルトの名無しさん2009/03/31(火) 01:25:20
ヴァカ登場
0358デフォルトの名無しさん2009/03/31(火) 02:06:52
日本語の意味がよくわからんのだけど、エスパー的に答えるとすると

もし本当にオブジェクトの面の表裏が意図したのと逆になってるなら
単に頂点の位置指定が全部反時計回りになってるんじゃね?
もしくはカリングの指定が逆になってるんじゃね?

もしTriangleStrip使ってて、一枚おきに裏表が逆になってるなら、それは仕様だ
どうやっても頂点指定が時計回りと反時計回りの交互になるから、カリング使うのやめれ

GraphicsDevice.RenderState.CullMode でも調べてみ
0359デフォルトの名無しさん2009/03/31(火) 02:29:38
いや、そもそも右手座標系と左手座標系の設定が逆になってる可能性があるなw
0360デフォルトの名無しさん2009/03/31(火) 03:06:13
thx。これまた深いところにある設定が出てきたね・・・
CullClockwiseFaceがデフォルトって書いてあるけど、描画前に再設定するように書いたらターゲットは元に戻った
けど、他のFBXから取り込んでるオブジェクトの描画じゃなくて動作が逆になった。不明すぎる
そもそもTriangleStripが内部でどっち回転で作り上げてるのかあたりが納得いかない
奇数どうし偶数どうしを繋いでるのはわかるけどそれだと交互に裏表になるはずなのになってないし。仕様だと交互になるの??
あとはなんとか出来そう、ありがと
0361デフォルトの名無しさん2009/03/31(火) 04:30:23
http://msdn.microsoft.com/ja-jp/library/microsoft.xna.framework.graphics.primitivetype.aspx

PrimitiveType で TriangleStrip が指定されてれば、
自動的に偶数面の裏表が逆にレンダリングされてるらしいよ

もっとも、これで実行速度が速くなるのかは疑問だけど・・・
TriangleStripって、使うとこでは使ってるのだろうか
0362デフォルトの名無しさん2009/03/31(火) 14:11:43
一昔前はデフォだったけど
今はそうでもないんじゃない?
0363デフォルトの名無しさん2009/03/31(火) 14:24:20
次の点が前の点よりX座標上で小さくなるようにしたらyがプラスの方向が上になった。結局表裏交互にはならなかった。もうこれはいいやw
プリミティブの作られる3種類から選ぶとするとStripかFanしかないと思うんだけど
高さマップのサンプル見るとTriangleListの形で追加していってるけどこれStripの倍の容量になると思うんだけど
深い意味あるのかな。速度を考えるからこそStripを使うべきだと思ったんだけど
でも結局内部でTriangleListに変換されてるから最初から容量は多くなってもTriangleStripではなくTriangleList形式で格納しろとかなんだろうなぁ
計ってみるけど
0364デフォルトの名無しさん2009/03/31(火) 17:55:17
>>354
折り返し地点で縮退ポリゴン作ってやれば?
無駄なポリゴン作ることになるけど長い目でみればTriangleStripの方が有利でしょ

0365デフォルトの名無しさん2009/04/01(水) 16:12:31
公式でBoundingSphereがわかるサンプルってありませんか?
0366デフォルトの名無しさん2009/04/01(水) 17:06:44
公式って付属のドキュメントとかCreatersClubOnlineとか含む?
0367デフォルトの名無しさん2009/04/01(水) 17:21:18
まあちょっと探してみたけど、
ttp://creators.xna.com/en-US/sample/picking
これと付属(日本語版は別途ダウンロードか)のドキュメントでいいんじゃない?
0368デフォルトの名無しさん2009/04/01(水) 19:17:05
いいサンプルありがとう
0369デフォルトの名無しさん2009/04/01(水) 19:20:35
日本語版のマニュアルってあるんだ・・・知らなかった
ひたすら一文づつコピー貼り付けで機械訳にかけてたあほすぎる
0370デフォルトの名無しさん2009/04/02(木) 01:04:31
レビュー待ちのゲームしかダウンロードできないんだけど
もしかしてレビュー通ったあとはマケプレから金払うしかプレイできない?
今からでも今あるやつは全部保存しといたほうがいいかな。レビュー期限とか掛ってたりしないよね
0371デフォルトの名無しさん2009/04/02(木) 10:13:46
たしかレビューから消えるとローカルにあるやつも動作しなくなると言ってたような・・
0372デフォルトの名無しさん2009/04/02(木) 19:22:39
なんでこのスレこんなに情報が薄いの?
0373デフォルトの名無しさん2009/04/02(木) 20:15:09
公式からして情報が薄いのと
みんなゲ製の方を見てるから
0374デフォルトの名無しさん2009/04/03(金) 00:32:12
VertexBufferってどういう効果があるんですか?
わざわざ入れなくても描画できるんですが。VertexBufferを通す理由ってなんですか?
0375デフォルトの名無しさん2009/04/03(金) 01:50:54
適切に使えばパフォーマンスの向上が見込める
0376デフォルトの名無しさん2009/04/03(金) 17:02:54
VertexPositionTextureで4点四角形のテクスチャ座標はわかるんですが
四角形を4つ繋げたときの座標はどうすればいいんですか?
必ず三角形を1セットにして座標を指定してテクスチャを細かく貼っていくしかないんですか?
対応させたい四隅を指定して一枚張り付けるようなことはできませんか?
0377デフォルトの名無しさん2009/04/03(金) 18:36:12
いい加減、おまえウザイ。
その程度、自力で解決できないなら氏んだほうがいいぞ。
少しはググるなりして調べろ屑。
0378デフォルトの名無しさん2009/04/04(土) 02:35:10
ほんとだ自力でわかったテクスチャ座標ってテクスチャの一辺を0~1にして1が100%の割合の事だったんだね
0,1で向き上下左右の向きだけを表す約束ごとなのかと思ってた。
知ってる人は当たり前すぎて解説サイトどころかヘルプにすら書いてなかった
思いついたあと納得した。ここは教えてくれなくてありがとう。
0379デフォルトの名無しさん2009/04/04(土) 22:10:51
やっぱりだめでした
この解釈だと5点以上のTriangleStripに4点で一枚のテクスチャを張り付けて続けて並べていく時
テクスチャ座標が裏返ってしまいます。どうすればいいんでしょうか?
0380デフォルトの名無しさん2009/04/04(土) 22:20:10
TriangleStripを捨てろ
0381デフォルトの名無しさん2009/04/04(土) 22:29:59
TriangleStripでは不可能だと思うけどな
0382デフォルトの名無しさん2009/04/04(土) 22:34:50
上のほうにも書いてあったけど縮退ポリゴンを使って2点ダブらせるか
反転画像を用意して交互にdrawするか
一枚画像を作成して中間点の座標を入れていくかにするかだが
お勧めはレンダーターゲットをテクスチャにして表裏交互のタイル状の一枚画像をプログラム上で作成しそれを
3番目の方法で渡すのがいいかな
0383デフォルトの名無しさん2009/04/04(土) 23:14:27
ありがとうございます。うまく表示されたか確認したいんですが、
いつからか途中から頂点カラーフォーマットでやってる時からなんですが面が真っ黒になってるんです
まだライトまでやってないんですが、ベーシックエフェクトでデフォルトライトにングの設定は変更してないんですが真っ黒なんです。
どういう原因が考えられますか?

BasicEffect effect;
void init(){
 mVtDec = new VertexDeclaration(game.GraphicsDevice, VertexPositionTexture.VertexElements);
 effect = new BasicEffect(game.GraphicsDevice, null);
 effect.VertexColorEnabled = true;
 effect.EnableDefaultLighting();
 effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(35.0f), game.aspectRatio, 1.0f, 50000.0f);
}
void Drawground(){
 game.GraphicsDevice.VertexDeclaration = mVtDec;
 CullMode oldCullMode = game.GraphicsDevice.RenderState.CullMode;
 game.GraphicsDevice.RenderState.CullMode = CullMode.CullClockwiseFace;
 effect.View = Matrix.CreateLookAt(game.camera.camPos, game.mt.mPos, Vector3.Up);
 effect.Begin();
 foreach(EffectPass pass in effect.CurrentTechnique.Passes) {
  pass.Begin();
  int buf = ( vtCountY - 1 ) * vtCountX * 2;
  for( int i = 0; i < buf; i += vtCountX*2 ) {
   game.GraphicsDevice.DrawUserPrimitives<VertexPositionTexture>( PrimitiveType.TriangleStrip, vpGround, i, primitivesCount );
  }
  pass.End();
 }
 effect.End();
 game.GraphicsDevice.RenderState.CullMode = oldCullMode;
}
0384デフォルトの名無しさん2009/04/06(月) 09:57:08
>>379
ttp://www.riemers.net/eng/recipes30.php
チャプター5-8がまさにそれ
■ このスレッドは過去ログ倉庫に格納されています