Blenderで作成した3次元データの各頂点座標を抽出
「点群データをBlenderにインポートするスクリプト」というのを作成したので,ついでにその逆も作ってみようという話です.
3次元の点群データを使って何かの解析をしたい場合等,テキスト形式で吐き出す方法を知っていると何かと便利なことがあります.
補足ですが,
今回は頂点データのみを扱うこととします.点と点の繋がりの関係(メッシュ)は面倒なのでやりません.有限要素法で解析しようと思っていた方は残念でした^^;
スクリプト
選択オブジェクトの頂点座標をテキストに書き出すPythonスクリプトです.
Blender Python初心者の方は
こちらを参考にしてみてもいいと思います.
#Blender 2.80 beta
#選択オブジェクトの頂点座標をテキストで書き出す
import bpy
#保存先を指定
TextFilePath = "C:/tmp/export_verts.txt"
fout = open(TextFilePath,'w')
i = 1
for v in bpy.context.object.data.vertices :
X = str( v.co.x )
Y = str( v.co.y )
Z = str( v.co.z )
fout.writelines(str(i) + ',' + X + ',' + Y + ',' + Z + '\n')
if i % 10000 == 0:
print(i)
i += 1
fout.close()
print('Finished : ' + str(i-1) + 'verts')
使用方法
- Blenderを起動して対象オブジェクトをセットします
- テキストエディタを開きます
(画面分割で3Dビューが一緒に見える状態がいいでしょう)
- 本ページのスクリプトをコピーしてBlender内のテキストエディタに貼り付けます
- スクリプト6行目で保存先のファイルパスを指定します
フォルダの区切り文字は"\"ではなく"/"で入力します
- スクリプトを実行する前にシステムコンソールを表示しておきます
- 対象オブジェクトを選択状態にします
- スクリプトを実行します
([テキストエディタ]上にマウスカーソルを乗せた状態で[Alt]+[P])
こんな感じテキストファイルが生成されます.テキストファイルを開くと
頂点番号順に頂点データが書き込まれていることがわかると思います.普段Blenderを扱う上で
頂点番号を見ることはないですが,実はメッシュデータ内で管理されています.