Blenderで芳香環に面を張るやつ
こんなやつです。
手作業でやると思いのほかめんどくさかったので、少し楽にしようとしました。
方針としては、
・手作業で原子を選択する
・選択されている原子の中心座標を頂点として面を生成する
・ついでにマテリアルも設定しておく
という感じです。
以下スクリプトです。
import bpy
name = "plane"
color = (0,0.7,0.95,1)
emit = 15
ma = bpy.data.materials.new(name)
ma.use_nodes = True
bsdf = ma.node_tree.nodes["Principled BSDF"]
bsdf.inputs[0].default_value = color
bsdf.inputs[4].default_value = 0.2
bsdf.inputs[7].default_value = 0.3
bsdf.inputs[18].default_value = emit
ma.diffuse_color = color
if(len(bpy.context.selected_objects))>2:
verts=[]
face=[]
idx=0
for o in bpy.context.selected_objects:
verts.append(o.location)
face.append(idx)
idx+=1
o.select_set(False)
faces=[face]
mesh = bpy.data.meshes.new(name)
obj = bpy.data.objects.new(name,mesh)
bpy.context.collection.objects.link(obj)
mesh.from_pydata(verts,[],faces)
mesh.update
bpy.context.view_layer.objects.active = obj
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.convex_hull()
bpy.ops.object.mode_set(mode='OBJECT')
obj.data.materials.append(ma)
else:
print("Err: Select more than 3 objects.")
使い方ですが、
面を張る領域を選択してスクリプトを実行してください。
原子を選択するのは意外とめんどくさいので、結合ごとまとめて選択してしまうのが楽だと思います。
これを目的の面すべてに対して実行してください。(中心座標を頂点にしているだけなので、一度にやろうとすると面がはみ出ます)
なお、マテリアルは面ごとに生成されますので、一括で編集したい場合には対象の面をまとめて選択してCtrl+L>マテリアルを選んでください。
何か改善点などあれば教えていただけると嬉しいです。
関連記事
Blenderで読み込んだ分子モデルにマテリアルを自動設定したかったパワポに直接挿入可能な3D分子モデルを作る





コメント
コメントを投稿