Exemplo n.º 1
0
        private void BuildPlanes()
        {
            PlaneGeometry = new ObservableElement3DCollection();
            var builder = new MeshBuilder(true);

            builder.AddBox(new SharpDX.Vector3(0, 0, 0), 15, 15, 0.5);
            var mesh = builder.ToMesh();

            var material = new PhongMaterial();

            material.DiffuseColor = new SharpDX.Color4(1, 0, 0, 0.5f);

            var model = new MeshGeometryModel3D()
            {
                Geometry      = mesh,
                Material      = material,
                Transform     = new Media3D.TranslateTransform3D(-15, 0, 0),
                IsTransparent = true,
                CullMode      = SharpDX.Direct3D11.CullMode.Back
            };

            PlaneGeometry.Add(model);

            material = new PhongMaterial();
            material.DiffuseColor = new SharpDX.Color4(0, 1, 0, 0.5f);

            model = new MeshGeometryModel3D()
            {
                Geometry      = mesh,
                Material      = material,
                Transform     = new Media3D.TranslateTransform3D(-20, 5, -10),
                IsTransparent = true,
                CullMode      = SharpDX.Direct3D11.CullMode.Back
            };
            PlaneGeometry.Add(model);

            material = new PhongMaterial();
            material.DiffuseColor = new SharpDX.Color4(0, 0, 1, 0.5f);

            model = new MeshGeometryModel3D()
            {
                Geometry      = mesh,
                Material      = material,
                Transform     = new Media3D.TranslateTransform3D(-25, 10, -20),
                IsTransparent = true,
                CullMode      = SharpDX.Direct3D11.CullMode.Back
            };
            PlaneGeometry.Add(model);
        }
Exemplo n.º 2
0
    public HelixMeshPoser(RobotSystem robot, PBRMaterial material, ObservableElement3DCollection robotModels)
    {
        _default     = robot.DefaultPose;
        _robotModels = robotModels;

        foreach (var joint in _default.Meshes.SelectMany(m => m))
        {
            var model = new MeshGeometryModel3D
            {
                Geometry         = ToWPF(joint),
                Material         = material,
                Transform        = Transform3D.Identity,
                IsThrowingShadow = true
            };

            robotModels.Add(model);
        }
    }
Exemplo n.º 3
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="CompositeModel3D" /> class.
 /// </summary>
 public CompositeModel3D()
 {
     this.children = new ObservableElement3DCollection();
     this.children.CollectionChanged += this.ChildrenChanged;
 }
Exemplo n.º 4
0
        public MainViewModel()
        {
            //    RenderTechniquesManager = new DefaultRenderTechniquesManager();
            EffectsManager = new DefaultEffectsManager();
            // ----------------------------------------------
            // titles
            this.Title    = "GroupElement Test";
            this.SubTitle = "WPF & SharpDX";

            // ----------------------------------------------
            // camera setup
            this.Camera = new PerspectiveCamera {
                Position = new Point3D(10, 2, 10), LookDirection = new Vector3D(-10, -2, -10), UpDirection = new Vector3D(0, 1, 0)
            };

            var lineBuilder = new LineBuilder();

            lineBuilder.AddLine(new Vector3(0, 0, 0), new Vector3(10, 0, 0));
            lineBuilder.AddLine(new Vector3(0, 0, 0), new Vector3(0, 10, 0));
            lineBuilder.AddLine(new Vector3(0, 0, 0), new Vector3(0, 0, 10));
            AxisModel        = lineBuilder.ToLineGeometry3D();
            AxisModel.Colors = new Color4Collection(AxisModel.Positions.Count);
            AxisModel.Colors.Add(Colors.Red.ToColor4());
            AxisModel.Colors.Add(Colors.Red.ToColor4());
            AxisModel.Colors.Add(Colors.Green.ToColor4());
            AxisModel.Colors.Add(Colors.Green.ToColor4());
            AxisModel.Colors.Add(Colors.Blue.ToColor4());
            AxisModel.Colors.Add(Colors.Blue.ToColor4());

            AxisLabel = new BillboardText3D();
            AxisLabel.TextInfo.Add(new TextInfo()
            {
                Origin = new Vector3(11, 0, 0), Text = "X", Foreground = Colors.Red.ToColor4()
            });
            AxisLabel.TextInfo.Add(new TextInfo()
            {
                Origin = new Vector3(0, 11, 0), Text = "Y", Foreground = Colors.Green.ToColor4()
            });
            AxisLabel.TextInfo.Add(new TextInfo()
            {
                Origin = new Vector3(0, 0, 11), Text = "Z", Foreground = Colors.Blue.ToColor4()
            });

            var meshBuilder = new MeshBuilder(true);

            meshBuilder.AddSphere(new Vector3(0, 0, 0), 0.5);
            SphereModel = meshBuilder.ToMesh();
            meshBuilder = new MeshBuilder(true);
            meshBuilder.AddBox(Vector3.Zero, 0.5, 0.5, 0.5);
            BoxModel    = meshBuilder.ToMesh();
            meshBuilder = new MeshBuilder(true);
            meshBuilder.AddCone(Vector3.Zero, new Vector3(0, 2, 0), 1, true, 24);
            ConeModel = meshBuilder.ToMesh();

            AddGroupModelCommand               = new RelayCommand(AddGroupModel);
            RemoveGroupModelCommand            = new RelayCommand(RemoveGroupModel);
            AddTransparentGroupModelCommand    = new RelayCommand(AddTransparentMesh);
            RemoveTransparentGroupModelCommand = new RelayCommand(RemoveTransparentModel);
            ClearGroupModelCommand             = new RelayCommand((o) => { GroupModelSource.Clear(); });
            AnimateGroupModelCommand           = new RelayCommand(AnimateGroupModel);
            AddItemsModelCommand               = new RelayCommand(AddItemsModel);
            RemoveItemsModelCommand            = new RelayCommand(RemoveItemsModel);
            ClearItemsModelCommand             = new RelayCommand((o) => { ItemsSource.Clear(); });
            AnimateItemsModelCommand           = new RelayCommand(AnimateItemsModel);
            ReplaceGroupSourceCommand          = new RelayCommand((o) => {
                GroupModelSource = new ObservableElement3DCollection();
                OnPropertyChanged(nameof(GroupModelSource));
            });
            ReplaceItemsModelSourceCommand = new RelayCommand((o) =>
            {
                ItemsSource = new ObservableCollection <MeshDataModel>();
                OnPropertyChanged(nameof(ItemsSource));
            });
        }