2012年2月26日日曜日

blender - pixivで開催されたUnityのためのCGとか勉強会に行ってきました

pixivで開催されたUnityのためのCGとか勉強会(第4回)に行ってきました。

実はこの勉強会、第1回にも参加させていただいたのですが、そのときは会場は大久保のルノアールでした。
いつのまにか会場がpixivになっていて、ずっと参加したいなーと思っていたのですが、ついに参加できました。

さて、pixivは、色々と凄いところでした。
入り口、うわさには聞いていたピクシブたんチャリ!




そして大量の壁絵。



中も撮りわすれたのですが、色々と凄いです!色々と凄いです。
pixivさん最高です!


遅れて到着したため、みんなもくもくと作業をしていたので、ちょっと外れたところの人が少なめの席に行っ
たら、なんということでしょう、ピクシブさんの中の人な席でした。

とりあえずBlender2.62の新機能を試したりしていたのですが、やはりネットブックだと厳しい。
そして皆やはりMac率が高いっ!MBA!MBA!
色々PC環境の準備が足りてなくて駄目な感じだったので、途中から参加者とか中の人と話をする方向でうろうろしていました。twitterなどで気になっていた方にも無事会え、前会った方にも会え、有意義な時間を過ごせました。

がっ、全く成果が出なかったため帰宅後に1人反省会を兼ねてBlender。
2.6になってなかなか付いていけてないですが、shapeがマシになったとか、booleanが良くなったとか、remeshが付いたとか、cyclesとか凄いことになってるんで、そろそろ本気出さないとヤバイですね!
というわけで、本日の成果。
2.6になってpythonのapi覚えなおさないといけなくてめんどかったです。

shapekeyで参照元の頂点と位置が違う部分を選択するスクリプト



import bpy

context = bpy.context

if (context != None):
if (context.active_object != None):
object = bpy.context.active_object

bpy.ops.object.mode_set(mode='OBJECT')

verts = []

if (object.type == "MESH"):
vertices = object.data.vertices
for v in vertices:
v.select = False
verts.append(v)

if (object.active_shape_key != None):
shape_key = object.active_shape_key
base = shape_key.relative_key
for i, v in enumerate(shape_key.data):
if (v.co != base.data[i].co):
verts[i].select = True

bpy.ops.object.mode_set(mode='EDIT')


これは何かというと、↓シェイプキーを選択して実行すると、こんな感じにシェイプの参照元と位置が違う頂点を選択してくれます。


これはBlender2.49で作った駄目なシェイプキーなので、口のシェイプのつもりだったのですが、
このように要らないところが動いてしまっています。
さらにその後にベースのメッシュをいじってしまったので、もう大変です。

しかし、最近のBlenderには、wキーを押したときに、"Blend from shape"という機能が付きました。

ちょっと動いてしまったところに、これを適用すると…



このように、口の周り以外の余計に動いてしまった部分を元に戻せます。


昔DirectXに持っていくときに、この辺でなかなか死んだ記憶があります。
たしか、目と口をシェイプでつけていて、重くならないように動く頂点だけ抽出しようとしたのですが、動く部分だけ切り出したときに頂点が点在すると面にならないので、vertexgroupオプションでshapekeyの範囲を絞って頂点を切り出すのですが、vertexgroup範囲外の微妙に動いている頂点をなんとかしようとpropagateしたらもうグチャグチャです。まぁこの場合、切り出すのが一番難しかったんですが…

0 件のコメント: