Pc-Trace

<< 2025年11月 >>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30






Pc-Trace
PC-Trace

< next 最新の記事 prev >

「ホイール」と「リフト」

YouTubeなどで紹介されている、「SketchyPhysic」を使った、「ホイール」と「リフト」に関する ”動き” を再現してみた。

”ツール”そのものは動画の通り、「フロアー」を配置しないとジョイントが付いてこないが、フロアーを配置しなくてもオブジェクトを留める方法はあるので、次回紹介する事にする。


添付ファイル 添付ファイル


「Piston」 後書き

「frame」の記事で、「Piston」で扉を開閉する”Controller”値に、以下の式を取り上げたが、”開”と”閉”の2動作だけなら短くまとめる事もでき、後書き追加。

開閉のみの2動作なら以下の式でも同じ。

if((frame%900)>450and(frame%900)>0);0.0;else;1.0;en
(フレーム0以上450未満の条件)
 ↓ 以下でも同じ
if((frame%900)>450);0.0;else;1.0;end
(450未満だけの条件として、省略した式)

※式は、”and”の代わりに ”&&”を使っても同じ。




「Servo」と「Piston」を使って「frame」の設定をしてみた。 

前の続きで、今度は「Servo」と「Piston」に、”frame”を使った制御を実行してみた。

自動で動かしたり、時間で制御したい時、またはデモの時などに役に立ちそうである。

下の動画は、”回転・ドア”と”スライド・ドア”に見たてたボックスに、「Servo」と「Piston」を設定し、非同期で動かしてみたもの。


設定方法は前回とまったく同じなので、今回の説明は省略。
動きに対しては、900のフレームに対して、450(半分)毎に動くよう設定
if((frame%900)>450and(frame%900)>0);0.0;else;1.0;end
ドアに設定した「Piston」の”Controller”値に、上の一行を書き込むか、コピーペーストするだけ



同じく、120度 開閉する扉を1/3づつ開いていくデモ。
式は見ての通り、900 のフレームに対して 300フレーム毎に区切って動きを設定してあるだけ。

if((frame%900)<300and(frame%900)>0);0.5;elsif((frame%900)>300and
(frame%900)<600);1.0;else;0;end


添付ファイル 添付ファイル


キーボードで正転と逆転をやってみた。

前回、「Controller」にキーワードを設定し、キーボードから動作できるように試してみたが、今回は少し拡張して、ジョイント「Motor」の正転と逆転が出来るように設定してみた。

式は下の一行のみ。

(key("left")*-1)+(key("right")*1)

デモなので、回転を十分落とすため”damp”の値を3に設定。

式は説明の必要がないくらい簡単なものだが、念のため説明してみる。

使うキーは、左矢印キーと、右矢印キーの二つ。

キーは、左右のどちらが押されても戻り値が ”真(1)”として考え、

左側が押された場合、−1を掛けて

1×−1=−1

右が押された場合、+1を掛けて

1×1=1

これを1つの式にまとめると、

左が押された場合、

−1+0=−1 となり、モーターは逆転。

右が押された場合、

0+1=1 となり、モーターは正転

キーが何も押されていない状態では、”0”のままなので、動きなし。

こんな感じである。

下が実際に動作を確認してみた動画

添付ファイル 添付ファイル


ジョイントツールの”Controller”に「キーコード」を設定

「SketchyPhysics」の ”Controller” の設定ができるようになったところで、今度は直接キーボードの ”キー” から動かす場合をやってみた。

使える”キーコード”の範囲は、キーボード全体が対象と見られるが、これは単なる推測に過ぎず、検証する必要が有る。

個人的に良く利用するキーとして

key("up")*1
key("down")*1
key("right")*1
key("left")*1
key("space")*1

などが対象になるが、今回はオブジェクトをバット代わりに使いたいので、”key("up")*1”(上向きの↑)を使ってみた。

key("???") の書式は既定で、?の部分はSketchyPhysicsが指定する「キーコード(ワード)」を入れる。

「Servo」ジョイントを使って設定するとたったこれだけで済んでしまう。
上向き”↑”キーの嫌いな方は、色々なコードに変更して試してほしい。



実際の動作例(現段階で使い道を検討中。)


※しかし・・・いつまでも簡単な事ばかりしてて良いものか?
添付ファイル 添付ファイル


少し踏み込んで、 Wikia を覗いてみた

複雑な動作を要しない限り、SketchyPhysicsのツールバーに表示されている機能だけで殆ど事足りてしまうが、少し踏み込んで「SketchyPhysicsWiki」の中を除くと、更に便利な使い方が紹介されている。

僅か、10行にも満たないスクリプトを記述するだけで、”更に便利”な使い方ができるなら使わない手は無い。

今回は、最も身近と感じられる
「getVar」と、「setVar」の二つのスクリプトを用い、手抜きの代名詞となった、「観音扉」で試してみた。

設定は、以下の通り

扉の軸としてセットする「Servo」の「Controller」に、値を取得するため、

getVar("tobira01")

と記述する。



※通常は、軸を設定した段階で”slider('servo???')”が既定値としてセットされてくるので、これを上記に書き換える。

カッコ内の "tobira01" は、自分が識別し易い任意の名前を付けられるが、「getVar」は、「Servo」などのジョイントツールから値を取得するための決まりのスクリプト。(決まりなので、考える必要はなくただ記述するのみ。)

他の設定で、
「accel」と、「damp」の設定は割と重要で、
オブジェクトを動かす力や早さは「accel」で設定し、それに抵抗を加えるのが「damp」の役割と言ったところ。
「damp」の設定値を高くすると、扉の開閉をゆっくりと動かす事ができる。

後は、動かされる方のオブジェクトに、アクションに応じた数行のスクリプトを記述するだけ。

下は、マウスのクリックイベントを用いた一般的な記述。
(観音扉の場合、対称に動く2つの扉にどちらも同じスクリプトを記述する)

onclick{
if getVar("tobira01")==0.0
setVar("tobira01",1.0)
else
setVar("tobira01",0.0)
end
}

「Inspector」のダイアログ 最下部に表示されているスクリプトのチェックボックスにチェックを入れると、テキストボックスが現れるので、上のスクリプトをコピペして貼り付けるだけで良い。

たったこれだけで動作する。



※ヘルプや参考が必要無い場合、「SP Wiki」をクリックしなくても他の空白をクリックしてもテキストボックスは表示される

「Servo」のジョイントが邪魔な時は、レイヤの「SketchyPhysics」のチェックを外すと非表示にできる。


添付ファイル 添付ファイル


caterpillar 作ってみた Ver2

前回のキャタピラの作り込みと動作があまりにもヒドイので、Ver2を作ってみた。(ボックス形状の動作については”Cylinder”属性を持たす事で、解決済みである。)

「Motor」ジョイントのコントロール・スライダーを下記のように動作するよう、設定

中心=停止
左=逆転
右=正転

(※ Inspectorの「Controller」設定値に-0.5を加えるだけ・・・つまり、スライダーの中心が”0”になると言うこと)



添付ファイルは今回のモデルデータ
添付ファイル 添付ファイル


caterpillar 作ってみた

「SketchyPhysic」をやり始めた初心者にとって、他の人の作品は刺激の宝庫である。

と、言う訳で、鉄板が鎖のように繋がった刺激のある「caterpillar」を作り、一つ一つの繋ぎ目に「Hinge」ジョイントをセットして動かしてみた。

キャタピラが、円盤の中心にセットされていないため、少しづつ”ズレ”が生じ、やがて奈落の底へ落ちていく。



円盤をグループ化するとボックス形状で運動するため、綺麗な円運動を再現できていないが、まだ、チンプンカンプンなので、後日詰めて解決したい。
添付ファイル 添付ファイル


沖縄(部分2)・10m等高線と標高データ

国土地理院・基盤地図情報から、「沖縄の南端一部」の等高線と標高の”kmz”データ

ブルーのブロック領域


範囲が広いため、処理可能なブロックに分けて掲載

GoogleEarth用 等高線と標高データ
添付ファイル 添付ファイル


写真に浮かべてみた

進歩のない”浮かべてみた”の続き。

浮力設定時に表示される水面の下に、写真を敷いてボートを浮かべてみた。(写真なので、当然波はたたない。)

途中、コンテキストから指定しているのは、カメラフォローの指定。
本格的な作り込みをしたとき威力を発揮しそうである。




浮かべてみた

ボートを作ると、自ずと浮かべたくなる。
ただそれだけでやると、結果もそれだけであった。


先日作った船が「浮力の設定」を呼び出すだけで浮かぶのか、試してみたくなったのでやってみた。


浮力の設定(斜め45度に流れるよう、XとYの値を設定しただけ)


何も解らず手を出すと”こうなる!”の典型的な動画


当分後回しになりそうである。


コントローラの共有2 ボート

「Servo」ジョイントを利用して、先日の復習。

5分程度で作成した簡単なボートを利用し、ハンドルと方向舵を1つのコントローラで動かして見たもの。

前回と同じ手法を使った。



※添付ファイルはSUデータと大きいサイズのmp4動画
添付ファイル 添付ファイル


コントローラの共有・ 観音扉の作成

前回の記事に、
ジョイント「Servo」は”もれなく”スライダーのコントローラが付いてくる。
と書いたが、複数のジョイントを1つのコントローラで共有する事ができる。

実際に、振る舞いが対称になるような観音扉でも可能なのか試してみた。



※下は実際のデータと、大きいサイズのmp4動画
添付ファイル 添付ファイル


沖縄(部分)・10m等高線と標高データ

国土地理院・基盤地図情報から、「沖縄の南端一部」の等高線と標高の”kmz”データ


範囲が広いため、処理可能なブロックに分けて掲載予定


GoogleEarth用 等高線と標高データ
添付ファイル 添付ファイル


自動走行するおもちゃの制作

「Hinge」と「Motor」、「Servo」の練習が一通り済んだところで、自動走行する”おもちゃのワゴン”を制作してみた。

これもよく目にする単純なモデルだが、つい、数日前までは、とても難しく思えていた。



基本的にはこれまでの復習であるが、今回はグランドを配置し、走行用のベースが加わったくらい。

※下の添付ファイルは、mp4の大きいサイズの動画
添付ファイル 添付ファイル


< next prev >