08/09/26 21:05:12 zQRpm1Fz
表示している3Dモデルのワールド頂点座標を取得したいのですが、方法はありますか?
364:名前は開発中のものです。
08/09/27 02:17:13 Ym8UNkdM
Windowsフォームの一部にManaged DirectXを使って3D画像を描画させている
C#で作られた業務用アプリがあります。
Managed DirectXで描画している箇所を XNAに置き換えることは可能でしょうか?
もしくは、XNAでつくったアプリに、ボタンやテキストボックスなどのコンポーネント
を配置することは可能ですか?
>>363
表示している座標を取得するのは難しいと思うので、
ローカル座標系での3Dモデルの頂点座標に、ワールド座標系に変換する行列
(描画するときセットする行列)をかけて、計算で求めるといいかもしれません。
365:名前は開発中のものです。
08/09/27 02:34:49 0q0J6NQG
>>363
レスありがとうございます。
Meshからローカル座標を取得することは出来るので、そこから変換をかけてみようと思います。
366:名前は開発中のものです。
08/09/27 04:37:18 0q0J6NQG
model4.Meshes[0].VertexBuffer.GetData(vertex) ; //vertexはVector3の配列
の方法でモデルの頂点座標を取得しました。
立方体なので、8個、もしくは24個の座標が出てくることを期待したのですが
ModToolで作成したXファイルでは48個、メタセコイアで作成したXファイルでは16個の座標がでてきました。
出てきた座標のうち、半分は頂点として使われているとは考えにくい座標でした。(のこりの半分は正しい座標でした)
正しい座標、間違った座標 が交互に配列に格納されていたのですが、原因がわかりません。
配列の取得の方法がまずいのでしょうか。
367:名前は開発中のものです。
08/09/27 06:58:44 6TZR1rmS
C#C#C#スレで見たのと同じ問題かな?
368:名前は開発中のものです。
08/09/27 12:08:21 0q0J6NQG
今C#C#C#スレを見てきました。
質問内容は同じでしたが、そちらではXNAではなくManagedDirectXを利用していました。
369:名前は開発中のものです。
08/09/27 12:20:26 6TZR1rmS
同じだと思うけどな
publivoid GetData<T> (
T[] data
) where T ValueType
VertexBuffer.GetData ジェネリック メソッド (T[])
型パラメータ
T
頂点バッファのデータの型。
パラメータ
Vector3の配列 ←これが違うのではないの?
頂点バッファのデータの型で受けるんでしょ
たぶんUV値が入ってきてるから変なんでしょ
data
頂点バッファ データのコピー先の配列。
370:名前は開発中のものです。
08/09/27 13:00:12 0q0J6NQG
Vector3の配列ではなく、VertexPositionTexture配列にしてみました。
取得できる頂点数は4個になったのですが、やはり違う点がまじっていました。
VertexBufferの配列でも受けてみようと思ったのですが、そちらではビルドできませんでした。
そのモデルは地形として使いたいので、モデルの三角形全てとRayとの衝突地点の割り出しを行いたいと思っているのですが
VertexBufferを利用する以外に何かよい方法などはありますか?
NodeContentを利用する方法が書いてあったのですが、NodeContentにモデルを入れる方法がわからないので
利用することが出来ません。
371:名前は開発中のものです。
08/09/27 13:11:23 6TZR1rmS
4個?
VertexBuffer.GetData<VertexPositionTexture>(vertex) ; //vertexはVector3の配列
<の>なかはそれであってるの?
372:名前は開発中のものです。
08/09/27 13:20:10 6TZR1rmS
海外だけど、あなたがやろうとしてることだと思う
URLリンク(www.koders.com)
57行74行82行目
373:名前は開発中のものです。
08/09/27 13:41:38 6TZR1rmS
ごめんよく考えたらmesh.Intersect使えるんだった
374:名前は開発中のものです。
08/09/27 15:42:12 0q0J6NQG
コード提供までしていただき、ありがとうございます。
mesh.IntersectはXNAにはないようです。
これからコードをみて、何を行っているのか調べてみたいと思います。
375:名前は開発中のものです。
08/09/27 15:52:31 0q0J6NQG
おっしゃるとおり、<>の中が違いました。
それに伴い、配列のデータ型も違ったようです。
VertexColorTexturePosition型の配列にしたところ、予定通りの頂点を得ることが出来ました。
目標である頂点の取得は出来たので、ここから頂点を利用し地形としての判定を取れるように作業をしたいと思います。
ありがとうございました。
376:名前は開発中のものです。
08/09/27 15:57:26 6TZR1rmS
最新のはあると思うけど,XNA最近使ってないから知らないけど
ここにも書いてあるみたいだし
URLリンク(sorceryforce.com)
ためしにmodel4.Meshes[0].(点)
でCTRL+スペースで候補に出てこないですか?
377:名前は開発中のものです。
08/09/27 16:07:59 6TZR1rmS
解決したのね、おめでとう
Intersectよりそれのほうがいいかも、
理論知って自前でやってたほうが後々いいですしね
ただ言っときたいのはそのXfileは正しく読めても
他ので作ったのは読めないとかなるんで
海外のに書いてあるけどVertexBufferのタイプを
一頂点の長さ(何があるかで違ってくる)取得して
<>の中を変えるのが正しいやり方だと思います。
378:名前は開発中のものです。
08/09/27 16:15:56 0q0J6NQG
BoundingSphereからIntersectは呼べるようですが、meshからは呼ぶことが出来ませんでした。
計画ではRayとPlaneの交点を出すことができる、Ray.Intersects(Plane)を利用しようと考えています。
Planeは3点あれば三角形が作れるので、モデルから頂点を取り出す必要がありました。
あとは、モデルの三角形を全て呼び出すことが出来れば可能になるのではないかと考えています。
MeshesのIndexBufferを取得することが出来れば、先ほど取得した頂点の配列で判定用のPlaneを作ることができそうなので
その方法をとってみることにします。
379:名前は開発中のものです。
08/09/28 18:17:48 4erl5gXp
>>378
何が目的か今一よーわからんが、たぶんあんたがやろうとしている事は
まともなパフォーマンス出そうとするとかなり面倒なことする必要があるとおもうで。
正直別の方法考えるべきだとおもう(まあそれでも十分な程度の事なのかもしれんので、
余計なお世話の可能性もあるんだけど;; ものすごくポリゴン数が少ないモデルしか
扱わないとかね。
380:名前は開発中のものです。
08/09/28 18:53:25 z02XW6Pn
なにかほかにいい方法があればいいのですが
これくらいしか思いつかなかったので・・・
ネットなどでも手法などがあまり書いていないので、とりあえずやってみようと思っています。
381:名前は開発中のものです。
08/09/28 19:00:35 YhqPSvhE
全容を言ってないのに、この方法に
ツッコミ入れるほうがおかしいと思うよ
382:名前は開発中のものです。
08/09/28 22:31:38 4erl5gXp
というか前から意地でもアリもの使ってなんとかしようとしすぎているように見えたんでな。
もちいと数学勉強しないとその方法はちょっと辛いとおもう・・・ってのもある。
そんなに難しい数学じゃないから。(高校じゃやらないけど、その応用で済む
地面との当たり判定とかつくりたいなら逆の発想でハイトマップつくってそこから
ポリゴン作って、とかのほうが簡単よ?でないとパフォーマンス出すためにはクラスタ分け
きちんとしないとちょっと厳しいと思う。
もしもオブジェクト同士の衝突を考えているなら・・・よっぽど上手くやらないとまともな
パフォーマンスでない。距離公式使って球や円筒同士の当たり判定のほうが無難。
どちらも不可能ではない、けど簡単ではないって話だけどね。
正直聞いてる内容が自力で解決できないとなるとちょっと無理じゃないかなー。
(ネガティブな発言に見えるかも知れんけど、一応解決策も書いているのでそのつもりで。)
383:名前は開発中のものです。
08/09/28 22:57:14 U0iEQj4g
このスレ見てると質問の内容も回答の内容もスゲーな。用語すらもまともに理解できん。
どんなゲーム作ってるのか気になる。
384:名前は開発中のものです。
08/09/29 02:20:01 L8aMU6js
>>382
なるほど前に書き込んでる人なのか
[0]でわかったよ
レイでの当たり判定の前にちゃんと絞込みしてないと
確かにきついだろうね
数学は必要だけど具体的にどんな時に使うのか
本とかでは大抵書いてないよね、それが問題だと思うんだよね
385:名前は開発中のものです。
08/10/04 12:09:00 i6gF2OK4
みんなどうした?何かゲーム作ってる?
386:名前は開発中のものです。
08/10/05 04:05:05 tg6+UXrh
サウンド再生を試してるんですがどうしたらいいのか分かりません。
コントローラーでスプライトを操作して右の方に来たら音が鳴り続けるようにしたいです。
スプライトが右の方にいる限り、音が重なって再生されたりせずに
一本の音が再生され、終了した瞬間にまた最初から繰り返し鳴るようにしたいです。
cue.IsPrepareとかIsPlayingとか試したんですがどうも不正終了するのでよく分かりません。
とりあえず取っ掛かりとして↓のコードを晒しますのでこれをどう変えたらいいか教えてください。
LoadContent内
cue = soundBank.GetCue("testsound");
Update内
if (mySprite.position.X >= 200)
cue.Play();
else
cue.Pause();
387:名前は開発中のものです。
08/10/05 12:10:08 omFPsi9h
URLリンク(creators.xna.com)
↑これのxboxControllerSpriteFont.tgaをプロジェクトに追加して
コンテントプロセッサーにSprite Font Textureを指定して
font = Content.Load<SpriteFont>("SpriteFont1");
glyph = Content.Load<SpriteFont>("xboxControllerSpriteFont");
spriteBatch.DrawString(glyph, "%", ...
spriteBatch.DrawString(font, "ボタンを押してください", ...
みたいな感じで使ってるんだけど、通常フォントとボタンイメージを
同一のSpriteFontで扱うようにってできないのかな?
spriteBatch.DrawString(fontAndGlyph, "%ボタンを押してください", ...
って感じで使えると便利なんだけど。
388:名前は開発中のものです。
08/10/05 13:01:37 lFMkzhOs
>>387
そういう事をするためにSprite Font Textureが用意されている。
・・・のだが、正直言って日本語でそれをやるのは厳しいよな。
xboxControllerSpriteFontに対応している文字列を探して
上の様なコードを実行するメソッド作った方が楽そうだ。
389:名前は開発中のものです。
08/10/05 13:33:48 QOc49fbj
>>386
IsPlayingできると思うけど。
if (cue.IsPlaying == false && mySprite.position.X >= 200)
cue.Play();
不正終了する理由は?
390:名前は開発中のものです。
08/10/05 13:37:39 Q0AXzTyW
URLリンク(msdn.microsoft.com)
おまえらこれ行く?
391:名前は開発中のものです。
08/10/05 13:40:10 omFPsi9h
┐(´Д`;)┌
392:名前は開発中のものです。
08/10/05 13:42:43 dgTlshpD
家から近いな
14m*16mの会場に何人来るんだ?w
応募者以外で行く人いるんかな
393:名前は開発中のものです。
08/10/05 13:51:55 Q0AXzTyW
>>392
去年もこのホテルで、Xbox公認ファンサイトの人とか、芸能人とか板垣(格げーの人ね)、ジェイド(美人開発者)とか
いろいろ集めてインターナショナルパーティーやってたからね。
今年もこの発表会のあとに同じ会場でパーティーがあるみたいだから、ゲストの多くも発表会から参加するんじゃね。
コンテスト入選者にとっては、国内外のメディアとかデベロッパーとかの目に留まるチャンスですよ。
俺ですか?はい、予選落ちです。つーか1日にメールで発表会の案内よこすなヽ(`Д´)ノ選ばれたと勘違いしたじゃないかw
394:名前は開発中のものです。
08/10/05 13:56:28 tg6+UXrh
>>389
音が何回か鳴ったあとに実行時エラーになって
MSに情報を送信しますかみたいな例のウィンドウが出ます。
デバッガで試すと
$exception {"The method or function that was called cannot be used in the manner requested."} System.Exception {System.InvalidOperationException}
で、エラーのツリーを展開すると
!式を評価できませんでした
みたいなのが大量に出ています。
395:名前は開発中のものです。
08/10/05 14:50:52 dgTlshpD
>予選落ち
何人応募とかどっかでみれる?
396:名前は開発中のものです。
08/10/05 17:50:50 WZwP0nv8
少ないから数の発表は無いだろ