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(); }
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); } }
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(); }
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(); } }
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()); }
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; }
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) { } } } }
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); }
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; } }
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) { } }
public void Init(MyModel mm) { this.mm = mm; }