SOLVED Global to Local pos

Hi
How to convert global position to local.
I want to convert global position of Object to local position of his parent

Here you will find any information about matrices and thus everything about positioning, scaling, rotation, etc.

I'm not an expert in math 😉 i tried but don"t work
My english is null and google translate isn't always correct
Can you give me an example?

No problem. 🙂

Now to your question: You can simply call GetMl() on your child object. This returns you the local matrix of the object. Now to access the position, ask the matrix for the offset:

myObject.GetMl().off

It's the very first example code in the documentation I linked in my previous post.

@passion3d said in Global to Local pos:

google translate isn't always correct

You should try Deepl

My question may not be clear enough.
I have an object1 that has a child Object2
I want to move Object2 to a global position, so I have to convert the global position from destination to local position with respect to its parent.

You don't have to!

There's also a function available: SetMg()

I warmly suggest you to read the Matrix Fundamentals since it has been written to demystify the matrix math. It also has various code examples for all kinds of transformations, including your scenario.

edit: Now that I think about your question: Do you want to move the parent with the child?

no, i want move the child but not the parent

Sorry, got you slightly wrong then.

Try this:

    m = op.GetMg() # get the object's matrix
    m.off = c4d.Vector(50) # modify the position
    op.SetMg(m) #set the modified matrix
    c4d.EventAdd() # update C4D

This code simply moves the child, completely decoupled from its parent in absolute world coordinates.

Thank you @mp5gosu 😉
This is exactly what I was looking for.
In fact, C4D does the calculations itself. I thought I had to do the matrix multiplication, and I didn't understand how to do it.
Finally it's very simple 🙂