Recursive COFFEE function for me to modify?
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 05/07/2011 at 08:15, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 11.5
Platform: Windows ; Mac OSX ;
Language(s) : C.O.F.F.E.E ;---------
Hi!
I am new to Coffee, but have used Cinema for a long time. I am currently working on a model of a vehcile, and I want to split the vehicle into parts and save them in a folder for importing into Unity3D. I have made a Unity script that reads a JSON string and loads whatever file indicated in the JSON file. Unity will read JSON string, detailing the (xyz and rotation values) and position the parts together. Problem is, i have to export all parts and write the JSON string by hand. Just because I dont know enough COFFEE. This has to change.
Basically what I am looking for is a COFFEE script that runs down the object tree looking for transforms starting with the string "Pos_" in their name. This means exporting specific nodes but leaving some alone and also writing a long JSON string with the local transform of detected each node. This way I can easily export a c4d document in as many part-files that I like, and also bring along the transforms I need to put all the parts together nicely inside Unity and other 3D programs.
Does anyone have a recursive coffee script, that runs down the object tree? It would be perfect for me to modify. It would really give me a flying start. I will share the results here if I get it right. Here is some pseudi. code for the recursive part of the function.
function readnode(node, JSON string){
> var isPosNode = false;
> if Substr(node.nodeName, 0, 3) = "Pos_" then
> > isPosNode = true;
> > JSON = " , " & node.nodeName & " { fileName :"" & node.nodeName &".c4d" & ",
>>
>> x: " & node.pos.x & ",
>>
>> y: "& node.pos.y & ",
>>
>> z : "& node.pos.z & ",
>>
>> r : node.rot.r & ",
>>
>> h : node.rot.h & ",
>>
>> p : node.rot.p "
> }
> for each child as c in node do
> > readNode (c, JSON);
> loop
>
>
>
> if isPosNode = true then
>
>> JSON = JSON & "}";
> > save (node, "/nodes/" & node.nodeName & ".c4d")
> > deleteFromTree(node)
> endif
} -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 05/07/2011 at 08:24, xxxxxxxx wrote:
Here you go, recursive function that browses the complete hierarchy:
BrowseScene(op) { while (op) { // get name and print to console var name = op->GetName(); println(name); BrowseScene(op->GetDown()); op = op->GetNext(); } } main(doc,op) { BrowseScene(doc->GetFirstObject()); }
cheers,
Matthias