0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Blender の初期状態における、 context, active, selected な object(s)

Last updated at Posted at 2024-12-19

Blender の初期状態

image.png

bpy.context

>>> bpy.context.object
bpy.data.objects['Cube']
>>> bpy.context.active_object
bpy.data.objects['Cube']
>>> bpy.context.selected_objects
[bpy.data.objects['Cube']]

これら(リストはその要素)は bpy.types.Objects のインスタンスである。

bpy.context.view_layer

>>> list(bpy.context.view_layer.objects)
[bpy.data.objects['Cube'], bpy.data.objects['Light'], bpy.data.objects['Camera']]
>>> bpy.context.view_layer.objects.active
bpy.data.objects['Cube']
>>> list(bpy.context.view_layer.objects.selected)
[bpy.data.objects['Cube']]

bpy.context.view_layerbpy.types.ViewLayer を継承する。bpy.types.ViewLayer.objectsbpy.types.LayerObjects を継承して、activeselected の属性を持つ。bpy.types.LayerObjects.activebpy.types.LayerObjects.selected はいづれも bpy.types.Object を継承する。

その他の object(s) 参照

bpy.context.scene
>>> list(bpy.context.scene.objects)
[bpy.data.objects['Cube'], bpy.data.objects['Light'], bpy.data.objects['Camera']]

bpy.context.scenebpy.types.Scene を継承する。bpy.context.scene.objectsbpy.types.SceneObjects を継承するが、特別な属性は無い。

bpy.context.collection
>>> list(bpy.context.collection.objects)
[bpy.data.objects['Cube'], bpy.data.objects['Light'], bpy.data.objects['Camera']]

bpy.context.collectionbpy.types.Collection を継承する。bpy.types.Collection.objectsbpy.types.CollectionObjects を継承する。

その他
>>> list(bpy.context.scene.collection.objects)
[]

selected objects

初期状態に対して、例えば、

>>> bpy.data.objects['Light'].select_set(True)

とすると、

>>> bpy.context.selected_objects
[bpy.data.objects['Cube'], bpy.data.objects['Light']]
>>> list(bpy.context.view_layer.objects.selected)
[bpy.data.objects['Cube'], bpy.data.objects['Light']]

となる。active object や、context object は元のままである。
ちなみに、

>>> bpy.data.objects['Light'].hide_set(True)

とすると、selected が False になる。

>>> bpy.context.selected_objects
[bpy.data.objects['Cube']]
>>> list(bpy.context.view_layer.objects.selected)
[bpy.data.objects['Cube']]

active object と context object

bpy.types.Object に active 状態を操作する属性は無い。
初期状態に対して、

>>> bpy.data.objects['Cube'].select_set(False)

としても、

>>> bpy.data.objects['Cube'].hide_set(True)

としても、active object と context object は変わらない。

>>> bpy.context.active_object
bpy.data.objects['Cube']
>>> bpy.context.view_layer.objects.active
bpy.data.objects['Cube']
>>> bpy.context.object
bpy.data.objects['Cube']

このとき、active かつ context object であるが、selected object ではなくなる。

>>> bpy.context.selected_objects
[]
>>> list(bpy.context.view_layer.objects.selected)
[]

active object を指定するには、

>>> bpy.context.view_layer.objects.active = bpy.data.objects['Light']
>>> bpy.context.view_layer.objects.active = None

などとする。active になっても、selected にはならない。
私が考える限りでは、active object と context object は同じである。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?