Takunojiのプログラミング・プレイグラウンド(遊び場)

Javaプログラミングを基本にして、ゲーム作成に必要なことの調査結果、やったら面白そうなことなどを記載します。プログラミングのススメ的なことも記載します。プログラミングで楽しく遊ぶために色々と記載して行きます。

Blender Python 本番1〜2D、メッシュオブジェクト〜

前回、BlenderPythonでの3Dオブジェクトを作成してみました。
前回参考にしたサイトはこちらです。

前回まで、3Dの画面描画についてやっていましたが、はっきり言ってムズイので
2D描画の方から着手しようと思います。(2D描画を基本にして3D描画の仕組みが出来上がっているらしいです。)

今回の参考にするサイトは以下になります。

sinestesia.co

最近気がついたのですが、翻訳機能もレベルがどんどん上がっている様ですね。
とりあえず英語サイトでも翻訳すれば問題なく読めそうです。

参考サイトのチュートリアルを進めていくことにします。
主に書いてあるコードの自分流解釈と実践になります。

上記のサイトに記載されているコードをコピペで実行した結果が下のイメージです。

f:id:Takunoji:20180128193715p:plain

結局は上記の様な「面」が写経するコードにより作成されます。
作成したものの情報を一覧してみました。以下の様なコードです。
>> list(bpy.data.objects)
>> bpy.data.objects['Gridtastic']

f:id:Takunoji:20180128194458p:plain

作成したコンポーネントは「Gridtastic」という名前がついている様です。

それでは、コードの解析に入ろうと思います。

(1.最初の黒塗り部分のコード) 変数宣言から入る様です。
#まずは使用する変数の宣言
 ---------------------------------------------------------
 import bpy #ライブラリのインポートを行う

 #設定
 name = 'Gridtastic' # mesh(メッシュ)とobject(オブジェクト)の名前
 row = 5                   # 行(row)とカラム(column)は表示するgrid(グリッド)が
 columns = 10         # 何個頂点を持っているのかを判定するのに使用します。
 ---------------------------------------------------------
(2.次の黒塗り部分のコード)
上のコードに引き続きmesh(メッシュ)とオブジェクト(object)の設定を行います。
 ---------------------------------------------------------
 vertices = # vertices(vertexの複数形=>頂点の意味
 face =
       # フェイス=>面の意味
 # Create Mesh Datablock => メッシュのデータを作成する部分
 mesh = bpy.data.meshes.new(name) #メッシュ(mesh)をGridtasticの名前で作成
 mesh.from_pydata(vertices, , face)

 # APIレファレンス参照
 #@docs: from_pydata(vertices, edges, faces)
 ## vertices = 頂点のリスト=>X軸、Y軸、Z軸の座標を示す。(0,1,2)
 ## edges    = 辺のリスト(2点を示す座標を表示) => (0, 1)
 ## faces     = 面のリスト(0,1,2,3)

 # Create Object and link to scene => オブジェクトを作成、シーンにリンクさせる
 obectj = bpy.data.objects.new(name, mesh)
 bpy.context.scene.objects.link(object)

 # Select the object => オブジェクトを選択
 bpy.context.scene.objects.active = object # 作成したオブジェクトをアクティブに
 object.select = True # オブジェクトをクリックして選択するのと同じ

ちなみに、上記の頂点、辺、面の値について検証してみました。
新たに下記の様なスクリプトを作成して実行します。下のキャプチャは実行結果です。

f:id:Takunoji:20180128212853p:plain

実行するスクリプトは下のものです。
---------------------------------------------------------
# Looping to create the grid
verts = [(-1,-1,0), (1,-1,0), (1,1,0), (-1,1,0)]
faces = [(0,1,2,3)]

# Create Mesh Datablock
mesh = bpy.data.meshes.new(name)
mesh.from_pydata(verts, , faces)

# Create Object and link to scene
obj = bpy.data.objects.new(name, mesh)
bpy.context.scene.objects.link(obj)

# Select the object
bpy.context.scene.objects.active = obj
obj.select = True
---------------------------------------------------------
vertsはvertex(頂点)のことです。Z軸の値は全て0ですので平面の点を示しています。
facesは4点を面にしますよという意味 ※後ほど細かい説明をいたします。
ちょっと長くなってしまったので今回はここまでにします。
次回は参考サイトの「A grid of vertices」の部分を記載いたします。