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
    • Register
    • Login

    Animation Sequences ?

    Scheduled Pinned Locked Moved SDK Help
    11 Posts 0 Posters 813 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 02/01/2005 at 15:42, xxxxxxxx wrote:

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

      ---------
      Hi !

      How can I get the Animation Sequences for Bones ? (Cinema is quit complex 😞 )

      I tried for test this:

      BaseTrack* Track = doc->GetFirstTrack();
      BaseSequence* Seq = Track->GetFirstSequence();
      BaseKey* Key = Seq->GetFirstKey();
      BaseList2D* Object = Key->GetObject();
      String Name = Object->GetName();
      GePrint(Name);

      But i get an Exception ... NullPointer 😕

      Someone know the answer ?

      🙂 Thanks

      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 02/01/2005 at 16:17, xxxxxxxx wrote:

        Like any programming practice, you should check for valid pointers before using them. There might not be a Track or Seq or Key or Object, any of which would return a Null pointer exception.

        Never assume that they exist.

        Robert

        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 02/01/2005 at 17:24, xxxxxxxx wrote:

          Hmm ur right, but ive made a Bone Animation Sequence 😞

          I hate it ... Mc Donalds ^^

          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 02/01/2005 at 18:23, xxxxxxxx wrote:

            Uhm, i tried now much, but i dont get the Animation Tracks 😞 I need them to save to Bone Animations (Which Bone, From Frame - To Frame, Frames).

            I tried GetFirstTrack no success, i tried GetFirstRenderData no succes 😕

            Ive no Idea, how can i get these f**k data ?

            I get crazy 😞

            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 02/01/2005 at 19:35, xxxxxxxx wrote:

              I think I see your problem: BaseDocument doesn't have Tracks. The 'Document' is not animatable, only the objects, materials, tags. Just because it is an option for a GeList2D doesn't make it available.

              You need to get your Tracks from the animated Objects.

              From the Documentation:

              _BaseTrack *GetFirstTrack(void)

              Returns the first animation track of the object._

              So, get your Document's Objects and get the Tracks from the Objects.

              Robert

              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 02/01/2005 at 23:34, xxxxxxxx wrote:

                So you mean i should get the Animations (Keyframes from Bones) directly from the Object ?

                Ok i will try, but i won't work. Yesterday I let Cinema Print all Names of the objects (with you printhistory / printchildren functions).
                But the Names of the Bones wasn't listed ...

                I Printed the Names without an If, i just Printed all Names. I tried with my own rekursion function but the same problem.

                Here the rekursion (dunno this word on english ;)) function:

                void PrintChildren(BaseObject *obj)
                {
                     if(!obj)
                          return;

                DoParse(obj);

                PrintChildren(obj->GetDown());
                     PrintChildren(obj->GetNext());
                //     PrintChildren(obj->GetPred());
                //     PrintChildren(obj->GetUp());
                }

                void PrintHierarchy(BaseDocument *doc)
                {
                     if(!doc)
                          return;

                BaseObject *obj = doc->GetFirstObject();
                     if(!obj)
                          return;

                DoParse(obj);
                     PrintChildren(obj);
                }

                DoParse is my little Helper 🙂

                It only makes Stuff like this:
                if(Obj->GetType() == Opolygon)
                {
                HELPER_AddVertex(Obj);
                }
                ...

                My ICQ 82 921 889 🙂

                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 03/01/2005 at 00:53, xxxxxxxx wrote:

                  Yes, get the Tracks from the Object. This code is from the MorphMixer.cpp example source that comes with the SDK. It doesn't get the animation info, but it should give you an idea of how to work through the existing animation info.

                    
                  static Bool CreateKey(BaseDocument *doc, BaseObject *op, const BaseTime &time;, LONG index, Real value)  
                  {  
                       // check if track exists  
                       BaseTrack *track = op->FindTrack(DescLevel(index,DTYPE_REAL,0));  
                       if (!track)  
                       {  
                            track = AllocValueTrack(op,DescLevel(index,DTYPE_REAL,0)); if (!track) return FALSE;  
                            op->InsertTrackLast(track);  
                       }  
                    
                       // check for sequence  
                       BaseSequence *seq=NULL;  
                       for (seq = track->GetFirstSequence(); seq; seq=seq->GetNext())  
                            if (time>=seq->GetT1() && time<=seq->GetT2())  
                                 break;  
                    
                       if (!seq)  
                       {  
                            seq = track->AutoAddSequence(doc,time);   
                            if (!seq) return FALSE;  
                       }  
                    
                       BaseKey *key = BaseKey::Alloc(seq->GetType()); if (!key) return FALSE;  
                       AnimValue *av = GetKeyValue(key); if (!av) return FALSE;  
                    
                       av->value = value;  
                    
                       key->SetTime(time);  
                       seq->InsertKey(key);  
                       return TRUE;  
                  }  
                  

                  And here is my working print hierarchy code:

                    
                  // Print Hierarchy  
                  void PrintHierarchy(BaseDocument *doc)  
                  {  
                       BaseObject *obj;  
                       if (!(obj = doc->GetFirstObject())) return;  
                       PrintChildren(obj);  
                  }  
                  // Print Children recursively  
                  void PrintChildren(BaseObject *obj)  
                  {  
                       for (; obj; obj = obj->GetNext())  
                       {  
                            GePrint(obj->GetName());  
                            if (obj->GetDown()) PrintChildren(obj->GetDown());  
                       }  
                  }  
                  

                  One thing to mention, just to be sure: the objects MUST be in the document - added to document with doc->InsertObject(obj,...). Virtual objects (not added to any document) will not show up in a document's object hierarchy.

                  Robert

                  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 03/01/2005 at 01:01, xxxxxxxx wrote:

                    Thanks Robert !

                    RE:
                    One thing to mention, just to be sure: the objects MUST be in the document - added to document with doc->InsertObject(obj,...). Virtual objects (not added to any document) will not show up in a document's object hierarchy.

                    -Uhm ... i dont make the Models, the guy who makes it simply makes bones with vertexmaps and bones 😉
                    Hmm ... i will test ur code.

                    // Edit

                    I have tested your code, it dont show bones 2 😞 U said i must add to document but the Modeler only use standard bones from Cinema 4d 😕

                    // Edit 2

                    Hey Rob, i found something out...
                    When I create a Bone then it shows it, when i make it a subentity of another object than not ?_?

                    Examples:
                    Single

                    ->Bone Object
                    ->Other Stuff

                    => works

                    Subentry

                    ->Other Stuff
                    -->Bone Object

                    => dont work ?

                    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 03/01/2005 at 10:09, xxxxxxxx wrote:

                      Huh ?

                      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 04/01/2005 at 12:39, xxxxxxxx wrote:

                        Hi furbolg
                        I wrote this msg to you

                        "
                        Hi 🙂

                        I'm building an exporter plugin like you (at the moment it's exports vertices, averaged normals, uvws, and made some pre-calcs about volume shadows) so i think it's a good ideia to us if we could talk about that 😜

                        Do you have ICQ or MSN?
                        My ICQ number: 35142180
                        My msn: [email protected]

                        Thx

                        i'm waiting your answer."

                        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 04/01/2005 at 15:47, xxxxxxxx wrote:

                          Uhm we can but i dont got much infos u dont know ^^

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