Example #1
0
        public void Init(MyModel mm)
        {
            this.mm = mm;

            Transform3DGroup t3dg = (Transform3DGroup)this.mm.m3dg.Transform;
            RotateTransform3D rtx = (RotateTransform3D)t3dg.Children[2];
            AxisAngleRotation3D aar3dx = (AxisAngleRotation3D)rtx.Rotation;
            RotateTransform3D rty = (RotateTransform3D)t3dg.Children[3];
            AxisAngleRotation3D aar3dy = (AxisAngleRotation3D)rty.Rotation;
            RotateTransform3D rtz = (RotateTransform3D)t3dg.Children[4];
            AxisAngleRotation3D aar3dz = (AxisAngleRotation3D)rtz.Rotation;

            DoubleAnimation dax = new DoubleAnimation(360, new Duration(new TimeSpan(0, 0, 10)));
            dax.RepeatBehavior = RepeatBehavior.Forever;
            //aar3dx.BeginAnimation(AxisAngleRotation3D.AngleProperty, dax);
            clockx = dax.CreateClock();

            DoubleAnimation day = new DoubleAnimation(360, new Duration(new TimeSpan(0, 0, 5)));
            day.RepeatBehavior = RepeatBehavior.Forever;
            clocky = day.CreateClock();

            DoubleAnimation daz = new DoubleAnimation(360, new Duration(new TimeSpan(0, 0, 5)));
            daz.RepeatBehavior = RepeatBehavior.Forever;
            clockz = daz.CreateClock();

            aar3dx.ApplyAnimationClock(AxisAngleRotation3D.AngleProperty, clockx);
            aar3dy.ApplyAnimationClock(AxisAngleRotation3D.AngleProperty, clocky);
            aar3dz.ApplyAnimationClock(AxisAngleRotation3D.AngleProperty, clockx);
            clockx.Controller.Begin();
            clocky.Controller.Begin();
            clockz.Controller.Begin();
        }
Example #2
0
        public void Init(MyModel mm)
        {
            this.mm = mm;

            INameScope ins = NameScope.GetNameScope(mm.root);
            me = ins.FindName("mediaElement1") as MediaElement;
            if (me != null)
            {
                me.MediaFailed += new EventHandler<ExceptionRoutedEventArgs>(me_MediaFailed);
            }
        }
Example #3
0
        public void Init(MyModel mm)
        {
            this.mm = mm;
            Uri myValidMediaUri = new Uri(@"D:\Download\OdeToTheBrainCut.avi");

            MediaPlayer mp = new MediaPlayer();
            mp.Open(myValidMediaUri);
            vd = new VideoDrawing();
            vd.Player = mp;
            DrawingBrush db = new DrawingBrush();
            db.Drawing = vd;

            INameScope ins = NameScope.GetNameScope(mm.root);
            DiffuseMaterial dif = ins.FindName("dif") as DiffuseMaterial;
            dif.Brush = db;
            vd.Player.Play();
        }
Example #4
0
        public void Init(MyModel mm)
        {
            this.mm = mm;

            //Transform3DGroup t3dg = (Transform3DGroup)this.mm.m3dg.Transform;
            //ScaleTransform3D st3d = (ScaleTransform3D)t3dg.Children[0];
            if (mm.scaleTransform != null)
            {
                ScaleTransform3D st3d = mm.scaleTransform;
                st3d.ScaleX = 0.01;
                st3d.ScaleY = 0.01;
                st3d.ScaleZ = 0.01;

                DoubleAnimation dax = new DoubleAnimation(0.01, 10, new Duration(new TimeSpan(0, 0, 2)));
                dax.AutoReverse = true;
                dax.RepeatBehavior = RepeatBehavior.Forever;
                clock = dax.CreateClock();
                st3d.ApplyAnimationClock(ScaleTransform3D.ScaleXProperty, clock);
                st3d.ApplyAnimationClock(ScaleTransform3D.ScaleYProperty, clock);
                st3d.ApplyAnimationClock(ScaleTransform3D.ScaleZProperty, clock);
                clock.Controller.Begin();
            }
        }
Example #5
0
        public void Init(MyModel mm)
        {
            this.mm = mm;

            // not used since dispatchertimer is stopped by compositerendering
            frameTimer = new System.Windows.Threading.DispatcherTimer();
            frameTimer.Tick += OnFrame;
            frameTimer.Interval = TimeSpan.FromSeconds(1.0 / 60.0);

            this.spawnPoint = new Point3D(0.0, 0.0, 0.0);
            this.lastTick = Environment.TickCount;

            pm = new ParticleSystemManager();

            Model3DGroup group = new Model3DGroup();
            group.Children.Add(pm.CreateParticleSystem(500, Colors.Gray));
            group.Children.Add(pm.CreateParticleSystem(500, Colors.Red));
            group.Children.Add(pm.CreateParticleSystem(500, Colors.Silver));
            group.Children.Add(pm.CreateParticleSystem(500, Colors.Orange));
            group.Children.Add(pm.CreateParticleSystem(500, Colors.Yellow));
            mm.effect_mv3d = new ModelVisual3D();
            mm.effect_mv3d.Content = group;

            rand = new Random(this.GetHashCode());
        }
Example #6
0
        public void Initialize3D()
        {
            try
            {
                xdModels.Load("../../models.xml");
                foreach (XmlNode xnNode in xdModels.DocumentElement.ChildNodes)
                {
                    if (xnNode.NodeType != XmlNodeType.Element)
                    {
                        continue;
                    }
                    XmlElement xeNode = (XmlElement)xnNode;
                    MyModel mm = new MyModel();
                    mm.id = Int32.Parse(xeNode.Attributes["id"].Value);
                    mm.trans = bool.Parse(xeNode.Attributes["trans"].Value);
                    mm.path = xeNode.Attributes["path"].Value;
                    mm.code = xeNode.Attributes["code"].Value;
                    mm.rotX = Int32.Parse(xeNode.Attributes["rotX"].Value);
                    mm.rotY = Int32.Parse(xeNode.Attributes["rotY"].Value);
                    mm.rotZ = Int32.Parse(xeNode.Attributes["rotZ"].Value);
                    mm.sizeX = Int32.Parse(xeNode.Attributes["sizeX"].Value);
                    mm.sizeY = Int32.Parse(xeNode.Attributes["sizeY"].Value);
                    mm.sizeZ = Int32.Parse(xeNode.Attributes["sizeZ"].Value);
                    mm.offX = Int32.Parse(xeNode.Attributes["offX"].Value);
                    mm.offY = Int32.Parse(xeNode.Attributes["offY"].Value);
                    mm.offZ = Int32.Parse(xeNode.Attributes["offZ"].Value);

                    FileStream fs = new FileStream(mm.path, FileMode.Open, FileAccess.Read); //
                    /*
                    Viewbox vb = (Viewbox)XamlReader.Load(fs);
                    fs.Close();
                    mm.root = vb; //for INameScope
                    Viewport3D v3d = (Viewport3D)vb.Child;
                    */

                    Viewport3D v3d = (Viewport3D)XamlReader.Load(fs);
                    fs.Close();

                    mm.root = v3d;

                    // extract storyboard
                    if (v3d.Triggers.Count > 0)
                    {
                        var trigger = (EventTrigger)v3d.Triggers[0];
                        var beginSb = (BeginStoryboard)trigger.Actions[0];
                        mm.sb = beginSb.Storyboard;
                    }

                    ModelVisual3D mv3d = (ModelVisual3D)v3d.Children[0];
                    Model3DGroup m3dgScene = (Model3DGroup)mv3d.Content;
                    Model3DGroup m3dg = (Model3DGroup)m3dgScene.Children[m3dgScene.Children.Count - 1];
                    mm.m3dg = m3dg;

                    // make modelvisual3d

                    //mv3d = new ModelVisual3D();
                    //mv3d.Content = mm.m3dg;
                    //mm.mv3d = mv3d;

                    //m3dg.Transform = null;
                    Transform3DGroup t3dg = new Transform3DGroup();
                    m3dg.Transform = t3dg;

                    //change size
                    double scaleX = mm.sizeX / m3dg.Bounds.SizeX;
                    double scaleY = mm.sizeY / m3dg.Bounds.SizeY;
                    double scaleZ = mm.sizeZ / m3dg.Bounds.SizeZ;
                    scaleX = FixDouble(scaleX);
                    scaleY = FixDouble(scaleY);
                    scaleZ = FixDouble(scaleZ);
                    ScaleTransform3D stransform3D = new ScaleTransform3D(scaleX, scaleY, scaleZ);
                    mm.scaleTransform = stransform3D;
                    t3dg.Children.Add(stransform3D);

                    //move to origin
                    double offX = (-1 * m3dg.Bounds.X) - (m3dg.Bounds.SizeX / 2);
                    double offY = (-1 * m3dg.Bounds.Y) - (m3dg.Bounds.SizeY / 2);
                    double offZ = (-1 * m3dg.Bounds.Z) - (m3dg.Bounds.SizeZ / 2);
                    offX = FixDouble(offX);
                    offY = FixDouble(offY);
                    offZ = FixDouble(offZ);
                    TranslateTransform3D ttransform3d = new TranslateTransform3D(offX, offY, offZ);
                    mm.translateTranform = ttransform3d;
                    t3dg.Children.Add(ttransform3d);

                    //rotate
                    t3dg.Children.Add(new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1, 0, 0), mm.rotX)));
                    t3dg.Children.Add(new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), mm.rotY)));
                    t3dg.Children.Add(new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 0, 1), mm.rotZ)));

                    //move to top of Z
                    t3dg.Children.Add(new TranslateTransform3D(0, 0, m3dg.Bounds.SizeZ / 2));
                    //t3dg.Children.Add(new TranslateTransform3D(0, m3dg.Bounds.SizeY / 2, 0));

                    //move to offset
                    t3dg.Children.Add(new TranslateTransform3D(mm.offX, mm.offY, mm.offZ)); //0,0,0

                    AddModel(mm);

                    dicModels.Add(mm.id, mm);
                }
                Console.WriteLine("{0} Models added to the 3D model dictionary.", dicModels.Count);

                // Map 3d models to images
                ModelMapping();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            previousMarkerInfo = new MarkerInfo(-1, new Point3D());
            currentMarkerInfo = previousMarkerInfo;
        }
Example #7
0
        private void Transform(MyModel mm)
        {
            TranslateTransform3D ttransform3d = new TranslateTransform3D(
                    currentMarkerInfo.position.X,
                    currentMarkerInfo.position.Y,
                    currentMarkerInfo.position.Z);

            if (mm.sb != null) mm.sb.Pause();
            mm.mv3d.Transform = ttransform3d;
            if (mm.sb != null) mm.sb.Resume();

            // Update particle effect
            if (mm.imc != null && mm.effect_mv3d != null)
            {
                mm.effect_mv3d.Transform = ttransform3d;
                ParticleModel pm = (ParticleModel)mm.imc;
                pm.Update();

                if (Energized)
                {
                    try
                    {
                        modeler.Children.Add(mm.effect_mv3d);
                    }
                    catch (Exception) { }
                }
            }
        }
Example #8
0
 private void Remove(MyModel model)
 {
     if (model.sb != null) model.sb.Stop();
     if (model.imc != null)
     {
         model.imc.Stop();
         modeler.Children.Remove(model.effect_mv3d);
     }
     modeler.Children.Remove(model.mv3d);
 }
Example #9
0
        private void AddModel(MyModel mm)
        {
            ModelVisual3D mv3d = new ModelVisual3D();
            mv3d.Content = mm.m3dg;
            mm.mv3d = mv3d;

            if (mm.code != null && mm.code != String.Empty)
            {
                string strType = mm.code;
                Type type = Type.GetType(strType);
                object modelCode = Activator.CreateInstance(type);

                IModelCode imc = (IModelCode)modelCode;
                imc.Init(mm);
                mm.imc = imc;
            }
        }
Example #10
0
        private void Add(MyModel model)
        {
            if (model.sb != null) model.sb.Begin();

            try
            {
                if (model.imc != null)
                {
                    model.imc.Start();
                }
            }
            catch (Exception ex) { }

            try
            {
                modeler.Children.Add(model.mv3d);
            }
            catch (Exception ex) { }
        }
Example #11
0
 public void Init(MyModel mm)
 {
     this.mm = mm;
 }