テクスチャイメージをRGBA要素別に分解(Unpack) (スクリプト)

テクスチャイメージをRGBA要素別に分解(Unpack)するスクリプトです。


scene = xshade.scene()

# ----------------------------------------------------------.
# Unpack : 指定のテクスチャ(マスターイメージ)をRGBAに分解.
# @param[in] masterImage  masterImageクラス.
# ----------------------------------------------------------.
def unpackImageToRGBA (masterImage):
    # マスターイメージではない場合.
    if masterImage == None or masterImage.type != 10:
        return
    
    if masterImage.image == None or masterImage.image.has_image == False:
        return

    width  = masterImage.image.size[0]
    height = masterImage.image.size[1]

    scene.begin_creating()

    nameV = ['R', 'G', 'B', 'A']
    for loop in range(4):
        name = nameV[loop] + '_' + masterImage.name
        newMImage = scene.create_master_image(name)
        newMImage.image = xshade.create_image((width, height))

        for y in range(height):
            for x in range(width):
                col  = masterImage.image.get_pixel_rgba(x, y)
                fV   = col[loop]
                col2 = [fV, fV, fV, 1.0]
                newMImage.image.set_pixel_rgba(x, y, col2)

    scene.end_creating()


# -------------------------------------------------.

# 選択形状がマスターイメージの場合にUnpackする.
activeShapesList = []
for shape in scene.active_shapes:
    activeShapesList.append(shape)

for shape in activeShapesList:
    if shape.type == 10:        # マスターイメージの場合.
        unpackImageToRGBA(shape)

ブラウザでマスターイメージを選択して上記のスクリプトを実行すると、
「R_マスターイメージ名」にRed要素、
「G_マスターイメージ名」にGreen要素、
「B_マスターイメージ名」にBlue要素、
「A_マスターイメージ名」にAlpha要素、
のマスターイメージに分解されます。

逆の操作を行うPack処理は「RGBA要素別のテクスチャイメージを1枚に結合 (Pack)」をご参照くださいませ。

Translate »