Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Recent
    • Tags
    • Users
    • Login

    performance issue /

    Scheduled Pinned Locked Moved SDK Help
    9 Posts 0 Posters 857 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Helper
      last edited by

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 18/05/2009 at 13:36, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   r11 
      Platform:   Windows  ;   
      Language(s) :     C++  ;

      ---------
      hi,

      i am facing performance issues. while my object plugin is parametric there is a HUGE editor slowdown. i know why (because the object is rebuilt everytime something changes within the editor, nomatter if it belongs to my plugin object or not)

      within the BaseObject *MyPluginObject::GetVirtualObjects(PluginObject *op, HierarchyHelp *hh)
      { ... Part i have placed all the generating code (which can easiely get quite complex due to high counts and much calculations)

      So i wonder how i can prevent this and just have the object to be rebuilt when some parameters or childobjects have changed..

      thanks for any help,
      ello

      1 Reply Last reply Reply Quote 0
      • H Offline
        Helper
        last edited by

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 18/05/2009 at 13:41, xxxxxxxx wrote:

        Really, you should use the search-function of this forum. Just the keyword 'cache' helped me to find an entry within a few seconds. Hope it helps 😉

        click

        cheers, Shawni

        1 Reply Last reply Reply Quote 0
        • H Offline
          Helper
          last edited by

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 18/05/2009 at 14:26, xxxxxxxx wrote:

          thanks. my fault, i didnt search in message body 🙂

          anyhow, now other strange things happen, but i'll try to get the hang of it...

          cheers,
          ello

          edit: now i get memory leaks, they are related to this:

          > `

            
          \>  dirty = op->CheckCache(hh) || op->IsDirty(DIRTY_DATA|DIRTY_CHILDREN);  
          \>    
          \>       if (!dirty) return op->GetCache(hh);  
          \>  
          

          `

          what do i need to do, now?

          1 Reply Last reply Reply Quote 0
          • H Offline
            Helper
            last edited by

            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

            On 19/05/2009 at 03:44, xxxxxxxx wrote:

            Free the objects you allocated before returning the cache 😉

            Greetings,
            Jack

            1 Reply Last reply Reply Quote 0
            • H Offline
              Helper
              last edited by

              THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

              On 20/05/2009 at 12:53, xxxxxxxx wrote:

              thank you! that helped alot. now i need to find out how to let the object run from the beginning, as for now it just works after i changed a parameter

              1 Reply Last reply Reply Quote 0
              • H Offline
                Helper
                last edited by

                THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                On 20/05/2009 at 15:17, xxxxxxxx wrote:

                Quote: Originally posted by anubis23 on 20 May 2009
                >
                > * * *
                >
                > as for now it just works after i changed a parameter
                >
                >
                > * * *

                Isn't that what you wanted?

                1 Reply Last reply Reply Quote 0
                • H Offline
                  Helper
                  last edited by

                  THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                  On 20/05/2009 at 15:28, xxxxxxxx wrote:

                  yes, but if i have one of my plugin objects as a child and i change its parameters, the change is only visible when i change a parameter of the other pluginobject (where the object is linked via IN_EXCLUDE).

                  1 Reply Last reply Reply Quote 0
                  • H Offline
                    Helper
                    last edited by

                    THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                    On 20/05/2009 at 23:31, xxxxxxxx wrote:

                    Didn't you use the dependency list?

                    1 Reply Last reply Reply Quote 0
                    • H Offline
                      Helper
                      last edited by

                      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                      On 21/05/2009 at 05:55, xxxxxxxx wrote:

                      i have used it, but maybe not the right way??
                      this is how i did it:

                      > `

                        
                      \>       zeit = doc->GetTime().GetFrame(doc->GetFps())*anmSpeed;  
                      \>       if (anmSpeed!=0) bc->SetReal(ZEIT,zeit);  
                      \>    
                      \>       BaseObject *main = BaseObject::Alloc(Onull);   
                      \>       if (!main) goto Error;  
                      \>       main->SetName(pluginName);  
                      \>       BaseObject *child = NULL;  
                      \>       InExcludeData *mylist = (InExcludeData* )bc->GetCustomDataType(CHILDLIST,CUSTOMDATATYPE_INEXCLUDE_LIST);  
                      \>       if (!mylist ) goto Error;  
                      \>       LONG objcnt = mylist->GetObjectCount();  
                      \>       LONG ccnt=0;   
                      \>       op->NewDependenceList();  
                      \>       if (mylist)   
                      \>       {  
                      \>            for(int i=0; i<objcnt; i++)  
                      \>            {  
                      \>                 op->AddDependence(hh,(BaseObject* )mylist->ObjectFromIndex(doc, i));  
                      \>            }  
                      \>       if (profileLink) op->AddDependence(hh,(BaseObject* )(bc->GetLink(PROFILE,doc)));  
                      \>       if (userSpline) op->AddDependence(hh,(SplineObject* )(bc->GetLink(USERSPLINE,doc)));  
                      \>       if (child) op->AddDependence(hh,child);  
                      \>       }   
                      \>       op->TouchDependenceList();  
                      \>       Bool dirty=FALSE;  
                      \>       dirty = op->CheckCache(hh) || op->IsDirty(DIRTY_DATA|DIRTY_CHILDREN);  
                      \>       if (!dirty)   
                      \>       {  
                      \>            blDelete(main);  
                      \>            return op->GetCache(hh);  
                      \>       }  
                      \>  
                      

                      `

                      the first lines are there to make the animation possible. i guess there is a more elegant way, too..

                      if i put those AddDependence Lines into the if(!dirty) condition the objects only get invisible when changing parameters

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post