icrdr吧 关注:11,756贴子:289,741

【DW】原创-Fastscene快速创建场景脚本

只看楼主收藏回复

这几天国庆放假,写了几个小脚本,现在还是半成品
这几个脚本主要针对的是搞渲染搞得多的那些人。。对他们来说这几个脚本可能会有用
脚本的作用就是快速创建那些平时常用的场景


第一个是一键创建三点光源
第二个是调整全局的照明亮度(全局照明增强)
第三个是创建白色背景
第四个是创建HDR场景(上次那个脚本的改善版)
目前还是半成品。。。。一些地方还没搞好

2L继续


1楼2014-10-05 21:41回复
    前排


    来自Android客户端2楼2014-10-05 21:44
    回复
      仔仔好厉害


      3楼2014-10-05 21:45
      回复
        第一个是创建三点光源的脚本
        1.先选中被照亮的物体,必须先选中
        2.应用脚本


        完成

        以后就不用手动创建三点光源了
        源码如下:
        """
        脚本作者:Dreamlandworks的仔仔
        Scripted by MRzaizai from Dreamlandworks
        """
        import c4d
        from c4d import gui
        user = doc.GetActiveObject()
        """print user"""
        def main():
        if user == None:
        gui.MessageDialog("请先选中被照亮的物体,目前不支持多选")
        else:
        gui.MessageDialog(*三点光源创建完毕_(:з」∠)_喵~~*)
        sub01()
        #错误规避
        c4d.EventAdd()
        def sub01():
        doc.StartUndo()
        mainlight = c4d.BaseObject(c4d.Olight)
        doc.InsertObject(mainlight)
        mainlight[c4d.ID_BASELIST_NAME] = "主光源"
        mainlight[c4d.LIGHT_TYPE] = 8
        mainlight[c4d.LIGHT_SHADOWTYPE] = 3
        #创建主光源
        filllight = c4d.BaseObject(c4d.Olight)
        doc.InsertObject(filllight)
        filllight[c4d.ID_BASELIST_NAME] = "填补光源"
        filllight[c4d.LIGHT_TYPE] = 8
        filllight[c4d.LIGHT_SHADOWTYPE] = 3
        filllight[c4d.LIGHT_BRIGHTNESS] = 0.5
        #创建填补光源
        backlight = c4d.BaseObject(c4d.Olight)
        doc.InsertObject(backlight)
        backlight[c4d.ID_BASELIST_NAME] = "背面光源"
        backlight[c4d.LIGHT_TYPE] = 8
        backlight[c4d.LIGHT_SHADOWTYPE] = 3
        #创建背面光源
        target1 = c4d.BaseTag(5676)
        target2 = c4d.BaseTag(5676)
        target3 = c4d.BaseTag(5676)
        mainlight.InsertTag(target1)
        filllight.InsertTag(target2)
        backlight.InsertTag(target3)
        target1[c4d.TARGETEXPRESSIONTAG_LINK] = user
        target2[c4d.TARGETEXPRESSIONTAG_LINK] = user
        target3[c4d.TARGETEXPRESSIONTAG_LINK] = user
        #使灯光以用户的物体为目标
        mainlight[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_X] = -550 + user[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_X]
        mainlight[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Y] = 200 + user[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Y]
        mainlight[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Z] = -600 + user[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Z]
        filllight[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_X] = 500 + user[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_X]
        filllight[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Y] = 100 + user[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Y]
        filllight[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Z] = -350 + user[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Z]
        backlight[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_X] = -300 + user[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_X]
        backlight[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Y] = 450 + user[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Y]
        backlight[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Z] = 500 + user[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Z]
        #设置灯光位置
        """doc.SetActiveObject(mainlight)
        doc.SetActiveObject(filllight,int = SELECTION_NEW)
        doc.SetActiveObject(backlight,int = SELECTION_NEW)
        c4d.CallCommand(100004772)
        sence = doc.GetFirstObject()
        sence.SetName(*场景*)"""
        doc.AddUndo(c4d.UNDOTYPE_NEW,mainlight)
        doc.AddUndo(c4d.UNDOTYPE_NEW,filllight)
        doc.AddUndo(c4d.UNDOTYPE_NEW,backlight)
        doc.EndUndo()
        if __name__==*__main__*:
        main()


        4楼2014-10-05 21:48
        收起回复
          第二个创建白色背景脚本。。。
          直接应用即可


          源码如下:
          """
          脚本作者:Dreamlandworks的仔仔
          Scripted by MRzaizai from Dreamlandworks
          """
          import c4d
          from c4d import gui
          background = c4d.BaseObject(c4d.Obackground)
          mat = c4d.BaseMaterial(5703)
          textag = c4d.BaseTag(5616)
          textag2 = c4d.BaseTag(5616)
          comptag = c4d.BaseTag(5637)
          shd = c4d.BaseList2D(c4d.Xgradient)
          disc = c4d.BaseObject(c4d.Odisc)
          def main():
          gui.MessageDialog(*背景创建完毕*)
          doc.StartUndo()
          doc.InsertObject(background)
          doc.InsertMaterial(mat)
          background.InsertTag(textag)
          textag[c4d.TEXTURETAG_MATERIAL] = mat
          mat[c4d.MATERIAL_USE_REFLECTION] = False
          mat[c4d.MATERIAL_USE_SPECULAR] = False
          #mat[c4d.MATERIAL_COLOR_SHADER] = shd
          #mat.InsertShader(shd)
          #mat.Message(c4d.MSG_UPDATE)
          #mat.Update(True, True)
          #shd[c4d.SLA_GRADIENT_TYPE] = 2004
          #shd.InvertKnots()
          doc.InsertObject(disc)
          disc[c4d.PRIM_DISC_ORAD] = 2000
          disc.InsertTag(textag2)
          textag2[c4d.TEXTURETAG_MATERIAL] = mat
          disc.InsertTag(comptag)
          comptag[c4d.COMPOSITINGTAG_BACKGROUND] = True
          doc.AddUndo(c4d.UNDOTYPE_NEW,mat)
          doc.AddUndo(c4d.UNDOTYPE_NEW,disc)
          doc.AddUndo(c4d.UNDOTYPE_NEW,background)
          doc.EndUndo()
          c4d.EventAdd()
          if __name__==*__main__*:
          main()


          5楼2014-10-05 21:52
          回复
            然后是调整全局亮度那个
            也是直接点就行

            调整这个值就可以让场景更亮或更暗
            源码:
            """
            脚本作者:Dreamlandworks的仔仔
            Scripted by MRzaizai from Dreamlandworks
            """
            import c4d
            from c4d import gui
            #Welcome to the world of Python
            def main():
            gui.MessageDialog(*创建完毕,请手动调整参数*)
            doc.StartUndo()
            Glight = c4d.BaseObject(c4d.Olight)
            doc.InsertObject(Glight)
            Glight.SetName(*全局照明增强*)
            Glight[c4d.LIGHT_BRIGHTNESS] = 0.2
            Glight[c4d.LIGHT_DETAILS_AMBIENT] = True
            Glight[c4d.LIGHT_DETAILS_SPECULAR] = False
            doc.SetActiveObject(Glight)
            c4d.CallCommand(100004772)
            sence = doc.GetFirstObject()
            sence.SetName(*场景*)
            doc.AddUndo(c4d.UNDOTYPE_NEW,Glight)
            doc.AddUndo(c4d.UNDOTYPE_NEW,senc)
            c4d.EventAdd()
            doc.EndUndo()
            if __name__==*__main__*:
            main()


            6楼2014-10-05 21:54
            回复
              最后一个HDR脚本
              跟上次不一样,换成了天空对象,也支持撤消了
              这个就不用说了
              源码:
              """
              脚本作者:Dreamlandworks的仔仔
              Scripted by MRzaizai from Dreamlandworks
              """
              import c4d
              from c4d import gui
              mat = c4d.BaseMaterial(5703)
              HDR = c4d.BaseObject(c4d.Osky)
              comptag = c4d.BaseTag(5637)
              textag = c4d.BaseTag(5616)
              def main():
              #gui.MessageDialog(*创建完毕_(:з」∠)_*)
              question = gui.QuestionDialog(*创建完毕,现在添加HDR贴图?*)
              if question == True:
              c4d.CallCommand(1017163)
              sub1()
              def sub1():
              doc.StartUndo()
              doc.InsertObject(HDR)
              HDR.SetName(*HDR*)
              HDR.InsertTag(comptag)
              HDR.InsertTag(textag)
              comptag[c4d.COMPOSITINGTAG_SEENBYCAMERA] = 0
              doc.InsertMaterial(mat)
              mat.SetName(*HDR*)
              mat[c4d.MATERIAL_USE_COLOR] = 0
              mat[c4d.MATERIAL_USE_SPECULAR] = 0
              mat[c4d.MATERIAL_USE_LUMINANCE] = 1
              mat[c4d.MATERIAL_USE_REFLECTION] = 0
              textag[c4d.TEXTURETAG_MATERIAL] = mat
              HDR[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR] = 1
              doc.SetActiveObject(HDR)
              c4d.CallCommand(100004772)
              sence = doc.GetFirstObject()
              sence.SetName(*场景*)
              doc.AddUndo(c4d.UNDOTYPE_NEW,HDR)
              doc.AddUndo(c4d.UNDOTYPE_NEW,mat)
              doc.AddUndo(c4d.UNDOTYPE_NEW,sence)
              c4d.EventAdd()
              doc.EndUndo()
              if __name__==*__main__*:
              main()


              7楼2014-10-05 21:56
              回复
                哇!真的好厉害哎


                IP属地:上海8楼2014-10-05 21:56
                回复
                  最后放上小组LOGO

                  同时我想感谢程序大神卡比,他解答了很多我的问题@∞∞Mebius∞∞
                  还要感谢花花大神的那个python教程


                  9楼2014-10-05 21:59
                  回复
                    第一个回复
                    ======================================================================
                    有一天我发现,你在我心里不在那么完美.
                    有一天我发现,我发现你对我心开始松动.
                    有一天我发现,曾经的我们不再是小孩子.
                    有一天我发现,以前我们说的誓言成回忆.
                    有一天我发现,我们曾经的一切都回不去.
                    有一天我们都发现, 其实我们曾经都爱过.


                    10楼2014-10-05 21:59
                    收起回复
                      哇塞!


                      IP属地:北京11楼2014-10-05 22:00
                      收起回复
                        py新手,代码写的很差,大神轻喷


                        12楼2014-10-05 22:00
                        回复
                          差点忘了放出下载
                          http://pan.baidu.com/s/1tTTQA


                          13楼2014-10-05 22:03
                          回复
                            牛逼


                            IP属地:上海来自Android客户端14楼2014-10-05 22:11
                            收起回复
                              棒!这几个脚本对我都很有用!
                              ——————BESTAndy——————
                              山不在高,
                               有仙则名。
                                 水不在深,
                                  有龙则灵! 


                              IP属地:云南来自Android客户端15楼2014-10-05 22:12
                              回复