Link: Motor6D | Roblox Creator Documentation
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 classJointInstance
instead? - The statement says that the “parent” part is the one most directly connected to the
C0
property, but that property is aCFrame
. What does a connection in terms ofCFrames
mean? Is itPart0
, since the weld equation relatesPart0
andC0
? - If the property isn’t affected by
Part0
andPart1
, and the relationship withC0
is 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
CParent
andChild
refer to the propertiesC0
andC1
(orC1
andC0
).
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.