« 夏だからだろうか? C4Dと…水とか川とか海で検索している人がいるね… | トップページ | C4D Python R12 テスト:SendModelingCommand()スプライン投影 »

C4D Python R12 テスト:ポリゴンオブジェクトのポイントを削減する?

今回は、ごめん…
ふざけた記事なので、片目で読んでね…

「ポリゴンを削減」でも良いのかな…

ポリゴンオブジェクトのポイントを削減する…

面倒なので、「ポリゴンリダクション」デフォーマを使うのだ。

Point_reduction_01

c4d.CallCommand(1001253)

ついでに「現在の状態をオブジェクト化」も使うのだ…

Point_reduction_02

c4d.CallCommand(12233)

もうここまで来たら、ネタはミエミエだよね…
C4D Pythonでなくても、C.O.F.F.E.E.でも良いのではないだろうか…

Point_reduction_03_2

こんな作業をC4D Pythonを使ってクリック一つで実行させてみよう。

上の方でCallCommand()を書きましたが、CallCommand()は使いません。

Python
'''
ポリゴンオブジェクトのポイントを削減
'''


import c4d
from c4d import utils


def main():
    if not isinstance(op, c4d.PolygonObject):return #ポリゴンオブジェクトでなければ終了

    #ポリリダクションの作成と適用
    polyreduction_obj = c4d.BaseObject(c4d.Opolyreduction)
    polyreduction_obj[c4d.POLYREDUCTIONOBJECT_STRENGTH] = 0.9
    polyreduction_obj.InsertUnder(op)

    #現在の状態をオブジェクト化の適用
    bc = c4d.BaseContainer()
    obj = utils.SendModelingCommand(c4d.MCOMMAND_CURRENTSTATETOOBJECT, [op], c4d.MODIFY_ALL, bc, doc)

    #現在の状態をオブジェクト化の適用オブジェクトのシーンへの追加
    if obj[0]:
        obj[0].SetName(obj[0].GetName() + '_削減')
        obj[0].InsertAfter(op)
    else:return
   
    polyreduction_obj.Remove() #ポリリダクションの削除

    #エディタでの表示/レンダリングでの表示の設定
    op[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR] = c4d.OBJECT_OFF
    op[c4d.ID_BASEOBJECT_VISIBILITY_RENDER] = c4d.OBJECT_OFF
    # 表示 : c4d.OBJECT_ON
    #非表示: c4d.OBJECT_OFF
    # 従う : c4d.OBJECT_UNDEF


if __name__=='__main__':
    main()
    c4d.EventAdd()

スクリプトは、上のアニメーションと同じ流れです。

「ポリリダクション」のポリゴンの削減率は、デフォルトと同じ90%にしてみました。

Point_reduction_04

実行後、追加されたオブジェクトの名前に「_削減」が付けられます。

Point_reduction_05_2

Undoは、ありませんので注意してください。

|

« 夏だからだろうか? C4Dと…水とか川とか海で検索している人がいるね… | トップページ | C4D Python R12 テスト:SendModelingCommand()スプライン投影 »

コメント

コメントを書く



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




« 夏だからだろうか? C4Dと…水とか川とか海で検索している人がいるね… | トップページ | C4D Python R12 テスト:SendModelingCommand()スプライン投影 »