Python:コピーされたオブジェクトがアウトライナーに表示されない

Aug 22 2020

bpy.context.active_object.copy()新しいオブジェクトを使用してオブジェクトをコピーすると、Pythonシェルでオブジェクトを作成したときに表示されても、アウトライナーに表示されませんlist()

質問:

  1. オブジェクトをアウトライナーに表示するための2番目のステップはありますか?
  2. それとも、オブジェクトのデータをコピーするだけですか?(もしそうなら、どのような目的で?)
  3. コンパニオン関数、つまり、paste()やcut()はありませんか?(コマンドライン補完では何も生成されません。)

注:bpy.ops.object.duplicate()コピーせに表示アウトライナを、ので、これらの質問は、重複/作業コピーを作成する方法についてではありません。の目的を理解したいcopy()

回答

5 batFINGER Aug 22 2020 at 20:57

コレクションにリンクする

2.8より前では、コピーされたオブジェクトはシーンのオブジェクトコレクションにリンクする必要がありました。2.8以降の場合は、コレクションにリンクします。

コレクションがシーンにリンクされている場合、またはベースシーンコレクションである場合は、アウトライナーに表示されます。

複製演算子は、複製をコンテキストコレクションにリンクします。

import bpy
from bpy import context


ob = context.object.copy()
context.collection.objects.link(ob)

2.8でPythonを使用して新しいオブジェクトをシーンにリンクする