Shared Parent and Child modelling axes

On 13/05/2016 at 08:31, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   17 
Language(s) :     C++  ;

For an ObjectData plug-in with poly object as input and virtual poly object as output, i would like to have child and parent share one modeling axis, such that parent (plugin object) inherits from child (input poly) at init, and afterwards if user changes parent's modelling axis, the child's axis also changes, and vice versa.

I've been struggling with the SDK documentation to find a way of implementing this... obviously no luck :D. Any pointers would be tremendously appreciated!

EDIT: By modeling axis i mean the origin about which the transformation of the object within cinema4d GUI occurs...

On 17/05/2016 at 01:36, xxxxxxxx wrote:


sorry, but we don't really understand what you are saying here. The modeling axis is not a real thing. One cannot really move the modeling axis. What one can do is to move the points of an object in object space and move the object itself in the opposite direction in world space.

So typically the concept of a modeling axis does not apply to a generator with its virtual objects. Or is the plugin you want to create no generator?

Best wishes,

On 17/05/2016 at 07:04, xxxxxxxx wrote:


You know the old saying, "A picture is worth a thousand words."

Can you post an image or short video demonstrating the issue?

Cactus Dan

On 17/05/2016 at 07:45, xxxxxxxx wrote:\_c0ogUvVkjKw/Sd9S2OXKRZI/AAAAAAAAAFY/5xZr1fHCQ4M/s1600/pen5.jpg

I suppose i should have called it the Object Axis. Regardless, within C4D GUI each object has this axis (in the picture above, that thing on the right). In the case of geometric objects, transformations (position, scale, rotation) happen about this axis.
typically when you have a parent-child hierarchy, the parents axis is independent of the child's and vice versa.

for example, lets say you have a spline object with axis at some (x1,y1,z1). You want to extrude it so it becomes a 3D geometric object, so you create an Extrude NURBS and drag the spline under it. Now you have the spline object's axis at (x1,y1,z1) and that of the Extrude Nurbs object at (0,0,0).

So, in my ObjectData plugin that is created with initial axis at (0,0,0)  - just like the extrude nurbs, it works by receiving a poly object with axis at some (x2,y2,z2) and then generating a poly hull based on some methods. In this configuration the ObjectData plugin is the parent, while the poly object is the child.

My intention is the following: once you drag the poly object under the ObjectData plugin, the latter's axis gets aligned to the former. In other words, the ObjectData's axis position gets translated from the (0,0,0) position it got by default to the (x2,y,2,z2) position of the poly object child. Afterwards, any change to the parent's axis position is automatically carried over to the child, and vice versa.

I hope this is clear - it's certainly as clear as i can be.


On 17/05/2016 at 08:52, xxxxxxxx wrote:


as said, there is no "axis". The position that is highlighted using the "axis" in the viewport is simply the position where the object is. The Extrude object in your example is simply at position 0,0,0.
So if you want to move the "axis" you simply need to move the object. Be sure to understand positions of objects in world space and object space.

Best wishes,

On 19/05/2016 at 07:42, xxxxxxxx wrote:

Oh ok. I think i was biased from using C4D through the years as an end user. Somehow i dissociated the concept of position of the object from the "imaginary axis", since you can pretty much move the latter independently of the the geometry of the object. like in this video\__mKGg

Or so I thought as a c4d user. cheers!

On 20/05/2016 at 00:32, xxxxxxxx wrote:


the tools shown in the video work as described: they move the points of the given point object in one direction (in object space) and the object itself in the opposite direction (in world space).

Best wishes,

On 27/05/2016 at 11:17, xxxxxxxx wrote:

Thanks for the clarification Sebastian. Cheers!
P.S. God I wish there was proper documentation for the api :D