exporting bone animation



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

    On 27/10/2003 at 13:28, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   6 
    Platform:   Windows  ;   
    Language(s) :   C.O.F.F.E.E  ;

    ---------
    I am not experienced in writing in coffee. I do know how to program in Delphi.
    What do i need to do to export an bone structure from cinema4d? I know that there is something like a bone object but i am not sure how things are related.
    Are there tutorials available? Example Code?



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

    On 30/10/2003 at 10:25, xxxxxxxx wrote:

    This is how far i have proceded:
    i can get a list of the bones
    for a bone i can get the parent bone
    but i cannot access other bone values like position,rotation etc.
    Maybe it is in a container, or not? How do i properly access such a container?
    Below is the code i came up with. It is a modified pov exporter.
    basemsa.coh

        
        
        
        
        var fac = 1.0;  
        var tab = 1;
        
        
        
        
        WriteIt(file,p1,p2,p3)  
        {  
         var t;
        
        
        
        
         p1 /= fac;  
         p2 /= fac;  
         p3 /= fac;
        
        
        
        
         t = tostring(p1.x);
        
        
        
        
         t=stradd(t," ",tostring(p1.y));  
         t=stradd(t," ",tostring(p1.z));
        
        
        
        
         t=stradd(t," ",tostring(p2.x));  
         t=stradd(t," ",tostring(p2.y));  
         t=stradd(t," ",tostring(p2.z));
        
        
        
        
         t=stradd(t," ",tostring(p3.x));  
         t=stradd(t," ",tostring(p3.y));  
         t=stradd(t," ",tostring(p3.z));
        
        
        
        
         t = stradd(t,GeGetLineEnd());
        
        
        
        
         file->WriteString(t);  
        }
        
        
        
        
        WriteMyBone(file,p1,p2)  
        {  
         var t;
        
        
        
        
         p1 /= fac;  
         p2 /= fac;
        
        
        
        
         t = tostring(p1.x);
        
        
        
        
         t=stradd(t," ",tostring(p1.y));  
         t=stradd(t," ",tostring(p1.z));
        
        
        
        
         t=stradd(t," ",tostring(p2.x));  
         t=stradd(t," ",tostring(p2.y));  
         t=stradd(t," ",tostring(p2.z));
        
        
        
        
         t = stradd(t,GeGetLineEnd());
        
        
        
        
         file->WriteString(t);  
        }
        
        
        
        
        SaveObject(op,file)  
        {  
         var parentop;
        
        
        
        
         while (op)  
         {  
          if (getclass(op)==PolygonObject)  
          {  
           var i;  
           var name,p1,p2,p3,p4;
        
        
        
        
           var padr = op->GetPoints();  
           var vadr = op->GetPolygons();  
           var vanz = op->GetPolygonCount();
        
        
        
        
           // write objects name  
           file->WriteString(stradd(op->GetName(),GeGetLineEnd()));
        
        
        
        
           var mg = op->GetMg();
        
        
        
        
           // write triangles  
           for (i=0; i<vanz; i++)  
           {  
            p1 = mg->GetMulP(padr[vadr[i*4]]);  
            p2 = mg->GetMulP(padr[vadr[i*4+1]]);  
            p3 = mg->GetMulP(padr[vadr[i*4+2]]);  
            p4 = mg->GetMulP(padr[vadr[i*4+3]]);  
              
            if (vadr[i*4+2]==vadr[i*4+3])  
             WriteIt(file,p1,p2,p3);  
            else  
            {  
             WriteIt(file,p1,p2,p3);  
             WriteIt(file,p3,p4,p1);  
            }  
                 }  
          }  
            
          if (getclass(op)==BoneObject)  
          {  
           var pos;  
           var rot;  
           
           // write objects name  
           file->WriteString(stradd(op->GetName(),GeGetLineEnd()));
        
        
        
        
           // write objects parent name  
           parentop = op->GetUp();  
           file->WriteString(stradd(parentop->GetName(),GeGetLineEnd()));
        
        
        
        
           var data = op->GetConTainer();  
           if (data)  
           {  
            pos.x = 0.0;  
            pos.y = 0.0;  
            pos.z = 0.0;  
            rot.x = 0.0;  
            rot.y = 0.0;  
            rot.z = 0.0;  
               pos = data->GetVector(BONEOBJECT_FIXPOSITION);  
            rot = data->GetVector(BONEOBJECT_FIXROTATION);  
            writemybone(file,pos,rot);  
           }
        
        
        
        
          }
        
        
        
        
          //recursive here... (find all children if available)  
          if (!SaveObject(op->GetDown(),file)) return FALSE;
        
        
        
        
          //get the next object...  
          op = op->GetNext();  
         }  
         return TRUE;  
        }  
        
        
        
        
    

    msa.cof

        
        
        
        
        // Simple Saver for Milkshape ascii (MSA) files
        
        
        
        
        include "basemsa.coh"
        
        
        
        
        class MyFilter: FilterPlugin  
        {  
         public:  
          MyFilter();
        
        
        
        
          GetID();  
          GetName();
        
        
        
        
          Identify(probe,fname);
        
        
        
        
          Save(doc,fname,obj,mat,env,dialog);
        
        
        
        
          Edit();  
        }
        
        
        
        
        MyFilter::GetID()  
        {  
         // be sure to use a unique ID obtained from [www.plugincafe.com](http://www.plugincafe.com)  
         return 1000001;  
         // be sure to use a unique ID obtained from [www.plugincafe.com](http://www.plugincafe.com)  
        }
        
        
        
        
        MyFilter::GetName()  
        {  
         return "MSA";  
        }
        
        
        
        
        MyFilter::Identify(probe,fname)  
        {  
         return fname->CheckSuffix("MSA");  
        }
        
        
        
        
        MyFilter::Save(doc,fname,obj,mat,env,dialog)  
        {  
         var ok;  
         var file = new(BaseFile); if (!file) return FILEERROR_MEMORY;
        
        
        
        
         println("Saving MSA");
        
        
        
        
         fname->SetSuffix("TXT");
        
        
        
        
         if (!file->Open(fname,GE_WRITE)) return FALSE;
        
        
        
        
         ok=SaveObject(doc->GetFirstObject(),file);
        
        
        
        
         file->Close();  
         println("Ready");
        
        
        
        
         return FILEERROR_NONE;  
        }
        
        
        
        
        MyFilter::Edit()  
        {  
         println("plug",GeGetRootFilename()->GetFullString());  
        }
        
        
        
        
        main()  
        {  
         Register(MyFilter);  
        }  
        
        
        
        
    


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

    On 30/10/2003 at 13:04, xxxxxxxx wrote:

    The data you're looking for is indeed in the container of the bone. See the documentation for BoneObject (http://www.plugincafe.com/sdk_detail.asp?ID=39181&gmode=3) and this small example:

        
        
        var bone = doc->GetFirstObject();  
        var bc = bone->GetContainer();  
        println(bc->GetData(BONEOBJECT_FUNCTION));
    


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

    On 30/10/2003 at 13:21, xxxxxxxx wrote:

    thanks!


Log in to reply