2013-02-17 59 views
3

我需要转换一次Model3DGroup两次(一次设置位置,一次设置旋转)。我试过这个:转换Model3DGroup两次

var model = ModelImporter.Load(gameAssetPath); 
model.Transform = new TranslateTransform3D(
     placedObject.SpawnCoordinates.X, 
     placedObject.SpawnCoordinates.Y, 
     placedObject.SpawnCoordinates.Z); 
var modelRotation = new Model3DGroup(); 
modelRotation.Children.Add(model); 
modelRotation.Transform = new RotateTransform3D(new AxisAngleRotation3D(), placedObject.SpawnCoordinates.Roll, placedObject.SpawnCoordinates.Pitch, placedObject.SpawnCoordinates.Yaw); 

而这是一个不行。我搜索了谷歌和SO,似乎无法找到任何东西。

+0

究竟出了什么问题?这取决于你要达到什么目标,但是在翻译之前应用轮换将更有可能给你想要的东西。 – ChrisF 2013-02-17 18:55:17

回答

4

你需要TransformGroup这个类。

该课程将结合您的转换。

var model = ModelImporter.Load(gameAssetPath); 
var modelRotation = new Model3DGroup(); 
modelRotation.Children.Add(model); 
var t1 = new TranslateTransform3D(
     placedObject.SpawnCoordinates.X, 
     placedObject.SpawnCoordinates.Y, 
     placedObject.SpawnCoordinates.Z); 
var t2 = new RotateTransform3D(
     new AxisAngleRotation3D(), 
     placedObject.SpawnCoordinates.Roll, 
     placedObject.SpawnCoordinates.Pitch, 
     placedObject.SpawnCoordinates.Yaw); 
var tg = new TransformGroup(); 
tg.Children.Add(t1); 
tg.Children.Add(t2); 
modelRotation.Transform = tg; 
+0

链接只有答案不是很好的答案。最好是在这里总结页面(并使用实际的链接而不是谷歌链接) – ChrisF 2013-02-17 18:58:42

+0

这很好,链接给了我所需要的一切:)。 – 2013-02-17 19:00:58

+0

刚刚添加了一些代码 – Blablablaster 2013-02-17 19:02:49