Как вы, несомненно, заметили, когда вы группируете Model3D в Model3DGroup, свойства Transform дочерних элементов объединяются со свойствами родительского.
Звучит так, будто вы спрашиваете, как вычислить сетевое преобразование вниз для конкретной Model3D в дереве Model3D, составляющих то, что вы называете своей "моделью". Для этого вам нужно знать (или иметь возможность сканировать и обнаруживать) путь от вашей корневой Model3DGroup до Model3D, для которой вы хотите найти преобразование.
Если у вас есть этот путь, все, что требуется, это объединить свойства Transform на каждом уровне. Для этого просто создайте группу Transform3DGroup и добавьте в нее отдельные преобразования.
Например, если ваша рука робота имеет компоненты Model3D с именами «UpperArm», «LowerArm» и «Рука», и вы хотите узнать положение и угол наклона руки, которую вы можете сделать:
var combined = new Transform3DGroup();
combined.Children.Add(UpperArm.Transform);
combined.Children.Add(LowerArm.Transform);
combined.Children.Add(Hand.Transform);
Теперь вы можете найти местоположение (0,0,0) на руке следующим образом:
combined.Transform(new Point3D(0,0,0));
Точно так же вы можете найти другие точки и использовать их для позиционирования другой модели ModelVisual3D.