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.cohvar 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 (
[URL-REMOVED]
[URL-REMOVED]) and this small example:var bone = doc->GetFirstObject(); var bc = bone->GetContainer(); println(bc->GetData(BONEOBJECT_FUNCTION));
[URL-REMOVED] @maxon: This section contained a non-resolving link which has been removed.
-
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!