none
Crear modelo en viewport3d desde xaml RRS feed

  • Pregunta

  • Buenas.

     

    Hace poco que he empezado a programar en WPF y tengo una duda.

    Quiero cargar un objeto 3D en un viewport3d desde un archivo xaml y a la vez hacer que rote.

     

    Lo máximo que he conseguido es mostrar el objeto, pero no se como hacer para poder manipular las animaciones.

    El código que utilizo es el siguiente:

     

     Viewport3D model;
                            
                using (FileStream fileStream = File.OpenRead(@"IBM_PC.xaml"))
                {
    
                   model = (Viewport3D)(XamlReader.Load(fileStream));
                   
                }
    
                
               // model.RenderTransform = Rotar();
    
                // Tweak the lighting of the example's exported scene 
    
                model.Children.Add(new ModelVisual3D()
                
                {
    
                    Content = new AmbientLight(Colors.DarkKhaki * 0.05f)
                });
                
                // Add the 3D model meshes to a page inside this WPF window 
    
                this.Content = new Page()
    
                {
    
                    Background = Brushes.Transparent,
    
                    Content = model
                
    
                };
    


    Espero que me podais ayudar, llevo todo el dia y no encuentro nada.

     

    Si es posible que el código sea en c# ya que de xaml no tengo ni idea.

     

    Salu2.

    lunes, 9 de enero de 2012 20:24

Todas las respuestas

  • Hola Aloda.

    El modelo parece que lo cargas bien ¿no?

    Que quieres hacer exactamente, ya que puedes mover un objeto o la camara para lograr el mismo resultado si solo hay un objeto.

    echale un vistazo a este post a ver si te ayuda en algo y cuentas que tal.

    http://social.msdn.microsoft.com/Forums/es/wpfes/thread/96b7e28e-5224-4f7a-b7ed-318b2666f136

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    martes, 10 de enero de 2012 19:37
  • Muchas gracias por contestar David.

    El problema que tengo es que cargo un objeto 3d desde un archivo Xaml (generado por 3Dpaintbrush) con este código:

                FileStream fs = File.OpenRead(@"Modelo.xaml");
                this.view3D = (Viewport3D)XamlReader.Load(fs);
    
                this.Content = view3D;
    


    queria poder animarlo.

    He encontrado un código que aunque funciona tengo que estar manipulando parametros para ajustar todo y que se vea perfectamente.

    El código que utilizo para animar es el siguiente:

    TranslateTransform3D center = new TranslateTransform3D(0, 0, 0);
    
                ScaleTransform3D Zoom = new ScaleTransform3D(0.5, 0.5, 0.5);
    
                Transform3DGroup transform3DGroup = new Transform3DGroup();
                transform3DGroup.Children.Add(center);
                transform3DGroup.Children.Add(Zoom);
    
                view3D.Camera.Transform = transform3DGroup;
                Point3D nn = new Point3D(100, 100, 0);
                
                RotateTransform3D myRotateTransform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 0, 1), 1), nn);
                
                DoubleAnimation myAnimation = new DoubleAnimation();
                myAnimation.From = 0;
                myAnimation.To = 359;
                myAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(15000));
                myAnimation.RepeatBehavior = RepeatBehavior.ForevmyRotateTransform.Rotation.BeginAnimation(AxisAngleRotation3D.AngleProperty, myAnimation);
                transform3DGroup.Children.Add(myRotateTransform);
                 
                view3D.Camera.Transform = transform3DGroup;
    
    

    Con este código consigo rotar el objeto (que es el problema que tenia) aunque tengo que andar probando hasta conseguir que el modelo me quede centrado y al rotar no se salga del viewport3D.

    Si conoceis algúna forma mas facil de conseguir lo mismo estaria muy agradecido.

    Otro problema que me ha surgido es que el viewport3D ocupa toda la ventana y no se ven mas controles, aunque para este problema he abierto otro hilo:

    Ver

     

    Muchas gracias por vuestra ayuda.

    Salu2.

    martes, 10 de enero de 2012 21:09