BlenderPythonの基本(2) linkする
Blenderの各種データは、 Data API (ID?) という形で保存されています。
CurrentFile (.blend) 以下がこのようになっていて、これらのデータは
bpy_strunct - ID を継承したクラスによって管理されています。
このデータは、データどうしを「リンク」することで、親子関係やどれに何が属しているかなどをコントロールしているようです。
たとえばSceneの場合。
https://docs.blender.org/api/current/bpy.types.Scene.html#bpy.types.Scene
Sceneも、IDを継承したSceneクラスから扱います。
1 |
|
なので、 bpy.data から取得可能です。
1 2 3 |
|
1 2 3 |
|
必要な情報もここから取得します。
シーンに対してオブジェクト等を追加¶
例えば、シーンに対してCollectionを追加したい場合。
この場合は、DataAPI側にCollectionを作成し、作成したCollectionをSceneに対してリンクする必要があります。
1 2 |
|
Operatorを使用してCollectionを作成するとDataAPIにCollectionが追加されます。
1 2 |
|
その追加したCollectionを指定のSceneに追加する場合は、
このように、SceneのCollectionの子供にCollectionを「リンク」します。
さらに子どもにCollectionを追加¶
1 2 3 |
|
さらに子供にCollectionを追加する場合なども同様です。
追加したい親Collectionに対してリンクすれば、同様に親子化をつくることができます。
Objectの場合(追加、削除、取得)¶
1 2 |
|
オブジェクトの場合も、基本の考え方は同じです。
追加したいCollectionのobjects に対して、追加したいObjectを「リンク」します。
1 |
|
1 |
|
オブジェクトを取得したい場合は、このようにします。
1 2 |
|
削除したい場合は、unlinkでOKです。
まとめ¶
各Dataは、IDから継承されたクラスでアクセスが可能。
そして、それぞれを接続したい場合は、どのDataも link / unlink すれば構築することができます。