Blenderによるモデリングの際、頂点を任意の関数に従って配置したいと思ったことはありますか?
このような作業は、手作業ではかなり困難となることが予想されますが、これを自動的に実行する手法があります
それは、Pythonによるプログラミングです
実は、BlenderではPythonを用いることが標準機能として可能となっています
そこで今回は、このプログラミングという手法を利用し、任意の関数に従って頂点をプロットする方法をお解説します
必要な操作
スクリプトを書く前に、わずかな手作業があります
これは上図に示した通り、①Scriptingタブを選択することと、②その下の「+New」を選択し、テキストデータブロックを新規作成することです
生じたテキストデータブロックには、本ページ下部に示されているスクリプトを記します
このスクリプトの実行は、再生ボタンをクリックすることで可能です
また、このスクリプト中で定義しているx_co, y_co, z_coという変数を新しく定義することで、任意の関数を描き出すことができます!
スクリプトの内容については、本動画において詳細に解説しておりますので、気になる方はぜひご覧ください
スクリプト
import bpy
import math
bpy.ops.mesh.primitive_vert_add()
for i in range(0,1000):
x_co = i/50*math.pi #EDIT
y_co = 0 #EDIT
z_co = math.sin(i/50*math.pi) #EDIT
#g key
bpy.ops.transform.translate(value=(x_co, y_co, z_co),
orient_axis_ortho='X', orient_type='GLOBAL',
orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)),
orient_matrix_type='GLOBAL',
constraint_axis=(True, False, False),
mirror=True, use_proportional_edit=False,
proportional_edit_falloff='SMOOTH',
proportional_size=1, use_proportional_connected=False,
use_proportional_projected=False)
#e key
bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"use_normal_flip":False,
"use_dissolve_ortho_edges":False, "mirror":False},
TRANSFORM_OT_translate={"value":(-x_co, -y_co, -z_co),
"orient_axis_ortho":'X', "orient_type":'GLOBAL',
"orient_matrix":((1, 0, 0), (0, 1, 0), (0, 0, 1)),
"orient_matrix_type":'GLOBAL',
"constraint_axis":(False, False, False),
"mirror":False, "use_proportional_edit":False,
"proportional_edit_falloff":'SMOOTH',
"proportional_size":1,
"use_proportional_connected":False,
"use_proportional_projected":False,
"snap":False, "snap_target":'CLOSEST',
"snap_point":(0, 0, 0), "snap_align":False,
"snap_normal":(0, 0, 0), "gpencil_strokes":False,
"cursor_transform":False, "texture_space":False,
"remove_on_cancel":False, "view2d_edge_pan":False,
"release_confirm":False, "use_accurate":False,
"use_automerge_and_split":False})
bpy.ops.transform.translate(value=(x_co, y_co, z_co),
orient_axis_ortho='X', orient_type='GLOBAL',
orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)),
orient_matrix_type='GLOBAL',
constraint_axis=(True, False, False),
mirror=True, use_proportional_edit=False,
proportional_edit_falloff='SMOOTH',
proportional_size=1, use_proportional_connected=False,
use_proportional_projected=False)
コメントを残す
コメントを投稿するにはログインしてください。