プレイ日記
つばさ☆ nsm2116
【ポリゴン】あ、ポケモンの方のポリゴンじゃないです。3Dですw 本題 Z軸周りの回転角度の求め方が分からん…助けてください……
13そうだね
プレイ済み
返信[1]
親投稿
あきと SideBurnsM
???さんの質問にサンプルをあげたのですが、オイラー角計算を適用してXYZ軸回転を同時にできるようにしてます。見てみると参考になるかもしれません
2そうだね
プレイ済み
返信[2]
親投稿
ボーネン gurigura2003
前に考えた2dクラフトの一人称ゲームって知識があればできるのでしょうか? というかつばささん…講座だすなら3D系を出したら嬉しいです(殴 ただ3D系の知識すごいからな~ これはこまざわ りゅうきさんに並ぶ?
2そうだね
プレイ済み
返信[3]
親投稿
SilverBlue Corei72630QM
現状はこまざわさんが上かな。。。
5そうだね
プレイ済み
返信[4]
親投稿
InDoor TheInDoor12
僕の場合、立体の向きを2本のベクトルで保持して、あとはATANで回転角度を求めるなりなんなりしてゴリ押すという方法をとってます。 気持ち悪いことこの上ない方法だけど、ちゃんと動きますぞ
2そうだね
プレイ済み
返信[5]
親投稿
つばさ☆ nsm2116
いや、こまざわさんには全く追い付かないよ。 てか元々3Dプログラマーになりたかったんだよね。 今から実験します。
2そうだね
プレイ済み
返信[6]
親投稿
つばさ☆ nsm2116
あきとさん>>プログラムなダウンロードさせていただきました。ゆっくり拝見致します。 InDoorさん>>ベ ク ト ルが分からない。物体の動く向き?みたいなのは聞いたような… どっちかっていうとスライドパッドで立方体のポリゴンを自由にぐるぐる回転させれる方法でX軸周り回転、Y軸周り回転の回転角度は分かったけどZ軸周りの回転角度が知りたいみたいな感じで質問したかった。
1そうだね
プレイ済み
返信[7]
親投稿
つばさ☆ nsm2116
画像忘れてた
1そうだね
プレイ済み
返信[8]
親投稿
InDoor TheInDoor12
プログラムの全体を見ていないので断言はできないけど、 スライドパッドで回すだけなら Z軸を中心に回す必要はないのでは? あ、ベクトルの話は質問と少しずれているので忘れてくださいな
2そうだね
プレイ済み
返信[9]
親投稿
あきと SideBurnsM
つばささんは昔私が挙げていたソースからもってきてますね。その貼り付けてある方法は、1つの軸に対する回転にしか適用できません。 同時に回転するためには別な計算方法が必要だと言うことでオイラー角の計算を入れています。
2そうだね
プレイ済み
返信[10]
親投稿
つばさ☆ nsm2116
えぇ!あきとさんのを移した覚えはないのに……
1そうだね
プレイ済み
返信[11]
親投稿
つばさ☆ nsm2116
ちょとりあえず投稿プログラムコーナーにSPRITEで回転させるやつがあったからそれで説明 公開キー[Q3KEDEX3]です。これみたいに回転させたいんです。 自分の場合、スライドパッドで横に90度(1面だけ横に回転)ぐらい回転させてスライドパッドを上に押すと横に回転するというか0度回転させた状態でいうZ軸回転になるんですよ。ちょっと問題のプログラムの公開キー持ってきます。
1そうだね
プレイ済み
返信[12]
親投稿
つばさ☆ nsm2116
公開キー[527Q3394] 問題のプログラムです。
1そうだね
プレイ済み
返信[13]
親投稿
あきと SideBurnsM
違いましたか。大変失礼しました。 つばささんごめんなさい。 同じ計算式だというだけでレスすべきではありませんでした。
2そうだね
プレイ済み
返信[14]
親投稿
あきと SideBurnsM
【527Q3394】は落とせないですね…。
2そうだね
プレイ済み
返信[15]
親投稿
InDoor TheInDoor12
あ、なるほど 一番手っ取り早いのは、 頂点の座標が格納されている変数の値を回転後の座標で上書きしていく方法です。 こうすると、x,y軸中心の回転だけで、それっぽいことができます。 もっともこの方法では、演算誤差の関係で元データが少しずつ壊れていくのですがね… 元データを壊さない方法はいろいろありますが、 比較的直感的なのは、(←効率的とは言ってない) 僕が前に書いた、二本のベクトルを使って立体の角度情報を保持する方法です。
2そうだね
プレイ済み
返信[16]
親投稿
InDoor TheInDoor12
ベクトルという言葉を使わず、大まかに説明すると… [準備] 表示させる立方体とは別に、角度保持用の頂点A,Bを用意します。 初期状態では、A(1,0,0) B(0,1,0)です。 頂点A,Bは、スライドパッドの操作に応じて、 上に書いた「一番手っ取り早い」方法で回転させます。 [描画] 描画時の最初に、 「回転後の頂点A,Bを、(1,0,0)(0,1,0)に戻す為にはどう回転させれば良いか」 という手順をATANを使うなりなんなりしてどうにかして計算します。 (例:x軸を中心にaラジアン回転、その後y軸を中心にbラジアン回転、さらにz軸を中心にcラジアン回転) そして、表示させる立方体の各頂点を、その手順の逆に回転させたものをスクリーンに投影、描画します。 (例:z軸を中心に-cラジアン回転、その後y軸を中心に-bラジアン回転、さらにx軸を中心に-aラジアン回転)
2そうだね
プレイ済み
返信[17]
親投稿
InDoor TheInDoor12
この時、頂点の元データは上書きしません。
2そうだね
プレイ済み
返信[18]
親投稿
つばさ☆ nsm2116
すみません。間違えました 公開キー[5S7Q3394] でした…
1そうだね
プレイ済み
返信[19]
親投稿
つばさ☆ nsm2116
Z軸中心に回すCという値はどのような数字を入れればいいのですか?
1そうだね
プレイ済み
返信[20]
親投稿
つばさ☆ nsm2116
実 は A T A N や T A N が わか ら な い
1そうだね
プレイ済み
返信[21]
親投稿
InDoor TheInDoor12
一旦整理します。 つばささんのプログラムでは、 座標変換は次の三つのステップで行われていますよね? 1.頂点データを、回転後の座標に変換 2.回転後の座標を、カメラから見た座標に変換 3.カメラから見た座標を、スクリーン座標に変換 で、1の部分にバグがあるわけです。
2そうだね
プレイ済み
返信[22]
親投稿
InDoor TheInDoor12
その原因は、立体の角度情報の保持方法にあります。 つばささんのプログラムでは、 R1=R1-SY/12 R2=R2+SX/12 という処理が行われていますが、"それが"間違いです。 例えば、普通だと、 「x軸を中心に90度回転させてからy軸を中心に90度回転させる」のと、 「y軸を中心に90度回転させてからx軸を中心に90度回転させる」のでは 結果が違ってきますよね?(サイコロなんかを回転させてみるとわかりやすいです) ところがつばささんのプログラムでは、この二つの動作の結果がどちらも同じになってしまいます。 これは、z軸中心の回転、すなわちR3を考えたところで、どうにもなりません。 (頑張ればどうにかなるのかもしれませんが、僕の頭では無理です)
2そうだね
プレイ済み
返信[23]
親投稿
InDoor TheInDoor12
で、正しく角度情報を保持する為には、別の方法が必要になります。 その方法はいろいろあるのですが、 僕は前に書いたベクトル2つとATANでゴリ押す方法が直感的で比較的わかりやすいと思います。 ベクトルとATANはそんなに難しい概念じゃないですよー。調べるとすぐわかります。 気力があるなら、「オイラー角」や「クォータニオン」なんかを調べてみるといいかも…
2そうだね
プレイ済み
返信[24]
親投稿
つばさ☆ nsm2116
ggってきます!
1そうだね
プレイ済み
返信[25]
親投稿
つばさ☆ nsm2116
ベクトル2つの変数がどれか分からなくなったw ぐぬぬ整理してきます。
1そうだね
プレイ済み
返信[26]
親投稿
つばさ☆ nsm2116
どういう風にごり押しするんじゃぁー... ATANは何となく分かるけどベクトルがネットのじゃよく分からない...
1そうだね
プレイ済み
返信[27]
親投稿
InDoor TheInDoor12
「ゴリ押す」や「どうにかして」じゃ通じないですよね… すみません… レベルを一段階下げて 前のほうに書いた、 「頂点の座標が格納されている変数の値を回転後の座標で上書きしていく方法」 ってできますか?
2そうだね
プレイ済み
返信[28]
親投稿
つばさ☆ nsm2116
いま、それになるようなブログラムを組んでいるんですがなかなかうまく行かず...やっぱり足し算じゃ無理か... もっかい試します
1そうだね
プレイ済み
返信[29]
親投稿
InDoor TheInDoor12
<DEVX3394> 「頂点の座標が格納されている変数の値を回転後の座標で上書きしていく方法」のサンプルです よかったら参考にしてください
2そうだね
プレイ済み
返信[30]
親投稿
そういや、ポリゴンって、ピカチュウのせいでいなくなったんですよね。
2そうだね
プレイ済み
返信[31]
親投稿
つばさ☆ nsm2116
わざわざありがとうございます!
2そうだね
プレイ済み
返信[32]
親投稿
つばさ☆ nsm2116
参考したはともかく、こまざわさんのも参考にしたらX軸回転の上書き(?)はできました。ですがY軸回転の上書きができない。れっつ試行錯誤っ!
1そうだね
プレイ済み
返信[33]
親投稿
つばさ☆ nsm2116
ということでまだ実験してます。 何かあればよろしくお願いします
1そうだね
プレイ済み
返信[34]
親投稿
つばさ☆ nsm2116
あ、遅れてすみません。あれからずっと悩んでたんですが出来ました!!プログラム自体の意味も理解出来ました!!やってみるとこんな単純なことに気づかなかった自分がちょっとバカらしく感じましたが、本当に皆さんありがとうございました!!感謝でいっぱいです!
1そうだね
プレイ済み