タイトル画像

鋼体シミュレーション(Rigid Body)

2015.02.20(22:12) 31

Happy Valentine2.png
 突然ですがバレンタインのチョコレートを皆様にプレゼントします!
(時期が過ぎているから突然なんですよ)
プレゼントといってもCG画像でとても食べられるものではないんですけどね←

 実はこれは一つ一つのオブジェクトを物理演算を使って配置しています。
鋼体シミュレーションは前に使っていたバージョン 2.65a ではゲームエンジンでしか使えなかったのですが、今使っている 2.73a なら、普通のレンダーモードでも使えるので活用してみました。

【やり方】
 とりあえず Cube を一つ床に落としてみます。

1.重力に従うオブジェクト
 起動時に置いてある Cube を鋼体の設定にしてみましょう。

 1-1.Cube を鋼体に設定する。
  Cube を選択して、プロパティズウィンドウの Physics タブを開きます。

  すると Enable physics for: という項目が出てくるので、そこから[ Rigid Body ]を選択します。
Rigid Body を選択すると、オブジェクトの輪郭の色が緑色になるので(UI のデフォルトの色設定では)確認してください。

 1-2.衝突判定の設定をする。
  ▼Rigid Body パネルで、Type: を Active に指定し、Dynamic のチェックボックスにチェックを入れます。

  下の ▼Rigid Body Colisions パネルで衝突判定についての細かな設定が出来ますが、Cube の場合デフォルトの設定で問題ないので、今回はそのままにしておきます。

2.衝突判定だけするオブジェクト
 これは床の設定です。床自身が奈落に落ちてしまうと困るので、衝突判定だけを持たせます。

 2-1.床を用意します。
  オブジェクトモードで新規に Plane を追加し、5倍くらいに拡大します。

 2-2.床を鋼体の設定にします。
  Cube と同様に、Physics タブで Rigid Body を選択し、今度は Type: を Passive に設定します。
  これで床は Cube を受け止めますが、自身は不動を貫きます。

3.演算する。
 タイムラインウィンドウのアニメーション再生ボタンを押すと、シミュレーションが開始されます。

4.アニメーションをキーフレームに Bake する。
 ツールシェルフの Animation タブを開くと、その中に Bake Action というボタンがあるので、それを押してください。
ボタンを押すと、ベイクするフレームの範囲を聞かれるので、キーが欲しいフレームを入力して OK ボタンを押してください。
自動的にタイムラインウィンドウにキーフレームが挿入されます。

 ベイク後は Rigid Body を外してしまっても問題ありません。
※キーフレームには位置・回転・拡縮のデータが記録されます。


 最初のチョコレートは鋼体設定したものをさらに Alt+D で複製して空中に配置し、床に落とした後で撮影しました。
オブジェクトを複製すると物理演算用の設定も一緒に複製されるようです。
Happy Valentine.png
 出来上がった画像はあとでフィルターを掛けるなり文字を入れるなりして仕上げることで、より一層おいしく召し上がれます(*・ω・)

【詳しい使い方はこちらを参照】
-Blenderで剛体シミュレーションをするときの手順と注意点-(2.66以降)
MM-TECHNOLOGY

関連記事
スポンサーサイト

超エキサイティン! フンストンの3DCG至難の書


タイトル画像

タイマーの作り方【BGE】

2015.02.17(22:39) 30

 Blender のゲームエンジンで、python なしでタイマーを作る方法です。
一秒ずつカウントアップしていって、60秒で1分に繰り上がるものです。
少しややこしいですが繰り返す処理なので、仕組みが解かると他に応用が利くかもしれません。

【作り方】
 モード(エンジン)を Blender Game に切り替えてから操作します。

1. [00:00] というタイムカウンターを作る。
timer_01.png

 1-1.テキストオブジェクトを用意します。
  Shift+A でテキストオブジェクトを追加します。
  テキストオブジェクトは初期状態では「Text」という文字ですが、Tab キーでエディットモードに入ると好きな文字を打てるようになります。
  元の文字は消して、半角数字の0を入力してください。

 1-2.カウンターの形にする。
  テキストオブジェクトをコピーし、画像のように配置してください。

2.プロパティを設定し、ロジックブリックを組む。
timer_02.png

  2-1.一番右のオブジェクトから設定します。
   画面構成を Game Logic に変更し、一番下の位(右端)の0を選択します。

  2-2.テキスト専用のプロパティを作ります。
   [+ Add Text Game Property ]ボタンをクリックして、型を Integer にセットします。

  2-3.センサーの設定をします。
   Delay センサーを追加し、Delay: と Duration: の値に、それぞれ 24 と打ちます。
   そして Repeat にチェックを入れてください。

  2-4.アクチュエイターを設定します。
   間に And コントローラーを挟んで、Property アクチュエイターを追加します。
   Mode: は Add に設定し、Property: 欄には Text を、Value: には 1 と入力します。

 これでカウントアップの仕組みが出来ました。
この状態でゲームモードを実行すると、カウントアップし始めますが、繰り上がりのときに元々用意してあった左隣の10の位を無視して、自動的に次の位の表示が新たに出てきてしまい、カウンターの表示がおかしくなります。

3.次は繰り上がりの設定をします。

 3-1.もう一つロジックブリックを組みます。
  Always センサーを追加して、TRUE のスイッチを ON にしてください。

 3-2.コントローラーを設定します。
  Expression コントローラーを追加し、値に「Text >=10」と入力します。

 3-3.アクチュエイターを設定します。
  Property アクチュエイターを追加し、Mode: は Assign 、Property: は Text 、Value: は 0 に設定します。

  次にその直下に、message アクチュエイターを追加し、To: (送り先)に Text.001(十の位の数字のオブジェクトの名前)を指定し、Subject: に a と入れておきます。(送る内容は何でも良い。)
  Body: の項目は触らず無設定にしておきます。

 3-4.今作ったものを繋ぎます。
  Always センサーと Expression コントローラ-、さらにそれに Property アクチュエイターと Message アクチュエイターを繋ぎます。

 これで10 までカウントすると、次の位のオブジェクト Text.001 に、a というメッセージが送られるように設定されました。
次は Text.001 の設定を作り、このメッセージ a を受け取ったときの反応を作ります。

4.Text.001 の設定をします。
 10の位のテキストオブジェクトの名前が Text.001 となっていることを確認して始めてください。
timer_03.png

 4-1.Text Game Property を追加します。
  このオブジェクトも最初のオブジェクトと同様に、Text Game Property を追加します。
  型も同じく Integer としてください。

 4-2.センサーを設定します。
  Message センサーを追加し、TRUE のスイッチを ON にします。
  そして Subject: の欄に、先程つくった a を入力します。

 4-3.アクチュエイターを設定します。
  Property アクチュエイターを追加し、Mode: を add 、Property: 欄に Text 、Value: 欄に 1 と入力します。
 4-4.コントローラーを設定します。
  Message センサーと Property アクチュエイターを繋ぐと、勝手に間に And コントローラーが挟まるので、そのようにしてください。

 これでちゃんと繰り上がるようになりました。(実行すると、繰り上がる瞬間に変なの映りますが……。)
ただ、この位も9までカウントすると表示がおかしくなるので、次の設定でさらに繰り上がってもらいます。

5.またも繰り上がりの設定をします。
 数値入力以外 3 の作業と同じなので簡略化した表記にします。

 5-1.もう一つロジックブリックを組みます。

  【センサー】Always
  設定:TRUE スイッチ ON

  【コントローラー】Expression
  値:Text >=6
  ※60進法なのでここは 6 になります。

  【アクチュエイター】Property
  Mode: Assign
  Property: Text
  Value: 0

  【アクチュエイター(二つ目)】Message
  To: Text.002
  Subject: b

 これらを繋いで、Text.001 の設定は終わりです。

6.次は Text.002 を同様の設定にします。
 先に[+ Add Text Game Property ]ボタンをクリックして、型を Integer にセットしておきます。
timer_04.png

 6-1.一つ目のロジックブリック。

  【センサー】Message
  設定:TRUE スイッチ ON
  Subject: b

  【コントローラー】And

  【アクチュエイター】Property
  Mode: Add
  Property: Text
  Value: 1

 6-2.二つ目のロジックブリック。

  【センサー】Always
  設定:TRUE スイッチ ON

  【コントローラー】Expression
  値:Text >=10

  【アクチュエイター】Property
  Mode: Assign
  Property: Text
  Value: 0

  【アクチュエイター(二つ目)】Message
  To: Text.003
  Subject: c

  これで Text.002 の設定は終わりです。

7.次は最後の位 Text.003 を設定します。
 ここでも忘れずに最初に[+ Add Text Game Property ]ボタンをクリックして、型を Integer にセットしておきます。
timer_05.png

 7-1.最後は1つしかロジックブリックがありません。
  (繰り上がりの設定無しだからです。)

  【センサー】Message
  設定:TRUE スイッチ ON
  Subject: c

  【コントローラー】And

  【アクチュエイター】Property
  Mode: Add
  Property: Text
  Value: 1

 お疲れ様でした。以上ですべての設定は終わりです。
このタイマー(カウンター)は、改良すれば日付とかも表現できそうですが、ただ増えていくだけのシンプルなものなので、途中から始まったり一時停止して再開したり、早送りや巻き戻しをしたりというのは難しいかと思います。

参考文献:Blender Tutorial: BGE easy timer(no pyton)

関連記事

超エキサイティン! フンストンの3DCG至難の書


タイトル画像

【企画】嵐山ステージ(途中)

2015.02.15(22:23) 29

 実はかなり前から MMD 用のステージに、京都の嵯峨野一帯(嵐山付近)をモデリングして背景として作ろうと企てていまして、他の作業の傍らにチマチマと等高線をトレースして、やっとそれらしい形になるまで作りました。
嵐山 google map

 そしたらポリゴン数がどえらい事になってなってしまって(;-ω-)
どうしたものかと他のモデルを見てみたところ、遠景は思い切って板ポリにしていることが多いようですね。

 このモデルは地形が命なので、メインの嵐山と小倉山はポリゴンのままなんとかしたいです。
となると、やはり奥に見えている愛宕山の手前から左大文字に向けて連なっている山脈が板ポリ化に適しているようです。
Arashiyama wireframe.png Arashiyama solid.png
 ではどこから見た視点を基準にして板ポリとして描くか(手描きですよ;)決めないといけないですよね。

 おいらは中ノ島を基準にしました。というのも、ここからしかその山脈は見えないからですね(・ε・)
ちょっと渡月橋に繋がるメインの通に入ると、すぐに建物でこの山脈は隠れてしまいます。

 中ノ島から渡月橋を見たという想定で、現実の風景と重ねてみました。
球体は光の方向や加減を見るために置いています。
atago-yama 3D.png
atago-yama overlap.png
atago-yama Photo.png

 概ね一致。実はモデリング時の山の高さは高くなりすぎているので、後で高さを0.8倍に縮めてあるんですよね。

 まぁしかし……あれですな。
こういった夕方の光の加減とか板ポリだと出来なくなるので、時間は昼に固定ですね(・ω・`)

 いつになるか分かりませんが、完成させて配布したいと思っているのでそのときはよろしくお願いいたしますm(_ _)m



⇒【企画】嵐山ステージ(途中)の続きを読む
関連記事

超エキサイティン! フンストンの3DCG至難の書


タイトル画像

【BGE】カメラ切り替え(Switching Camera)

2015.02.14(22:45) 28

【概要】
 カメラが二つある時の切り替え機構です。python は使いません。

 カメラが二台あり、スペースバーを押すとアクティブなカメラが切り替わるという仕組みを作ります。

【作り方】
1.まずこんな状況を作ります。
switch cam_01.png
 床と箱とカメラ二つ、あとは分かりやすいように矢印と色付きの照明を置いてみました。

2.選択されているカメラ(Camera と名前が付いているほう)に設定を施していきます。
 画面構成を Game Logic に切り替えて、Logic Editor で作業します。

switch cam_02.png

 2-1.まず先にプロパティを作っておきます。
  左の Propertys パネルにあるボタン[+ Add Game Property]を押して、新しいプロパティを作ります。
  次にプロパティ名を camera と名付けて、Type を Boolean にします。
  ついでに[ i ]と書かれたボタンも ON にしておきます。

 2-2.情報を見えるようにする。
  さっき ON にしたのは実行時のプロパティの情報を見れるようにするためのボタンでした。
  しかしそのままだと見れないので、インフォメーションヘッダ(画面上部)の Game と書かれた場所をクリックして、出てきたメニューから Show Debug Properties を選んでチェックを入れます。
switch cam_05.png
  これでゲーム実行時にプロパティの情報が画面左上に表示されるようになります。

3.スイッチの"つまみ部分"を作ります。

 3-1.キーボードセンサーを追加し、スペースバーを入力装置に指定します。
  このとき[ Tap ]ボタンを有効にしておいてください。
  キーを押しっぱなしにしたときに、画面が切り替わり続けるのを防ぐための機能です。

 3-2.アクチュエイターに Property を追加してください。
  Mode: を Toggle にし、Property: に camera(プロパティ名)を入れます。

 3-3.最後に二つを And コントローラーで繋ぎます。
  とりあえずこれでカチカチ出来るつまみ部分は出来ました。
  次はこれに配線して使えるようにします。

4.スイッチに二つの状態を繋いで使えるようにします。

 4-1.センサーに Property センサーを二つ加えてください。
  ※見やすくするため、先程設定したロジックブリックは最小化しています。
  switch cam_03.png
  二つとも Evaluation Type: は Equal 、Property: は camera に設定してください。

  ※Evaluation : 評価する[動]
   式や変数から値を決定すること。

  上のセンサーの Value: は True 、下のセンサーの Value: は False にそれぞれ設定します。

 4-2.アクチュエイターにも同様に二つ Scene アクチュエイターを追加してください。
  Mode: を Set Camera にし、上のアクチュエイターと下のアクチュエイターの Camera Object: を、それぞれ Camera と Camera.001に割り振ってください。

 4-3.作ったアクチュエイターをセンサーと繋ぎます。
  最後に、二つのアクチュエイターとセンサーをそれぞれ別の And コントローラーで繋ぎます。

 これで完成です!(*・ω・)ノ

 あとはどちらかのカメラに視点を移して(アクティブにしたいカメラを選択して Ctrl+0) Pキーでゲームを実行し、スペースバーを押せば画面が切り替わるはずです。
switch cam_04.png

参考文献:Blender Game Engine - Switching Cameras During Game

[別の方法]
はじめてのゲーム作り Capture2/TibLab
 後半でスクリプトを使ったカメラ切り替え(カメラの"位置"が切り替わる)が紹介されています。



⇒【BGE】カメラ切り替え(Switching Camera)の続きを読む
関連記事

超エキサイティン! フンストンの3DCG至難の書


タイトル画像

【ステージ配布】ボン○ーマン風ステージ【MMDアクセサリ】

2015.02.13(22:13) 27

Bom Stage.png
 blender のスナップ機能の練習とか BGE の実験場にする目的も兼ねて息抜きで作ったやつです。

 ちゃんと立体で作ってありますよー(*・ω・)
個人的にはののワさんみたいな2頭身キャラと相性がいい(見た目のバランス的に)ステージだと思います。
まあ、ネタ元のボン……げふんげふん何とかマンが低頭身キャラなので自然とそうなりますよね。

 ダウンロードはこちら→
使い方とかは同封の readme をお読みください。
関連記事

超エキサイティン! フンストンの3DCG至難の書


タイトル画像

ゲームエンジンで Track to コンストレイントを使う【BGE】

2015.02.12(21:12) 26

 blender のゲームエンジンでは、普通にオブジェクトモードで Ctrl+T で設定したトラック機能や、オブジェクトコンストレイントから設定した [Track To]・[Damped Track]・[Locked Track]を使うことが出来ません(;-_-)

 ゲームエンジンではロジックエディタに専用のアクチュエイターがあるので、それを使って Track To を実現します。

track to on the bge.png

 ゲーム実行時ではランプやカメラは非表示になるため、画像ではランプを模したコーンに Track To の設定を施し、その Cone の子にランプを設定してあります。

Track To の在り処

1.新規アクチュエイターを追加するプルダウンメニューから[Edit Object]を選びます。
2.さらに Edit Object: のメニューから Track to を選びます。

 とりあえずはこれで設定できました。
次は具体的にどのオブジェクトに注目するのかを設定します。

3.この例では Object: の値に Sphere を入れています。
 (画面中央の黄色いボールのことです。)
4.横の[3D]と書かれたボタンを ON にしておきましょう。
 これを押していないと、Z軸方向でのトラックが効きません。
5.次に Up Axis: と Track Axis: の項目に、適当な軸を指定してください。
 適当というのは、オブジェクトによってどの軸が最適なのかが変わってくるので、ケースバイケースでの対処になるからです。
 何度か軸を設定し直していると、球に向けたい面が向いてくれるようになります。

 Pキーでゲームを実行し、動作を確認しながら設定すると良いでしょう。

6.おめでとうございます。
これであなたの Lamp(Cone)は、健やかなる時も病める時も黄色い球体だけを見続けるようになりました。



⇒ゲームエンジンで Track to コンストレイントを使う【BGE】の続きを読む
関連記事

超エキサイティン! フンストンの3DCG至難の書


タイトル画像

News.003

2015.02.08(21:58) 25

 ブログ用にプロパティズウィンドウのアイコン型絵文字を作りました(*・ω・)模写です




 FC2ブログの絵文字として登録して共有設定にしておいたので、FC2ブログユーザーなら使えると思います。
※使用の際は、投稿フォームで[絵文字エディター]のツールボタンを押し、文字入力欄(テキストエリア)の下に出てくるエディターの画面で"blender"と入れて検索してください。
関連記事

超エキサイティン! フンストンの3DCG至難の書


2015年02月
  1. 鋼体シミュレーション(Rigid Body)(02/20)
  2. タイマーの作り方【BGE】(02/17)
  3. 【企画】嵐山ステージ(途中)(02/15)
  4. 【BGE】カメラ切り替え(Switching Camera)(02/14)
  5. 【ステージ配布】ボン○ーマン風ステージ【MMDアクセサリ】(02/13)
  6. ゲームエンジンで Track to コンストレイントを使う【BGE】(02/12)
  7. News.003(02/08)