Python:blenderオブジェクトの名前取得方法

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー



前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2016/6/28 15:07 | 最終変更
ytr  新米   投稿数: 3
はじめまして。

Blender上で 'Cube' オブジェクトを選択している状態だとして、
Python Console 上で以下のコードを実行しまして、
  1. >> C.object
  2. bpy.data.objects['Cube']
  3. >> str( C.object )
  4. '<bpy_struct, Object("Cube")>'

この2行目の表示を"bpy.data.objects['Cube']"という文字列として得ることはできるでしょうか?
builtin関数か何かがすでにあると思っているのですが。

modifier や constraint でも、その変数経路を示してくれて、
組む側に便利な形式なので、debug メッセージに使いたいです。

以下調べたこと。
・データブロックを網羅的に周って同じ文字列を組むことはできます。

・pythonインタプリンタに read-eval-printループ の print にあたる処理があると踏んで blender source の
release/scripts/modules/console_python.py
を眺めましたがそれらしいものを見つけられませんでした。(あまり読解できませんでした)

よろしくおねがいします。

環境:
blender v2.76
Python 3.4.2 (default, Nov 24 2014, 15:22:10)
Linux p2201503 3.13.0-77-generic #121-Ubuntu SMP Wed Jan 20 10:50:42 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2016/6/29 1:17
Shige  長老   投稿数: 305
名前だけ取得すればいいなら、

import bpy

obj = bpy.context.object
obj_name = obj.name

print(obj_name)

で、コンソールに選択したオブジェクトの名前が出ますけど、そういう意味ですか?(質問に質問で返すやつw)
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016/6/29 13:54 | 最終変更
ytr  新米   投稿数: 3
ありがとうございます。
ですが name プロパティではありません。

選択中の Plane オブジェクトが、
・Armature モディファイアだけを持っていて、
・Material をひとつだけ持っている
として
  1. >>> C.object
  2. bpy.data.objects['Plane']
  3. >>> C.object.modifiers[0]
  4. bpy.data.objects['Plane'].modifiers["Armature"]
  5. >>> C.object.material_slots[0].material
  6. bpy.data.materials['Material']
ここの 2, 4, 6行目の文字列、blender object を指す python 表現としてそのまま使える文字列として得たいです。
これが Console に出力されるのは、未評価でトップに object が流れた場合だけで、python 中で扱う方法が分かりません。

bpy.data.objects[*] と bpy.data.meshes[*] だけに対応すると以下のような実装です。
もっと簡単な方法や既存の関数があると思いまして、それの質問です。

ソースが上手く貼れないのでここに
http://pastebin.com/QxyKa87W
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016/6/29 15:56
Shige  長老   投稿数: 305
あ〜なるほど意味がわかりました。が、Blenderartist.orgあたりで尋ねた方が答えは早いかもしれませんね。お役に立てませんでm(_ _)m
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016/6/29 20:40 | 最終変更
ytr  新米   投稿数: 3
Shigeさん、お返事どうも。
自己解決しました。
blender というより python の機能でした。

>>> repr( C.object )
"bpy.data.objects['Plane']"
>>> repr( C.object.modifiers[0] )
"bpy.data.objects['Plane'].modifiers["Armature"]'
投票数:0 平均点:0.00

  条件検索へ


クイックリンク

2013/11/15版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- オープンプロジェクト
- 公式ストア

●マニュアルなど
公式マニュアル(途中)
JBDP2.5 Wiki
CGRad Project
Project-6B(6B計画)

●チュートリアルなど
公式チュート等
その他チュートリンク集
公式動画チュートリアル
Blender Cookie
Blenderで3DCG制作日記
BlenderVideos.com
Blender 3D: Noob to Pro
blenderguru

●日本語コミュニティ
Blender@2ch
BLUG.JP(FBページ)
(BLender User Group of JAPAN)

-旧BLUG.JP
-blugjpまとめ
ぶれんだちゃん*(ツイッター)

●実写合成(日本語)
CGCompo

●合成エフェクト(日本語)
tomo@web

●Cycles
Blender Cycles memo

●Freestyle(日本語)
公式マニュアル
使用例
スザンぬクラブ

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org
- フォーラム
- 記事検索
- New feature tests
- Model Repository

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Graphicall.org(非公式)
Buildbot(自動生成)

●開発関連
開発情報
開発ドキュメント
公式開発ブログ
Blender開発者サイト
- バグトラッカー
- 旧バグトラッカー(閲覧用)
- パッチトラッカー
- 旧パッチトラッカー(閲覧用)
SVNコミットログ

●GameBlender
公式マニュアル
専用API
バグトラッカーなど
旧バグトラッカー(閲覧用)
Bullet 物理演算ライブラリ

●外部レンダラ
YafRay
LuxRender 私家版資料
Mitsuba

●アドオン
公式スクリプトカタログ
BlenderArtists::python & plugins

●アドオン開発
最新 PythonAPI
Python Japan User's Group

●モデル&マテリアル
Blender Model Repository
Kator Legaz 3D Model
Blend Swap
blender-materials.org

●日本語化・翻訳サイト
Blender日本語化関連(blugjpまとめ)
日本語化の設定(2.4xのみ)

●2.4x用スクリプトとAPI
公式(日本語:下側参照)
L-System(2.5以降は同梱)
Python API リファレンス(2.4x用)

2.4x以前ではPythonフルセットが別途必要になることがあります。
旧Pythonバージョン

●2.4x用プラグイン(Python以外)
Blender Plugin Repository

ログイン

ユーザ名:

パスワード:



パスワード紛失