ときどき刊 かもめ通信

アクセスカウンタ

zoom RSS キーを押してカメラを起動するスクリプトに挑戦

<<   作成日時 : 2013/12/08 01:19   >>

ブログ気持玉 0 / トラックバック 0 / コメント 6

レイアウトを作って確認するときに、とりあえず近いところにカメラを置いて確認するという方法をとっているのですが、これが非常にめんどくさいのです。

[C]というところをクリックするとそのカメラに移動します。このくらい離れていたらまあそれなりに大丈夫なのですが。


これくらい密集しているとなかなかうまく押せません。



そこで、キーボードの「A」というキーを押すとそのカメラに移動するスクリプトを作ってみようと思います。

とりあえず、マニュアルのそれっぽいところ見てみます。


なんだかよく分かりませんけど、どこからか昔拾ってきた『xというキーを押すとポイントが変わる』というスクリプトを元にして、なんとなくこれを頼りにスクリプトを書いてみます。(今回対象にしたいカメラの名称は「CAMERA2213」です)


まー予想通りというか。動きません(笑



エラーメッセージによると、どうやらCAMERA変数というのをちゃんと定義しないといけないみたいです。ダブルクォーテーションで囲っておけば大丈夫かと思いましたがどうやら違うようです。

そこで、さらにマニュアルを調べてみます。



どうやらこれを使えばオブジェクト変数(CAMERA変数 など)にカメラ名称(CAMERA2213 など)を定義できるみたいです。


オブジェクト変数を「カメラA」、参照をレイアウト内のカメラ名「CAMERA2213」としてやってみます。



コンパイルエラーもなく、レイアウターが起動。試しにキーボードの「A」を押すと...

CAMERA2213に移動しました!これで少しは捗りそうです。

画像


コピー&ペーストできるようにテキストにしておきましたので、なんとなく気に入ったらお使いくださいませね。(2行目のダブルクォーテーション内はカメラ名です。このスクリプトは「カメラ」のスクリプトエディタではなく、「レイアウト」のスクリプトエディタ(メニュー→レイアウト→スクリプト編集...)に記述してください)


--------------------------------------ここから

VarCamera カメラA
get カメラA "CAMERA2213"
Var evid
SetEventKey this, keyev, evid, a
BeginFunc keyev
SetActiveCamera カメラA
EndFunc

--------------------------------------ここまで


†2013年12月8日10時20分追記

コメントにてRYOMAさんより、カメラの方のスクリプトに記述する方法を教えていただきました。
個々のカメラ内に記述するため、レイアウトのスクリプトが冗長にならず、非常にスマートな方法だと思います。

こちらのほうがおすすめです

--------------------------------------ここから

Var ACTIVE-KEY
SetEventKey this ACTIVE ACTIVE-KEY a

BeginFunc ACTIVE
VarCamera CAMS
get CAMS this
SetActiveCamera CAMS
EndFunc

--------------------------------------ここまで



11+号、ドクターイエローと700系も追加ですね!

画像

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(6件)

内 容 ニックネーム/日時
お!
スクリプトに挑戦っすか!
スクリプトもレイアウト作りと似通ってる部分があって、
矢張り慣れて来るとVRMの楽しみが増えます。

ちょっと自分がいつもやってる方法を紹介しようと思うたんですが、
文字数オーバーを食らったんで分割します(^^;

こんばんわー。

スクリプトに挑戦っすか!
スクリプトもレイアウト作りと似通ってる部分があって、
矢張り慣れて来るとVRMの楽しみが増えます。

今回の方法でしたらキーを押したら画面が地上カメラに
移動する(SetEventKey this, keyev, evid, a)をレイアウトに
記述する形となっているのですが、この方法でも全然問題は
ないですし、同じ要領でキーを押したら画面が別の編成に
移動させる事も出来ます。
例えばビュワーをスタート時には885系を運転している状態で
「1」を押したら787系に変わるみたいな感じでしょうか。
ただ、この方法ですと地上カメラとか編成をアクティブにさせる
命令を増やして行く度に名称とか編成名をスクリプトに書かねば
ならなくなります。

そこで我流となりますが、レイアウトに記述せずにカメラや
編成に記述してやろうと言う訳で自分がいつもやってる
書き方を紹介したいと思います。

地上カメラを右クリックし、カメラ設定を選択したら
カメラの設定ウィンドウが出ますので、一番上の
「スクリプトエディター」のボタンを押してやると、
地上カメラにスクリプトを記述出来るようになります。
RYOMA
2013/12/08 03:19
そしたら以下の様に記述してやります。

--------------------------------------ここから

Var ACTIVE-KEY
SetEventKey this ACTIVE ACTIVE-KEY a


BeginFunc ACTIVE
VarCamera CAMS
get CAMS this
SetActiveCamera CAMS
EndFunc

--------------------------------------ここまで

VarCameraの行と、getの行がACTIVEと言うメソッド
(BeginFunc ACTIVE 〜 EndFunc)に移動していますが、
これは、一番上に書いても問題ありません。
ただ単に好みですww

大きな違いは、getの行の右端に 地上カメラの名称を入れなくて
良く、この部分が「 this 」で済むと言うところです。
これは、SetEventKeyで設定したキーを押したら呼ばれる
メソッドがカメラ自身にある事で「this」が自分自身の
オブジェクトを指す事により名称を入れずに済む訳です。

早い話、例えば同じようにキーを押したら画面を切り替える
カメラを幾つも設置した場合、上記の構文をそのままコピーし、
別の設定しようとするカメラのスクリプトでペーストして、
設定キーの部分だけを変えてやれば簡単に済みます。
RYOMA
2013/12/08 03:20
全く同じ要領で編成エディタを開き、「編成加速性能」の右側の
スクリプトエディターのボタンを押してやれば、
編成のスクリプトが書けるようになりますので、

--------------------------------------ここから

Var ACTIVE-KEY
SetEventKey this ACTIVE ACTIVE-KEY a


BeginFunc ACTIVE
VarTrain TRAINS
get TRAINS this
SetActiveTrain TRAINS
EndFunc

--------------------------------------ここまで

この様に書いてやるとキーを押したら編成に切り換わる様になり、
例えば、上記の SetEventKey の行の右端の a の部分を 1 に
したものを787系に書いて、同じく右端の a の部分を 2 に
書いたものを885系に入れてやると運転する列車を好きな様に
選択出来る様になります。
地上カメラとの違いは、VarCamera が VarTrain 、
SetActiveCamera が SetActiveTrain と言うところです。


カメラ系は結構面白いので、慣れると結構ハマりますよw

PS:かなりの長文ですみません;;
RYOMA
2013/12/08 03:21
RYOMAさんおはようございます(^_^)
今回も早速のアドバイスありがとうございます!

---例えばビュワーをスタート時には885系を運転している状態で「1」を押したら787系に変わるみたいな感じでしょうか。

そうです。そんなイメージです。ただ、編成の場合はF6を押していくことによって変更できるので、これと同じことがカメラでもできたらいいな、というのがきっかけでした。

---ただ、この方法ですと地上カメラとか編成をアクティブにさせる命令を増やして行く度に名称とか編成名をスクリプトに書かねばならなくなります。

そうなんですよね。今はいいけれど、これだとだんだんレイアウトのスクリプトページが冗長になっていってしまうなぁというのは懸念の一つでした。

---そしたら以下の様に記述してやります。

これはまさに渡りに船!そうそう!最初はこんなイメージでできたらいいなって考えていたんですよ。わざわざ「このスクリプトは「カメラ」のスクリプトエディタではなく...」がその名残(笑

自動センサーのおかげで、信号とか踏切とか対向列車が到着したら出発、みたいなことは容易にできるようになったみたいですが、それでもスクリプトは知っておいて損はない機能だと思い、始めてみました。
もともとパズル的なものが好きだったり(A列車で行こうは初代から好き)、日曜プログラム的なものも下手の横好きでしたので、大昔Perlの参考書片手にCGIをぽちぽち書いていたのを思い出します(笑

今後も試行錯誤を日記に書いていくと思いますので、ぜひまたご教授ください(^_^)
コメントの文字数制限は自分もはじめて知りました(笑
長崎かもめ(管理人)
2013/12/08 10:18
自動センサーが出てからはスクリプトを組まなくても色んな
アクションが出来るようになりましたね。
でも、スクリプトが使える様になると列車や信号機、踏切などと言った
動いたり色が変わったりする部品に起こさせるアクションの
細かい部分においてセッティングしやすくなり、更に慣れて来ると
どっぷりハマりますww

Perlをかじってたら飲み込みも速いかも知れませんね。
自分もVRMでスクリプトを触り出すまでは、これと言った
プログラミングの経験が全然なく、以前にWEBを公開してた時に
JAVAを使って画像を表示させたり、勾配度とかの計算をさせる様な
ものを少し作った程度です。
VRMのスクリプトを触りだした時に、書き方とかが何となくJAVAとか
Perlに共通する部分があるように感じました。
RYOMA
2013/12/08 12:11
言語は何にしろプログラムの経験があると、あのはじめて見た時に感じる恐怖症みたいなものがないから、というのもあるかもしれませんね(^^;

そして覚えるきっかけが、「自分で必要として」という動機だとまた覚えるのが早いと思います。
「なんかわからないけど流行ってるからパソコン買った」人と、「目的がはっきりとしてパソコン買った」人とでは覚えるスピードが違うのと同じような感じで(笑

---細かい部分においてセッティングしやすくなり

そういうところはやはり実例を見るのが一番なんですよね。
スクリプトを用いるとこんなことができますよ!って。
今の、ほぼ全パーツ持ってないと他人のレイアウトはほとんど開けない現状では上手く技術も伝わらない気がします。
そういう点ではクラウドには期待ですね(^_^)
長崎かもめ(管理人)
2013/12/08 18:06

コメントする help

ニックネーム
URL(任意)
本 文
カウントダウンメーカー
キーを押してカメラを起動するスクリプトに挑戦 ときどき刊 かもめ通信/BIGLOBEウェブリブログ
文字サイズ:       閉じる