« C4D Python R12 テスト:ポイントを円形に配置して円形スプライン作ってみる。 | トップページ | C4D Python R12 テスト:メッセージダイアログを試してみた。 »

C4D Python R12 テスト:ベジエタイプのスプラインオブジェクトを生成して、ハンドルの設定もしてみる。

ベジエタイプのスプラインオブジェクトのハンドルの設定をしてみる。

Python
"""
スプラインオブジェクトの生成とハンドルの設定
2011.3.14
"""

import c4d


def CreateSplineObject():
    obj = c4d.BaseObject(c4d.Ospline) #スプラインオブジェクトのアロケート
    obj.ResizeObject(4) #ポイント数の設定。

    #ポイントの作成
    obj.SetPoint(0, c4d.Vector( 300.0, 0.0,    0.0))
    obj.SetPoint(1, c4d.Vector(   0.0, 0.0,  200.0))
    obj.SetPoint(2, c4d.Vector(-300.0, 0.0,    0.0))
    obj.SetPoint(3, c4d.Vector(   0.0, 0.0, -200.0))
   
    #スプラインを閉じる
    obj[c4d.SPLINEOBJECT_CLOSED] = True
   
    #スプラインタイプ:ベジエ
    obj[c4d.SPLINEOBJECT_TYPE] = c4d.SPLINETYPE_BEZIER
   
    #ハンドルの設定
    #SplineObject.SetTanjent(ポイント番号, 左ハンドル(入り側), 右ハンドル(出側))

    obj.SetTangent(0, c4d.Vector(   0.0),             c4d.Vector(   0.0))
    obj.SetTangent(1, c4d.Vector( 200.0, 0.0, 100.0), c4d.Vector(-200.0, 0.0, 200.0))
    obj.SetTangent(2, c4d.Vector(   0.0),             c4d.Vector(   0.0))
    obj.SetTangent(3, c4d.Vector(-400.0, 0.0,-100.0), c4d.Vector( 400.0, 0.0,-300.0))
   
    #オブジェクトの更新
    obj.Message(c4d.MSG_UPDATE)
    return obj



def main():
    slinobj = CreateSplineObject()
   
    #シーンに追加
    doc.InsertObject(slinobj, None, None, True)
   
    c4d.EventAdd()



if __name__=='__main__':
    main()

Circlespline_07_2

ハンドルの設定は…

SplineObject.SetTangent(id, L_vec, R_vec)

ポイント番号、左側のハンドル(ポイントに曲線が入ってくる側)、右側のハンドル(曲線が出て行く側)の順番です。
ハンドルは、ポイントからのベクトルで設定します。
長さが0.0のベクトルを設定するとハンドルがなくなります。

ところで…
C4D Python SDK Documentは、世界的に不評のようだ…

|

« C4D Python R12 テスト:ポイントを円形に配置して円形スプライン作ってみる。 | トップページ | C4D Python R12 テスト:メッセージダイアログを試してみた。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« C4D Python R12 テスト:ポイントを円形に配置して円形スプライン作ってみる。 | トップページ | C4D Python R12 テスト:メッセージダイアログを試してみた。 »