2009年6月8日月曜日

blender - 内蔵テクスチャをpythonでパクる(2)

新規起動→F6→適当にInternalTexture選ぶ→実行→UV/ImageEditorを見る

http://patsuko.net/internalimage.txt


ちょっと詰まったのは、Blender.Image.Newにdepth=8入れても32ビットのバッファが確保されてるような気がするところ。諦めて32ビットにグレースケールぶち込んで解決。




import Blender

# export settings ------------------------------------

# glay_scale -> 8, color -> 32
IMAGE_DEPTH = 8

#detail
GENERATE_DEPTH = 2

TEXTURE_NAME = "internal_texture"
WIDTH = 512
HEIGHT = 512

#------------------------------------------------------

def write_texture_to_image(image, tex, w, h, image_depth, generate_depth):
image.makeCurrent()
dep = generate_depth
for y in range(h):
for x in range(w):
xyz = (1-x/float(w)*dep, 1-y/float(h)*dep, 0)
pixel = tex.evaluate(xyz)
if (image_depth==8):
pixel[0] = pixel[1] = pixel[2] = pixel[3]
image.setPixelF(w-x-1,h-y-1,pixel)

textures = Blender.Texture.Get()
if len(textures) and textures[0].users:
image = Blender.Image.New(TEXTURE_NAME, WIDTH, HEIGHT, 32)
write_texture_to_image(image, textures[0], WIDTH, HEIGHT, IMAGE_DEPTH, GENERATE_DEPTH)

0 件のコメント: