Navigation

    • Register
    • Login
    • Search
    1. Home
    2. chuanzhen
    chuanzhen

    chuanzhen

    @chuanzhen

    rigger

    11
    Reputation
    155
    Posts
    353
    Profile views
    3
    Followers
    0
    Following
    Joined Last Online
    Location 北京

    • Profile
    • More
      • Following
      • Followers
      • Topics
      • Posts
      • Best
      • Groups
    chuanzhen Follow

    Best posts made by chuanzhen

    RE: ObjectData plugin Draw() question

    Hi,in another post I found a way to achieve my goal of converting the coordinate position to camera space and then scaling it to a small size so that he appears first.

    this is new code:

    def Draw(self,op, drawpass, bd, bh):
        
        
        if not op[c4d.S_MOTIONTRAIL_GTWO_DRAWENABLE]:
            return c4d.DRAWRESULT_OK
        #bd.SetMatrix_Matrix(None, c4d.Matrix())
        pmg = ~bd.GetMg()
        bd.SetMatrix_Camera()
    
        all_pos = self.parameters['all_pos']
        color_lis = self.parameters['color_lis']
        point_size = op[c4d.S_MOTIONTRAIL_GTWO_POINTSIZE]
        bd.SetPointSize(point_size)
        for per_pos,color in zip(all_pos,color_lis):
            bd.SetPen(color)
            cnt = len(per_pos)
            temp_lis = []
            for i in xrange(cnt-1):
                c = (pmg * per_pos[i]).GetNormalized() * 20
                f = (pmg * per_pos[i+1]).GetNormalized() * 20
                bd.DrawLine(c,f,c4d.NOCLIP_D)
                temp_lis.append(c)
            temp_lis.append(f)
            bd.DrawPoints(temp_lis)
        
    
        return c4d.DRAWRESULT_OK
    

    why * 20 will work, * 1or 2 not work (c = (pmg * per_pos[i]).GetNormalized() * 20)?

    posted in Cinema 4D SDK •
    RE: Discussions about spline ik

    @r_gigante @zipit
    The detailed explanation is shown below
    “up interpolattion”
    reback_01.png
    reback_02.png
    Try use "spline trail"
    reback_03.png

    I read some papers, but always been very slow, just only expanded know, such as Frenet–Serret formulas etc. But I did not directly find a better way to replace my current method, and I have been looking for it.

    Computation of Rotation Minimizing Frames This seems to be a good paper, I will read it carefully.

    posted in General Talk •
    RE: Some questions about PSD correction

    @m_adam Thank you for your team's reply.
    I will share my exploration in this post in the future.:relaxed:

    posted in Cinema 4D SDK •
    RE: Viewport render always causing c4d stop running

    The problem has been resolved, reinstall the graphics driver and perform a custom clean installation!

    posted in General Talk •
    RE: Is there any way to check deformcache dirty

    try use GetDirty(DIRTYFLAGS_CACHE),compare last dirty and current dirty

    posted in Cinema 4D SDK •
    RE: Method to access CAMorphNode pointdata reference index?

    Hi,
    you can read this thread

    posted in Cinema 4D SDK •
    python sdk document error

    Hi,
    i read python sdk BaseContainer.FindIndex() return a bool but actually return a dict

    xxx.png

    posted in Cinema 4D SDK •
    RE: how to Scroll UserArea

    This is the sample code, I tried to dynamically create the element inside the group to achieve, the picture is not drawn completely as expected:

    import c4d
    import os
    import sys
    from c4d import gui,bitmaps,plugins,utils,modules,storage
    
    
    PLUGIN_ID = 10000000 #only for test
    
    
    
    GROUP_SCROLL = 1100
    USEEAREA_GROUP = 1102
    USERAREA = 1101
    
    ADD_BUTTON = 1200
    
    class PreViewArea(gui.GeUserArea):
        bmp = None
    
    
        def DrawMsg(self,x1, y1, x2, y2, msg):
            self.OffScreenOn()
            self.SetClippingRegion(x1, y1, x2, y2)
            BG_colorDict = self.GetColorRGB(c4d.COLOR_BG)
            BG_color = c4d.Vector(BG_colorDict['r'], BG_colorDict['g'], BG_colorDict['b']) / 255.0
            self.DrawSetPen(BG_color)
            self.DrawRectangle(x1, y1, x2, y2)
    
            if self.bmp:
                width = self.bmp.GetBw()
                height = self.bmp.GetBh()
                self.DrawBitmap(self.bmp, 0, 0, width, height, 0, 0, width, height, c4d.BMP_NORMAL)
    
    def dynamic_Group(dialog,ua):
        dialog.LayoutFlushGroup(USEEAREA_GROUP)
    
        if ua.bmp:
            width = ua.bmp.GetBw()
            height = ua.bmp.GetBh()
        else:
            width,height = 0,0
        dialog.AddUserArea(USERAREA, c4d.BFH_SCALE | c4d.BFV_SCALE,width,height)
        dialog.AttachUserArea(ua, USERAREA)
        dialog.LayoutChanged(USEEAREA_GROUP)
    
    class S_Lib_Dialog(gui.GeDialog):
        ua = PreViewArea()
    
    
        def CreateLayout(self):
            self.SetTitle("test")
            self.ScrollGroupBegin(PLUGIN_ID, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT, c4d.SCROLLGROUP_HORIZ | c4d.SCROLLGROUP_VERT)
            self.GroupBegin(USEEAREA_GROUP,c4d.BFH_LEFT | c4d.BFV_TOP,1,1)
            self.GroupBorder(c4d.BORDER_ACTIVE_1)
            self.AddUserArea(USERAREA, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT)
            self.AttachUserArea(self.ua, USERAREA)
            self.GroupEnd()
    
            self.GroupEnd()
            self.AddButton(ADD_BUTTON,c4d.BFH_SCALEFIT,150,30,"Load image")
    
    
            return True
    
        def Command(self, id, msg):
            if id == ADD_BUTTON:
                path = storage.LoadDialog(type=c4d.FILESELECTTYPE_IMAGES)
                if path:
                    bmp = bitmaps.BaseBitmap()
                    result,ismovie = bmp.InitWith(path)
                    if result == c4d.IMAGERESULT_OK:
                        self.ua.bmp = bmp
                        dynamic_Group(self, self.ua)
                        self.ua.Redraw()
                    else:
                        print("Load image Fail")
                else:
                    print("Not select image")
    
    
    
                return True
    
            return True
    
    
    
    
    
    
    class S_Lib(plugins.CommandData):
    
        dialog = None
    
        def Execute(self,doc):
            # create the dialog
            if self.dialog is None:
                self.dialog = S_Lib_Dialog()
    
            return self.dialog.Open(dlgtype=c4d.DLG_TYPE_ASYNC, pluginid=PLUGIN_ID, defaultw=800, defaulth=400)
    
        def RestoreLayout(self, sec_ref):
            # manage nonmodal dialog
            if self.dialog is None:
                self.dialog = S_Lib_Dialog()
    
            return self.dialog.Restore(pluginid=PLUGIN_ID, secret=sec_ref)
    
    
    # Execute main()
    if __name__=='__main__':
        path, fn = os.path.split(__file__)
        plugins.RegisterCommandPlugin(id=PLUGIN_ID,
                                      str="test",
                                      info=0,
                                      help="",
                                      dat=S_Lib(),
                                      icon=None)
    
    
    posted in Cinema 4D SDK •
    RE: c4d 2024 "MENURESOURCE_SEPERATOR"

    @ferdinand Thanks,hope to fix spelling in c4dpython doc in future versions

    posted in Cinema 4D SDK •
    2024 c4d python doc link error

    Hi,
    online and offline 2024 c4d python doc link error, not find file
    0ba012b1-0e2e-453a-8370-fad6b0fcda06-image.png

    posted in Cinema 4D SDK •

    Latest posts made by chuanzhen

    RE: 2024 c4d python doc link error

    @ferdinand Great job!👍

    posted in Cinema 4D SDK •
    2024 c4d python doc link error

    Hi,
    online and offline 2024 c4d python doc link error, not find file
    0ba012b1-0e2e-453a-8370-fad6b0fcda06-image.png

    posted in Cinema 4D SDK •
    RE: c4d 2024 "MENURESOURCE_SEPERATOR"

    @ferdinand Thanks,hope to fix spelling in c4dpython doc in future versions

    posted in Cinema 4D SDK •
    RE: How to get OutLine of Polygon object

    @fwilleke80 Thanks

    posted in General Talk •
    RE: c4d 2024 "MENURESOURCE_SEPERATOR"

    @Dunhou Thanks!

    posted in Cinema 4D SDK •
    c4d 2024 "MENURESOURCE_SEPERATOR"

    Hi,
    Previously, my plugin worked normally in 2023, but in 2024, the console prompted:
    5fd03555-f7de-4441-b349-4da688635ee0-image.png
    but,there have been no changes in the sample code for this section in the Python doc for 2024
    7064842a-d900-4692-b649-ec51f5134443-image.png
    I can only replace it with the number 2. “ menu.InsData(2, True) ”.Has there been any change in 2024?

    posted in Cinema 4D SDK •
    RE: How to get OutLine of Polygon object

    @ferdinand Thanks for your detailed reply, it is helpful!

    posted in General Talk •
    How to get OutLine of Polygon object

    Hi,
    How to get the Outlines of polygon objects, just like in the image.
    e58b0cb4-7c46-47c1-aa39-3632a97537aa-image.png
    Thanks for any help!

    posted in General Talk •
    RE: DescID() python doc issue

    @i_mazlov Thanks:+1:

    posted in Cinema 4D SDK •
    RE: Cursor in gui element Show different text info

    @ferdinand The code works very well :+1:

    posted in Cinema 4D SDK •