レス数:4 / 状態:解決済み / No:80 / ATOM
1
名前:ウォーターフリー
日付:2010/11/27(土)08:00:24
ID:ava9K7ZVE2hi
LocalToGlobal()関数でローカル座標からグローバル座標への変換についてお聞きしたいのですが、
変換元のローカル座標の存在するムービークリップの階層が深いと
処理が重くなるものなんでしょうか?
まだ実際には使用した事がないのですが、今後の使用を検討している為
細かい仕様等も知っておきたいと思い、質問を投稿させて頂きました。
プログラミングに関する知識が浅い為、的外れな疑問を投げかけてしまうかも知れませんが
何卒宜しくお願い致します。
変換元のローカル座標の存在するムービークリップの階層が深いと
処理が重くなるものなんでしょうか?
まだ実際には使用した事がないのですが、今後の使用を検討している為
細かい仕様等も知っておきたいと思い、質問を投稿させて頂きました。
プログラミングに関する知識が浅い為、的外れな疑問を投げかけてしまうかも知れませんが
何卒宜しくお願い致します。
2
日付:2010/11/27(土)21:18:19
ID:8d7uAYrQHgxE
推測なので間違ってたらすみません…。
もし Flash Player 内部で一度計算した行列が、
ムービークリップの姿勢(座標、回転、拡縮、せん断)の変更が無い限り、
更新されない(再利用している)としたら LocalToGlobal() 関数を呼び出すだけなら
重くならずに計算できると思います。
一度計算した行列を再利用していないか、
もしくは、LocalToGlobal() 関数を呼び出す前か後(どちらかわかりませんが…)に、
ローカルからルートまでの階層の1つでも姿勢に変化があった場合、行列の更新(再計算)が必要になります。
その際に行われる演算は1階層につき以下の関数と同等の演算が必要になります。
http://hakuhin.jp/as/matrix_33.html#MATRIX_06
変更した階層からすべての子が更新対象となりますので
ルートに近い階層で変化があるほど演算が増えます。
…という事で、
もし最適化があれば重くならずに計算できる可能性がありますが、
最適化があったとしても姿勢を変化させつつ調べたいのであれば重くなると思います。
もし Flash Player 内部で一度計算した行列が、
ムービークリップの姿勢(座標、回転、拡縮、せん断)の変更が無い限り、
更新されない(再利用している)としたら LocalToGlobal() 関数を呼び出すだけなら
重くならずに計算できると思います。
一度計算した行列を再利用していないか、
もしくは、LocalToGlobal() 関数を呼び出す前か後(どちらかわかりませんが…)に、
ローカルからルートまでの階層の1つでも姿勢に変化があった場合、行列の更新(再計算)が必要になります。
その際に行われる演算は1階層につき以下の関数と同等の演算が必要になります。
http://hakuhin.jp/as/matrix_33.html#MATRIX_06
変更した階層からすべての子が更新対象となりますので
ルートに近い階層で変化があるほど演算が増えます。
…という事で、
もし最適化があれば重くならずに計算できる可能性がありますが、
最適化があったとしても姿勢を変化させつつ調べたいのであれば重くなると思います。
3
名前:ウォーターフリー
日付:2010/11/28(日)18:10:00
ID:ava9K7ZVE2hi
スレ主です、レス有難う御座います。
今想定している使い方だと、変換したい座標値が深い位置にある上に
ルートから一番近いMCの座標値が常に変動するので
相当重くなりそうです… …
分かりました、何か別の方法を考えてみようと思います。
御教授下さり有難う御座いました!
スレッドの状態を"解決"に変更させて頂きます。
今想定している使い方だと、変換したい座標値が深い位置にある上に
ルートから一番近いMCの座標値が常に変動するので
相当重くなりそうです… …
分かりました、何か別の方法を考えてみようと思います。
御教授下さり有難う御座いました!
スレッドの状態を"解決"に変更させて頂きます。
4
名前:状態変更
日付:2010/11/28(日)18:10:14
ID:ava9K7ZVE2hi
この質問の状態を『解決』に変更しました。
このスレッドについて
質問の状態 : | 解決済み |
投稿開始日 : | 2010/11/27(土)08:00:24 |
投稿終了日 : | 2010/11/28(日)18:10:14 |
投稿者 : | ウォーターフリー |
レス総数 : | 4 |
スレッド番号 : | 80 |