ポリゴンメッシュにスキンが割り当てられているか確認

ポリゴンメッシュにスキンが割り当てられているか確認するには、
ブラウザでポリゴンメッシュ形状を選択し、スキンウィンドウを表示します。

スキンが割り当てられていない場合は、以下のようにスキンの頂点ウエイトのテーブルが表示されません。

スキンが割り当てられている場合は、以下のようにスキンの頂点ウエイトのテーブルが表示されます。

スクリプトを使い、どのポリゴンメッシュでスキン情報を持つか列挙

ポリゴンメッシュにスキンが割り当てられているかどうかは一度スキンウィンドウを見ないと分かりませんが、
スクリプトで確認することができます。


scene = xshade.scene()

# スキンを持つポリゴンメッシュを格納.
def getPolygonmeshesWithSkin (shape, polygonmeshList):
  if shape.type == 7:  # ポリゴンメッシュの場合.
    if shape.skin_type >= 0:  # スキンを持つ場合.
      polygonmeshList.append(shape)

  if shape.has_son:
    s = shape.son
    while s.has_bro:
      s = s.bro
      getPolygonmeshesWithSkin(s, polygonmeshList)

# 形状のブラウザ上のパスを取得.
def getShapePath (shape):
  pathStr = shape.name

  s = shape
  while s.has_dad:
    s = s.dad
    pathStr = s.name + "/" + pathStr

  return pathStr

# shapeから階層構造をたどってスキンを持つポリゴンメッシュのみ格納.
rootShape = scene.shape  # ルート形状.
polygonmeshList = []
getPolygonmeshesWithSkin(rootShape, polygonmeshList)

# 形状名を列挙.
for shape in polygonmeshList:
  shapeName = getShapePath(shape)
  print shapeName

上記を実行すると、シーン内でスキンが割り当てられているポリゴンメッシュを列挙します。
「shape.skin_type」が0の場合はクラシックのスキン割り当て、1の場合は頂点ブレンドのスキン割り当てになります。
-1の場合はスキン情報を持ちません。

Translate »