見出し画像

【Blender Python】平面を配置する

今回は平面(Plane)を配置するコードを紹介します。

正直この程度の内容であれば記事にするまでもないのですが、大きさを変える部分でちょっと詰まったので書いておきます。

Blenderのバージョンは2.93.0 LTSです。

1. 基本的なコード

import numpy as np
import bpy


# 既存のメッシュオブジェクトを削除
for msh in bpy.data.meshes:
   bpy.data.meshes.remove(msh)

# 平面を追加
bpy.ops.mesh.primitive_plane_add(size=2, location=(0, 0, 0),
   rotation=(np.radians(30), np.radians(0), np.radians(0)))

2. 実行結果

画像1

x軸で傾いた平面が配置できましたね。

3. 平面の大きさを変える

正方形のまま平面の大きさを変えたい場合には、size オプションの値を変更します。

しかし、縦横の比率を変えたい場合にはこのやり方では対応できません。

公式ドキュメントで bpy.ops.mesh.primitive_plane_add の項目を確認すると、

画像2

scale オプションで縮尺を変えられると書かれています。

3. scale オプションを指定してみる

import numpy as np
import bpy


# 既存のメッシュオブジェクトを削除
for msh in bpy.data.meshes:
   bpy.data.meshes.remove(msh)

# 平面を追加
bpy.ops.mesh.primitive_plane_add(location=(0, 0, 0),
   rotation=(np.radians(30), np.radians(0), np.radians(0)),
   scale=(3.0, 2.0, 1.0))
my_plane = bpy.context.object
print(my_plane.scale)

実行ログ

画像3

実行ログを見ると scale が指定されているのが分かりますが、Layout 画面には先程と同じ大きさの平面が配置されます。

コードの最後で平面の大きさを出力しているのでそちらを確認すると、

System Console ウィンドウ

画像4

scale の値は全て 1 のままですね。

どうもバグっぽい気がします。
Blender 2.93.0 以外のバージョンでも同じ状況になるのかは未検証です。

4. 縦横の比率を変えたい場合

回避策として、平面オブジェクトを配置した後に scale の値を変更するやり方があります。

import numpy as np
import bpy


# 既存のメッシュオブジェクトを削除
for msh in bpy.data.meshes:
   bpy.data.meshes.remove(msh)

# 平面を追加
bpy.ops.mesh.primitive_plane_add(location=(0, 0, 0),
   rotation=(np.radians(30), np.radians(0), np.radians(0)))
my_plane = bpy.context.object

# 平面の大きさを変更
my_plane.scale = (3, 2, 1)
print(my_plane.scale)

Layout 画面

画像5

System Console ウィンドウ

画像6

ちゃんと指定した大きさの平面になりましたね。

まとめ

平面の配置のやり方を紹介しました。

別のバージョンだと挙動が変わる可能性もありますが、大きさの指定の仕方で困っている人の参考になれば嬉しいです。

この記事が気に入ったらサポートをしてみませんか?