從Blender裡萃取模組資料(10)
前言
在先前的"從Blender裡萃取模組資料"系列文章中發現在萃取 Material 的時候沒有萃取對應的 Vertex ,也就是一個 Mesh 有多個 Material 時要如何萃取,在此做個紀錄。
內容
先看以下範例
import bpy
import bmesh
tagMesh = bpy.data.meshes["Cube"]
#Create bmesh from mesh
tagBMesh = bmesh.new()
tagBMesh.from_mesh(tagMesh)
#Start extract
matList = tagMesh.materials
for face in tagBMesh.faces:
#Start extract face data
print( 'material index:' , face.material_index )
print( 'material name:' , matList[ face.material_index ].name)
#Free bmesh...
tagBMesh.free()
要萃取 Vertex 所屬的Material 可以透過 bmesh 來取得,加上先前 從Blender裡萃取模組資料(1) 裡的範例搭配使用就可以簡單地取得。要注意的是取得的資料"material.index",這是一個整數型態,而非名稱,所以是有順序性的,這個索引對應的陣列,這個對應的陣列是"mesh.materials",也就是範例的"matList",透過這個陣列加上"face.material_index"就可以完整萃取到對應資訊。
參考資料
[ docs.blender.org ] Blender 2.92.0 Python API Documentation
沒有留言:
張貼留言