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

    Looping in the timeline.

    Scheduled Pinned Locked Moved SDK Help
    2 Posts 0 Posters 184 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 20/12/2009 at 18:13, xxxxxxxx wrote:

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

      ---------
      I am trying to set up so that the users of my planet generator plugin (which is an object plugin) can click a check box and set up looping orbits.  I have it set up so that when the user enables orbit, they can drag another object into a link box and the new object then gets aligned to a spline that is the orbit path.  My goal is then to allow the user to click a check box and this will set up a loop so that the new object orbits the planet continuously.  I have been trying to set this up with keyframes. Here's what I have so far.

        
                //Orbit Looping  
                if (op->GetDataInstance()->GetBool(ORBIT_LOOP))  
                {  
                    LONG lngI = 0;  
                    Real nom;  
                    Real deNom;  
                    BaseTime btime = doc->GetTime();  
                      
                    btime.SetDenominator(op->GetDataInstance()->GetReal(ORBIT_SPEED));  
                    btime.SetNominator(0);  
        
                    deNom = btime.GetDenominator();  
                      
        
                    for (lngI; lngI < 50; lngI++)  
                    {  
                        nom = btime.GetNominator();      
                        btime.SetNominator(nom + deNom);  
                        GePrint("The NOM is: " + RealToString(btime.GetNominator()));  
        
                        //Add a key  
                        if (lngI == 1 || lngI == 3 || lngI == 5 )  
                        {  
                            op->GetDataInstance()->SetReal(ORBIT_POSITION, 0);  
                            GePrint("lngI is ODD" + RealToString(op->GetDataInstance()->GetReal(ORBIT_POSITION)));  
                        }  
        
                        if (lngI == 2 || lngI == 4 || lngI == 6 )  
                        {  
                            op->GetDataInstance()->SetReal(ORBIT_POSITION, 1.0);  
                            GePrint("lngI is EVEN" + RealToString(op->GetDataInstance()->GetReal(ORBIT_POSITION)));  
                        }  
        
                        CKey *key = track->GetCurve()->AddKey(btime,0);  
                        if (!key) return false;      
                    }  
        
                }  
      

      I would like for the ORBIT POSITION to be at 0 on teh first pass, and then 100 on the second pass.. and to alternate back and forth until all keyframes are added and at each pass set a keyframe so that the object appears to continuously orbit the planet.  As I am typing this I think it might be better to set up one loop and then to do a repeat command somehow..   like you can in the timeline..   is that possible?

      Anyway,  I would love to hear some ideas on how I could achieve this effectively.

      Or any thoughts on the code I have provided.

      Thanks.

      ~Shawn

      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/12/2009 at 02:35, xxxxxxxx wrote:

        You can set the track's loop mode with CTrack's SetAfter() and SetBefore() methods.

        cheers,
        Matthias

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