Takunojiの日記

自分が勉強したプログラム技術メモ

Blender Python 6〜プログラムで三角錐〜

前回は、下記のサイトを参考に基本的なスクリプトを叩きました(実行しました)。

Blender 3D: Noob to Pro/Advanced Tutorials/Python Scripting/Introduction - Wikibooks, open books for an open world

 

今回は、次のページ?を参考にします。

Blender 3D: Noob to Pro/Advanced Tutorials/Blender Scripting/Anatomy Of An Addon - Wikibooks, open books for an open world

まずは、自分がどのディレクトリにいるのか確認します。
※カレントディレクトリ→Macであれば、ターミナル、Windowsであれば
 コマンドプロンプトを立ち上げた時にMac: pwd, Windows: カーソルの左側に
 表示されている、ディレクトリ(フォルダ)のことです。
引き続き、パイソンコンソールで以下のように入力します。
>import os
>os.path.abspath(os.path.dirname("."))

これで表示されるディレクトリがカレントディレクトリになるハズ。。。
そして、参考サイトにあるコード
>diri(bpy.ops)

f:id:Takunoji:20180120214714p:plain


下のデータを渡す時に使用する値(Vectorなど)をPythonで表現すると以下のようになります。
 
, , and

Python」※ 自分は「import math」をやる必要がありました。

Vertices = \
          [
            mathutils.Vector((0, -1 / math.sqrt(3),0)),
            mathutils.Vector((0.5, 1 / (2 * math.sqrt(3)), 0)),
            mathutils.Vector((-0.5, 1 / (2 * math.sqrt(3)), 0)),
            mathutils.Vector((0, 0, math.sqrt(2 / 3))),
          ]

使用している関数の実行結果です。math.sqrt(3)はルート3に成る様です。
>>> import math
>>> math.sqrt(3)

f:id:Takunoji:20180120215459p:plain

そして、写経。。。。テキストエディタより起動します。

コンソール画面の下「Text」をクリック後に「Run Text」をクリックで実行

import bpy
import math
from mathutils import Vector
vertices = [
Vector*1,
Vector*2, 0)),
Vector*3, 0)),
Vector((0, 0, math.sqrt(3))),
]
print(vertices)
mesh = bpy.data.meshes.new('MyMesh')
mesh.from_pydata(vertices, [], [[0,1,2], [0,1,3], [1,2,3], [2,0,3]])
mesh.update()
obj = bpy.data.objects.new('MyObject',mesh)
bpy.context.scene.objects.link(obj)

そして、実行結果

f:id:Takunoji:20180120225428p:plain

pythonコードに慣れないせいか色々と手こずりましたが、なんとか表示することができました。

今日はここまででお腹いっぱいです。。。
次回は、作成した四角錐をいじってみようと思います。

*1:0, -1 / math.sqrt(9), 0

*2:0.5, 1 / (2 * math.sqrt(3

*3:-0.5, 1 / (2 * math.sqrt(3