通過点を指定して曲線を描く
==暫定版==
通過点を直接指定して曲線を描く方法が判らないので、 Bezier 曲線の機能を使って無理矢理描く。たぶんもっとうまい方法があるはず?
import math #### Define some functions #### def pbez(v): return BezTriple.New(v.x, v.y, v.z, v.x, v.y, v.z, v.x, v.y, v.z) def passcurve(plist): cu = Curve.New() cu.appendNurb(pbez(plist[0])) cu_nurb = cu[0] for p in plist[1:]: cu_nurb.append(pbez(p)) cu.flag = 1 cu.bevresol = 6 scn = Scene.GetCurrent() ob = scn.objects.new(cu) return ob #### Set passing points (a list of 3D points)#### plist = [] for t in range(300): p = Vector(t*0.01, math.sin(t*0.1), math.cos(t*0.1)) plist.append(v) ob = passcurve(plist)
曲線(Curve)の詳細はこちら→ Module Curve
これで太さ 0 (?)の曲線が出来る(けどレンダリングしても見えない)。太さを変えるには曲線を選択した上で「Editing」パネル−「Curve and Surface」の Bevel Depth の値を変更する*1。
更に「Edit Mode」にして「Curve Tools」から Convert「Poly」にすると object が軽くなってレンダリングが速くなる(たぶん)。
もうちょっと遊んでみる。(Lorenz attactor)