Emulate3Dで時間の操作
皆さんこんにちは、Emulate3Dの技術担当の飯田です。
今回はEmulate3Dで利用する「時間の操作」についてまとめます。
指定の時間でモデルを停止、時間カウントと秒数カウントの表示切り替え、スクリプトで待機時間の実装を紹介します。
目次
指定の時間でモデルを停止
動画を撮影するときに時間を指定して撮影したいときはありませんか?
(例:最初の60秒間だけ動画を撮影したい。)
この機能を使用すれば再生してから任意の時間でモデルを停止することができます。
手順
Settingsを押下します。
StopAtTimeに止めたい時間を入力します。(画像では60秒で設定)
再生を押下します。
入力した時間に止まります。(画像では60秒で停止)
再生途中から指定の時間でモデルを停止
動画を撮影するときに再生途中から指定の時間数だけ撮影したいときはありませんか?
(例:30秒から10秒間だけ動画を撮影したい。)
この機能を使用すれば再生途中から指定の時間数だけ撮影することができます。
手順
Settingsを押下します。
StopAfterDurationに現在の再生時間から止めたい時間を入力します。(画像では10秒で設定)
再び再生を押下します。
入力した時間で止まります。(画像では30秒の状態から10秒経過した40秒で停止)
時間カウントと秒数カウントの表示切り替え
画面の右下にあるモデルの再生時間を秒数表示でみたいときはありませんか?
この機能を使用すれば時間表示と秒数表示を切り替えることができます。
手順
画面右下の再生時間をクリックすることで時間から秒数表示に切り替わります。
スクリプトで待機時間を入れる
モデルを作成しているときに待機時間がほしいときはありませんか?
この機能を使用すれば待機時間を実装することができます。
手順
スクリプトで待機時間を入れる方法を紹介します。
下記のコードではBoxをMoveTo関数で動かして2秒待機、再度Boxを動かすコードを書いています。
JScriptでは待機するときにWait関数を使用します。
function box-02-green_OnInitialize( sender : Demo3D.Visuals.BoxVisual )
{
//BoxがX1,Y0.5,Z0に移動
sender.MoveTo(new Vector3(1,0.5,0),1,0,0);
//2秒待機
wait(2);
//BoxがX0,Y0.5,Z0に移動
sender.MoveTo(new Vector3(0,0.5,0),1,0,0);
}
C#ではWaitクラスのForSeconds関数を使用します。
イテレータを使用する必要があるのでIEnumerable
とyied return
を使用して実装します。
注意
イテレータを使用しないと待機を無視して次の処理が実行されます。
[Auto]
IEnumerable OnInitialize(Visual sender)
{
//BoxがX1,Y0.5,Z0に移動
sender.MoveTo(new Vector3(1, 0.5, 0), 1, 0, 0);
//2秒待機
yield return Wait.ForSeconds(2);
//BoxがX0,Y0.5,Z0に移動
sender.MoveTo(new Vector3(0, 0.5, 0), 1, 0, 0);
}
待機時間を実装した動画です。
終わりに
いかがでしたでしょうか。
待機時間を使用する場合はJScriptとC#で書き方が変わるのは難しいですね。
今後もブログを書いていくのでご活用ください。