2021年3月23日 星期二

從Blender裡萃取模組資料(10)

 從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


相關文章

從Blender裡萃取模組資料(9)

沒有留言:

張貼留言