Blender を使ってみよう(基礎編)

Takumi KINJO (@libkinjo)

Press key to advance.
Zoom in/out: Ctrl or Command + +/-

自己紹介など

  • 30 歳
  • 琉大卒です
  • OCC 勤務です
  • いつもは Ruby on Rails の人です
  • Emacs っ子です
  • eXtreme HAGO 2 の管理人です

よろしくおねがいします!

はじめに

  • この資料は http://kinjo.github.com にあります
  • 動作は Mac OS X で確認しました
    • Linux でも動くはず
    • Windows はごめんなさい

流れ

  • なぜ Blender ?
  • Blender でモデリング
    • スマートフォン的なモノを書きます
  • Bpy(Blender Python API) を使ってみる
  • Bpyでオブジェクトデータを取得する
  • オブジェクトデータをOpenGLなアプリに食わす

なぜ Blender?

  • ここ最近のOpenGLなセッションに触発されましてw
  • もっといろいろ表示したい、動かしたい
  • そうだ Blender で作ろう!
  • でも Blender は癖のあるツール

使い方をみていきましょう

学生のころ使っておりました

昔々、某琉大の某ゲーム班という学生実験がございまして、

その中で Blender を使っておりました。

./gameConstructionExperiment.png

すごい作品もございました

私はMS-06を描きましたがどっかいきましたorz

./gyapfin.jpg

ダウンロード

http://www.blender.org/ からダウンロードできます

./blender-homepage.png

プラットフォーム

いろんなプラットフォームで動きます

  • Windows 32 bits / 64 bits
  • Linux x86-32 / x86-64
  • Mac OS X PowerPC / Intel 32 or 64 bits
  • FreeBSD

Lion はー?

Blender でモデリング

ではさっそく使っていきます。

  • 起動してみる
  • 画面構成
  • ちょい足し設定(Rotate Around Selection)
  • モデリングに適した画面配置
  • 基本的なモデリング

起動してみる

コマンドから起動するのが吉です

実行結果を標準出力するため。

例えば、

% cd /Applications/blender-2.58a-OSX_10.5_i386/blender.app/Contents/MacOS
% ./blender

画面構成

./blender-window.png

ちょい足し設定

Rotate Around Selection

./blender-user-preferences.png

モデリングに適した画面配置

Quad View : Alt+Ctrl+Q

./blender-quad-view.png

視点を動かしてみよう

  • 自由移動
    • Mac : Alt + 2点タッチ, Linux : ミドルクリック
  • 平行移動
    • Mac : 2点タッチ, Linux : ミドルクリック
  • 拡大縮小
    • Mac : 2点タッチによる拡縮の指捌き
    • Linux : Ctrl + ミドルクリック
  • 回転
    • Mac : 2点タッチの回転の指捌き, Linux : ?

2 つのモードでモデリング

タブで切り替えます

  • オブジェクトモード
    • オブジェクト(頂点が集合した1つのモノ)の、
      • 位置、姿勢、大きさを編集するモード
  • エディットモード
    • オブジェクトの頂点を編集するモード

基本操作(両モード共通)

  • g : 移動
  • r : 回転
  • s : 縮小
  • x : 削除 (何を削除するか、本当に削除するか訊かれます)
  • ESC : 操作解除
  • Ctrl + z : Undo
  • Shift + Ctrl + z : Redo
  • Space : メニュー呼び出し

編集の軸方向を固定

例えば g を押した後 x を押すと x 軸方向のみ移動します。

  • G or R or S の後に X or R or Z を押して、
  • マウスで移動させたりします

頂点の選択

  • a - 全選択・未選択きりかえ
  • b - 矩形選択

さて、ここからは実践あるのみ!

スマートフォン的なモノを作ってみます。

スマートフォン(オブジェ追加)

まずCubeを削除 (x) して、メニュー (Space) でAdd Circle

./blender-add-circle.png

スマートフォン(頂点削除)

Edit Modeで頂点を選択 (b) し削除 (x) (Verticesを削除)

./blender-delete-vertices.png

スマートフォン(Modifier)

Object Modeになり右メニューのModifierを開きAdd ModifierしてMirrorを選択

./blender-modifier.png

スマートフォン(Mirror)

Mirrorのメニューにある Axis: Y にチェックを入れる

./blender-mirror.png

スマートフォン(Mirror)

Edit Modeになり頂点をX軸Y軸方向に移動 (g + x or y)

./blender-edit-vertices.png

スマートフォン(Mirror)

Mirrorのメニューにある Apply をクリックする

./blender-apply-modifier.png

スマートフォン(面をつくる)

Edit Modeで頂点を全選択しAlt+F

./blender-make-face.png

スマートフォン(Extrude)

Edit Modeで頂点を全選択、Extrude (e) の後 z で z 方向へ押し出し

./blender-extrude.png

スマートフォン(Cylinderオブジェ追加)

Object Modeでメニュー (Space) して Add Cylinder を 選択。 s で大きさを調整し g+y で画面下側へ移動。

./blender-add-cylinder.png

スマートフォン(Cylinderの位置調整)

Object Modeでワイヤーフレーム表示に切り替え、Cylinderの位置をz軸について調整。

./blender-move-cylinder.png

スマートフォン(Boolean)

オブジェの階層からCylinderを選択しShiftを押しながらCircleを選択する。 Circle が白文字表示(アクティブ)になるように。

./blender-select-circle-and-cylinder.png

スマートフォン(Boolean)

Object Modeになり右メニューのModifierを開き、今度はBooleanを選択

./blender-modifier-boolean.png

スマートフォン(Boolean)

Booleanのメニューにある Operation: に Union を Object: に Cylinder を選択しApplyボタンを押す。

./blender-setup-boolean.png

スマートフォン(完成)

Cylinderオブジェを削除して完成!

./blender-finish.png

ここまでのまとめ

いかがでしょう?

  • 左右対称なものを作るときはミラーを使います
  • した地を作成したら Extrude で押し上げます
  • くぼみは boolean 演算でくり抜きます
  • ちなみに、複雑なものを作るときはパーツ毎に作って後で組み合わせます

モデリングの情報源

次は Blender Python API(Bpy)

  • Python console を開く
  • Bpy をちょっと使ってみる
  • Bpy をもっと使ってみる
  • Text Editor を使ってみる
  • 頂点を標準出力する
  • 頂点をOpenGLなプログラムに食わす

Python console を開く

./blender-python-console.png

Bpy をちょっと使ってみる

  • bpy のメソッドを表示
dir(bpy)
  • bpy の簡単な説明を表示
bpy.__doc__
  • 現在のモードを表示
bpy.context.mode

Bpy をもっと使ってみる

  • 選択中のオブジェクトを取得
bpy.context.selected_object
  • アクティブになっているオブジェクトを取得
bpy.context.active_object
  • オブジェクトを z 軸方向へ移動
bpy.context.active_object.location.z =- 1

Text Editor を使ってみる

Text Editor の画面にある New を押すと入力できます。

./blender-text-editor.png

Text Editor を使ってみる

頂点データを取得して stdout に表示する

import bpy
print(bpy.data.meshes['Cube'].vertices[0].co)

実行は Alt+P

結果は標準出力されます。

個人的には screen を使うのが吉かと(メソッド検索に便利)

頂点を標準出力する

Edit Mode で頂点を全選択して Alt+P で実行。

import bpy

print(bpy.ops.mesh.quads_convert_to_tris())

for i in bpy.data.meshes['Cube'].faces:
    for j in i.vertices:
        print(bpy.data.meshes['Cube'].vertices[j].co)

頂点をOpenGLなプログラムに食わす

頂点データを表示するサンプル作りました!

https://github.com/kinjo/SimpleTriangle

ソースにはりつけてみる

./eclipse-vertices.png

できました!

./android-cube.png

ここまでのまとめ

Bpy いかがでしょう?

  • Python Console と Text Editor を使います
  • Bpy で Blender の情報を取得できます
  • Text Editor の結果は標準出力されます
    • ログ画面とかありそうだけどねー

やりたかったけどできなかったこと

  • 結局、立方体しか表示できませんでしたorz
    • 頂点が多すぎるとアレ
    • 頂点を標準出力するのではなくファイル出力とかやれば
    • あとは一筆書きとか(TRIANGLE_STRIPE)
  • ライティングorz
    • 陰影がないと何が表示されているか分からないorz
    • 頂点の法線データが必要
    • 今の Blender から法線取得できるかは未調査..
    • (昔bpyで法線を求める処理を書いた覚えがががが)

今回紹介できなかったBlenderの機能

  • その他のモデリングの技 : ナイフなど
  • マテリアル : オブジェに色や質感を持たせます
  • テクスチャ : オブジェに画像を貼付けます
  • アニメーション
    • ボーン : 複数のオブジェに骨を通します
    • インバースキネマティック : 骨の動きに制約を加えます
  • プラグインご紹介

まだまだ沢山ございますが、また追々。

ご清聴ありがとうございました

ところで、

Python Console って Emacs で接続して使えます。確か

頂点を丸括弧で出力して、えばるとどうなるのでしょうねw

続きは eXtreme HAGO 2 LT 大会 で