2013-02-17 21 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