🐒

csvファイルに書かれた座標値をもとにblenderに猿を表示

2021/09/05に公開

はじめに

blenderpythonが使えます。
ちょっと使えると面白そうなので使って見ることにしました。

今回やることは以下。

座標位置が書かれている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