このページは、2019年3月に保存されたアーカイブです。最新の内容ではない場合がありますのでご注意ください

  --  3次元CGその2(SketchyPhysics)   注意事項及び連絡先    ホームページ

3次元CGその2(SketchyPhysics)

SketchyPhysicsメモ

movie modeの有効化

movie modeを有効にすると record → Play animation 又は Export animation の時にカメラの位置や視点を動かすことができるようになる。

但しSketchyPhysics3.2では何故か封印されている為、使用する場合はSketchyReplay.rb を下記のように編集する必要がある。(- は削除, + は追加)

582行目あたり

cmd.status_bar_text = "Toggle movie mode" cmd.menu_text = "Toggle movie mode" cmd.menu_text = "Toggle movie mode" - #toolbar.add_item cmd + toolbar.add_item cmd

ついでに下記の変更をしておくと視点を上下にオフセットできるようになるが必須では無い。

353行目あたり

@animationRate=params["animationrate"].to_i else @animationRate=1 end + + if (params["offset"] != nil) + @targetOffset = params["offset"].to_i.m + else + @targetOffset = 0 + end
442行目あたり

end if(@cameraTarget!=nil) target=@cameraTarget - camera.set(camera.eye, @cameraTarget.bounds.center, Geom::Vector3d.new(0, 0, 1)) + camera.set(camera.eye, @cameraTarget.bounds.center + [0, 0, @targetOffset], Geom::Vector3d.new(0, 0, 1)) end end

movie mode の使用方法

カメラの設定はシーンの "説明" に記載する。下記の用な形式で, 項目の区切りは";"を使用する。

target=object1;parent=object2

設定可能な項目は下記の通り。なお、使用するオブジェクト名、シーン名にはスペースを含んではいけない。

target
視点の対象となるオブジェクト名称。名称は "エンティティ情報" の "名前" 欄で設定する。設定していない場合はシーンのカメラ方向がそのまま使われる。

parent
カメラの位置となるオブジェクト名。カメラ位置はparentのオブジェクトが移動した分だけ相対的に移動するため、基本的にはこのオブジェクトとシーンのカメラ位置は同じ位置にしておく。

なお、targetとparentについては要素によっては指定しても無視されることがある。基準はよく分からない。

nextpage
次のシーン名。下記のendframeと組み合わせる。(注)nextpageでparentを指定しており、かつparentが移動している場合はカメラの位置が意図と違うものになってしまう。

endframe
終了フレーム。nextpageが指定されている場合はnextpageで指定されたシーンに移る。

animationrate
省略すると1となる。2以上は設定されたフレーム毎に1フレームだけ描画するようになる。

setframe
スタートするフレーム。

offset
前述のオフセット改造を適用した場合に使用可能。例えば1にすると、視点がtargetに対してz方向に1加算される。

moviemodeの設定例 Scene1を選択してplay animation→Scene2に移動した場合と、始めからScene2を選択してplay animationした場合の動作が異なる。なお、movie modeのカメラ設定はplay animation又はexport animationの時のみ有効で、シミュレーション時は無視される。

Export animation の設定項目

startframe
うまく動作しないので上記のsetframeを使用すること。

endframe
シミュレーション上のframeを指定する。

Export animationで出力した画像の変換

Export animationでは出力画像サイズを指定できないため、任意のサイズで画像を出力した後に 16:9の比率で画像をクリッピング→サイズ変更→動画ファイル出力 という手順が必要。下記はffmpegを用いた例。

条件:

コマンド例:

ffmpeg -r 60 -i bs_%6d.Jpg -r 60 -vf "crop=1428:803, scale=852:480" -qscale 16 scene1a.wmv

その他注意点

rubyスクリプトメモ

ontouch {|t, r, s| logLine(t.name) }
ontick { if frame < 1 @group1 = $sketchyPhysicsToolInstance.FindGroupNamed("グループ名") その他初期化処理... end 1フレーム毎の処理... }

サンプル (バスを動かしてみる)

連節バスをスライダーバーで操作する。rubyをよく知らない頃に作ったもの。

極力クラス変数を使うように変更し、バスを複数配置可能にしたもの。ついでにPI制御を入れて坂道で速度があまり変化しないようにしている。バス毎にオブジェクト名、スクリプト内の"@pfx"を設定し、必要に応じてトレッド・ホイールベースのパラメータを変更した後、オブジェクトに下記要領で名前を設定する。

NXXXYZPP b:任意, XXX:番号(並べ変え用) N: @pfxで指定した文字 XXX: 任意の数字(バスの道順。番号は飛んでいても構わない) Y: ステアリング速度 (1が一番遅い) Z: 車速 (1が一番遅い) PP:停止時間 (大きくなるほど長い) (XXXより後は省略可能。省略あるいは0を指定した場合は前回の値が引き継がれる)

更新履歴

2011-12-13 23:26:40画像→動画変換例、スクリプトメモ追加
2011-12-13 00:54:57説明画像・サンプルファイル・注記追加
2011-12-11 22:40:34新規
ホームページ

このページは、2019年3月に保存されたアーカイブです。最新の内容ではない場合がありますのでご注意ください