MRが楽しい

MRやVRについて学習したことを書き残す

Blender 2.8のPython APIドキュメントを少しずつ読み解く リファレンスAPIの使用法 その3

本日は Blender2.8 の調査枠です。
今回から Blender 2.8 の Python API ドキュメントを少しずつ読みつつ試していきます。

Blender 2.8 Python API Documentation

以下のページを日本語訳しつつ実際に試して記事を進めていきます。
docs.blender.org
docs.blender.org

今日は「ReferenceAPIの使用法」の間接データアクセスです。
f:id:bluebirdofoz:20190925090618j:plain

間接データアクセス

この例では、より複雑なものを調べて、アクティブなスカルプトブラシテクスチャにアクセスする手順を示します。
例えば、Pythonを介してブラシのテクスチャにアクセスして、contrast (コントラスト)を調整する場合を考えてみましょう。

1.デフォルトのシーンで開始し、[3Dビュー]のヘッダーから「スカルプト」モードを有効にします。
f:id:bluebirdofoz:20190925090630j:plain
2.プロパティウィンドウから[テクスチャ]タブを開き、[新規]ボタンで新しいテクスチャを追加します。
f:id:bluebirdofoz:20190925090639j:plain
3.[画像]パネルの[開く]ボタンからテクスチャを読み込みます。
f:id:bluebirdofoz:20190925090648j:plain
4.[色]パネルを展開して、[コントラスト]ボタンを見つけます。
f:id:bluebirdofoz:20190925090659j:plain
5.[コントラスト]ボタンを右クリックし、オンラインPythonリファレンスを選択します。
これは bpy.types.Texture.contrast に移動します。
f:id:bluebirdofoz:20190925090713j:plain
6.contrast がテクスチャのプロパティであることがわかります。
次に、ブラシからテクスチャにアクセスする方法を確認します。
f:id:bluebirdofoz:20190925090723j:plain
7.bpy.types.Texture.contrast のページの下部にある参照を確認してください。
多くの参照が存在する場合があり、適切な参照を見つけるために推測作業が必要になる場合があります。
この場合は Brush.texture です。これでテクスチャにアクセスできることがわかりました。
通常は bpy.data.brushes["BrushName"].texture の名前でアクセスしたくないので、アクティブなブラシにアクセスします。
f:id:bluebirdofoz:20190925090749j:plain
8.次のステップは、 Brush.texture リファレンスを介してブラシにアクセスする場所を確認することです。
この場合、必要なものは bpy.context.brush だけです。
f:id:bluebirdofoz:20190925090732j:plain
※ Blender2.8 では bpy.context.brush がアクセスできないため、bpy.context.tool_settings.sculpt.brush を使用します。

これで、ブラシテクスチャのコントラストにアクセスするために必要なネストされたプロパティを形成できるようになりました。

Context -> Brush -> Texture -> Contrast

Pythonコンソールでデータパスを作成できます。

bpy.context.tool_settings.sculpt.brush.texture.contrast

f:id:bluebirdofoz:20190925090811j:plain

または、ブラシに直接アクセスする方法を以下に示します。

bpy.data.brushes["SculptDraw"].texture.contrast

"SculptDraw"の部分は使用中のブラシ名に合わせて変更します。
f:id:bluebirdofoz:20190925090820j:plain

ユーザーツールを作成している場合、通常、ユーザーが選択したものに基づいてツールを操作することを期待するため、bpy.context を使用します。
自動化の場合、ユーザーが現在設定しているビューに関係なく、特定のデータにアクセスして操作できるようにするため、bpy.data を使用する可能性が高くなります。
bluebirdofoz.hatenablog.com