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

「プログラミングのススメ」と学習した結果身につくもの、アイディアを実現するために何をしたら良いか?の答えが出せるようになります。

Blender Python アドオン作成〜ハローワールド〜

前回までは、家紋の作成用スクリプトを作成しようとしておりました。
そして、色々と考えた結果「機械学習」が必要だというところに行き着き

takunoji.hatenablog.com

上記をやりました。機械学習を始めるのにちょっとBlenderを離れなくてはなりません。
Blenderを離れる前に、キリのいいところまで仕上げてしまおうというわけです。
というわけで、毎度おなじみの写経をいたします。
捨てる神あれば拾う神あり(笑)

いいサイトを見つけました。

Blender Reference Manual — Blender Manual

そして、今回の写経もとは以下になります。

Quickstart Introduction — Blender 2.79b f4dc9f9d68b - API documentation

そして、写経の結果 ダウンロードはこちら

※タブが入っていないのでコピペでは動きません。
# 必要なインポートを行います。
import bpy
from bpy.types import Operator, Panel
# bpy.contextを引数に受けてobjectsを一覧表示します。
def main(context):
for obj in context.scene.objects:
print(obj)
# クラスの定義開始

class SimpleOperator(Operator):
# この名前がbpy.ops.objectに登録されます。
bl_idname = "object.simple_operator"
#ラベルはよくワカりませんでした。
bl_label = "Simple Object Operator"
# 不適切な操作時にエラーを投げる
@classmethod
def poll(cls, context):
return context.active_object is not None
# オペレータ起動時に呼ばれる
def execute(self, context):
main(context)
return {'FINISHED'}

# パネルクラスの作成
class HelloWorldPanel(Panel):
"""Creates a Panel in the Object properties window"""

#パネルの名前が表示される
bl_label = "Hello World Panel"
bl_idname = "OBJECT_PT_hello"
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "object"

def draw(self, context):
layout = self.layout

obj = context.object

row = layout.row()
row.label(text="Hello world!", icon='WORLD_DATA')

row = layout.row()
row.label(text="Active object is: " + obj.name)
row = layout.row()

#上記のobj.nameを登録(表示)
row.prop(obj, "name")

row = layout.row()

#bpy.ops.mesh.primitive_cube_add()を呼び出す
row.operator("mesh.primitive_cube_add")

def register():
bpy.utils.register_class(SimpleOperator)
bpy.utils.register_class(HelloWorldPanel)

def unregister():
bpy.utils.unregister_class(SimpleOperator)
bpy.utils.unregister_class(HelloWorldPanel)

#よく使うコードのようだ
if __name__== "__main__":
register()
# 実際に呼び出す
bpy.ops.object.simple_operator()

 

大まかな流れとしては、 
1. SimpleOperator、HelloWorldクラスを作成
2. 「よく使うコード〜」の部分「__name__」の値が「__main__」の時に
 register()を実行する処理
3. 続いて、作成した「SimpleOperator」を実行する
コマンドよりBlenderを起動した状態でソースをダウンロードしたファイルを
テキストエディタより起動します。
コマンドには以下のような感じでオブジェクトの値が出力されました。

f:id:Takunoji:20180406230745p:plain
画面上では、こんな感じです。

f:id:Takunoji:20180406230841p:plain

右下の部分に作成したパネルが表示されています。

f:id:Takunoji:20180406230921p:plain

コマンドで起動するなどに関しては以下を参照してください。
コマンドプロンプト(大雑把ですが。。。)、ターミナルでの起動方法を記載しました。

 

takunoji.hatenablog.com

今日はここまでにします。

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseにCDTをインストール〜
  3. Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)