2016-04-05 26 views
1

WPF'ye yeni yaşıyorum ve 3 boyutlu bir model görüntüleyen bir program yapmaya çalışıyorum (bu, bilgisayarıma kaydediliyor) ve bu düğmeyi tıklatıp tıklattı. Nesneyi x, y ve z eksenleri hakkında döndürmek için üç düğme kullanmak istiyorum. Modeli görüntüleyecek kodum var ancak düğme tıklamalarını kullanarak nasıl döndüreceğinden emin değilim. Şimdiye kadar sahip olduğum şey;Helix araç takımı 3D Model Döndür

C#

public MainWindow() 
{ 
    InitializeComponent(); 
    ModelVisual3D device3D = new ModelVisual3D(); 
    device3D.Content = Display3d(MODEL_PATH); 

    // Add to view port 
    viewPort3d.Children.Add(device3D); 
} 

private Model3D Display3d(string model) 
{ 
    Model3D device = null; 
    try 
    { 
     //Adding a gesture here 
     viewPort3d.RotateGesture = new MouseGesture(MouseAction.LeftClick); 

     //Import 3D model file 
     ModelImporter import = new ModelImporter(); 

     //Load the 3D model file 
     device = import.Load(model); 
    } 
    catch (Exception e) 
    { 
     // Handle exception in case can not find the 3D model file 
     MessageBox.Show("Exception Error : " + e.StackTrace); 
    } 
    return device; 
} 
private void buttonX_Click(object sender, RoutedEventArgs e) 
{ 
    //not sure what to put in here 
} 

XAML

<Grid Margin="0,0,6,94" RenderTransformOrigin="0.5,0.5"> 
    <Grid.RenderTransform> 
     <TransformGroup> 
      <ScaleTransform/> 
      <SkewTransform/> 
      <RotateTransform Angle="-0.275"/> 
      <TranslateTransform/> 
     </TransformGroup> 
    </Grid.RenderTransform> 
    <helix:HelixViewport3D x:Name="viewPort3d" ZoomExtentsWhenLoaded="true" Margin="0,0,10,64" > 
     <!-- Remember to add light to the scene --> 
     <helix:DefaultLights/> 
     <ModelVisual3D x:Name="Models"/> 
    </helix:HelixViewport3D> 
    <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="417,219,0,0" Stroke="Black" VerticalAlignment="Top" Width="100" RenderTransformOrigin="0.146,-0.196"/> 
    <Button x:Name="buttonX" Content="ButtonX" HorizontalAlignment="Left" Height="30" Margin="216,356,0,-60" VerticalAlignment="Top" Width="104" Click="buttonX_Click"/> 
</Grid> 

Şu anda Helix alet kiti kullanılarak fakat daha kolay bir yolu varsa, lütfen bana bildirin ediyorum.

Sorunuzun kelimelerde itibaren

cevap

4

Sana model ve kamerayı değil döndürmek istediğiniz varsayalım yere device3D tasarruf durumda ve bu yapacağım: Ben gönüllü NoamM en düzenlemek @ uyguladığınız

private void buttonX_Click(object sender, RoutedEventArgs e) 
    { 
     var axis = new Vector3D(0, 0, 1); 
     var angle = 10; 

     var matrix = device3D.Transform.Value; 
     matrix.Rotate(new Quaternion(axis, angle)); 

     device3D.Transform = new MatrixTransform3D(matrix); 
    } 
+0

, Biraz daha okunabilir olduğunu kabul ediyorum. –

İlgili konular