2023年5月27日土曜日

オブジェクト(例 貝層断面図)をBlenderにインポートして正置させるBlenderPythonスクリプト

 A Blender Python script that imports an object (e.g. shell layer cross section) into Blender and orients it correctly


I created a BlenderPython script that imports an object (e.g. shell layer cross section) into Blender and orients it in 3D space. With this script and object files, I'm ready to build a Blender file. There is no need to use the Blender file as the original, which improves work efficiency.


オブジェクト(例 貝層断面図)をBlenderにインポートして3D空間に正置させるBlenderPythonスクリプトを作成しました。このスクリプトとオブジェクトファイルがあれば、いつでもBlenderファイルを構築できます。Blenderファイルを原簿とする必要がなく、作業効率が向上します。

1 例 第2貝層断面図


オブジェクト(第2貝層断面図)がBlender3D空間に配置されている様子


オブジェクト(第2貝層断面図)のBlender3D空間における位置・回転・スケール諸元

2 オブジェクト(第2貝層断面図)をインポート・正置させるスクリプト


オブジェクト(第2貝層断面図)をBlenderにインポートし正置させるスクリプト

……………………………………………………………………

# 平面画像オブジェクトをインポートして位置の移動、回転、拡大縮小させて、正置させる。

import bpy

import math

bpy.ops.wm.obj_import(filepath="I:\\20221214有吉北貝塚北斜面貝層プロジェクト\\■貝層断面図等Pythonによるプロット\\20230525Pythonスクリプト基礎検討\\2o4a-01eee.obj", directory="I:\\20221214有吉北貝塚北斜面貝層プロジェクト\\■貝層断面図等Pythonによるプロット\\20230525Pythonスクリプト基礎検討\\", files=[{"name":"2o4a-01eee.obj", "name":"2o4a-01eee.obj"}], forward_axis='X', up_axis='Z')

# 現在選択されているオブジェクトを取得します。

selected_objects = bpy.context.selected_objects

# 選択されたオブジェクトを拡大縮小します。

for obj in selected_objects:

obj.scale[0] = 0.1

obj.scale[1] = 0.1

# 選択されたオブジェクト(の原点)を移動します。

for obj in selected_objects:

obj.location[0] = 10.182

obj.location[1] = 4

obj.location[2] = 5.1797

# 選択されたオブジェクトを回転します。

for obj in selected_objects:

obj.rotation_euler[0] = math.radians(90)

obj.rotation_euler[2] = math.radians(0)

# オブジェクトを原点へ移動。(過去の操作でオブジェクトの原点が移動している場合があるので、それを補正するためのスクリプト。)

bpy.ops.object.origin_set(type='GEOMETRY_ORIGIN', center='MEDIAN')

……………………………………………………………………

3 オブジェクト(第2貝層断面図)のBlenderインポートと正置


オブジェクト(第2貝層断面図)のBlenderインポートと正置の様子

4 感想

4-1 情報パネルに表示されるPythonスクリプトの逆引き的活用

BlenderPythonスクリプトを書くために情報パネルに表示されるPythonスクリプトを逆引き的に利用できることに気が付きました。

Blenderで行う操作は全て情報パネル(Scripting画面におけるPythonコンソールの下)にPythonスクリプトとして記録されます。従って、書きたいスクリプトの操作をBlenderで行えば、そのスクリプトを得ることができます。とても便利です。これを利用することによりスクリプト作成の高い敷居がとても低くなりました。


BlenderのScripting画面における情報パネル

4-2 オブジェクトのインポート・正置BlenderPythonスクリプトの意義

オブジェクト(例 貝層断面図)をBlenderにインポートして3D空間に正置させるBlenderPythonスクリプトを今回作成しました。このスクリプトとオブジェクトファイルがあれば、いつでもBlenderファイルを構築できます。従って、Blenderファイルを原簿とする必要がなくなります。有吉北貝塚北斜面貝層に関する学習活動では多数のBlenderファイルを作成してきていて、その管理が大変面倒になってきています。しかし今回のスクリプトとオブジェクトファイルがあればBlenderファイルを構築できることにより、原簿をオブジェクトファイルとすることができ、煩雑なBlenderファイル管理がなくなり、活動効率が向上します。

4-3 つかまり立ちレベル

自分のPython・BlenderPython学習レベルを幼児発達に例えると、ようやくつかまり立ちができるレベルに到達できたといううれしい状況です。まだヨチヨチ歩きは無理という感じですが、はやくそうなりたいです。



0 件のコメント:

コメントを投稿