問:在攪拌機2.64,我在與選定的一些頂點編輯模式的網格。如何在Python腳本中獲取或生成選定頂點的索引列表?攪拌機腳本:選中的頂點的指數
我找到了攪拌機的Python API參考完全混亂的導航,而谷歌大多指向過時的API。對於Blender腳本專業人員來說,這很有希望。
該指數應與網格的OBJ導出頂點索引一致。我想編寫一個腳本在文本文件中導出頂點索引,以便在C++程序中訪問這些頂點。
問:在攪拌機2.64,我在與選定的一些頂點編輯模式的網格。如何在Python腳本中獲取或生成選定頂點的索引列表?攪拌機腳本:選中的頂點的指數
我找到了攪拌機的Python API參考完全混亂的導航,而谷歌大多指向過時的API。對於Blender腳本專業人員來說,這很有希望。
該指數應與網格的OBJ導出頂點索引一致。我想編寫一個腳本在文本文件中導出頂點索引,以便在C++程序中訪問這些頂點。
您的代碼只有當你切換你執行它之前反對模式可靠地工作。原因是,在編輯模式下,網格數據不與來自對象模式的網格同步。這是在切換回對象模式時完成的。您可以通過切換到編輯模式驗證這一點,請從你的對象一些頂點,執行你的代碼,然後選擇不同的頂點(仍然在編輯模式下),然後再次運行你的腳本。您會注意到您的Python控制檯中的所選頂點列表不會更改。此行爲isdocumented。爲了獲得在編輯模式下選擇的頂點下面的代碼可以作爲第一指針(與2.66.5 r56033測試):
import bpy
import bmesh
obj=bpy.context.object
if obj.mode == 'EDIT':
bm=bmesh.from_edit_mesh(obj.data)
for v in bm.verts:
if v.select:
print(v.co)
else:
print("Object is not in edit mode.")
選擇/取消節點和執行腳本看到頂點改變。
基於@hochl和@DCS,在編輯模式下,在Python控制檯運行下面的行:
import bmesh; [i.index for i in bmesh.from_edit_mesh(bpy.context.active_object.data).verts if i.select]
*攪拌機版2.70(2.70,2014-APR-10)
輸出類似於<矢量(1.0000,1.0000,-1.0000)> – Nianliang
我需要用「v.index」而不是「v.co」來獲得指標。 – Nianliang