2012年2月29日水曜日

blender - 2.6 - pythonで面の面積(2)

前回で面積が出せました。

面積が分かると色々できますね!

とりあえず小さい順にソートして、小さいほうから選択してみると何か分かるかもしれませんね。

試しにミクさんの顔の面を、面積を小さいほうから150個くらい選択してみましょう


import bpy

context = bpy.context
context.tool_settings.mesh_select_mode = [True, False, False]

N = 150

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

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

area_dict = {}

if (object.type == "MESH"):
faces = object.data.faces
vertices = object.data.vertices
for f in faces:
area_dict[f] = f.area

count = 0
for f, area in sorted(area_dict.items(), key=lambda x:x[1]):
if count < N:
for vi in f.vertices:
vertices[vi].select = True
count += 1

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


途中、見かけないlambdaというやつがありますが、ぶっちゃけよく分かりません。
ソートするにはでググって出てきたのをそのまま使った程度です。

そして結果!


おお!おおおおお!これは何か分かりそうですね!(続く)

0 件のコメント: