トップページ > 過去ログ > 記事閲覧
弾の軌跡はどうやって描けばいい?
名前:Dixq 日時: 2009/02/17 23:51

今、ロックオンしてそちらに弾を発射するシーンを考えており、現在このように実装しました。 h ttp://dixq.net/movie/homing.wmv 弾の軌跡をキレイに描きたいのですが、弾が通った位置を覚えて動画のように描画すると、 キレイな軌跡にならず、弾が一つ一つ見えてしまいます。 どうしたらキレイに軌跡が描けるでしょうか?

Page: 1 |

Re: 弾の軌跡はどうやって描けばいい? ( No.1 )
名前:Dixq 日時:2009/02/18 05:11

ちょっと説明が足らなかったかもしれませんので補足です。 「火の玉」みたいに、こう本体の後ろに靡く軌跡が描きたいのです。 弾をながぼそくすることで、目立たないようにしてみました。 h ttp://dixq.net/movie/homing5.wmv このように加算でつなげるのが一般的なんでしょうか?
Re: 弾の軌跡はどうやって描けばいい? ( No.2 )
名前:管理人 日時:2009/02/18 12:36

お手軽な方法としては保存しておいた座標だけに描画するのではなく、 保存しておいた座標どうしを線形補間やスプライン補間して、 中間の座標にも弾画像を描画するというのがあります 線形補間の場合、二つの頂点のちょうど中間の座標をとりたい場合は 中間のX座標 = x1 * 0.5f + x2 * 0.5f ; 中間のY座標 = y1 * 0.5f + y2 * 0.5f ; 二つの頂点の間を三分割する二つの頂点の座標をとりたい場合は 三分割する一つ目の頂点のX座標 = x1 * 1.0f / 3.0f + x2 * 2.0f / 3.0f ; 三分割する一つ目の頂点のY座標 = y1 * 1.0f / 3.0f + y2 * 2.0f / 3.0f ; 三分割する二つ目の頂点のX座標 = x1 * 2.0f / 3.0f + x2 * 1.0f / 3.0f ; 三分割する二つ目の頂点のY座標 = y1 * 2.0f / 3.0f + y2 * 1.0f / 3.0f ; と、まあn分割したときの各分割座標を取るようなものを関数化できてしまったりするのですが、 とりあえずこのような計算で取得した座標にも軌跡用の画像を描画することで、高速に移動した 場合も途切れ途切れにならないようにすることができます スプライン補間は3個以上の頂点同士を滑らかな曲線で繋げるような補間座標が欲しいときに使用する公式で、 ゲームではホーミングレーザーや3Dゲームの剣を振ったときの軌跡の描画に使用されたりします 動画を拝見する限りでは今回の例では線形補間で問題なさそうですが、もし興味がありましたら 調べてみてください( Catmull-Romスプラインという公式が使い勝手が良いです )
Re: 弾の軌跡はどうやって描けばいい? ( No.3 )
名前:Dixq 日時:2009/02/18 14:37

ご回答ありがとうございます。 スプライン関数は以前こちらのHPで紹介されているベジェ曲線から勉強させていただき、 弾幕の軌道計算などに活用させていただきました。ありがとうございます。 また、言葉が足らなかったようで申し訳ないです‥; あの処理は既に線形補間処理でして、実際に通った座標の間にも描画しています。 線形補間で単純に軌跡を加算ブレンドの上書きで描画していくと、キレイに描くには単純に数を増やす他無く、 現在既に一つのミサイルに対して200個もの加算ブレンドを用いており、 このままだと処理が重くなってしまう可能性が考えられました。 ですので、DrawModiGraphとかで軌跡の各ポイントを中心に決定した画像を描画すべき座標4点同士、隙間無くピッタリになるように計算してくっつけていく処理などがいいのかな・・などと考えていました。 やはり一般的に行われている方法は加算ブレンドでただ上書きするという方法なんでしょうか? つまり、火の玉のような演出をするときは、前の座標、その前の座標・・などの場所で何度も加算ブレンドする手法が一般的なのでしょうか?
Re: 弾の軌跡はどうやって描けばいい? ( No.4 )
名前:管理人 日時:2009/02/19 12:43

すいません、ご存知でしたか 「火の玉が飛んだときの軌跡」という表現はSTGに限定するとそう頻繁に登場するものではないので、 恐らく「一般的な方法」というのは無いと思います、各ソフトでそのときの環境や表現したいものに 合わせて色々工夫しているのではないかと・・・ レーザーのような表現になってしまって構わないのでしたら処理負荷の面から考えてDixqさんも仰られている 「DrawModiGraphとかで軌跡の各ポイントを中心に決定した画像を描画すべき座標4点同士、隙間無くピッタリになるように計算してくっつけていく処理」 で良いと思いますし、直線的に鳴ってしまうのが嫌、という場合は尾の長さは妥協して動画で拝見したような 加算で画像を何度も描く方法で良いと思います とりあえず「どんな火の玉にしたいのか」によって処理も変わってきますので、 「火の玉はこう描画すればOK」というような回答はできません
Re: 弾の軌跡はどうやって描けばいい? ( No.5 )
名前:Dixq 日時:2009/02/20 18:46

いえいえ、学習できたのはここのサンプルを拝見させていただけたからこそです。いつもお世話になっています。 ご回答ありがとうございます。 そうですか、やはりある程度マニアックなことをしようとすると皆試行錯誤でやっているんですね。 何か「これだ」という主流な方法があるなら勉強してみたいなと思ったのですが、それならまた試行錯誤で良い方法を探してみようと思います。 ありがとうございました。

Page: 1 |