예제 #1
0
        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target)
        {
            switch (connectionId)
            {
            case 1:
                this.view1 = ((HelixToolkit.SharpDX.Wpf.Viewport3DX)(target));
                return;

            case 2:
                this.model1 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
                return;

            case 3:
                this.model2 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
                return;

            case 4:
                this.model3 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
                return;

            case 5:
                this.shadingPanel = ((System.Windows.Controls.Expander)(target));
                return;
            }
            this._contentLoaded = true;
        }
예제 #2
0
        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target)
        {
            switch (connectionId)
            {
            case 1:
                this.view1 = ((HelixToolkit.SharpDX.Wpf.Viewport3DX)(target));
                return;

            case 2:
                this.envMap = ((HelixToolkit.SharpDX.Wpf.EnvironmentMap3D)(target));
                return;

            case 3:
                this.model = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
                return;

            case 4:
                this.shadingPanel = ((System.Windows.Controls.Expander)(target));
                return;

            case 5:
                this.propertiesPanel = ((System.Windows.Controls.Expander)(target));
                return;

            case 6:
                this.matCombo = ((System.Windows.Controls.ComboBox)(target));
                return;

            case 7:
                this.matControl = ((EnvironmentMapDemo.MaterialControl)(target));
                return;
            }
            this._contentLoaded = true;
        }
 public override void OnMouse3DUp(object sender, RoutedEventArgs e)
 {
     base.OnMouse3DUp(sender, e);
     if (this.isCaptured)
     {
         this.isCaptured = false;
         this.camera = null;
         this.viewport = null;
     }
 }
예제 #4
0
        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target)
        {
            switch (connectionId)
            {
            case 1:
                this.view1 = ((HelixToolkit.SharpDX.Wpf.Viewport3DX)(target));
                return;

            case 2:
                this.shadowMap = ((HelixToolkit.SharpDX.Wpf.ShadowMap3D)(target));
                return;

            case 3:
                this.model1 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
                return;

            case 4:
                this.model2 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
                return;

            case 5:
                this.model3 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
                return;

            case 6:
                this.plane = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
                return;

            case 7:
                this.lines = ((HelixToolkit.SharpDX.Wpf.LineGeometryModel3D)(target));
                return;

            case 8:
                this.grid = ((HelixToolkit.SharpDX.Wpf.LineGeometryModel3D)(target));
                return;

            case 9:
                this.shadingPanel = ((System.Windows.Controls.Expander)(target));
                return;

            case 10:
                this.sliderInt = ((System.Windows.Controls.Slider)(target));
                return;

            case 11:
                this.sliderPcf = ((System.Windows.Controls.Slider)(target));
                return;

            case 12:
                this.sliderBias = ((System.Windows.Controls.Slider)(target));
                return;
            }
            this._contentLoaded = true;
        }
        public override void OnMouse3DDown(object sender, RoutedEventArgs e)
        {
            base.OnMouse3DDown(sender, e);

            var args = e as Mouse3DEventArgs;
            if (args == null) return;
            if (args.Viewport == null) return;

            this.isCaptured = true;
            this.viewport = args.Viewport;
            this.camera = args.Viewport.Camera;
            this.lastHitPos = args.HitTestResult.PointHit;
        }
예제 #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PanHandler"/> class.
 /// </summary>
 /// <param name="viewport">
 /// The viewport.
 /// </param>
 public PanHandler(Viewport3DX viewport)
     : base(viewport)
 {
 }
예제 #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ZoomRectangleHandler"/> class.
 /// </summary>
 /// <param name="viewport">
 /// The viewport.
 /// </param>
 public ZoomRectangleHandler(Viewport3DX viewport)
     : base(viewport)
 {
 }
예제 #8
0
 void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
     switch (connectionId)
     {
     case 1:
     this.view1 = ((HelixToolkit.SharpDX.Wpf.Viewport3DX)(target));
     return;
     case 2:
     this.shadowMap = ((HelixToolkit.SharpDX.Wpf.ShadowMap3D)(target));
     return;
     case 3:
     this.model1 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
     return;
     case 4:
     this.model2 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
     return;
     case 5:
     this.model3 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
     return;
     case 6:
     this.plane = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
     return;
     case 7:
     this.lines = ((HelixToolkit.SharpDX.Wpf.LineGeometryModel3D)(target));
     return;
     case 8:
     this.grid = ((HelixToolkit.SharpDX.Wpf.LineGeometryModel3D)(target));
     return;
     case 9:
     this.shadingPanel = ((System.Windows.Controls.Expander)(target));
     return;
     case 10:
     this.sliderInt = ((System.Windows.Controls.Slider)(target));
     return;
     case 11:
     this.sliderPcf = ((System.Windows.Controls.Slider)(target));
     return;
     case 12:
     this.sliderBias = ((System.Windows.Controls.Slider)(target));
     return;
     }
     this._contentLoaded = true;
 }
예제 #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MouseGestureHandler"/> class.
 /// </summary>
 /// <param name="viewport">
 /// The viewport.
 /// </param>
 protected MouseGestureHandler(Viewport3DX viewport)
 {
     this.Viewport = viewport;
     this.ManipulationWatch = new Stopwatch();
 }
예제 #10
0
 void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
     switch (connectionId)
     {
     case 1:
     this.view1 = ((HelixToolkit.SharpDX.Wpf.Viewport3DX)(target));
     return;
     case 2:
     this.envMap = ((HelixToolkit.SharpDX.Wpf.EnvironmentMap3D)(target));
     return;
     case 3:
     this.mesh = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
     return;
     case 4:
     this.lines = ((HelixToolkit.SharpDX.Wpf.LineGeometryModel3D)(target));
     return;
     case 5:
     this.shadingPanel = ((System.Windows.Controls.Expander)(target));
     return;
     }
     this._contentLoaded = true;
 }
예제 #11
0
 void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
     switch (connectionId)
     {
     case 1:
     this.view1 = ((HelixToolkit.SharpDX.Wpf.Viewport3DX)(target));
     return;
     case 2:
     this.model = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
     return;
     case 3:
     this.floor = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
     return;
     case 4:
     this.shadingPanel = ((System.Windows.Controls.Expander)(target));
     return;
     case 5:
     this.propertyGrid = ((Xceed.Wpf.Toolkit.PropertyGrid.PropertyGrid)(target));
     return;
     }
     this._contentLoaded = true;
 }
예제 #12
0
        public MainViewModel(Viewport3DX view)
        {
            this.view = view;            

            // ----------------------------------------------
            // set windows text
            Title = "Lighting Demo (WPF & SharpDX)";
            SubTitle = string.Format("Model: {0}, Number Lights: {1}", RenderTechnique, Light3D.LightCount);

            // ----------------------------------------------
            // camera setup
            Camera = new PerspectiveCamera { Position = new Point3D(8, 9, 7), LookDirection = new Vector3D(-5, -12, -5), UpDirection = new Vector3D(0, 1, 0) };

            // ----------------------------------------------
            // setup scene
            AmbientLightColor = new Color4(0.2f, 0.2f, 0.2f, 1.0f);

            Light1Color = (Color4)Color.White;
            Light2Color = (Color4)Color.Red;
            Light3Color = (Color4)Color.LightYellow;
            Light4Color = (Color4)Color.LightBlue;

            Light2Attenuation = new Vector3(1.0f, 0.5f, 0.10f);
            Light3Attenuation = new Vector3(1.0f, 0.1f, 0.05f);
            Light4Attenuation = new Vector3(1.0f, 0.2f, 0.0f);

            Light1Direction = new Vector3(0, -10, -10);
            Light1Transform = new Media3D.TranslateTransform3D(-Light1Direction.ToVector3D());
            Light1DirectionTransform = CreateAnimatedTransform2(-Light1Direction.ToVector3D(), new Vector3D(0, 1, -1), 24);
            //Light1DirectionTransform = Media3D.Transform3D.Identity;// CreateAnimatedTransform(new Vector3D(0, 1, 0), new Vector3D(1, 0, 1), 8);
            
            Light2Transform = CreateAnimatedTransform1(new Vector3D(-4, 0, 0), new Vector3D(0, 0, 1), 3);
            Light3Transform = CreateAnimatedTransform1(new Vector3D(0, 0, 4), new Vector3D(0, 1, 0), 5);
            Light4Transform = new Media3D.TranslateTransform3D(new Vector3D(0, 5, 0));
            Light4DirectionTransform = CreateAnimatedTransform1(new Vector3D(0, 1, 0), new Vector3D(1, 0, 1), 4);

            // ----------------------------------------------
            // light model3d
            var sphere = new MeshBuilder();
            sphere.AddSphere(new Vector3(0, 0, 0), 0.2);
            Sphere = sphere.ToMeshGeometry3D();
            LightModelMaterial = new PhongMaterial
            {
                AmbientColor = Color.Gray,
                DiffuseColor = Color.Gray,
                EmissiveColor = Color.Yellow,
                SpecularColor = Color.Black,
            };

            // ----------------------------------------------
            // scene model3d
            var b1 = new MeshBuilder(true, true, true);
            b1.AddSphere(new Vector3(0.25f, 0.25f, 0.25f), 0.75, 64, 64);
            b1.AddBox(-new Vector3(0.25f, 0.25f, 0.25f), 1, 1, 1, BoxFaces.All);
            b1.AddBox(-new Vector3(5.0f, 0.0f, 0.0f), 1, 1, 1, BoxFaces.All);
            b1.AddSphere(new Vector3(5f, 0f, 0f), 0.75, 64, 64);
            b1.AddCylinder(new Vector3(0f, -3f, -5f), new Vector3(0f, 3f, -5f), 1.2, 64);

            Model = b1.ToMeshGeometry3D();
            ModelTransform = new Media3D.TranslateTransform3D(0, 0, 0);
            ModelMaterial = PhongMaterials.Chrome;
            //ModelMaterial.TextureMap = new BitmapImage(new System.Uri(@"TextureCheckerboard2.jpg", System.UriKind.RelativeOrAbsolute));
            ModelMaterial.NormalMap = new BitmapImage(new System.Uri(@"TextureCheckerboard2_dot3.jpg", System.UriKind.RelativeOrAbsolute));
            //odelMaterial.NormalMap = new BitmapImage(new System.Uri(@"TextureNoise1_dot3.jpg", System.UriKind.RelativeOrAbsolute));


            // ----------------------------------------------
            // floor model3d
            var b2 = new MeshBuilder(true, true, true);
            b2.AddBox(new Vector3(0.0f, -5.0f, 0.0f), 15, 0.1, 15, BoxFaces.All);
            b2.AddSphere(new Vector3(-5.0f, -5.0f, 5.0f), 4, 64, 64);
            b2.AddCone(new Vector3(6f, -9f, -6f), new Vector3(6f, -1f, -6f), 4f, true, 64);
            Floor = b2.ToMeshGeometry3D();
            FloorTransform = new Media3D.TranslateTransform3D(0, 0, 0);
            FloorMaterial = new PhongMaterial
            {
                AmbientColor = Color.Gray,
                DiffuseColor = new Color4(0.75f, 0.75f, 0.75f, 1.0f), // Colors.LightGray,
                SpecularColor = Color.White,
                SpecularShininess = 100f,
                DiffuseMap = new BitmapImage(new System.Uri(@"TextureCheckerboard2.jpg", System.UriKind.RelativeOrAbsolute)),
                NormalMap = new BitmapImage(new System.Uri(@"TextureCheckerboard2_dot3.jpg", System.UriKind.RelativeOrAbsolute)),
            };
        }
예제 #13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RotateHandler"/> class.
 /// </summary>
 /// <param name="controller">
 /// The controller.
 /// </param>
 /// <param name="changeLookAt">
 /// The change look at.
 /// </param>
 public RotateHandler(Viewport3DX controller, bool changeLookAt = false)
     : base(controller)
 {
     this.changeLookAt = changeLookAt;
 }
예제 #14
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public override void OnMouse3DDown(object sender, RoutedEventArgs e)
        {
            base.OnMouse3DDown(sender, e);

            var args = e as Mouse3DEventArgs;
            if (args == null) return;
            if (args.Viewport == null) return;

            this.isMouseCaptured = true;
            this.viewport = args.Viewport;
            this.cameraNormal = args.Viewport.Camera.LookDirection.ToVector3();
            this.lastHitPosWS = args.HitTestResult.PointHit.ToVector3();
        }
예제 #15
0
 void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
     switch (connectionId)
     {
     case 1:
     this.view1 = ((HelixToolkit.SharpDX.Wpf.Viewport3DX)(target));
     return;
     case 2:
     this.model1 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
     return;
     case 3:
     this.model2 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
     return;
     case 4:
     this.model3 = ((HelixToolkit.SharpDX.Wpf.DraggableGeometryModel3D)(target));
     return;
     case 5:
     this.lines = ((HelixToolkit.SharpDX.Wpf.LineGeometryModel3D)(target));
     return;
     case 6:
     this.translateX = ((HelixToolkit.SharpDX.Wpf.UITranslateManipulator3D)(target));
     return;
     case 7:
     this.translateY = ((HelixToolkit.SharpDX.Wpf.UITranslateManipulator3D)(target));
     return;
     case 8:
     this.translateZ = ((HelixToolkit.SharpDX.Wpf.UITranslateManipulator3D)(target));
     return;
     case 9:
     this.rotateX = ((HelixToolkit.SharpDX.Wpf.UIRotateManipulator3D)(target));
     return;
     case 10:
     this.rotateY = ((HelixToolkit.SharpDX.Wpf.UIRotateManipulator3D)(target));
     return;
     case 11:
     this.rotateZ = ((HelixToolkit.SharpDX.Wpf.UIRotateManipulator3D)(target));
     return;
     case 12:
     this.composit = ((HelixToolkit.SharpDX.Wpf.UICompositeManipulator3D)(target));
     return;
     case 13:
     this.grid = ((HelixToolkit.SharpDX.Wpf.LineGeometryModel3D)(target));
     return;
     case 14:
     this.shadingPanel = ((System.Windows.Controls.Expander)(target));
     return;
     }
     this._contentLoaded = true;
 }
예제 #16
0
 public Mouse3DEventArgs(RoutedEvent routedEvent, object source, HitTestResult hitTestResult, Point position,  Viewport3DX viewport = null)
     : base(routedEvent, source)
 {
     this.HitTestResult = hitTestResult;
     this.Position = position;
     this.Viewport = viewport;
 }
예제 #17
0
 public MouseMove3DEventArgs(object source, HitTestResult hitTestResult, Point position, Viewport3DX viewport = null)
     : base(GeometryModel3D.MouseMove3DEvent, source, hitTestResult, position, viewport)
 { }
예제 #18
0
        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target)
        {
            switch (connectionId)
            {
            case 1:
                this.view1 = ((HelixToolkit.SharpDX.Wpf.Viewport3DX)(target));
                return;

            case 2:
                this.model1 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
                return;

            case 3:
                this.model2 = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
                return;

            case 4:
                this.model3 = ((HelixToolkit.SharpDX.Wpf.DraggableGeometryModel3D)(target));
                return;

            case 5:
                this.lines = ((HelixToolkit.SharpDX.Wpf.LineGeometryModel3D)(target));
                return;

            case 6:
                this.translateX = ((HelixToolkit.SharpDX.Wpf.UITranslateManipulator3D)(target));
                return;

            case 7:
                this.translateY = ((HelixToolkit.SharpDX.Wpf.UITranslateManipulator3D)(target));
                return;

            case 8:
                this.translateZ = ((HelixToolkit.SharpDX.Wpf.UITranslateManipulator3D)(target));
                return;

            case 9:
                this.rotateX = ((HelixToolkit.SharpDX.Wpf.UIRotateManipulator3D)(target));
                return;

            case 10:
                this.rotateY = ((HelixToolkit.SharpDX.Wpf.UIRotateManipulator3D)(target));
                return;

            case 11:
                this.rotateZ = ((HelixToolkit.SharpDX.Wpf.UIRotateManipulator3D)(target));
                return;

            case 12:
                this.composit = ((HelixToolkit.SharpDX.Wpf.UICompositeManipulator3D)(target));
                return;

            case 13:
                this.grid = ((HelixToolkit.SharpDX.Wpf.LineGeometryModel3D)(target));
                return;

            case 14:
                this.shadingPanel = ((System.Windows.Controls.Expander)(target));
                return;
            }
            this._contentLoaded = true;
        }
예제 #19
0
 void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
     switch (connectionId)
     {
     case 1:
     this.view1 = ((HelixToolkit.SharpDX.Wpf.Viewport3DX)(target));
     return;
     case 2:
     this.plane = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
     return;
     case 3:
     this.grid = ((HelixToolkit.SharpDX.Wpf.LineGeometryModel3D)(target));
     return;
     case 4:
     this.lightPanel = ((System.Windows.Controls.Expander)(target));
     return;
     }
     this._contentLoaded = true;
 }
예제 #20
0
 void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
     switch (connectionId)
     {
     case 1:
     this.view1 = ((HelixToolkit.SharpDX.Wpf.Viewport3DX)(target));
     return;
     case 2:
     this.envMap = ((HelixToolkit.SharpDX.Wpf.EnvironmentMap3D)(target));
     return;
     case 3:
     this.model = ((HelixToolkit.SharpDX.Wpf.MeshGeometryModel3D)(target));
     return;
     case 4:
     this.shadingPanel = ((System.Windows.Controls.Expander)(target));
     return;
     case 5:
     this.propertiesPanel = ((System.Windows.Controls.Expander)(target));
     return;
     case 6:
     this.matCombo = ((System.Windows.Controls.ComboBox)(target));
     return;
     case 7:
     this.matControl = ((EnvironmentMapDemo.MaterialControl)(target));
     return;
     }
     this._contentLoaded = true;
 }