Second Lifeで気に入ったアイテムの記録です あ、ウソです。スクリプトとか他のことも書いてます

2008/07/12

animation HUDを作る経緯

こういうblogをしていると、撮影に関するツールは
ちょいちょい気になるもので。
今回は、久しぶりにリリースしたアイテムを作った経緯を。
ものすごく長いです。


普通に使うポーズスタンドだと、ポーズが増えてくると
もう左右の矢印だけでは、ムリになってきます。
※1ポーズずつの操作だと
 100を超えたあたりからいらっとします。

最初の発想としては
「お気に入り」機能の追加です。
そういうタイプのHUDを作って半年くらいは
喜んで使ってましたが
やっぱり基本の動作に不満があるとストレスがたまります。

で、その後、どうするかなぁと思いつつ過ごしてましたが
ゴリゴリのminaさんところに行っていたときに
ダイアログタイプのポーズスタンドを見ました。
この発想だと、ページの考え方でポーズにアクセスできます。
ああ、これだと使っていたHUDに反映させれば
ページ送りみたいな感じにできるなぁと。
※ダイアログに使える文字数と
 ボタンの数の制限がネックです。
 でも、ページの発想は素晴らしい。

で、まあ、そんなことを考えていたところに
manmothさんと、それっぽい話をしてました。
ああ、やっぱりポーズスタンドに不満のある人は多いんだなぁと。
じゃ、リリースできるようにちゃんと作ってみようかなと。
(manmothさんには、リリース時にデフォルトで入っているポーズも
 提供していただきました。多謝です。)


で、今回のHUDですが、一応、
Rhizomeの店と、Airship Caravanのモールに置いてます。
高いので撮影とかしまくる人向けです。

さて、デザインについては
相変わらず地獄デザインです。
(こないだまで、Excelでボタン作ってましたから)

結局、こんなふうにたくさんのボタンを用意して
ポーズを選ぶようにしました。
ボタンが表示されるのが一瞬とは言えないのが不満です。


これはボタンが22個(半端だ...)ありますんで
200個のポーズが入っていても10回前後のページ送り作業で
ポーズにアクセスできます。

10回...めんどくさいな...
私の場合は、「○○系のポーズなら、あの人のポーズがいいなぁ」みたいな
使い方をします。
ってことで、「ブランドでポーズを絞れればいいんじゃないの?」となりました。
と言っても、HUDがブランド認識しているわけではなく
ポーズの先頭n文字でポーズのまとめて認識しているだけです。
(※この文字数は、HUDのDescriptionで2~12文字の範囲で設定できます
 設定後は、リセットが必要です)

パネルのボタンに表示するときに文字チェックなんかしていると
日が暮れるので、初期化時に、インデックスを作っておくことにしました。
これが個人的には、一番楽できるポイントになりました。

撮影ものなので、ポーズさえ選べればあとは
たたんでおけるようにする機能はつけました。
これはHUDそのものを回転させればいいので
楽な実装です。
パーツを個別に動かすと、見せ方としてはかっこいいのですが
たまにちゃんと動かなかったり
その動く動作そのものが結構遅いので
いらいらしたくないので、やめました。

さて、ここまでくると、もうちょっと機能がほしくなります。
個人的に、カメラの王と認識しているMash Kuhnさんという人がいます。
「カメラってこんなこともできるの!?」というショーゲキを与えてくれる人です。
私も、今回珍しくカメラまわりの機能をつけてみました。
単純にカメラ位置を記録/再生するだけです。
(※パネル右下の○ボタンを長く押すと記録
  普通にタッチすると再生です。解除でロック解除です。)

これ、少し前に挑戦して挫折してるんです。
というのは、カメラの位置を取得するのは、グローバル座標で
カメラの位置と、角度になります。
で、設定は、カメラの位置とフォーカスの位置
しかも、撮影場所はころころ変わるので、
グローバルで記録してもしょうがないのですよ。
これを自分に対する相対位置/相対角度に変えるのが...
ここではまってましたが、今回は知恵がついてたので
クリアできました。

ここで、リリースしました。

ここからは、その後の機能追加です。

この前後でacoさんにもアドバイスもらうようになりました。
で、でてきたのが透明化です。
私はHUDは写らない設定で撮影するので
まったく気がつかなかったのですが
フィルターとかを使う人は、HUDを写すんですね。
これは全くなかった発想です。

そこで透明化機能を実装しました。
透明化するときは、透明化ボタンでいいんですが
元に戻すときは、HUDそのものを勘でタッチします。
なので、ボタンをピンポイントでタッチするのは難しく
アバウトなタッチでいいようにしました。

これで基本機能とおまけのカメラ機能までできました。
HUDをたたんだ時に見える部分が
妙にスカスカします。
元の表示に戻すボタンと
透明化ボタンしかないですので。
そこで、クイックボタンというか
お気に入りみたいなボタンをつけることにしました。
たたんだ状態で、ポーズの再生をしたい場合に使います。
(スキップアニメーションとか)
(これは、通常の再生ボタンを長押しするとクイックボタンに登録です
 クイックボタンを長押しすると、そのボタンの設定が解除されます)


少し前から気になってたのがprim数です。
HUDなのでいくつでもいいんですが
ポーズを仕込むときに、Rezしないといけません。
そこで、primに入ったポーズを転送する仕組を実装することにしました。
これは、旧版から移行にも使えます。
手順は以下の通り
 1)転送用スクリプトをとる
  ?ボタン→Contentsボタン→GetScript
 2)poseの入ったprimにスクリプトをいれる
  ※旧版のHUDでもOK
 3)転送開始
  ?ボタン→Contentsボタン→receive
 4)終了まで待つ

これはようするに、llGiveInventoryですね。
ただし、同じポーズがすでにContentsにある場合に
うっとおしいので、間に中継する処理をいれて
重複チェックしています。
重複したものは、オーナーに返しています。

今回、「なんてタイムリーなの!?」ってのが
教えてセカンドライフ」です。
この投稿で千尋さんが書いてらっしゃる
「長押しと普通のタッチの使い分け」は、まず、発想がなかったです。
いい時期にこれを見たので、使いまくってます。
役にたつなぁ「教えてセカンドライフ

さて、あとはデザインなどです。

今回、主に使ったフォントはしねきゃぷしょんです。
映画字幕風の読みやすいフォントです。
readmeも読んだのですが、念のために商用利用の確認を
製作された方にしました。
こういうメールを出すのも、初めてでかなりとまどいました。

ボタン類を押すと、ぴーひゃら音がなってます。
押すたびにいろいろやってますので
「押せたよ」ってことを示すので鳴らしてます。
この音は全てザ・マッチメイカァズのものです。

in worldで使おうと思うと商用利用できるものになるので
その中で、こんなに使いやすいものを公開してもらっていることに感謝です。

あとは、パネルのボタンの並びを
一列にしなかったのは、単純にマウスの移動量だけの問題です。

もう、根本的にデザインの可能性すらも見出せない私ですので
ボタン類は区別がつけばいいやーとなってしまっています。
prim側は、mod OKになっているはずですので
rezしてボタン達にお好みのテクスを貼っちゃって下さい。
このHUDでは、起動中のテクスの切り替えや
オフセットなどの処理は一切していませんので。

使ってくださっている方は
御意見/御感想/文句などがあれば
この投稿にコメントしていただくか
noteにでも書いて送りつけてください。
励みになりますので。

2 コメント:

mina さんのコメント...

長文おつw
てか、ゴリゴリっとしてないからね?

you Xiao さんのコメント...

ヌルヌルでしたか...