未参照のイメージを削除 (スクリプト)
形状をインポートしたとき、
同一のマスターサーフェス名やマスターイメージがすでにシーンに存在している場合でも、上書きされずに同一のものが追加されます。
形状を外部の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() # マスターイメージを削除.
未参照のマスターサーフェスの削除については「未参照のマスターサーフェスを削除 (スクリプト)」をご参照くださいませ。