かなりふつう

ヾ( ゚д゚)ノ゙

【SlideCameraWork】理論を実装に変える話1

 頭の中では難しいことを考えても、それを実際にモノとして動かすことは大変です。
 今回はほったらかしにしているSlideCameraWorkのフェード動作エンジンリニューアルを、
このままだといつまでもやらないので記事にしてやらざるをえない状況にもっていこう、という
目論見です。

● 1,どんな風に動かしたいのか

 今回改良しようとしているのは、カメラの等速移動ではなく、最初がゆっくりで段々速くなり、
後半もゆっくりと止まる自然な動き、いわゆるフェード移動です。現時点でもそれは実装されて
いますが、実はけっこう無理して作ってありまして、使ってみるとけっこう困った動作をすることが
あります。

 現在は、始点から終点までの総フレーム数をFとすると、0.2Fまでそれなりな加速度で加速し、
0.2<現在フレーム<0.8の時に最高速度となり、0.8以降で同様の減速を行う作りになっていまして、
1フレーム当たりの移動量はFの逆数となっています。総フレーム数が多いほど、1フレーム当たりの
移動量が小さい、つまりゆっくり滑らかに動くということです。

 ですがそれだと、低速の時は移動量は小さくないと「低速」と言えませんよね。実は低速の段階
では、総移動距離の0.2倍を目標値として、そこからFに応じた加速度係数を求め、各フレームの
移動量を割り出しているのです。つまり、Fが大きければ移動量が小さくなるのは変わりませんが、
移動距離に達するまでは現在の速度によって移動量が変わるのです。これを逐次積分して正しく
計算すればよいのですが、処理がメンドイのでしておらず、単純に必要移動距離に達するまで、
つまり最高速度に達するまでの指数計算になっているのです。

 一言で言うと、総フレーム数はFになりません。もっともっと長くなるのです。そのため、
使用者は総フレーム数から計算で総動作時間をリニアに計算することができず、試行錯誤
しながら丁度いい長さと滑らかさになる総フレームを見つけ出さなければならないわけです。
これは総移動距離によっても(計算の丸め等の影響で)変わってくるので、かなり厄介です。

 とまあ、こんないい加減な動かし方をしているせいで、使い勝手はいいとは言えませんし、
何よりも総フレーム数をやたらと多くし、総移動距離を非常に短くとった場合、1フレーム
当たりの移動量があまりにも小さくなり、計算の丸め誤差によってゼロになってしまうことが
あるのです。これはX・Y・Z方向別々に計算されるため、Xだけ移動速度が完全にゼロに
なり、Zだけがそれなりに動くといった結果になったとき、設定した軌道とまったく異なる
方へカメラがゆっくりと動いていき、当然目標座標には辿り着かないので、自分で停止させるまで
動き続ける
というオソマツな挙動を示すことがよくあるのです。

 この理由は色々あるのですが、一番大きいのは、その理想的な曲線を1つのシンプルな式で
表す方法を知らなかったことですね。あるフレーム、もしくは移動距離のとき、速度はいくつ
になる。そんな一意な値を出してくれる関数が分からなかったので、こういう場当たり的な
計算をしてフェード動作をごまかしていたわけです。

 ということで、今回の目標は「現在位置を1つの関数式で一意に求めて設定する」ことです。
これならば、どんなに移動速度が遅くとも、現在フレームに対して座標が決定されるため、
フレームが進まないということが起きない限りカメラの動作が止まることはありません。
要するに、以前は現在地点から速度を割り出していたので速度ゼロになることがあったが、
このやり方はまず位置が決定され、その結果として速度がいくつであるという流れになるため、
コンスタントにカメラが動作するということになります。なぜなら、総フレーム自体は決定
しているのだから、フレームをコンスタントに増やしていけばカメラが止まることはありません。
もちろん、現在速度も気にする必要がありません。非常に信頼性のある動作が作れるのです。

 実際、どんな動きをさせるのかというと、


 こんな感じです。縦軸が現在位置、横軸がフレームです。
 この関数は曲がりくねってますが、フレームが進んでいって右端に到達すれば、必然的に
現在位置は一番上に来ます。しかも、最初はフレームが進んでも現在位置があまり動かない、
つまりゆっくり動き、中盤で速くなり、後半ゆっくりになります。つまり、フェード動作を
してくれます。こういうY=αXみたいな関数式があれば、Xを与えるだけで勝手に理想的な
現在位置を割り出してくれるわけです。現在の動作方法に比べて、いかにシンプルで正確か
お分かりになるでしょうか。

 さらに、このS字のウネウネ感は、ゲイン(係数)を掛けることで調整できます。つまり、
最初がやたらとゆっくり、中盤が一気に動くような曲線を作ったり、最初の加速はそれなりに
スムーズで、中盤もそれほど速くはならないような曲線も作れます。それを使用者が調整
できるようにすれば、フェードの具合も自由自在な、とても便利なカメラワークMODが
作れるわけです。
 ちなみにこの曲線はシグモイド曲線というそうで、関数式も非常にシンプルです。


 ということで、こういう夢のような話をずらずらとしてきましたが、これをプログラムにまで
落とし込んで実際に動くようにしないと何の意味もありません。それをダラダラと作っていこう
と思います。「俺余裕で作れるんだけど・・・」って人がいたら、ソースコード全部あげますので
ぜひお願いします。っていうか自分のMODは全てオープンソースなので、勝手に改良して
公開してください。多くの東方GTA作者の助けとなると思いますので。
 opcodeでプログラム組むのって、コンスタントに作れるんだけどメモリ処理が大変なんです
よね・・・。



 ということで、興味がある人は今後も読んでみてねヾ( ゚д゚)ノ゙


SlideCameraWork Ver.13

 あけましておめでとうございます。
 今年もよろしくお願いします。



 昨年の時点でVerUPしていたんですが、何かとハブアァだったので通達が
遅くなりました。実に1年ぶりの更新となります。その割にはあまり大した
更新ではありません。

■ 更新項目
  ① カメラ位置設定にて、大調整(+Altキー)を追加
  ② 座標表示を改良
  ③ Pauseキーで現在のカメラ位置へCJがワープする機能について、
    ワープ位置がズレていたのを修正し、ワープした時点で
    CJが空中に停滞する(フリーズ状態になる)ように変更

■ 詳細
 ① 今までは通常と微調整の2つだったんですが、非常に遠い場所へカメラを
   移動するとき、やっぱり現状だと効率が悪いので大調整を追加しました。
   これで位置調整において不満はなくなると思います。
   大中小の速度バランスもかなりイイ感じだと思うよヾ( ゚д゚)ノ゙

 ② 見た目のインタフェース改良というのは、正直仕様を理解してしまえばカス
   でもいいわけですよ。だからあんまりやる意味がないのです。それを使い
   にくいとか言ってる人は完全に甘え(真剣 元々はGUIベースで動画撮影を
   してもらうつもりだったので、値がこっそり何倍されているかなどは重要では
   なかったのですが、MotionMacroというものが台頭したことによって正しい
   値を表示しなければならなくなってきて、その仕様がバラバラだと混乱を生む
   のでやむなく修正と相成りました。
    今回の見方でもミヅレェシュウセイシルとか言う人は別なMOD使えばいいんじゃ
   ないですかねwwwww

 ③ これは現在のカメラ
JUST位置にてSmoothCameraWorkを実行させたい場合に、
   これまではうまくいかなかったのでその対策となっています。要するに、
   SlideCameraWorkで動いた先のカメラ位置からSmCWでさらに動かすといった
   手法において、SmCWはCJの位置を基点として開始するため、任意のカメラ位置
   からの開始に難があったのです。とても地味な更新ですが、カユトドな修正だと
   思います。

 最新版はこちらからどうぞ。
 
http://blogs.yahoo.co.jp/usualgamer/22204917.html


 近々、SLCWの大幅な更新を予定しています。
 現在のSLCWの主流はやはりフェードモードだと思うのですが、使いにくいんですよね。
 というより扱いが難しい。なぜなら、フェードの加速・減速が連続的でなく、移動距離の
5%になったら速度をアップとか、20%の時点でMAXスピードになるとか、離散的に
なっているからです。
 これを、最近覚えたEXCELのNormDistを使って正規曲線モデル化し、その式を
かっぱらって直接係数管理します。つまり、式で連続的に管理するので、設定距離が
短い場合にはフェードがまともにシゴトシナイとかいうことがなくなるわけです。必ず設定した
総フレーム数の範囲で動作が完結するようになるはずです。

 ただし、これをやると色んな部分がスリムになるのはなるんですが、現在のエンジンを
オーバーホールしなきゃならないので大仕事なのです。なのですぐにはできませんが、
できたらSLCWはMODとして完成すると思います。ご期待くだし。


ヾ( ゚д゚)ノ゙

CameraSetting Ver.32


 更新しました。

 (個人的に)非常に使用頻度の高いMOVPの調整です。
 これまでもよりのPEDを自動選択していましたが、今回から
 任意に選べるようになりました。これはデカイ。

 また、調整速度等も可変にしました。MOVE時に動くカメラも、いまいち遠すぎて
 部屋の中などだと壁の向こうにいっちゃったりして不便だったんですが調整可能に
 したので使いやすくなると思います。

 それと、MOVPでCtrlを押しながらだとPEDがゆっくり動くんですが、なぜか左右は
 ゆっくりで前後は逆に早くなるという、よくわからないバグがあったので直してあります。
 Ctrlを押しながらだと、設定値(ソースコードで調整可能)の1/3の速度になります。

 ソースコードの編集の仕方がワカラネーって人は、それなりに苦労してからお気軽に
 ご質問ください。


http://blogs.yahoo.co.jp/usualgamer/22378693.html

大井川鐵道SLの旅


 新東名を走りました。何も見えませんが、何もないところです(´・ω・`)





 まずは新金谷駅に到着。
 ガラガラですが、SLが到着する直前は人がいっぱいになります。





 えすえるヾ( ゚д゚)ノ゙
 鉄っちゃんにはたまらない、日本に残る貴重なレトロ要素の1つですよね~。
 「C10 8」と書かれていました。詳しくは知りませんが。




 ターンテーブルにあったのは「C12164」。栃木県の真岡鉄道で
走っているSLと同じ型だと、主催の鉄っちゃんが教えてくれました。
そういわれると、見覚えがある気がする。
 個人的には、ターンテーブルでバイオハザード2を思い出したんですけどね。



 駅の反対側にある「LOCO PLAZA」という、乗車券の販売とカフェと
お土産屋さんが一体になった、広々とした建物です。
 萌えはこんなところにまで浸食してました。また、新金谷駅の方では
鉄道娘「井川ちしろ」のキャラクターも置いてありました。さすがに
興味を示さないように注意を払いましたが。




 ポーっという懐かしい汽笛と一緒に、クソボロイ客車に乗って
出発です。さすがお茶どころ静岡だけあって、そこら中が茶畑だらけでした。
大井川がずーっとそばにいて、景色はなかなかです。




 これは帰りに寄った川根温泉笹間渡の茶畑。
 川根温泉は道の駅にあり、すごくしょっぱいナトリウム系の温泉でした。
 珍しい高温の掛け流しなので、あつ湯のところは43度くらいの、充分な
熱さでした。露天風呂かつ源泉でこれだけ熱いのはなかなか無いので、
非常に満足のいく温泉でしたヾ( ゚д゚)ノ゙ じーさんばっかりだったが




 大井川鐵道の名物駅弁。
 ヤマメの甘露煮が、身がしっかりしてて美味しかったです。
タケノコや里芋、ゴボウなども現地のとれたてなんだなーってよく分かるくらい
美味しかったです。きらびやかではないですが、これはホントにおいしくて
嬉しいです。ゴローちゃんの「こういうのでいいんだよ、こういうので。」って
セリフが思わず出てきそうな、シンプルだけどおいしいお弁当でした。
右下の紅色のは山芋。シャクっとします。
 赤いのは桜エビ。中身からっぽで、エビフライの尻尾を食べてる感じでした。
ただ、味は甘くておいしいので不満はないです。量が多めだったなこれは。








 で、「SL動輪焼き」。要するにどら焼きです。
 あんこは甘さ控えめで食べやすいですが、量がハンパじゃない・・・。
甘い物が好きな人にはいいかも。自分は甘いものは好きだけど沢山
食べられるわけじゃないので、かなり苦労しました(ノД`)
 3つ入り840円。他にSL人形焼きが8個で・・・いくらだったかな。
そっちは今回は食べませんでした。




 終点、千頭駅。
 列車の古めかしさと、駅の新しさが非常にちぐはぐに見えて、
何とも感覚が混乱しました。カレーと立ち食いソバと串焼きを焼く煙と
濃厚なお茶の香りがごちゃまぜになって、駅前は意味不明な香りで
いっぱいです。




 駅の様子A。パノラマ撮影してみたけど、想像以上にいい写真に
なりました。以後パノラマ無双。




 見事な紅葉で、駅前はそれはもう目を奪われるような景色。
 来るなら春か秋です。素晴らしい。




 駅前の公園みたいなところ。
 左の建物は物産店です。広々としててすごく気持ちがいいところでした。
 ここからトロッコ電車にでも乗ろうかという話だったんですが、今日は
真冬並の気温だったため、温泉に変更。正解でした。




 温泉の手前にある。塩郷という駅の近く。日本一長いのかな?
吊り橋があります。生活用の橋だそうですが、夜渡るのは自殺行為ですね。
想像以上に揺れるので、高所が苦手な人には悪夢です。
 走って1往復したんですが、揺れとバランス取りと、単純な距離と、
何よりも上り下りがけっこうあり、かなり足にきました。ガックガクでした(ノД`)
ちなみに全長220mだそうです。




塩郷駅から撮った1枚。実は画面中央付近に電車の電線が2本、
めっちゃ邪魔になって写ってたんですが、気合いで消してみましたよ。




 最後は、清水ICを降りて清水駅に向かい、近くにある魚市場の敷地にある
海鮮料理屋さん「宮本商店」で海鮮丼を食べてきました( ◕ω◕)ウマー
 写真は一番高級な「特上三色丼(\2,000)」。文句なしにおいしかったんですが、
ネタの量に対してご飯が少ない。多分1合もない。これが悔やまれました。
逆に言えば、ネタは見ての通り充分たっぷりでした。個人的には、醤油を
そのままかけるとしょっぱさがバラつくし、わさびも局所的に強くなったりして
食べにくいので、お皿に醤油をたっぷり入れてわさびを溶かし、それを
まんべんなく丼に振りかけて食べるのがオススメです。

 こんなにいっぱいウニ食べたの生まれて初めてだよ(ノД`)
 上物のトロの刺身もこんなにガッツリ食べたの初めて(ノД`)
 ピンク色のはガリです。次は絶対大盛りで食おう。






 以上ヾ( ゚д゚)ノ゙

 大井川鐵道は、さすが主催が去年22回も来たと言うだけあって、
とても素晴らしいところでした。今回は買わなかったんですが、新金谷駅で
売っているお茶ヨウカンが、抹茶がとても濃くて超おすすめって言ってました。
私は焼きネギなめたけとわさびフリカケ買いました(´∀`)

 みんなも一緒に行ってみようよ!



【MOD】 HP Indicator




敵の体力バーを表示します。

http://homepage1.nifty.com/ikkodate/HP%20Indicator.zip

テスト

テスト



カウんター

カウンター

プロフィール

普通のげーまー
ニコニコ動画で「東方姫一華」連載中です

最新コメント

[03/11 Dof]
[03/09 普通のげーまー]
[03/04 Dof]
[03/04 普通のげーまー]
[03/04 普通のげーまー]

ブログ内検索

管理用

TemplateDesign by KARMA7