未参照のイメージを削除 (スクリプト)

形状をインポートしたとき、
同一のマスターサーフェス名やマスターイメージがすでにシーンに存在している場合でも、上書きされずに同一のものが追加されます。
形状を外部のshdで編集して後からインポートして入れ替えたい場合は、
すでにシーンにあるマスターサーフェス/マスターイメージに上書きしてほしいところです。
これを行うには、インポート後に形状が参照しているマスターサーフェス/マスターイメージを割り当て直し、
シーンで参照されなくなったマスターサーフェス/マスターイメージを削除して整理します。

同じイメージをまとめる

スクリプトとして「同じ画像のイメージオブジェクトを統合」が用意されています。

使用されていないイメージを削除

使用されていないイメージやマスターサーフェスは、ブラウザ下のセパレータをドラッグして上に移動させると、
どのイメージまたはマスターサーフェスがどの形状を参照しているか見ることができます。
以下のスクリプトで、マスターイメージを取得しどこからも参照されていないものを削除します。


scene = xshade.scene()

# 階層をたどる再帰.
def getMasterImages (shape, masterImageA):
  if shape.type == 10:  # マスターイメージ.
    masterImageA.append(shape)

  if shape.has_son:
    s = shape.son
    while s.has_bro:
      s = s.bro
      getMasterImages(s, masterImageA)

# マスターイメージを取得.
rootShape = scene.shape  # ルート形状.
masterImageList = []
getMasterImages(rootShape, masterImageList)

# 未使用のマスターイメージを削除.
miCou = len(masterImageList)
for i in range(miCou):
   masterImage = masterImageList[i]
   # マスターイメージが参照されていない場合.
   if masterImage.is_master_image_being_used() == 0:
     masterImage.remove()  # マスターイメージを削除.

未参照のマスターサーフェスの削除については「未参照のマスターサーフェスを削除 (スクリプト)」をご参照くださいませ。

Translate »