【みんな】XNA 質問・相談スレッド1【初心者】at TECH
【みんな】XNA 質問・相談スレッド1【初心者】 - 暇つぶし2ch708:デフォルトの名無しさん
09/11/28 14:02:23
公式フォーラムで質問しろよ

709:デフォルトの名無しさん
09/11/28 14:15:08
>>708 すまそ 逝ってきます

710:デフォルトの名無しさん
09/11/28 14:23:31
>>707 自己レス。
公式フォーラムで検索したら手がかりが出てきた。
ConsoleクラスじゃなくてTraceクラスを使うのか。
実機でもトレースログが出てきたのを確認できた。

711:デフォルトの名無しさん
09/11/28 21:41:02
つかWindowsアプリでもConsoleでログ吐くのは良くない

712:デフォルトの名無しさん
10/02/11 05:20:33
>>686
パスの設定でも間違えてるんじゃない?


713:デフォルトの名無しさん
10/02/18 15:07:22
カスタムエフェクトでスプライトをびょうがしてるんだが、
テクニックの変更が何故か出来ない
何が間違ってるんだろう・・・
こんな感じでやってるんだけど・・・

spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None);

effect.CurrentTechnique = effect.Techniques["hoge"];
effect.Begin();
effect.CurrentTechnique.Passes[0].Begin();
spriteBatch.Draw(hogeTexture, hogePosition, Color.White);
effect.CurrentTechnique.Passes[0].End();
effect.End();

effect.CurrentTechnique = effect.Techniques["foo"];
effect.Begin();
effect.CurrentTechnique.Passes[0].Begin();
spriteBatch.Draw(fooTexture, fooPosition, Color.White);
effect.CurrentTechnique.Passes[0].End();
effect.End();

spriteBatch.End();

714:デフォルトの名無しさん
10/02/22 12:41:24
一瞬CommitChangesの話かと思ったが途中で変えるわけではないのね

715:デフォルトの名無しさん
10/02/23 05:43:06
CommitChanges 使ってみましたが出来ませんでした。
effect.Begin() と effect.End() の途中で変更するときに CommitChanges は使うようなので(違うのかな?)
真ん中の End() と Begin()を消して、CommitChanges を使ってみましたが、やはり出来ませんでした。

何か設定しないといけない部分でもあるのでしょうか?

716:デフォルトの名無しさん
10/02/23 07:47:43
解決法だけは知ってるけど
俺もなぜそうなるのか理由を知りたい&情報は共有できたほうがいいから、
公式のフォーラムで聞いてくれ。
ひげねこが理由付きで教えてくれるはずだ。
こんなところで聞くより早いぞ。

717:デフォルトの名無しさん
10/02/23 10:09:51
このスレには情報共有する価値はないって事ですね、わかります。

718:デフォルトの名無しさん
10/02/23 12:07:55
過去ログ行きしたら見られないからな

719:>>713>>715
10/02/28 19:14:07
すいません。しばらく別のことをやっていて、気づきませんでした。

ついさっき質問してきました。

720:デフォルトの名無しさん
10/03/03 21:07:12
spriteBatchはバッチつうくらいだから
”同種のスプライト”をspriteBatch.End()のとこで”一気描画”するもんだと想像してる。

だからテクニックとかパスとかでスプライトの性質を変えるたびに
spriteBatch.Begin-Endで囲ってやらなきゃいけないもんであると、
そういうもんなのだと、俺は無理やり思い込むことにしている。

にしても、ひげねこも回答くれなくなってしまったな。
ブログも全然更新してないし。
なんかもうサポート体制ダメすぎだな。

721:>>719
10/03/04 22:42:30
なるほど。とりあえず、
エフェクトの変更時は spriteBatch.Begin() - End() で囲んであげた方がよさそうですね

ちょっと実験してみて、Effect の動作が少々分かったので書いておきます。(役に立てれば、と)

spriteBatch.Begin() - End() で囲った中で、
エフェクトの変更を行い描画を行うと、
1 回前に描画したテクスチャの描画方法も
変更後のエフェクトで描画されるようです。
ただし、連続して同じテクスチャを描画する場合は、
それらをひとまとまりのグループとしてみる必要があります。

( ただし、 SpriteSortMode.Immediate の時のみ。 )
( 他は全て BasicEffect によって描画されてる気がした。)

サンプルコードは書くととても長くなるので、
簡単な記述で例(実験結果)を示します。

その前に書いておきますが、CommitChanges() は
使ってもまったく効果がありませんでした。

また、以下の例では全て technique の変更についてのみ
書いてありますが、 pass の変更も同様の動作をします。
( pass の実験はちょっとしかやってないから、 )
( 自身はあまりありませんが... )
また、
spriteBatch.Begin(SpriteBlendMode.AlphaBlend,
SpriteSortMode.Immediate,
SaveStateMode.None);

spriteBatch.End()
で囲っていると、脳内補完してください

722:>>719 続き
10/03/04 22:43:31
以下、例(実験結果)
-----------------------------------------------
① technique1 で texture1 を描画しようとする
② technique2 で texture2 を描画しようとする
③ technique3 で texture3 を描画しようとする
④ technique4 で texture4 を描画しようとする
-----------------------------------------------
①は 1 つ後ろの②の影響を受け、
②の描画方法である technique2 で描画されます。

②も同様に③の technique3 で描画され、
③も同様に④の technique4 で描画され、
④は 1 つ後ろに何も描画命令が無いため、
普通に、自身の technique4 で描画されます。

-----------------------------------------------
① technique1 で texture1 を描画しようとする
② technique2 で texture1 を描画しようとする
③ technique3 で texture1 を描画しようとする
④ technique4 で texture1 を描画しようとする
-----------------------------------------------
①②③④は全て texture1 を描画しようとしている為、
これらを 1 つのグループとして扱います。
この場合は、1 番最後の描画方法である technique4 で
このグループは描画されます。


723:>>719 続きの続き
10/03/04 22:44:48
-----------------------------------------------
① technique1 で texture1 を描画しようとする
② technique2 で texture1 を描画しようとする
③ technique3 で texture1 を描画しようとする
④ technique4 で texture1 を描画しようとする
⑤ technique5 で texture2 を描画しようとする
-----------------------------------------------
①②③④は全て texture1 を連続で描画しようとしている為、
これらを 1 つのグループとして扱います。
しかし、このグループは、次の描画命令⑤の影響を受け、
technique5 で描画されます。
⑤ は普通に technique5 で描画されます

724:>>719 続きの続きの続き
10/03/04 22:45:30
-----------------------------------------------
① technique1 で texture1 を描画しようとする
② technique2 で texture1 を描画しようとする
③ technique3 で texture2 を描画しようとする
④ technique4 で texture1 を描画しようとする
⑤ technique5 で texture1 を描画しようとする
⑥ technique6 で texture3 を描画しようとする
-----------------------------------------------
①②は連続で texture1 を描画しようとする為、
形式上、これをグループA として扱います。
グループA は 1 つ後ろの描画方法である technique3 で
描画されます。
③は 1 つ後ろの描画方法である technique4 で描画されます。
④⑤は連続で texture1 を描画しようとする為、
形式上、これをグループB として扱います。
グループB は 1 つ後ろの描画方法である technique6 で
描画されます。
⑥は普通に technique6 で描画されるようです。
( グループA とグループBは、間にtexture2(③)の描画命令が )
( 入っているので、別物として扱います。 )

以上が実験結果です。動作原因なんかは当然分かりません。

725:>>719
10/03/04 22:46:24
解決策を考えてみました

①全ての描画命令を spriteBatch.Begin()-End()で囲ってやる
②連続しないテクスチャ描画の場合は 1 つだけ描画方法
 をずらして描画する
 (最後の描画方法は、画面外にテクスチャを描画することで解決)
③1 つテクスチャを描画するごとに、同じ描画方法でもう一度
 画面外に別のテクスチャを描画する。

726:>>719
10/03/04 22:58:19
①は 1 番簡単な方法です。が、グラボを効果的に使用できない可能性が
 あります。
 ( グラボは描画自体は速いが、描画の準備にかかる時間がとても長い )
( らしいので )
②は全ての状況には対応出来ない上、苦労に伴わない。
 (if文などで描画命令を制御する時なんかはとてもしんどいと思う。)
③の方法は、画面外へ描画したテクスチャが、1 つ後ろの描画方法の
 影響を受けても、見えないので問題はない。しかし、画面外に描画す
 るテクスチャは、そのゲーム中では使わないものを使う必要があります。
( 連続で同じテクスチャの描画を行う時は、3 番目の例から分かるように )
( グループ化されてしまう為、グループごと描画方法が変わってしまう )
ただし、描画枚数が 2 倍になるため、速度がどうなるかはわかりません。

他に方法があれば、教えてください。
と、いうよりここまで書いておいて、もし根本的に違うなら
教えてください orz

727:デフォルトの名無しさん
10/03/06 07:03:38
う~ん、バグとしか思えない。

728:デフォルトの名無しさん
10/03/06 11:25:56
スプライトにエフェクトを適用するとき、
BeginとEndの中に入れる必要すらないことに気づいた。
とりあえず、異なるスプライトにそれぞれエフェクトのパスを適用するには、
↓みたいにやればできた。

spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None);
effect.Begin();

spriteBatch.Draw(texture1, position1, Color.White);
effect.CurrentTechnique.Passes["Pass1"].Begin();
effect.CurrentTechnique.Passes["Pass1"].End();

spriteBatch.Draw(texture2, position2, Color.White);
effect.CurrentTechnique.Passes["Pass2"].Begin();
effect.CurrentTechnique.Passes["Pass2"].End();

spriteBatch.Draw(texture3, position3, Color.White);
effect.CurrentTechnique.Passes["Pass3"].Begin();
effect.CurrentTechnique.Passes["Pass3"].End();

effect.End();
spriteBatch.End();

729:デフォルトの名無しさん
10/03/17 13:09:18
Vector2.ZeroをノーマライズしたらNaNになるの初めて知った……

/(^0^)\なんてこった

730:デフォルトの名無しさん
10/03/18 00:58:55
まあ、.NET の float, double の 0/0 は NaN だからねぇ。

731:デフォルトの名無しさん
10/03/22 22:26:03
XNA4.0出るね。
バグを早くなおしてほしいな。

732:デフォルトの名無しさん
10/03/22 22:46:32
久々に見にきたらまだpart1でわろた

733:デフォルトの名無しさん
10/03/22 22:59:22
お前らのようなヘタレどもと会話するネタもないし。
質問があれば公式でするし。

734:デフォルトの名無しさん
10/03/22 23:02:50
かっこいいすね先輩

735:デフォルトの名無しさん
10/03/22 23:03:33
まぁな

736:デフォルトの名無しさん
10/03/26 02:55:03
XNAクリエーターズクラブオンラインに入る時に入力するクリエーターの名称=360で表示される開発元の名前なのでしょうか?
そうだとするとうっかり普段のHNとかを入力すると変更不能で後で酷い事に・・・

737:デフォルトの名無しさん
10/03/28 16:09:16
そうだな

738:デフォルトの名無しさん
10/03/28 16:55:26
普段のHNが「うんこちんちんまん」とか?

739:デフォルトの名無しさん
10/03/28 18:20:35
アイマスやりすぎてるとかばれると恥ずかしい

740:デフォルトの名無しさん
10/03/28 21:22:04
動画再生なんだけどみんな問題なく動く?
再生途中でフリーズするんだけど。
フリーズ場所はランダム。
やっぱりエンコードの設定が悪いのかなぁー

741:デフォルトの名無しさん
10/03/29 11:29:59
>>739
今はアイマスより恥ずかしいのがたくさんあるから安心しようw

742:デフォルトの名無しさん
10/03/29 11:30:43
>>740
メモリ足りなくなってない?

743:デフォルトの名無しさん
10/04/10 17:30:58
ACLがうまくいかない
チュートリアルに従っても
キーが見つかりません、って





744:デフォルトの名無しさん
10/04/10 22:24:33
解決したと思ったのに
今度は予期しないエラーで落ちた
どうしてかなぁ

745:デフォルトの名無しさん
10/04/11 15:42:45
まあ不安定なのはまずメモリから

746:デフォルトの名無しさん
10/04/13 01:54:45
744解決

747:デフォルトの名無しさん
10/04/14 21:05:56
2Dのゲーム作ってるのですが、ディスプレイによって
フルスクリーン時に右端が切れることがあるみたいなのですが、
映画みたいな上下に黒い枠をつけてサイズをあわせることってできませんか?

748:デフォルトの名無しさん
10/04/14 21:40:21
つければいいじゃない

749:デフォルトの名無しさん
10/04/15 15:37:50
SpriteBatch.BeginのパラメタとDrawableGameComponent組み合わせれば
できないこともないが、縮小入っちゃうよ

750:デフォルトの名無しさん
10/04/26 21:11:56
XNA4.0では、上で語られてたSpriteBatchの問題解決したっぽいね。

751:デフォルトの名無しさん
10/04/26 23:44:35
何か問題あったの?

752:デフォルトの名無しさん
10/04/27 00:19:24
>>750
なんと!!
くわしく頼む。

753:750
10/05/02 04:30:42
SpriteBatchの問題て、>>721-726で書かれていた件ね。
もともと、ひげねこのブログにXNA4.0について以下のように書いてあったんだ。

>以前はSpriteSortMode.Immediateを指定してもテクスチャが同じ場合はSpriteBatch.End
>メソッドが呼ばれたときにまとめて描画するようになっていましたが、4.0ではSpriteB
>atch.Being/End間でEffectのパラメーターを変更しながら描画するというシナリオに対
>応する為にSpriteSortMode.Immediateを指定した場合はDrawを呼ぶごとに実際に描画
>するようになりました。


んで、確認してみた。

754:750
10/05/02 04:36:23
結果。

①Effectが一個ずれて適用される。
→EffectのBegin()-End()がなくなり、Apply()を使用するようになりずれなくなってた。
→CommitChangesも不要。

②同じテクスチャを連続して描画すると、最後のEffectが全部に適用されてしまう
→個別にちゃんと適用されるようになってた。

って感じだった。
XNA Game Studio 4.0 CTPで確認。

いじょー、ねよっと


755:デフォルトの名無しさん
10/05/02 09:25:35
確認超おつ!!

756:>>719
10/05/02 14:51:03
うぉぉぉぉぉぉぉぉっおっおっお

これでめんどくさいメソッド作ったりダミー作らなくてもすむわけだな。
確認ありがとう

757:デフォルトの名無しさん
10/05/03 01:26:54
しつもん

ノベルゲーム作ってて、
文字列を都度読み込みDrawString()で描画してます

で、画面右端にいったら、自動で改行するようにしたいんだけど、どうやればいいかわかりませんでしょうか

プロポーショナルフォント使うつもりなので、文字幅が一定じゃないです…
スプライトフォントの文字幅を取得する事ってできないですかね



758:デフォルトの名無しさん
10/05/03 09:44:13
文字の幅を返してくれるAPIがあったとおもう。
で、一文字ずつ計測して表示限界まで達したら折り返し処理を自前で実装。

まあ大体自動で折り返しとかやってないよ。

X文字までとか言う制限をチェックするツールを作って、
それにとおして検出された行を手直し。

自動で折り返しとかするとゲームのメッセージウィンドウで
読みにくかったりするからね。

759:デフォルトの名無しさん
10/05/03 09:45:03
SpriteFont f
f.MeasureString(s)

760:デフォルトの名無しさん
10/05/04 00:20:57
>>758-759

できましたー、ありがとうございます


>まあ大体自動で折り返しとかやってないよ。

ふむー、そうなんですか・・・
とりあえず、自分の思うようにつくってみて、
不自然なら、やり方を変えてみます

助かりましたー

761:デフォルトの名無しさん
10/05/07 22:43:38
C#とXNA初めて一週間の初心者です。

モデルのテクスチャー自身の中身を書き換えたいので、
GraphicsDevice.SetRenderTarget関数を使って、矛先をテクスチャー素材に向けて、spriteBatch.Drawをやろうとしたんですが、
サーフェースの型が合わないと怒られてしまいます。
基本部分は3Dなので深度込みのサーフェースで、矛先がテクスチャーはRGB24ビットと違う型なので
エラーの言いたい事は分かるのですが、グラフィックデバイスとシェーダー(BasicEffect)の相関関係が理解できていないので、
対処法が分かりません。
グラフィックデバイスのインスタンスってやはり一個に限定されたりするんでしょうか。

ど~かアドバイスをお願い致します。 orz

762:デフォルトの名無しさん
10/05/07 23:42:45
ど~か
orz
がむかつくので教えない。

763:761
10/05/08 06:26:11
自己解決 作ったサーフェースがデカかっただけのエラーでした。
512*512なら通るのに1024*1024だとエラーになるのねw

764:デフォルトの名無しさん
10/05/08 06:51:28
教えないでよかった。

なんかこいつ生理的にムカつく。

765:デフォルトの名無しさん
10/05/09 08:54:21
すごい・・・
よくクズだと見抜いたな

766:デフォルトの名無しさん
10/05/09 09:30:17
俺のクズセンサーは感度高いからな。

767:デフォルトの名無しさん
10/05/09 10:06:56
クズはクズ感度高いからね

768:デフォルトの名無しさん
10/05/09 11:19:01
XNAでLua使える?
360でも動く?

769:デフォルトの名無しさん
10/05/09 12:12:40
どうしても使いたかったらJavaで実装されてるやつを移植するのが一番手っ取り早い
でもIronRubyがWP7に対応してるらしいから360でも動くんじゃないかな

770:デフォルトの名無しさん
10/05/09 13:22:50
Lua.NET か IronLua ってなかったっけ?

771:デフォルトの名無しさん
10/05/09 13:34:17
pure.NETな実装で使い物になるレベルのものはないよ
LuaInterfaceはまともだけどネイティブのLuaのラッパーだから360では使えない
IronLuaはどっちみち使えないけどIron~系はLCG使ってるから
基本的にcompact frameworkでは動かない
WP7版のIronRubyはCFで動くようにLCG削ってインタプリタモードだけにしてある

772:デフォルトの名無しさん
10/05/17 23:39:02
xna入れたいけど、visual studio 2010しかもうダウンロード出来なくて詰んだw


773:デフォルトの名無しさん
10/05/18 02:26:14
>>772
2008EEのsp1が本体含んでるよ
まだ落とせる

774:デフォルトの名無しさん
10/05/18 04:11:28
>>772
XNAなんかで遠回りするのはやめておけ
必ず後悔するぞw

775:デフォルトの名無しさん
10/05/18 08:43:54
>>774
360でゲーム作るならXNA使うしかないじゃん


776:デフォルトの名無しさん
10/05/18 22:38:49
インディーズのみならな

777:デフォルトの名無しさん
10/05/21 22:01:55
Windowsでゲーム作る場合、なにで作れば後悔しないんだ?
C#使ってると、いまさらC++には戻りたくないんだが・・・

778:デフォルトの名無しさん
10/05/21 23:12:36
アクツク

779:デフォルトの名無しさん
10/05/22 20:04:21
2DならSilverlightで十分じゃね
.NET系の中では最も配布が簡単

780:デフォルトの名無しさん
10/05/23 14:54:35
モデルってX、Y、Z軸の3つを回転軸にした回転しかできないのでしょうか?

781:デフォルトの名無しさん
10/05/23 15:04:10
それ以外って例えば?

782:デフォルトの名無しさん
10/05/23 15:07:24
任意軸回転でしょ

783:デフォルトの名無しさん
10/05/23 15:47:24
>>782
もしかしてCreateFromAxisAngleのことですか?

784:デフォルトの名無しさん
10/05/23 19:15:36
まあな

785:デフォルトの名無しさん
10/05/24 10:43:07
Matrix.CreateFromAxisAngle(new Vector3(1, 0, -1), MathHelper.ToRadians(this.degree));
これで回転させているのですが、回転させたときにモデルが横に引き伸ばされてしまいます。
どなたか原因が分かる方はいらっしゃいますでしょうか?
もしいるのであれば原因と解決法をお教えいただけないでしょうか?
お願いします。

786:デフォルトの名無しさん
10/05/24 13:27:03
Vector3を正規化したらだめかな

787:デフォルトの名無しさん
10/05/24 13:50:33
>>786
ありがとうごさいます。解決しました。


788:デフォルトの名無しさん
10/05/24 23:27:58
ドラッグでモデルを回転させるにはどのようにしたらよいのでしょうか?
どなたか教えてください、お願いします。

789:デフォルトの名無しさん
10/05/24 23:34:51
なんの薬?

790:デフォルトの名無しさん
10/05/24 23:43:11
XNAにドラッグなんていう概念はない
if (現在のフレームでマウスボタンが押されている) {
  if (!A) { A = true; B = 現在のマウス座標; }
  else { var d = 現在のマウス座標 - B; dに応じてモデル回転; B = 現在のマウス座標; }
} else { A = false;

791:デフォルトの名無しさん
10/05/25 00:03:38
>>790
ありがとうございました!

792:デフォルトの名無しさん
10/05/26 03:18:07
まあな

793:デフォルトの名無しさん
10/05/26 22:17:24
URLリンク(blogs.msdn.com)
上記のひにけにさんのサイトにある自動XNBファイルシリアライズを参考に
XMLファイルからデータを取り込もうとしています。
シンプルな例に言われるとおりにやってみたのですが、エラーを出してしまいます。
他プロジェクトでできたDLLを参照設定に追加してやってみましたが、ビルドは成功するものの
Neko[] cats = Content.Load<Neko[]>("cats");
の部分で読み込みエラーをしてしまいます。

エラー内容は
"cats" の読み込み中にエラーが発生しました。
ContentTypeReader Microsoft.Xna.Framework.Content.ArrayReader`1
[[MyDataTypes.Neko, MyDataTypes, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null]] が見つかりません。
どなたかエラー原因がわかる方がいませんでしょうか?
よろしくお願いします

794:デフォルトの名無しさん
10/05/27 02:00:48
まあな

795:デフォルトの名無しさん
10/05/27 10:53:29
それ難しいところは無いと思うけど。
話がよくわからないけど、こっちで再現できるだけの材料ある?

796:デフォルトの名無しさん
10/05/27 10:55:18
あ、あと下のコメントは見た?

797:デフォルトの名無しさん
10/05/27 19:06:18
再現に必要な材料は新規プロジェクトと↑のURLのcats.xmlだけです
まだXNA初めて4ヶ月ぐらいなので、もしかしたら根本的な部分が間違っている
のかもしれません・・・。
下のコメントは読みましたが、すでに本文の方も修正されているみたいです

798:デフォルトの名無しさん
10/05/30 11:23:08
ちょっと休みでスレ見てなかったよ。
これ、3.1の新機能なんだけどバージョンは3.1になってる?

799:デフォルトの名無しさん
10/05/30 11:33:15
って3.0だとビルド時に失敗するな・・・

プロジェクト新規作成 WindowsGame1
プロジェクト新規追加 MyDataTypes
MyDataTypesプロジェクトにNekoクラス作成
WindowsGame1プロジェクトの参照設定、本体、Contentの両方にMyDataTypes追加
WindowsGame1プロジェクトにContent追加XMLファイルでcats.xml
WindowsGame1プロジェクトでContent.Load<Neko[]>("cats")追加

これだけだったよ、実行時もエラー出ない。

800:デフォルトの名無しさん
10/05/30 21:25:12
モデルの回転についてお聞きしたいことがあります。
Y軸を回転軸に180°回転させた後、
X軸やZ軸を回転軸に回転させると、自分から見て回転する方向が反対になってしまいます。
このような現象を解消し、自分から見て常に同じ方向に回転させるにはどのようにしたらよろしいでしょうか?
もし解る方がいらっしゃるのでしたらお教え願いませんでしょうか?
お願いします。

801:デフォルトの名無しさん
10/05/30 21:58:20
>>800
そりゃ、回転軸も180度回転させるしか。

802:デフォルトの名無しさん
10/05/30 22:54:40
>>800
オイラー角で姿勢を保持するのをやめる。

803:デフォルトの名無しさん
10/05/30 23:21:28
>>802
どのようにしたらよいのでしょうか?

804:デフォルトの名無しさん
10/05/30 23:53:18
>>803
Quaternionっての使うと、回転軸+回転角で情報持てる。

805:デフォルトの名無しさん
10/05/31 22:12:43
>>799
ご丁寧に教えていただきありがとうございます。
書いてあるとおりにして、using MyDataTypes;を入れれば読み込んでくれました
どうもありがとうございました。

806:デフォルトの名無しさん
10/05/31 22:39:11
>>804
Quaternionの使い方が難しくてよくわかりません。
Y軸のと(1、0、-1)の軸の回転をそれぞれQuaternion.CreateFromAxisAngleで行った後、
Quaternion.Concatenate(Y軸、(1、0、-1))で結合しているのですが、
上手く回転できません。
どなたかわかる方がいらっしゃったらお教え願いませんでしょうか?
お願いします。

807:デフォルトの名無しさん
10/05/31 23:19:46
>>806
回転自体をイメージできてないんだったら、オイラー角だろうがクオータニオンだろうが何使ってもダメなもんはダメだと思うんだが。

808:デフォルトの名無しさん
10/05/31 23:43:28
>>807
上手く回転できないというのは、
>>800の現象が改善されないという意味です。

809:デフォルトの名無しさん
10/06/01 00:09:34
最初のY軸180度回転のせいで、例えばX軸は最初の状態と比べると真逆に向いてしまうから。
X軸回転の後Y軸回転したらどうなるか、とかいろいろやって何が起こるか試してみるといい。
この辺のマトリクスの仕組みを理解しないと思い通りに動かすのは難しいよ。


810:デフォルトの名無しさん
10/06/01 00:54:04
>>808
回転の順序逆なんじゃね?

811:デフォルトの名無しさん
10/06/01 11:35:06
>>810
(1、0、-1)の軸で回転させてから、
Y軸で回転させるということでしょうか?

812:デフォルトの名無しさん
10/06/01 11:39:24
>>811
行列の右結合と左結合が逆。
自分の意図してる方と同じ回転順序になってない。

813:デフォルトの名無しさん
10/06/03 22:53:20
以前、XMLの読み込みついて教えていただいたのですが、
XMLを二次元配列で読み込む方法はないでしょうか?
当然、XMLファイルも今のままではダメだと思うのですが、
<item>の中に<item>を作ればいいのでしょうか?

814:デフォルトの名無しさん
10/06/04 16:14:01
XML に出力してみて、自分で改変すればいいよ。XmlSerializer の Deserialize メソッド使えば出力出来る。綴り違ったらごめん。

815:デフォルトの名無しさん
10/06/04 16:14:58
間違えた。De は要らなかった。

816:デフォルトの名無しさん
10/06/06 12:06:00
>>815
なるほど
やってみます!

817:デフォルトの名無しさん
10/06/06 12:29:23
配列を含んだクラスをXmlSerializer使ってみたのですが、
型 'クラス名' を反映中にエラーが発生しました。
ってエラーになります。
配列の部分をコメントアウトすれば、エラーがなくなりXmlファイルが生成できます
配列を含むXmlを作る時には、何か方法が違うのでしょうか?

818:デフォルトの名無しさん
10/06/06 12:42:01
3.1で追加された自動シリアライズが配列までサポートしてないのかも
そもそも多次元配列はシリアライズできないよね?まあジャグ配列にしたんだろうけど。
リーダーライター自分で書くのが確実な気が

819:デフォルトの名無しさん
10/06/06 12:51:05
多次元配列は事実上の非推奨
何のメリットも無いから使わなくていいよ

820:デフォルトの名無しさん
10/06/06 18:24:08
そうなの?
ゲームなんか作るときは
コードの分かりやすさとか管理のしやすさがメリットとしてあると思うけど。
二次元グリッドで番地的にオブジェクトだのポリゴンだのしまっておくときとか。


821:デフォルトの名無しさん
10/06/06 18:26:05
Listでいいじゃない

822:デフォルトの名無しさん
10/06/06 18:38:44
固定長の普通の配列を使うことにメリットがなくて
Listを使った方がいい、とか言いいたいならまだ分かるけど、
「多次元配列」自体にメリットがないという意味が理解できない。

(もっとも、速度は固定長の普通の配列の方が速いだろうし、
使い勝手としてはListとかの方がいいだろうし、そこの選択は適材適所だとして)

823:デフォルトの名無しさん
10/06/07 21:33:30
>多次元配列は事実上の非推奨
>何のメリットも無いから使わなくていいよ

なんだよ、根拠もないのかよ。

824:デフォルトの名無しさん
10/06/08 11:50:05
何言いたいのかよくわかんないけど
それでなくちゃいかんという場面が思いつかないね

825:デフォルトの名無しさん
10/06/15 13:35:40
複数のモデルを表示すると、奥にあるものが手前に表示されてしまいます。
この現象を解消するにはどうしたらよいのでしょうか。
どなたかわかる方がいらっしゃったらお教え願いませんでしょうか?
お願いします。

826:デフォルトの名無しさん
10/06/15 13:46:27
奥にあるものをあとから描いてるんじゃ?
どうやってんのよ

827:デフォルトの名無しさん
10/06/15 14:22:26
>>825
例えばSpriteBatchと一緒に使っていて、レンダーステート変更されてしまっているんじゃないかな?
URLリンク(blogs.msdn.com)

828:デフォルトの名無しさん
10/06/15 14:38:03
>>827
そうです。
モデルだけを表示していた時は普通に表示できたのですが、
文字も一緒に表示するとおかしくなりました。

829:デフォルトの名無しさん
10/06/15 14:43:39
Zバッファを有効にしたらできました。

830:デフォルトの名無しさん
10/06/15 16:58:17
モデルの回転させるとき、
他の回転軸を固定したまま回転させることってできないのでしょうか?
(回転軸の固定とは、ベクトル方向が自分から見て常に同じ向きを向いているという意味です。)

831:デフォルトの名無しさん
10/06/15 17:00:04
それは固定って言わないのでわ?

832:デフォルトの名無しさん
10/06/15 17:19:12
>>830
ググってみた
URLリンク(www.arakin.dyndns.org)

833:デフォルトの名無しさん
10/06/16 16:03:53
Quaternionでxの部分だけ表示、変更するにはどのようにしたらよいのでしょうか?

834:デフォルトの名無しさん
10/06/16 16:05:01
Quaternionでxの部分だけ表示、変更すればいいですよ

835:デフォルトの名無しさん
10/06/16 16:31:36
ありがとうございました

836:デフォルトの名無しさん
10/06/16 16:37:04
>>833
Matrixから作ったQuaternionのxの部分を表示するにはどのようにしたらよいのでしょうか?


837:デフォルトの名無しさん
10/06/16 16:47:04
Xいじってまたつくればよかんべ

838:デフォルトの名無しさん
10/06/16 17:15:06
>>836
System.Console.WriteLine(Quaternion.CreateFromRotationMatrix(Matrix.Identity).X);

839:デフォルトの名無しさん
10/06/16 18:08:26
MSの犬の集まるスレはここか・・・・

840:デフォルトの名無しさん
10/06/16 18:16:03
new Texture2D(GraphicsDevice, 1, 1)
で1x1の大きさのテクスチャつくったら、
どれくらいメモリくう?

手元の環境で試してみたら…。
Texture2D[] ts = new Texture2D[256];
の状態でメモリ測定。
次に、256回newして配列に収めてメモリ測定。

だいたい一個あたり311byte使ってるようなんだが…。
たった1x1のサイズでそんなに食うものなのか?

テクスチャやデバイスのプロパティは以下。

SurfaceFormat = Color
TextureUsage = None
RequiresPower2 = true
SupportsNonPower2Conditional = true

841:デフォルトの名無しさん
10/06/16 19:10:14
>>839
ゴキちゃんかw、今年は残念だったなw

842:デフォルトの名無しさん
10/06/16 20:04:28
>>841
お手!

843:デフォルトの名無しさん
10/06/16 20:12:15
>>838
せっかく教えていただき申し訳ないのですが、
spriteBatchでの表示方法をお教えいただけるとありがたいです。

844:デフォルトの名無しさん
10/06/16 22:17:30
>>840
メモリ測定てどうやるの?

845:デフォルトの名無しさん
10/06/17 10:32:08
>>843
何がしたいの?
数値を画面上に表示したいってだけ?

846:デフォルトの名無しさん
10/06/17 11:23:25
>>845
はい。
あと、できればxの値だけを変える方法も知りたいです。

847:デフォルトの名無しさん
10/06/17 11:51:49
x変えるのは>>837でいいじゃない?
文字はstring.FormatとSpriteBatch.DrawString組み合わせればいい
SpriteFontの扱いはわかるべ?

848:デフォルトの名無しさん
10/06/17 22:09:10
Matrix以外の方法で、
モデルの向きを最初から反対の状態で描画する方法が知りたいです。
知ってる方がいらっしゃったら教えていただけないでしょうか?
お願いします。

849:デフォルトの名無しさん
10/06/17 22:09:50
日本語で詳しく。

850:デフォルトの名無しさん
10/06/17 23:16:33
よくわからないけどモデルを反対の状態で作ればええねん。俺って天才かも

851:デフォルトの名無しさん
10/06/18 00:39:28
カリングを変えたいってこと?

852:デフォルトの名無しさん
10/06/18 00:40:53
パワーリング!

853:デフォルトの名無しさん
10/06/18 19:42:31
頂点を指定して線を描く場合、線の太さは変えられないのでしょうか?

854:デフォルトの名無しさん
10/06/18 19:48:23
三角形を二つ使うことになる。

855:デフォルトの名無しさん
10/06/19 00:00:54
線に太さは存在しない

856:デフォルトの名無しさん
10/06/19 00:03:30
だったら線だけでは何も描かれないのが自然

857:デフォルトの名無しさん
10/06/19 00:17:25
実際線は目にみえない。
線で構成されたものがみえる。

858:デフォルトの名無しさん
10/06/19 11:34:39
メタセコイアなどで太い線を作るしかないのでしょうか?

859:デフォルトの名無しさん
10/06/19 12:29:08
>>858
モデルを用意しておいてもいいけど、プリミティブで描画できるよ

860:デフォルトの名無しさん
10/06/19 18:21:42
windows限定になるけど、右上の×ボタン押したときに、
"終了しますか?"みたいなメッセージを表示させるには
どこに処理を書けばいいの?

861:デフォルトの名無しさん
10/06/19 19:09:19
close

862:デフォルトの名無しさん
10/06/19 23:09:30
>>860
普通にプログラムに書けばいいと思うよ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch