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); }
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); } }
/// <summary> /// Initializes a new instance of the <see cref="CompositeModel3D" /> class. /// </summary> public CompositeModel3D() { this.children = new ObservableElement3DCollection(); this.children.CollectionChanged += this.ChildrenChanged; }
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)); }); }