Help us understand the problem. What is going on with this article?

デフォルトキューブをz方向に1動かす (Python for Blender クックブック)

More than 1 year has passed since last update.

デフォルトキューブをz方向に1動かす

Pythonを使ってBlenderでできる事をまとめています。解説もあります。
はじめに
レシピ一覧

Pythonの難易度: ★☆☆☆☆

サンプルコード

例1

import bpy
obj = bpy.data.objects["Cube"]
obj.location.z = obj.location.z + 1

例2(Pythonの難易度: ★★★☆☆)

import bpy, mathutils
obj = bpy.data.objects["Cube"]
obj.location += mathutils.Vector((0,0,1))

上記サンプルコードを、Blender内蔵のテキストエディタに貼り付けた後、Alt-Pを実行してください。

その他、bpy.ops.transform.tranlateを使う方法もあります。

解説

bpy.data.objects["Cube"]

PythonからBlenderを使うにはbpyというライブラリを使います。
例えば、bpy.dataにはBlender内の様々な変数(オブジェクトのインスタンス)が格納されています。

例えば、オブジェクト一覧はbpy.data.objectsから、マテリアル一覧はbpy.data.materialsからアクセスできます。
この一覧の型はbpy.types.bpy_collectionsであり、この型は辞書とリストを合わせたようなものです。1
今回はCubeという名のオブジェクトにアクセスします。

obj.location

obj.locationは3次元ベクトルで、オブジェクトの位置を表します。
これのz座標を使うには.zを使ってください。

mathutils.Vector

PythonからBlenderを使うには基本的にbpyを使いますが、それ以外にもいくつかのライブラリがあります。
例えば、bmeshはメッシュを扱うための、mathutilsは数学を扱うためのライブラリです。

mathutils.Vectorはベクトルを扱うためのクラスであり、クラスのコンストラクタです。
したがって、mathutils.Vector((0,0,1))というのは(0,0,1)のベクトルを指します。

これらのベクトルは足し算が可能です。


  1. bpy.data.objectsの型がbpy_collectionsと説明しましたし、typeやisinstanceを使ってもその通りですが、実際にはbpy.types.BlendDataObjectsです。この辺りはどうやってるんだろう…… 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした