スポンサーリンク

Blender bpy で各データへアクセス

調査中のメモです。

1.現在アクティブなオブジェクトへアクセス

import bpy;
print ( bpy.context.active_object )
オブジェクトが一つだけ選択されているとき

bpy_tda_01_activeobject01

結果出力

<bpy_struct, Object("Cube")>
オブジェクトが複数選択されているとき

bpy_tda_01_activeobject02

結果出力

<bpy_struct, Object("Torus")>

「アクティブなオブジェクト」というのはオレンジ色で強調されているもののことで、複数選択されているときも、アクティブなオブジェクトは一つだけです。


2.現在選択中のオブジェクトへアクセス

bpy_tda_01_activeobject02

2.1 選択中のオブジェクトを列挙

import bpy;
print ( bpy.context.selected_objects )

結果出力

[bpy.data.objects['Torus'], bpy.data.objects['Cube']]

2.2 選択中のオブジェクトの個数を取得

import bpy;
print ( len(bpy.context.selected_objects) )

結果出力

2

3.オブジェクトの頂点へアクセス

bpy_tda_02_vertices01

3.1 オブジェクトの頂点の個数を取得

import bpy;
print( len(bpy.context.active_object.data.vertices) )

結果出力

8

3.2 オブジェクトの頂点の座標を取得

import bpy;
print( bpy.context.active_object.data.vertices[0].co )

結果出力

<Vector (1.0000, 1.0000, -1.0000)>
 

3.3 オブジェクトの頂点の座標を設定

import bpy
bpy.context.active_object.data.vertices[ 0 ].co = [0.0,0.0,0.0]

実行結果

bpy_tda_03_vertices02


4.オブジェクトのエッジへアクセス

bpy_tda_02_vertices01

4.1 オブジェクトのエッジの個数を取得

import bpy;
print( len(bpy.context.active_object.data.edges) )

結果出力

12

4.2 あるエッジを構成する頂点のインデクスを取得

import bpy;
print( "vtx1 : " , bpy.context.active_object.data.edges[1].vertices[0] )
print( "vtx2 : " , bpy.context.active_object.data.edges[1].vertices[1] )

結果出力

vtx1 : 0
vtx2 : 3

4.3 あるエッジを構成する頂点のインデクスから各座標を取得する

import bpy;
print( "vtx1 : " , 
   bpy.context.active_object.data.vertices[
    bpy.context.active_object.data.edges[1].vertices[0] ].co 
)
print( "vtx2 : " , 
   bpy.context.active_object.data.vertices[
    bpy.context.active_object.data.edges[1].vertices[1] ].co
)

結果出力

vtx1 : <Vector (1.0000, 1.0000, -1.0000)>
vtx2 : <Vector (-1.0000, 1.0000, -1.0000)>

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: