トップページ⇒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/

ということで立ててみた。
0475デフォルトの名無しさん2009/07/30(木) 14:59:34
>>474
BasicEffect使ってる? xファイルの中にTextureCoordみたいな記述は出来てる?
0476デフォルトの名無しさん2009/07/30(木) 15:02:37
一応書いとくけど、うちじゃメタセコでx出力したやつ普通にXNAでModelに読んで表示できてるよ
0477デフォルトの名無しさん2009/07/30(木) 15:04:52
バージョンとかの違いとかですかね?
0478デフォルトの名無しさん2009/07/30(木) 15:06:08
>>475
たぶん使ってません
よければ詳しくお願いします
0479デフォルトの名無しさん2009/07/30(木) 15:08:21
InvalidOperationExceptionはヘルプ見ると「Effectが null です」ってなってんだけど。
いったいどんなコード書いてんの?
サンプルのxは表示できてるって書いてるから、そんなに変なコードじゃなさそうなんだが・・・
0480デフォルトの名無しさん2009/07/30(木) 15:14:09
3Dモデルのレンタリングのところです。自分が変えたところは
読み込むファイル名だけなので、大丈夫だと思うのですが
foreach (ModelMesh mesh in houseModel.Meshes)
{
//エフェクト設定
foreach (BasicEffect effect in mesh.Effects)
{
//ライティング(オン)
effect.EnableDefaultLighting();

effect.TextureEnabled = true;
effect.Texture = texture;

//ワールド座標変換指定
effect.World = world;
//ビュー座標変換指定
effect.View = view;
//射影変換指定
effect.Projection = projection;
}
//描画
mesh.Draw();
}
0481デフォルトの名無しさん2009/07/30(木) 15:17:46
まずテクスチャ無しのやつ解決しようか。
ってたぶんサンプルとスケール違いすぎて小さすぎて見えてないんじゃないかと思うんだけど。
0482デフォルトの名無しさん2009/07/30(木) 15:19:54
>>481
0483デフォルトの名無しさん2009/07/30(木) 15:21:14
>>481
そうかなと思いましたが、メタセコのどこでスケールを大きくできますか?
倍率とかいじってみてもファイルサイズがほとんど変わらないです
0484デフォルトの名無しさん2009/07/30(木) 15:25:13
カメラの位置(view)はどうなってる?

メタセコは基本図形作る時にMove、Scale、Segmentって設定できるべ。
0485デフォルトの名無しさん2009/07/30(木) 15:31:39
>>484
カメラの設定はこうなってます(サンプルプログラムのままです)
Matrix view = Matrix.CreateLookAt(
new Vector3(300,100,300), //カメラ位置
new Vector3(0, 0, 0), //カメラ注視点
new Vector3(0, 1, 0) //カメラ上方向
);

メタセコの基本図形を作るときに詳細設定でサイズをできるだけ大きくしても
なぜかファイルサイズが変わりません。やっぱりやり方が間違ってますか?
0486デフォルトの名無しさん2009/07/30(木) 15:34:31
画像ファイルじゃないんだからファイルサイズはそんなに変わらんよ。
しかし300って遠すぎるだろw
試しに 0, 10, 10とかでやってみ
0487デフォルトの名無しさん2009/07/30(木) 15:40:08
>>486
0488デフォルトの名無しさん2009/07/30(木) 15:41:30
>>486
表示されました!
やっぱり大きさが違いすぎたんですね
(テクスチャは解決してませんが・・・)

どうやったらサイズを大きく出来るか教えてもらえますか?
0489デフォルトの名無しさん2009/07/30(木) 15:43:43
テクスチャもxで指定してあってビルド時にエラー出てないならそのまま出ると思うよ。
effect.TextureEnabledとかeffect.Textureは設定済みだから無くていい
0490デフォルトの名無しさん2009/07/30(木) 15:49:59
普通にスケールで大きくしてもいいし
メタセコでx出力するとき倍率指定あるからそれいじってもいいし。
詳しくはメタセコのヘルプ見ればいい
0491デフォルトの名無しさん2009/07/30(木) 15:51:35
>>489
>>490
わかりました
やってみます
0492デフォルトの名無しさん2009/07/30(木) 16:07:41
メタセコではxファイルを読めませんが、
既存のxファイルの図形の大きさを知ることって出来ますか?
0493デフォルトの名無しさん2009/07/30(木) 16:14:50
大きさのせいじゃなくてファークリップじゃないかな?
0494デフォルトの名無しさん2009/07/30(木) 16:23:06
そうなんですか
ファークリップの確認ってどうやってできますか?
0495デフォルトの名無しさん2009/07/30(木) 16:26:17
ファークリップはprojectionの最後の引数だべ。
xファイルはテキストなんだからテキストエディタで開いてMeshのとこみりゃ
だいたいわかるべ
0496デフォルトの名無しさん2009/07/30(木) 16:27:26
projectionつーか、そこに設定してるであろうMatrix.CreatePerspectiveFieldOfView()の引数
0497デフォルトの名無しさん2009/07/30(木) 16:27:27
>>478
> たぶん使ってません

え?

>>478=>>480じゃないのかな?

>>480
> foreach (BasicEffect effect in mesh.Effects)

でめちゃめちゃ使ってるようだが。
でもちょっと、その件はおいといて。


テクスチャを描こうとしてxファイルに
MeshTextureCoords {(以下略)
のデータが無いとき、そういうエラーが出てた気がする。

自分の場合はBlenderを使っていて、
UVの設定をしてない時、xファイルにそのデータが不足してた。
0498デフォルトの名無しさん2009/07/30(木) 16:46:35
>>495 >>496
わかりました確認してみます

>>497
すいません、それのことだったと知りませんでした

MeshTextureCoordsはxファイルを作るときにメタセコで設定するのですか?
0499デフォルトの名無しさん2009/07/30(木) 17:01:41
>>498
> MeshTextureCoordsはxファイルを作るときにメタセコで設定するのですか?

ちょっと気になって調べてみた。
xファイルを作成するときダイアログが出るけど、
その右側のXオプションの枠内、「UVマッピング」にチェックが入っていると、
xファイルにMeshTextureCoordsは作られるみたい。

XNAもXファイルも、3Dモデリングもあんま良く分かってないけど、俺。
0500デフォルトの名無しさん2009/07/30(木) 17:04:48
>>499
あー、そこをチェックすればよかったんですか
本当にありがとうございます。
どこを調べればいいかもわからなくてorz
0501デフォルトの名無しさん2009/07/30(木) 17:05:46
>>500
ま、でも、それで例の問題が解決するとは限らないので悪しからず。
0502デフォルトの名無しさん2009/07/30(木) 17:10:07
しっかり解決できました!
0503デフォルトの名無しさん2009/07/30(木) 17:14:48
あとxからメタセコに持ってくのは
Hyper Mangrove とかBlenderのプラグインでできることもあるよ。
0504デフォルトの名無しさん2009/07/30(木) 17:17:34
そうなんですか
試してみますね
0505デフォルトの名無しさん2009/07/31(金) 18:09:26
質問です。

XNA3.0でアクションゲームを作っているのですが、
Windows環境では問題なく動いており、
Xboxに配置して動作させても、しばらくは正常に動いているのですが、
数分動かしていると、デバッグ起動でもエラーすら吐かず箱の方がフリーズしてしまい、
デバッグの接続も切断されてしまいます。

ゲームとして動作はさせていますが、
ロードのタイミングというワケでもなく、固まるタイミングもまちまちで、
何か特別な処理をしているという感じでもないです。

箱自体が原因かと思い、他のクリエイターズクラブの方の箱で動かして貰っても
同様に固まってしまうため、プログラムの方に原因があると思うのですが、
同じように、Windowsでは正常に動いていたのに、
箱で起動させるとフリーズしてしまったというようなことがあった方いらっしゃいませんでしょうか?
0506デフォルトの名無しさん2009/07/31(金) 18:30:10
>>505
だからなんだというんだ。
バカか、おまえは。
0507デフォルトの名無しさん2009/08/01(土) 00:06:00
CC会員の人の箱を壊すようなことはやめてください!

レビューする気無くなるなあ
0508デフォルトの名無しさん2009/08/01(土) 03:32:49
XNA3.0でCOLLADA使うにはどうしたらいい?
0509デフォルトの名無しさん2009/08/02(日) 12:44:06
>>505
無限にオブジェクト作り続けてるとこない?
たとえば、サウンド関係全部はずして試してみるとかして
絞り込んでいったほうがいいと思う。
05105052009/08/02(日) 21:44:10
>509
自分もサウンド怪しいと思い、
A音がなっているときに再びA音がなるような場合、
なっていたA音を一度停止して、再びならす部分をしていたのですが、
そこをならし終わるようにしたら今のところ起こってません。

考えたら、停止してそのままほっといたら作りっぱなしですね。
アドバイスありがとうございます。
0511デフォルトの名無しさん2009/08/04(火) 18:32:20
>>510
自分も同じ轍を踏まないように確認しておきたいんだけど
一度停止?一時停止?停止?
"鳴らし終わるようにした"っていうのは何をした?
05125052009/08/04(火) 19:56:54
今鳴ってる音を保持しているSoundEffectInstanceのStop();です。
そいでSoundEffectからPlay()でならし、
そのインスタンスをさきほどStopしたSoundEffectInstanceに代入してました。

もう固まることがなくなったのでやっぱしそこが原因だった模様。

怖いので、もうStopで止めずに最後まで鳴らしきってますが、
StopしたあとDisposeしてからPlayで生成したインスタンス入れれば大丈夫なのかな。
0513デフォルトの名無しさん2009/08/05(水) 12:18:18
>>508
昔やってるとこあったよね。3.xに移植してみようか?
0514デフォルトの名無しさん2009/08/06(木) 18:16:00
hoge.spritefontファイルをビットマップに自動的に変換して、
それをSpriteFontクラスだかでテキストを表示できる機能がありますが、
装飾を加えた画像(白抜きとか)を自前で用意して
SpriteFontとして扱うにはどうすればいいのでしょうか?
05155142009/08/10(月) 18:35:08
ちょっとわかりにくいようなので補足。
ttp://sorceryforce.com/xna/tips_frametext.html
これと同じことを実行時ではなくビルド時にやりたいんです。文字画像自体は実行時に
フォントをレンダリングしているのではなく、ビルド時にやっているわけですよね。
またはそれが難しいなら、Photoshopの類で予め文字画像を作っておいて、
それを上記のと同じように使えないだろうか、って話です。
0516デフォルトの名無しさん2009/08/10(月) 18:40:15
画像をフォントとして使うのはこのSpriteFontができる前からやってたし
そういう方法でやればいいんじゃないかとも思うけど、Sprite.DrawStringで書きたいということかな?
文字の情報(大きさとか)はどうやって渡すつもり?
0517デフォルトの名無しさん2009/08/10(月) 18:48:38
ContentProcessor<FontDescription, SpriteFontContent>を自分で実装すればいいはず
0518デフォルトの名無しさん2009/08/10(月) 22:10:00
球と長方形の2つのxファイルを使って
空間を作ろうと思っているんですが
球と長方形の交わっている境界に近づくにつれて
その境界が大きくブレます。(その境界がぐちゃぐちゃになる感じです)
どうしてこうなるのか教えてください
0519デフォルトの名無しさん2009/08/10(月) 22:50:00
追加、平面からの高さが高いほどブレが酷くなります
0520デフォルトの名無しさん2009/08/10(月) 22:51:48
日本語で
0521デフォルトの名無しさん2009/08/11(火) 08:33:37
文面ではわかりにくいので画像を
0522デフォルトの名無しさん2009/08/11(火) 08:38:20
>>513
508じゃないですけど、お願いします。
0523デフォルトの名無しさん2009/08/11(火) 12:22:40
ちょっと探してみたけど、
ttps://collada.org/public_forum/viewtopic.php?f=13&t=651&start=0
とりあえずここのはほとんどそのまま動いたよ。

ttp://xbox360.game-host.org/xna/Collada%20for%20XNA31.zip
一応3.1で動くように(ってほとんどコピーしてプロジェクト作りなおしただけだけど)したの置いておく。
あ、3.0だっけ。まあ何とかなるかな?
0524デフォルトの名無しさん2009/08/11(火) 23:14:30
Content.Load<T>()で読み込んだリソースを明示的に解放するには
Content.Dispose()とContent.Unload()のどっちを呼べばいいんですか?
0525デフォルトの名無しさん2009/08/12(水) 10:00:19
えっ
0526デフォルトの名無しさん2009/08/13(木) 04:31:43
>>524
Unloadはキャッシュの解放。
DisposeはContentManagerそのものの解放。
0527デフォルトの名無しさん2009/08/13(木) 12:15:12
逆だろ
0528デフォルトの名無しさん2009/08/23(日) 17:37:37
BGMを鳴らそうとしたのですが「 "Fly" という名前の Cue を再生しようとしてエラーが発生しました。
Cue の名前は正しいですか?」という例外がでます。
ContentにはFly.wavとそれを書き込んだXNAaudio.xapがあります
ソースは
engine = new AudioEngine("Content\\XNAaudio.xgs");
soundBank = new SoundBank(engine, "Content\\Sound Bank.xsb");
waveBank = new WaveBank(engine, "Content\\Wave Bank.xwb");

//BGMキューの取得
bgm = soundBank.GetCue("Fly");
bgm.Play();
です。どうして例外が起きるか教えてください
0529デフォルトの名無しさん2009/08/23(日) 17:40:47
公式で聞いてください。
0530デフォルトの名無しさん2009/08/23(日) 19:06:33
>>528
そこまで日本語で書かれてわからないとかどうすんだ。
エラーの内容そのまんまだろ。XACT立ち上げて確認しろ。
0531デフォルトの名無しさん2009/08/24(月) 01:40:57
Flyという名のCueは作ったの?
0532デフォルトの名無しさん2009/08/24(月) 12:24:43
初心者質問相談スレッドなんだからちゃんと答えろよ
荒らすな通報するぞ
0533デフォルトの名無しさん2009/08/24(月) 12:26:04
強要は犯罪です
0534デフォルトの名無しさん2009/08/24(月) 13:17:18
きゃ〜けだもの〜
0535デフォルトの名無しさん2009/08/24(月) 14:07:42
うへへへ よいではないか よいではないか
0536デフォルトの名無しさん2009/08/25(火) 00:01:36
>>532
答えるほうも初心者なんだよ
そんなことも判らない初心者か
0537デフォルトの名無しさん2009/08/25(火) 14:25:25
【みんな】【初心者】
0538デフォルトの名無しさん2009/08/27(木) 13:31:45
windowsのみで実行するオンラインのテストをしたいのですが
これもメンバーズクラブに入らないと、通信のチェックとかできないのですか?
xboxのタグ使うと、メンバーじゃないって中断するんですけど。
0539デフォルトの名無しさん2009/08/27(木) 13:35:05
ごめん、探したら在りました。
http://creators.xna.com/ja-jp/XNAGS3.1readme
0540デフォルトの名無しさん2009/08/28(金) 15:13:51
LANならチェックできるよ
1台しかないのならHamachiとかのVPNでつなげば友人とつなぐことはできる
0541デフォルトの名無しさん2009/08/30(日) 00:31:01
// サンプルの表示
public void Draw(Matrix view, Matrix projection, Vector3 camera)
{
// ワールド座標変換行列
Matrix world = Matrix.CreateTranslation(1000, 0, 0) * Matrix.CreateScale(0.1f);
foreach (ModelMesh mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
// ライティングを有効
effect.EnableDefaultLighting();

// 変換
effect.World = world;
effect.View = view;
effect.Projection = projection;
}
mesh.Draw();
}
}

Matrix worldで Matrix.CreateScale(0.1f);は値に応じて大きさが変化するんですが
Matrix.CreateTranslation(1000,0,0) はどんな値にしてもオブジェクトの位置が
(0,0,0)から動きません
0542名無しさん@そうだ選挙に行こう2009/08/30(日) 03:39:17
XNAプログラムからHTTPに通信することってできる?
0543名無しさん@そうだ選挙に行こう2009/08/30(日) 09:13:03
できると思えばできる
できないと思えばできない

あれだぞ、くまんばちは自分が飛べると思っているから飛べるんだぞ
どうだ知らなかっただろ
0544名無しさん@そうだ選挙に行こう2009/08/30(日) 11:40:52
くまんばちって誰?
0545名無しさん@そうだ選挙に行こう2009/08/30(日) 12:08:07
>>542
XNAでHTTPはサポートされてません。
そもそもLIVEとシステムリンクしか選択肢がないので、
任意のサーバーにアクセスすることすらできないし。
0546名無しさん@そうだ選挙に行こう2009/08/30(日) 12:11:15
Windowsターゲットなら何でもできる
0547名無しさん@そうだ選挙に行こう2009/08/30(日) 12:57:46
WindowsでのHTTP通信はXNAじゃなくてFrameworkのライブラリだろ
0548名無しさん@そうだ選挙に行こう2009/08/30(日) 14:10:10
Windowsの.NETアプリをつくるためにXNAを利用するって人もいるんじゃね?
そのときにHTTPが使えるかどうかってことで、回答は「できる」
0549名無しさん@そうだ選挙に行こう2009/08/30(日) 14:18:13
だってManagedDirectXがないんだもん
0550名無しさん@そうだ選挙に行こう2009/08/30(日) 14:34:35
そんなあなたにWindows API Code Pack
0551名無しさん@そうだ選挙に行こう2009/08/30(日) 14:37:01
Windows API Code Packの登場でXNAの立場が危うくなりそう。
DirectX9までの機能しかサポートされてないし。
05525512009/08/30(日) 14:38:52
訂正
×DirectX9までの機能しかサポートされてないし。
○Direct3D9までの機能しかサポートされてないし。
0553名無しさん@そうだ選挙に行こう2009/08/30(日) 14:39:30
箱で動かさないなら最初からXNAなんか使わないし。
0554名無しさん@そうだ選挙に行こう2009/08/30(日) 14:48:47
>>553
Gameのフレームワークとして使ってるけど。実際。
0555名無しさん@そうだ選挙に行こう2009/08/30(日) 15:31:53
>>550
こんなのあったのか。
せっかくならWinSDKに入れといてくれればいいのに
0556名無しさん@そうだ選挙に行こう2009/08/30(日) 15:53:12
1.0がこないだ出たばかりだからな
0557名無しさん@そうだ選挙に行こう2009/08/30(日) 19:35:55
OBJ / 3DS / LWO / C4DってXNAで使えます?
使えるならどうやって表示させるのか教えてくれませんか?
0558名無しさん@そうだ選挙に行こう2009/08/30(日) 19:36:58
多分使えない。.xか.fbx使え。
0559デフォルトの名無しさん2009/08/30(日) 20:23:32
Dosch 3D Landscapesに入っていた形式なんですけど
買っただけ無駄だったですかね・・・orz
0560デフォルトの名無しさん2009/08/30(日) 20:35:21
>>557
カスタムコンテントパイプラインを自分で作成すれば、
どんなフォーマットでも読み込めますよ。
素直にFBXにコンバートするのが一番楽だと思いますが。
0561デフォルトの名無しさん2009/08/30(日) 20:36:58
>>560
できるんですか
ありがとうございます
05625602009/08/30(日) 20:46:19
Autodesk公式のコンバータはOBJ、3DSに対応しているみたいなので、とりあえずこれで試してみて。

FBX コンバータ
http://usa.autodesk.com/adsk/servlet/index?siteID=1169823&id=8341083
0563デフォルトの名無しさん2009/08/30(日) 21:06:17
FBXって使ったことないんですが
xファイルと同じようにソースを書いてもいいんですか?
0564デフォルトの名無しさん2009/08/30(日) 21:21:04
ちったぁ調べるなり頭使うなりしろよカス
0565デフォルトの名無しさん2009/08/30(日) 21:25:01
質問スレで何言ってんのカス
ここは質問・相談を書くスレだから。






答えを書くスレじゃないから答えなくていいよ
0566デフォルトの名無しさん2009/08/30(日) 21:25:17
>>563
フォーマットの違いはコンテントパイプラインが吸収してくれるので
基本的にxファイルと同じように書けば大丈夫ですよ。
0567デフォルトの名無しさん2009/08/30(日) 21:37:16
ありがとうございます
0568デフォルトの名無しさん2009/08/31(月) 10:25:59
OBJを読むコンテントパイプラインはどっかのサンプルにあったが
四角ポリゴンを三角に直す必要があったしfbxが面倒無くてよさげ
0569デフォルトの名無しさん2009/09/01(火) 09:37:07
ピアレビューでの差し戻しになる要因に、「どのコントローラーでも
操作できないとダメ」てのがあるけど、これを上手くまとめてある
情報やサンプルってあるかな?
0570デフォルトの名無しさん2009/09/01(火) 10:23:19
難しいところはそうないと思うけど。
最初にSTARTやAボタンを押すまではどれも受け付けて
それが押されたコントローラーとタグをメインで使用、でいいじゃない。

ゲームプレイに直接関係ないメニュー選択やキャンセル動作のことかな、気になるのは。
0571デフォルトの名無しさん2009/09/01(火) 10:35:16
差し替えられても動作するようにしなきゃダメみたいのもなかったけ
なんかレビュアーがルール厨みたいになってきててウザイ
0572デフォルトの名無しさん2009/09/01(火) 10:59:12
>>570
それが一番シンプルで良いかなあ。ありがと。

>>571
チェックリストを見るに、差し替え対応は必須じゃないみたい。
0573デフォルトの名無しさん2009/09/01(火) 11:10:44
そんなこと言ったら>>569も必須じゃないだろ
差し替えも対応しろよ
0574デフォルトの名無しさん2009/09/01(火) 11:11:57
いや、なんか必須項目の一覧みたいなのが作られちゃってんだよねw
有志(笑)によって。
■ このスレッドは過去ログ倉庫に格納されています