Re: (質問) 選択物の リストを取る方法

投稿ツリー


このトピックの投稿一覧へ

通常 Re: (質問) 選択物の リストを取る方法

msg# 1.1.1.2.1.1.1.1.1
depth:
8
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015/1/28 18:35
もヂャ  新米   投稿数: 16
失礼致します。
頂点座標をグローバルで取得したくなって色々試しているのですが、どうにもうまく行かず、
頂点のグローバル位置を取得する方法をご存知の方がいれば、教えて頂けないかと思い、
また質問させて頂きに来ました。

今作っているスクリプトは、選択した頂点の始点と終点の距離を計測し、
終点(アクティブ)を中心にして、希望する長さにスケーリングする。というものです。

bpy.context.active_object.data.vertices[0].co
で取得できる頂点の位置情報は、
どうやらローカルらしく、スケールの値も反映していません。
このままでは モデルにスケールが入っていると正しく機能しないため、、
グローバルの値が どこかから参照できないかと、
メッシュのデータの中を覗いてみたのですが見つけられませんでした。

エディットモードの Nで表示されるトランスフォームで
選択物のグローバル値が表示できるのですが、
その値の参照方法がわからず、ひとまず そこからの取得は断念しました。

.select で verticesの選択状態を再生できるようになったので、
.indexの情報を使って、調べたいverticesだけを一時的に選択しておいて、
3Dカーソルを スナップさせてグローバルの値を取ろうとしたのですが、
選択の状態を元に戻す時、.select = True で選択状態に変えた場合、
「選択した」という扱いにはならないらしく、.select_history が消えたり、
アクティブになっていたverticesが解除されたりと、
今回の用途に使うためには、少し不都合がありました。

verticesのローカル位置と、active_objectの位置情報は取れているので、
ローカル位置をグローバルに変換してみようかと、情報を調べていたのですが、
今のところ、頭が付いて来なくなって躓いています。
<追記> (教えて頂いた.matrix_worldを使えばできました)


今、自分でできる範囲での解決方法として、
オブジェクトのコピーを作り、そちらで位置情報を取ってから
コピーを削除して戻ってくれば問題を回避できそうだと考えていたのですが、
テストしている最中 オブジェクトのコピーを作った場合、
それを削除をしてもメッシュデータが残る事に気が付き、
いくらリンクが無いデータはセーブされないとはいえ、
頂点の距離を調べるたびに 使わないメッシュデータが増えていくというのも気持ちが悪いので、
今は リンクしていないメッシュデータを掃除する方法が無いか、合わせて調べています。

<追記>
いらなくなったメッシュの削除方法が解りました。
bpy.data.meshes.remove(bpy.data.meshes['Cube.003'])
これでオブジェクトをコピーしてもゴミが残らないようにできるので
今回は、この方向で進めてみようと思います。
失礼致しました。
投票数:1 平均点:0.00

  条件検索へ


ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Buildbot(自動生成)


●開発関連
公式開発サイト
Blender開発blog
Blender Wiki