Open1

blenderのscriptingで閉曲線を作る

黒狐黒狐

blender2.9のscriptingで閉曲線を作るのメモ
初めにデフォルトのカーブを作り、編集に移動してからカーブを消す。そして頂点を用意しつなげていく。最後に全選択したうえで頭とおしりをつなげてオブジェクトモードに戻したら完成。

import bpy
from math import pi, cos, sin

def main():

  # 最初に、プリミティブを作って編集に行ってそれ削除して、ってのを追加
  bpy.ops.curve.primitive_bezier_curve_add()
  bpy.ops.object.editmode_toggle()
  bpy.ops.curve.delete(type='VERT')

  # ここからがメインスクリプト
  for i in range(0,40):
    t = 2 * pi * i / 40
    x = 4 * cos(t)
    y = 3 * sin(t)
    z = t / 2
    bpy.ops.curve.vertex_add(location = (x, y, z))
  # カーブが作れたらすべての頂点を選択する
  bpy.ops.curve.select_all(action='SELECT')

  # なるほど、これで頭とおしりがくっつくわけね。
  # 日本語使えるんかな・・貼り付けるしかなさそう。
  # https://docs.blender.org/api/current/bpy.ops.curve.html#bpy.ops.curve.select_all
  # https://docs.blender.org/api/current/bpy.ops.curve.html#bpy.ops.curve.make_segment

  bpy.ops.curve.make_segment()
  # 作成し終わったら選択解除
  bpy.ops.curve.select_all(action='DESELECT')
  # オブジェクトモードに戻す
  bpy.ops.object.editmode_toggle()

if __name__ == "__main__":
  main()

複数の曲線を作る場合もデフォルトの用意からやり直せば、一つのスクリプトで複数の曲線を生成出来る。