« September 2011 | Main | November 2011 »

October 30, 2011

Blenderでステレオカメラ

Blender2.5以降用のステレオカメラを作ってみました。
ステレオグラム(裸眼立体視)、アナグリフ(青赤メガネで立体視)用画像を一発でレンダリングします。

Scr01

StereoCamera.zip for Blender 2.59

↑Blender2.59用モデリングデータファイルです。
リンクをクリックするとダウンロードできます。(303k)

使用方法はちょっと複雑なので動画を作成しました。
自分的にはSceneのアペンドやオブジェクトのScene間でのリンクなどが確認できてよかった感じ:-)

【Youtube】Blenderでステレオカメラ

【ニコニコ動画】Blenderでステレオカメラ

以下、カメラ作成時のテスト画像です:-)

Stereo01_2


Man18l2kousa2_2


Man18l2p3_2


Man18lbr


Man18l2br3

| | Comments (0)

October 13, 2011

Gameの基本とSimplify Curvesとベクターブラー

Chinchirostep4b

今回はBlenderGame上で動かしたオブジェクトの動きを記録し、そのデータ量を軽減するAdd-OnのSimplify Curvesと、高速にモーションブラーをかけるノードのベクターブラーを使ってみました:-)
ついでに簡単なチンチロリンと箱落としゲームを作成しました。

●Gameの基本的操作

1.上部メニューからBlender Gameを選択
2.Actorとして動かすオブジェクトは選択してPhysicsでRigidbodyにしてパラメータを設定
  Gameモードの場合、マテリアルにもPhysics設定があり、ここで跳ね方などが設定できる
3.動かないオブジェクトは基本的にはデフォルトのStaticでOK
  (Collision Boundsを設定しなくても衝突判定はされる)
4.[P]でGame開始、[ESC]で終了

なお、基本的にリジッドボディはスケーリングしないこと。
(スケーリングした場合はCtrl+Aで変形をアプライしておくこと)
また、あまり極端にサイズの違うPhysicsオブジェクトは使わないほうが良いらしい。

●Rigid Bodyのパラメータ

Scr002

Actor : 選択オブジェクトへのPhysicsの設定が可能になる
Ghost : 他のオブジェクトの影響を一切受けなくする
Invisible : Game中、オブジェクトを不可視にする
Use Material Force Field : マテリアル側のPhysics設定の有効・無効切り替え
Rotate From Normal : 未確認
No Sleeping : いつまでもPhysicsの影響を受け、止まらないようにする(普通はOFF)

Attributes :
Mass : オブジェクトの重さ(強さ)
Radius : 球状の衝突領域のサイズを設定(最小値で使うことが多い)
Formfactor : これを大きくするとよく転がるようになるが、それに伴い動きが止まりにくくなる

Anisotropic Friction : チェックを入れるとオブジェクトのX,Y,Z方向における摩擦の方向を制御(するものらしい)

Velocity :
Minimum : 多分影響の最小値。これを上げると動きが大きくなり、いつまでも動くようになる
Maximum : 多分影響の最大値。0だと無制限。0以外だと動きが抑えられ、遅くなる

Damping :
Translation : 移動の抵抗。大きいほど移動力が早く減衰する
Rotation : 回転の抵抗。大きいほど回転が早く減衰する

Collision Bounds : チェックを入れると衝突判定が有効になる
Bounds: 衝突判定のタイプを選択
 ※Convex Hullは複雑な衝突形状に対応するが凸形状のみ適用、メッシュは少なめという制限がある(2.4のマレン本より)
 ※TriangleMeshは複雑な凹形状にも対応するが静的オブジェクトにのみ適用可、TriangleMesh同士は衝突しないという制限がある(2.4のマレン本より)
Margin : 多分衝突判定領域のマージンでしょう。今回は0で問題なかった
Compound : オブジェクトがチャイルドを持つ時に使用する(今回使用せず)

●MaterialでのPhysicsパネル

GameモードではマテリアルにもPhysicsの設定項目があり、マテリアルごとに外部からの影響力等を設定できる。ボールの弾み方の調整などに使える。

Ss01

Friction : 多分、他と同じで外部からの影響を受ける度合い
Elasticity : 弾性。大きくすると他のオブジェクトに当たった時よく跳ねる

その他は未確認:-)

●BlenderGameプレイ中のオブジェクトの動きをf-Curveとして記録する

やり方は簡単で、メニューのGameからRecord Animationにチェックを入れて、Pでゲームを起動、ESCで抜けるとその間のGameに関わるオブジェクトの動き(移動・回転)がf-Curve(IPOカーブ)として記録される。
記録した後、該当のオブジェクトを選択するとグラフエディタにf-curveが表示される。

S01

●Simplify Curves(Add-On)でキーを減らして軽くする

Gameオブジェクトの動きを記録すると、↓画像のようにf-curveのキーが膨大な量になり、Renderモードで利用する際に動作が非常に重くなる。Add-OnのSimplify Curvesでキーを整理することでこの弊害をある程度軽減できる。
ただ、このAdd-Onの使い方には少々癖があるので重点的に備忘録:-)

S02

(使い方)

1.UserPreferences>Add-Ons>Add CurveでSimplify Curvesにチェック
2.3Dビュー上で適用するオブジェクトを選択。なお、必ず南京錠はONにしておくこと。
3.スペースキーを押し、simplify f-curvesを呼び出して(simpあたりで候補が絞られる)リターンキー等で適用。
  (次回以降をスペースキーを押すだけでそのまま呼び出せる)
  なお、この時点ではf-curveに変化が無いことに注意。
4.(必要ならTを押して)3Dビューのツールシェルフに表示される▼simplify f-curvesのerrorの値を調整することでキーが整理される。
  値が大きいとキーは減るがオブジェクトの挙動が変わってくる(跳ねているところがめり込んだりする)のでほどほどに。0.002くらいで止めたほうが良いことが多い。
5.3Dビューで別なオブジェクトを選択し、3、4を繰り返す

↓手順1-3

S03a

↓手順4:ツールシェルフのerrorを調整

S04

ちなみに冒頭の動画はキーを整理したあと、NLAエディタで時間を5分の1に短縮し、落下開始のタイミングをずらした後ベクターブラーをかけてレンダリングしました。

●ベクターブラーの使い方

ノードのVector Blurを使うと簡単にレンダリングに時間のかからないモーションブラーをかけられる。

(手順)
1.プロパティ>Render>▼LayersのPassesのVectorにチェックを入れる(Combined,Zもチェック状態で)
2.NodeEditorでAddからFilter>Vector Blurを追加。下図のように繋ぐ。
3.プロパティ>Render>▼PostProcessingのCompositingにチェックを入れてレンダリング
 ※注意点として、カメラの前後に一枚のポリゴンが跨るような場合は分割しないと正常にレンダリングされない

Scr001

――――――――――――――――――――――――――――――――――――――――――――――

以下、ついでに作った簡単なゲームです。ひまつぶしにでも遊んでみてください:-)

games.zip for Blender 2.59

↑Blender2.59用モデリングデータファイルです。
リンクをクリックするとダウンロードできます。(1.62M)

■チンチロリン

マウスでサイコロの一つの位置、角度を変化させて出目を変えます。
ゲームというより、ただサイコロをふるだけのものです(^.^;

ゲームスタート:P
ゲーム終了:ESC
サイコロ回転:マウスを動かす
サイコロ移動:マウス左クリック
ゲームリスタート:マウス右クリック

チンチロリンのルール等
チンチロリン - Wikipedia


Scr01

↑パラメータを色々調整してもサイコロがなかなか止まってくれないので、茶碗の底にひらべったい衝突用のオブジェクトを配置しました。InvisibleをONにしているのでプレイ中は不可視になります。

Glsl01_2

↑GLSLに対応していない(うちのノートのX200やNB100のような)パソコンの場合、Nを押して▼DisplayのGLSLをMultitextureに変更すると遊べます


Chin02

↑Logicではマウス操作、ゲーム中のリスタート(サイコロの振り直し)、サウンドの出し方について確認
リスタートはアクチュエーターのScene>Restartで実現できる。
サウンドはセンサーをDelayにして、下にあるDelayパラメータで音を出すタイミングを設定。
(Colligionで他と当たった時に音を出したりすることも可能)


■箱落とし

キーボードのみで赤い箱を動かし、他の箱を落とすゲームです。
全部落としても何も変化はありませんので達成した時は心の中で自分を褒めます:-)
落ち着いて慎重にやれば全部落とせると思います。

ゲームスタート:P
ゲーム終了:ESC
前進:G
方向転換(Z軸):H
方向修正(X軸):J
方向修正(Y軸):K

基本的にGで位置を動かし、Hで方向を決めます。勢いよく他のCubeに当たってひっくり返った時にJかKの連打で90度回転させてHで方向を決められるように修正します。
キーボードさばきと他のCubeの陰に隠れて見えない時にどう動かすかが鍵です。

Playを抜けた状態で赤いCubeを選択し、Physicsのmassの値を小さくするほど難しくなります。

Hako00


Scr02


--------------------------------------------------------------------------
今回の参考リンク:

サイコロの作り方(youtube)
blender初心者モデリング

GameEngineまわり
Blender 2.5 Planks Physics Game Tutorial - Part 1 (セッティング)
Blender 2.5 Planks Physics Game Tutorial - Part 2(テクスチャ)

アドオンのSimplify curvesの使い方
Tip: Simplify Animation Curves


| | Comments (0)

« September 2011 | Main | November 2011 »