🐒
csvファイルに書かれた座標値をもとにblenderに猿を表示
はじめに
blenderでpythonが使えます。
ちょっと使えると面白そうなので使って見ることにしました。
今回やることは以下。
座標位置が書かれているcsvファイルを読み込む
csvファイルに書かれている座標位置をもとに猿の顔を作成
blenderの起動
blenderを起動してscripting
を選択します。
画面のサイズは見やすいように適当に変えます。
スクリプトの実行環境
ドキュメントにUse an External Editorがあったので、こちらを参考にしました。
スクリプトエディタに以下のように記載します。
1行目に記載したパスD:\\blender-python\\readcsv.py
は
私が勝手に決めたものです。
試す場合は自分の環境に合わせて変えてください。
filename = "D:\\blender-python\\readcsv.py"
exec(compile(open(filename).read(), filename, 'exec'))
作成するスクリプトは、自分の好きなエディタで書けば良いです。
Visual Studio Codeで書くと以下のような感じになります。
(モニタ1つだとちょっときつい。。。)
読み込むデータファイル(csvファイル)の作成
以下のようなファイルを用意します。
sample.csv
1,1,1
3,3,3
6,6,6
一行毎に x,y,zの座標位置が書かれているものとなります。
ここでは3つの猿の顔の座標が書かれています。
sample.csv(コメント付き)
1,1,1 # 1個めの猿の位置(X座標 1, Y座標 1 , Z座標 1)
3,3,3 # 2個めの猿の位置(X座標 3, Y座標 3 , Z座標 3)
6,6,6 # 3個めの猿の位置(X座標 6, Y座標 6 , Z座標 6)
スクリプトの作成
以下のようにスクリプトを作成します。
import bpy
from bpy.types import Operator
from bpy.props import FloatVectorProperty
from bpy_extras.object_utils import AddObjectHelper, object_data_add
from mathutils import Vector
import csv
with open('D:\\blender-python\\sample.csv', newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
bpy.ops.mesh.primitive_monkey_add(size=1, enter_editmode=False, align='WORLD', location=(int(row[0]), int(row[1]), int(row[2])), scale=(1, 1, 1))
ドキュメントは以下が参考になります。
スクリプトの実行
スクリプトの実行は以下の三角ボタンを押すことで実行できます。
実行結果は以下。猿の顔が表示されました。
まとめ
今回は簡単なcsvファイルを読んで、
読んだ値をもとに猿を表示させてみました。
やっていることは、単純ですが3Dのモデルが出てくるとちょっと面白いのではないでしょうか。
またなんかネタ考えたら記事書いてみようかと思います。
Discussion