The Transform property documentation states that it is applied as
PartParent.CFrame * CParent * Transform == PartChild.CFrame * Child, and the definition it gives for what the parent and child parts are is the following:
Transform is the transformation between the “parent” part and the “child” part. The “parent” part will always be the part that is more directly connected to the JointInstance.C0. This is not affected by which part is assigned to JointInstance.Part0 and which is JointInstance.Part1. If the side the root part is on changes the interpretation of Transform will be inverted.
This definition is confusing and unclear in many ways:
- The “parent” and “child” terminology conflicts with the usual “explorer tree” definition we are used to. The parts involved are not parented to each other, so what are they parent and child in relation to?
- This property only exists in
Motor6D, so why is the documentation using the base class
- The statement says that the “parent” part is the one most directly connected to the
C0property, but that property is a
CFrame. What does a connection in terms of
CFramesmean? Is it
Part0, since the weld equation relates
- If the property isn’t affected by
Part1, and the relationship with
C0is unclear, then what determines it?
- What does “If the side the root part is on changes the interpretation of Transform will be inverted” mean? Does that mean the value assigned to it is
:Inverse()d depending on where the root part is? If so, how?
- In the Transform equation given it is not immediately clear that
Childrefer to the properties
I currently assume that Transform is always applied to the Part0 side of the weld equation, after multiplying by C0, but I am not sure if I should rely on this interpretation (it hasn’t caused issues so far). Another possible interpretation could be considering the joints as nodes on a tree, starting from the root joint and expanding outwards, but I do not know if that is correct either.
Therefore, I would like to request clarification on how exactly the “parent” and “child” parts are determined and if there is any way to do this determination programatically in Lua, with any relevant APIs included.