MQOファイルで位置と回転角度を知りたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
七篠
記事: 8
登録日時: 13年前

MQOファイルで位置と回転角度を知りたい

#1

投稿記事 by 七篠 » 13年前

お世話になります。
3Dを扱う時にメタセコイヤを使っており、xで吐き出して単に1オブジェクトを登録、表示は可能になりました。

そこで今度は複数のオブジェクトを効率よく登録、読み込み、表示できたらいいなということで知恵を貸していただければと思います。

上記の例で部屋や町並みなど同じものを位置を変えて表示させたいとき、メタセコイヤであらかじめ配置し、位置情報・角度だけ抽出して
後はプログラム上でそのデータを下に展開したいと思っています(そうすればメッシュデータの削減になるのでは?)

位置情報の基点はMQOファイルのメッシュのXYZの最大値と最小値を調べて計算で何とかなりそうなきがするのですが、
回転に関してはどのように考えて計算したらいいのかまったく思い浮かばないのです。

皆さんならどのように作られるのかご意見いただければ幸いです。

書き忘れました
使用言語VisualC++ 2010 Express Edition DXライブラリ3.04b

ぬっち
記事: 105
登録日時: 13年前
連絡を取る:

Re: MQOファイルで位置と回転角度を知りたい

#2

投稿記事 by ぬっち » 13年前

七篠 さんが書きました:お世話になります。
上記の例で部屋や町並みなど同じものを位置を変えて表示させたいとき、メタセコイヤであらかじめ配置し、位置情報・角度だけ抽出して
後はプログラム上でそのデータを下に展開したいと思っています(そうすればメッシュデータの削減になるのでは?)
ちょっとこの意味がよくわからないのですが、まったく同じモデルで別の場所に表示を行うという認識でよいのでしょうか?
もしそれでしたら、読み込んだメッシュデータに対して別々の位置を指定してあげて表示をすればよいのではないでしょうか?

七篠
記事: 8
登録日時: 13年前

Re: MQOファイルで位置と回転角度を知りたい

#3

投稿記事 by 七篠 » 13年前

基本はその考えでいいのですが、「別々の位置を指定してあげる」そのデータをあらかじめメタセコイヤで作り、位置情報だけ抜き出したいのです。
手動で探るのは面倒なのでツールでも作って吐き出そうかと思っています。

ぬっち
記事: 105
登録日時: 13年前
連絡を取る:

Re: MQOファイルで位置と回転角度を知りたい

#4

投稿記事 by ぬっち » 13年前

私なりにちょっと考えてみました。
もっと効率のよい方法がある&正しくないかもしれませんので、参考程度に。

ただしこの方法は、"同じモデル"に対して適用可能です。
なぜなら、モデルの中心座標を基に考えているからです。
①それぞれのモデルの中心座標を算出。
②相対的に求めるモデル(ModelRとする)の中心座標を基準となるモデル(ModelBとする)の中心座標に一旦あわせる。
③ModelR、ModelBそれぞれにおいて中心座標とある1点で出来る線を考え、それがX軸とY軸とZ軸に対してどのような角度を持っているか調べる。このあたりは内積とか使えば求まるでしょう。
④その角度から、回転の情報が得られる。また、移動させる前の中心座標同士を比べることで位置情報も得られる。

正直数学からしばらく離れてしまっている身でして、考えててこれでよいのかという感じです^^;
実際に、考えているだけではなく試行錯誤してやるしかないとも言えません;;;
もっといい方法があるとよいのですが。。。

ところで、気になったのですが、DXライブラリを用いているのですよね?
私は3DのDXライブラリを用いたことがなくてわからないのですが、xファイルの読み込みを行うと、全てのメッシュデータが読み込まれてしまうのではないのでしょうか?
そうすると、明らかに、そのまま描画するか、または位置を指定して複数描画したほうがよい気がします。
それとも、xファイルの読み込みはDXライブラリ依存ではないのでしょうか?

七篠
記事: 8
登録日時: 13年前

Re: MQOファイルで位置と回転角度を知りたい

#5

投稿記事 by 七篠 » 13年前

もっちさま
ご返答ありがとうございます。
考えにいたらなかったのは3と4のことで、内積という単語にピンとこなくてネットで軽く調べました。
サインコサインタンジェントとかの奴ですね。
正直概念から勉強のしなおしになるのですぐにどの関数などを使えばいいのか考え付きませんが、
おおよそどのような事をすればよいかの方向性は見えたと思います。

もう一度勉強しなおして、また質問させていただきますので、一旦解決とさせていただきます。

Xファイルの読み込みに関しては、ゲームとして作成するソフトはたとえば椅子.xや机.xなどオブジェクトごとに細かくしたxファイルを、部屋の一部として必要な時に読み込むようには作ってます。
なのですべてのオブジェクトをすべて読み込むということにはしない予定です。
部屋の一部と必要なときに読み込む際に、どれが必要で、どこにどの角度で配置してと考えた際、今回考えた外部ツールを別に作ろうと思い立ちご質問させていただきました。

後々に読み返してみて質問時のあまりの文章の足りなさに気づき申し訳ない気持ちでいっぱいです。すいません

閉鎖

“C言語何でも質問掲示板” へ戻る