Blender UVマッピング(その2)

kuro-cube

前回exportしたaaa.png(ファイル名はkuro-cube.pngに変えました)をGimpで塗り絵しました。こんなのになりました(そのうちちゃんと作ろう・・・)。
bl-uv-gimp-picture

では塗り絵をした画像を使って、pythonでCubeへテクスチャマッピングしたいと思います。

Blender起動時からあるCubeを使いますが、UVマッピングするために、オブジェクトのEdge(辺)に切れ目を入れます。
bmesh.from_edit_mesh(bpy.context.object.data)
を使ってEdge(辺)をセレクトできます。

このように使います。
mesh=bmesh.from_edit_mesh(bpy.context.object.data)
mesh.edges[0].select = True

以下のようにCubeの各辺に、edges[0]〜edges[11]が割当たってるので、0,2,5,7,8,10,11番の辺を選択してmark_seam、unwrapすれば、画像がぴったり貼り付けられます。

bl-uv-edge-number

スクリプトです。

~$ cat -n kuro-cube.sh
     1	#!/bin/bash
     2	cat <<EOL>/tmp/tmp.py
     3	import bpy,os,math,bmesh
     4	bpy.data.worlds["World"].horizon_color=(0,0,0)
     5	bpy.data.materials['Material'].emit=1
     6	
     7	
     8	tex1 = bpy.data.textures.new('Tex1', type='IMAGE')
     9	fname=os.path.expanduser('~/kuro-cube.png')
    10	tex1.image = bpy.data.images.load(fname)
    11	bpy.data.materials['Material'].texture_slots[0].texture = tex1
    12	bpy.data.materials['Material'].texture_slots[0].texture_coords='UV'
    13	 
    14	bpy.ops.object.mode_set(mode='EDIT')
    15	mesh=bmesh.from_edit_mesh(bpy.context.object.data)
    16	
    17	mesh.edges[0].select = True
    18	mesh.edges[1].select = False
    19	mesh.edges[2].select = True
    20	mesh.edges[3].select = False
    21	mesh.edges[4].select = False
    22	mesh.edges[5].select = True
    23	mesh.edges[6].select = False
    24	mesh.edges[7].select = True
    25	mesh.edges[8].select = True
    26	mesh.edges[9].select = False
    27	mesh.edges[10].select = True
    28	mesh.edges[11].select = True
    29	
    30	bpy.context.scene.objects.active = bpy.context.scene.objects.active
    31	bpy.ops.mesh.mark_seam()
    32	bpy.ops.mesh.select_all(action='SELECT')
    33	bpy.ops.uv.unwrap()
    34	
    35	bpy.ops.transform.resize(value=(2,2,2))
    36	cube=bpy.data.objects['Cube']
    37	cube.rotation_mode='XYZ'
    38	cube.rotation_euler=(-math.pi/3, math.pi/2, math.pi/2)
    39	
    40	EOL
    41	blender -P /tmp/tmp.py

上記スクリプトを実行すると、Blenderが起動します。さらにF12を押せばレンダリングが始まって下のようなキューブが表示されます。

bl-uv-map
今回はBlenderを起動するスクリプトなので、レンダリングと画像保存は手動でしなければなりません。

コメント

タイトルとURLをコピーしました