/// <summary> /// /// </summary> public CoordinateSystemNode() { var builder = new MeshBuilder(true, false, false); builder.AddArrow(Vector3.Zero, new Vector3(arrowSize, 0, 0), arrowWidth, arrowHead, 8); builder.AddArrow(Vector3.Zero, new Vector3(0, arrowSize, 0), arrowWidth, arrowHead, 8); builder.AddArrow(Vector3.Zero, new Vector3(0, 0, arrowSize), arrowWidth, arrowHead, 8); var mesh = builder.ToMesh(); arrowMeshModel.Material = new PhongMaterialCore() { DiffuseColor = Color.White }; arrowMeshModel.Geometry = mesh; arrowMeshModel.CullMode = CullMode.Back; arrowMeshModel.OnSetRenderTechnique += (host) => { return(host.EffectsManager[DefaultRenderTechniqueNames.Colors]); }; arrowMeshModel.IsHitTestVisible = false; arrowMeshModel.RenderCore.RenderType = RenderType.ScreenSpaced; axisBillboard.IsHitTestVisible = false; axisBillboard.RenderCore.RenderType = RenderType.ScreenSpaced; axisBillboard.EnableViewFrustumCheck = false; var axisLabel = new BillboardText3D(); axisLabel.TextInfo.Add(new TextInfo()); axisLabel.TextInfo.Add(new TextInfo()); axisLabel.TextInfo.Add(new TextInfo()); axisBillboard.Geometry = axisLabel; UpdateAxisColor(mesh, 0, AxisXColor, LabelX, LabelColor); UpdateAxisColor(mesh, 1, AxisYColor, LabelY, LabelColor); UpdateAxisColor(mesh, 2, AxisZColor, LabelZ, LabelColor); this.AddChildNode(arrowMeshModel); this.AddChildNode(axisBillboard); }
/// <summary> /// Initialization /// </summary> public void InitializeBusinessLogic() { ConfigurationHelper.RegisterSettings(Properties.Settings.Default); pointCloudViewModel = new PointcloudViewModel(new SharpDX.Size2(0, 0)); PointCloudView.ViewModel = pointCloudViewModel; PointCloudView.InitializeScene(); DataContext = pointCloudViewModel; // Moving Camera vertically up and turning it to look down PointCloudView.ViewModel.SetCvmPosition(new System.Windows.Media.Media3D.Vector3D(0, 0, groundZ), new System.Windows.Media.Media3D.Vector3D(180, 0, 90)); var planeColor = System.Windows.Media.Color.FromArgb(20, 50, 255, 50).ToColor4(); // Only points from this rectangular area are included and outliers are ignored var scenePlane = PointcloudViewModel.CreatePlane(planeColor, groundD, groundW, new SharpDX.Vector3(0, 0, 1f)); PointCloudView.SceneRoot.Children.Add(scenePlane); // For 3D texts BillboardTextModel3D text = new BillboardTextModel3D(); PointCloudView.SceneRoot.Children.Add(text); labels = new BillboardText3D(); text.Geometry = labels; boundingBoxGroup = new GroupModel3D(); PointCloudView.SceneRoot.Children.Add(boundingBoxGroup); rosControlBase.RosConnected += RosControlBase_RosConnected; rosControlBase.RosDisconnected += RosControlBase_RosDisconnected; rosControlBase.CvmDeviceInfoChaged += RosControlBase_CvmDeviceInfoChaged; }
public MainViewModel() { EffectsManager = new DefaultEffectsManager(); Title = "Material Demo"; this.Camera = new PerspectiveCamera { Position = new Point3D(-30, 30, -30), LookDirection = new Vector3D(30, -30, 30), UpDirection = new Vector3D(0, 1, 0) }; var builder = new MeshBuilder(); builder.AddBox(new Vector3(0, -6, 0), 200, 2, 100); Floor = builder.ToMesh(); builder = new MeshBuilder(); builder.AddSphere(Vector3.Zero, 2); LoadObj(@"shaderBall\shaderBall.obj"); EnvironmentMap = LoadFileToMemory("Cubemap_Grandcanyon.dds"); ColorStripeMaterial.ColorStripeX = GetGradients(new Color4(1, 0, 0, 1), new Color4(0, 1, 0, 1), new Color4(0, 0, 1, 1), 48).ToList(); ColorStripeMaterial.ColorStripeY = GetGradients(new Color4(1, 1, 0, 1), new Color4(0, 1, 1, 1), new Color4(1, 0, 1, 1), 48).ToList(); MeshTitles = new BillboardText3D(); MeshTitles.TextInfo.Add(new TextInfo("Blinn", Transform1.ToVector3()) { Scale = 0.08f, Background = new Color4(1, 1, 1, 1) }); MeshTitles.TextInfo.Add(new TextInfo("Normal", Transform2.ToVector3()) { Scale = 0.08f, Background = new Color4(1, 1, 1, 1) }); MeshTitles.TextInfo.Add(new TextInfo("Diffuse", Transform3.ToVector3()) { Scale = 0.08f, Background = new Color4(1, 1, 1, 1) }); MeshTitles.TextInfo.Add(new TextInfo("Position", Transform4.ToVector3()) { Scale = 0.08f, Background = new Color4(1, 1, 1, 1) }); MeshTitles.TextInfo.Add(new TextInfo("VertexColor", Transform5.ToVector3()) { Scale = 0.08f, Background = new Color4(1, 1, 1, 1) }); MeshTitles.TextInfo.Add(new TextInfo("ColorStripe", Transform6.ToVector3()) { Scale = 0.08f, Background = new Color4(1, 1, 1, 1) }); (FloorMaterial as PhongMaterial).RenderShadowMap = true; }
/// <summary> /// /// </summary> public CoordinateSystemNode() { IsHitTestVisible = false; CameraType = ScreenSpacedCameraType.Perspective; arrowMeshModel.Material = new ColorMaterialCore(); arrowMeshModel.CullMode = CullMode.Back; axisBillboard.EnableViewFrustumCheck = false; var axisLabel = new BillboardText3D(); axisLabel.TextInfo.Add(new TextInfo()); axisLabel.TextInfo.Add(new TextInfo()); axisLabel.TextInfo.Add(new TextInfo()); axisBillboard.Geometry = axisLabel; this.AddChildNode(arrowMeshModel); this.AddChildNode(axisBillboard); UpdateModel(); }
public DynaShapeDisplay(Solver solver) { this.solver = solver; pointGeometry = new PointGeometry3D { Positions = new Vector3Collection(), Indices = new IntCollection(), Colors = new Color4Collection() }; lineGeometry = new LineGeometry3D() { Positions = new Vector3Collection(), Indices = new IntCollection(), Colors = new Color4Collection() }; billboardText = new BillboardText3D(); DynaShapeViewExtension.DynamoWindow.Dispatcher.Invoke( () => { pointModel = new PointGeometryModel3D { Size = new Size(5, 5), Figure = PointGeometryModel3D.PointFigure.Ellipse, Color = Color.White, }; lineModel = new LineGeometryModel3D { Thickness = 0.5, Color = Color.White, }; billboardTextModel = new BillboardTextModel3D() { }; }, DispatcherPriority.Send); DynaShapeViewExtension.ViewModel.RequestViewRefresh += RequestViewRefreshHandler; DynaShapeViewExtension.DynamoWindow.Closed += (sender, args) => Dispose(); }
private void InitializeCoordinates() { var builder = new LineBuilder(); builder.AddLine(Vector3.Zero, Vector3.UnitX * 5); builder.AddLine(Vector3.Zero, Vector3.UnitY * 5); builder.AddLine(Vector3.Zero, Vector3.UnitZ * 5); Coordinate = builder.ToLineGeometry3D(); Coordinate.Colors = new Color4Collection(Enumerable.Repeat <Color4>(Color.White, 6)); Coordinate.Colors[0] = Coordinate.Colors[1] = Color.Red; Coordinate.Colors[2] = Coordinate.Colors[3] = Color.Green; Coordinate.Colors[4] = Coordinate.Colors[5] = Color.Blue; CoordinateText = new BillboardText3D(); CoordinateText.TextInfo.Add(new TextInfo("X", Vector3.UnitX * 6)); CoordinateText.TextInfo.Add(new TextInfo("Y", Vector3.UnitY * 6)); CoordinateText.TextInfo.Add(new TextInfo("Z", Vector3.UnitZ * 6)); }
public MainViewModel() { // titles this.Title = "Simple Demo"; this.SubTitle = "WPF & SharpDX"; // camera setup this.Camera = new PerspectiveCamera { Position = new Point3D(3, 3, 5), LookDirection = new Vector3D(-3, -3, -5), UpDirection = new Vector3D(0, 1, 0) }; // default render technique this.RenderTechnique = Techniques.RenderBlinn; // setup lighting this.AmbientLightColor = new Color4(0.1f, 0.1f, 0.1f, 1.0f); this.DirectionalLightColor = Color.White; this.DirectionalLightDirection = new Vector3(-2, -5, -2); // floor plane grid this.Grid = LineBuilder.GenerateGrid(); this.GridColor = SharpDX.Color.Black; this.GridTransform = new Media3D.TranslateTransform3D(-5, -1, -5); // scene model3d var b1 = new MeshBuilder(); b1.AddSphere(new Vector3(0, 0, 0), 0.5); b1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2, BoxFaces.All); var meshGeometry = b1.ToMeshGeometry3D(); meshGeometry.Colors = new Color4Collection(meshGeometry.TextureCoordinates.Select(x => x.ToColor4())); this.Model = meshGeometry; // lines model3d var e1 = new LineBuilder(); e1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2); this.Lines = e1.ToLineGeometry3D(); // model trafos this.Model1Transform = new Media3D.TranslateTransform3D(0, 0, 0); this.Model2Transform = new Media3D.TranslateTransform3D(-2, 0, 0); this.Model3Transform = new Media3D.TranslateTransform3D(+2, 0, 0); // model materials this.RedMaterial = PhongMaterials.Red; this.GreenMaterial = PhongMaterials.Green; this.BlueMaterial = PhongMaterials.Blue; //var diffColor = this.RedMaterial.DiffuseColor; //diffColor.Alpha = 0.5f; //this.RedMaterial.DiffuseColor = diffColor; Points = new PointGeometry3D(); var ptPos = new Vector3Collection(); var ptIdx = new IntCollection(); for (int x = 0; x < 10; x++) { for (int y = 0; y < 10; y++) { for (int z = 0; z < 10; z++) { ptIdx.Add(ptPos.Count); ptPos.Add(new Vector3(x, y, z)); } } } Points.Positions = ptPos; Points.Indices = ptIdx; Text = new BillboardText3D(); for (var i = 0; i < 50; i++) { for (var j = 0; j < 50; j++) { Text.TextInfo.Add(new TextInfo("Hello World", new Vector3(i, j, 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); }
public MainPageViewModel() { EffectsManager = new DefaultEffectsManager(new Logger()); Camera = new PerspectiveCamera() { Position = new Vector3(40, 10, 100), LookDirection = new Vector3(0, -10, -100), UpDirection = UpDirection, FarPlaneDistance = 500, NearPlaneDistance = 0.1 }; Camera1 = new OrthographicCamera() { Position = new Vector3(60, 10, 100), LookDirection = new Vector3(0, -10, -100), UpDirection = upDirection, Width = 30, FarPlaneDistance = 500, NearPlaneDistance = 20 }; var builder = new MeshBuilder(true, true, true); builder.AddBox(new SharpDX.Vector3(0, 0, 0), 2, 2, 2); builder.AddSphere(new Vector3(0, 2, 0), 1.5); Geometry = builder.ToMesh(); Geometry.UpdateOctree(); builder = new MeshBuilder(); builder.AddSphere(new Vector3(0, 2, 0), 2); Sphere = builder.ToMesh(); Sphere.UpdateOctree(); Material = new PhongMaterial() { AmbientColor = Color.Gray, DiffuseColor = new Color4(0.75f, 0.75f, 0.75f, 1.0f), SpecularColor = Color.White, SpecularShininess = 10f, ReflectiveColor = new Color4(0.2f, 0.2f, 0.2f, 0.5f) }; Material.DiffuseMap = LoadTexture("TextureCheckerboard2.jpg"); Material.NormalMap = LoadTexture("TextureCheckerboard2_dot3.jpg"); Material1 = Material.Clone(); Material1.ReflectiveColor = Color.Silver; Material1.RenderDiffuseMap = false; Material1.RenderNormalMap = false; var lineBuilder = new LineBuilder(); lineBuilder.AddLine(Vector3.Zero, new Vector3(5, 0, 0)); lineBuilder.AddLine(Vector3.Zero, new Vector3(0, 5, 0)); lineBuilder.AddLine(Vector3.Zero, new Vector3(0, 0, 5)); LineGeometry = lineBuilder.ToLineGeometry3D(); LineGeometry.Colors = new HelixToolkit.UWP.Core.Color4Collection() { Color.Red, Color.Red, Color.Green, Color.Green, Color.Blue, Color.Blue }; builder = new MeshBuilder(); builder.AddSphere(new Vector3(), 3); var mesh = builder.ToMesh(); mesh.UpdateOctree(); PointGeometry = new PointGeometry3D() { Positions = mesh.Positions }; AxisLabelGeometry = new BillboardText3D(); AxisLabelGeometry.TextInfo.Add(new TextInfo("X", new Vector3(5.5f, 0, 0)) { Foreground = Color.Red }); AxisLabelGeometry.TextInfo.Add(new TextInfo("Y", new Vector3(0, 5.5f, 0)) { Foreground = Color.Green }); AxisLabelGeometry.TextInfo.Add(new TextInfo("Z", new Vector3(0, 0, 5.5f)) { Foreground = Color.Blue }); builder = new MeshBuilder(); builder.AddBox(new Vector3(0, -6, 0), 30, 0.5, 30); FloorModel = builder.ToMesh(); FloorMaterial = PhongMaterials.Obsidian; FloorMaterial.ReflectiveColor = Color.Silver; EnvironmentMap = LoadTexture("Cubemap_Grandcanyon.dds"); UpDirXCommand = new RelayCommand(() => { UpDirection = Vector3.UnitX; }, () => { return(UpDirection != Vector3.UnitX); }); UpDirYCommand = new RelayCommand(() => { UpDirection = Vector3.UnitY; }, () => { return(UpDirection != Vector3.UnitY); }); UpDirZCommand = new RelayCommand(() => { UpDirection = Vector3.UnitZ; }, () => { return(UpDirection != Vector3.UnitZ); }); timer = new DispatcherTimer(); timer.Tick += Timer_Tick; timer.Interval = new TimeSpan(0, 0, 0, 0, 16); timer.Start(); }
public MainViewModel() { EffectsManager = new DefaultEffectsManager(); // titles Title = "Simple Demo"; SubTitle = "WPF & SharpDX"; // camera setup Camera = new PerspectiveCamera { Position = new Point3D(3, 3, 5), LookDirection = new Vector3D(-3, -3, -5), UpDirection = new Vector3D(0, 1, 0), FarPlaneDistance = 5000000 }; // setup lighting AmbientLightColor = Colors.DimGray; DirectionalLightColor = Colors.White; DirectionalLightDirection = new Vector3D(-2, -5, -2); // floor plane grid Grid = LineBuilder.GenerateGrid(new Vector3(0, 1, 0), -5, 5, -5, 5); GridColor = Colors.Black; GridTransform = new Media3D.TranslateTransform3D(0, -3, 0); // scene model3d var b1 = new MeshBuilder(); b1.AddSphere(new Vector3(0, 0, 0), 0.5); b1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2, BoxFaces.All); var meshGeometry = b1.ToMeshGeometry3D(); meshGeometry.Colors = new Color4Collection(meshGeometry.TextureCoordinates.Select(x => x.ToColor4())); Model = meshGeometry; // lines model3d var e1 = new LineBuilder(); e1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2); Lines = e1.ToLineGeometry3D(); var textBuilder = new MeshBuilder(); textBuilder.ExtrudeText("HelixToolkit.SharpDX", "Arial", System.Windows.FontStyles.Normal, System.Windows.FontWeights.Bold, 14, new Vector3(1, 0, 0), new Vector3(0, 0, 0), new Vector3(0, 0, 1)); TextModel = textBuilder.ToMesh(); // model trafos Model1Transform = new Media3D.TranslateTransform3D(0, 0, 0); Model2Transform = new Media3D.TranslateTransform3D(-2, 0, 0); Model3Transform = new Media3D.TranslateTransform3D(+2, 0, 0); Model4Transform = new Media3D.TranslateTransform3D(-8, 0, -5); // model materials RedMaterial = PhongMaterials.Red; GreenMaterial = PhongMaterials.Green; BlueMaterial = PhongMaterials.Blue; //var diffColor = this.RedMaterial.DiffuseColor; //diffColor.Alpha = 0.5f; //this.RedMaterial.DiffuseColor = diffColor; Points = new PointGeometry3D(); var ptPos = new Vector3Collection(); var ptIdx = new IntCollection(); for (int x = 0; x < 10; x++) { for (int y = 0; y < 10; y++) { for (int z = 0; z < 10; z++) { ptIdx.Add(ptPos.Count); ptPos.Add(new Vector3(x, y, z)); } } } Points.Positions = ptPos; Points.Indices = ptIdx; Text = new BillboardText3D(); int numRows = 11; int numColumns = 11; string[] texts = new string[] { "HelixToolkit", "abcde", "random", "SharpDX", "DirectX" }; float angle = 0; for (var i = 0; i < numRows; i++) { for (var j = 0; j < numColumns; j++) { angle += (float)Math.PI / 10; Text.TextInfo.Add(new TextInfo(texts[(i + j) % texts.Length], new Vector3((i - numRows / 2), 0.0f, (j - numColumns / 2))) { Foreground = new Color4((float)i / numRows, 1 - (float)i / numRows, (float)(numColumns - j) / numColumns, 1f), Background = new Color4(1 - (float)i / numRows, (float)(numColumns - j) / numColumns, (float)i / numRows, 0.8f), Scale = Math.Max(0.01f, (float)i / numRows * 0.02f), Angle = angle }); } } Billboard1Model = new BillboardSingleText3D() { TextInfo = new TextInfo("Model 1", new Vector3(0, 1, 0)) { Angle = 0 }, FontColor = Colors.Blue.ToColor4(), FontSize = 12, BackgroundColor = Colors.Plum.ToColor4(), FontStyle = System.Windows.FontStyles.Italic, Padding = new System.Windows.Thickness(2), }; var background = Colors.Blue; background.A = (byte)120; Billboard2Model = new BillboardSingleText3D() { TextInfo = new TextInfo("Model 2", new Vector3(2, 1, 0)) { Angle = -(float)Math.PI / 3 }, FontSize = 12, FontColor = Colors.Green.ToColor4(), BackgroundColor = background.ToColor4(), FontWeight = System.Windows.FontWeights.Bold, Padding = new System.Windows.Thickness(2), }; background = Colors.Purple; background.A = (byte)50; Billboard3Model = new BillboardSingleText3D(2, 0.8f) { TextInfo = new TextInfo("Model 3", new Vector3(-2, 1, 0)) { Angle = -(float)Math.PI / 6 }, FontSize = 12, FontColor = Colors.Red.ToColor4(), BackgroundColor = background.ToColor4(), FontFamily = "Times New Roman", FontStyle = System.Windows.FontStyles.Italic, Padding = new System.Windows.Thickness(2), }; //BillboardImageModel = new BillboardSingleImage3D(CreateBitmapSample()) { MaskColor = Color.Black }; BillboardImageModel = new BillboardSingleImage3D(CreatePNGSample(), 1, 1) { Angle = -(float)Math.PI / 5 }; BillboardImageModel.Center = new Vector3(2, 2, 0); UpXCommand = new RelayCommand(x => { UpDirection = new Vector3D(1, 0, 0); }); UpYCommand = new RelayCommand(x => { UpDirection = new Vector3D(0, 1, 0); }); UpZCommand = new RelayCommand(x => { UpDirection = new Vector3D(0, 0, 1); }); BackgroundTexture = BitmapExtensions.CreateLinearGradientBitmapStream(EffectsManager, 128, 128, Direct2DImageFormat.Bmp, new Vector2(0, 0), new Vector2(0, 128), new SharpDX.Direct2D1.GradientStop[] { new SharpDX.Direct2D1.GradientStop() { Color = Colors.White.ToColor4(), Position = 0f }, new SharpDX.Direct2D1.GradientStop() { Color = Colors.DarkGray.ToColor4(), Position = 1f } }); }
public MainViewModel() { // titles Title = "Simple Demo"; SubTitle = "WPF & SharpDX"; // camera setup Camera = new PerspectiveCamera { Position = new Point3D(-6, 8, 23), LookDirection = new Vector3D(11, -4, -23), UpDirection = new Vector3D(0, 1, 0), FarPlaneDistance = 5000 }; EffectsManager = new CustomEffectsManager(); var builder = new MeshBuilder(true); Vector3[] points = new Vector3[Width * Height]; for (int i = 0; i < Width; ++i) { for (int j = 0; j < Height; ++j) { points[i * Width + j] = new Vector3(i / 10f, 0, j / 10f); } } builder.AddRectangularMesh(points, Width); Model = builder.ToMesh(); for (int i = 0; i < Model.Normals.Count; ++i) { Model.Normals[i] = new Vector3(0, Math.Abs(Model.Normals[i].Y), 0); } StartColor = Colors.Blue; MidColor = Colors.Green; EndColor = Colors.Red; 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() }); builder = new MeshBuilder(true); builder.AddSphere(new Vector3(-15, 0, 0), 5); SphereModel = builder.ToMesh(); GenerateNoiseCommand = new RelayCommand((o) => { CreatePerlinNoise(); }); CreatePerlinNoise(); }
public MainViewModel() { // titles Title = "Simple Demo"; SubTitle = "WPF & SharpDX"; // camera setup Camera = new PerspectiveCamera { Position = new Point3D(3, 3, 5), LookDirection = new Vector3D(-3, -3, -5), UpDirection = new Vector3D(0, 1, 0), FarPlaneDistance = 5000000 }; // default render technique RenderTechniquesManager = new DefaultRenderTechniquesManager(); RenderTechnique = RenderTechniquesManager.RenderTechniques[DefaultRenderTechniqueNames.Blinn]; EffectsManager = new DefaultEffectsManager(RenderTechniquesManager); // setup lighting AmbientLightColor = new Color4(0.1f, 0.1f, 0.1f, 1.0f); DirectionalLightColor = Color.White; DirectionalLightDirection = new Vector3(-2, -5, -2); // floor plane grid Grid = LineBuilder.GenerateGrid(); GridColor = SharpDX.Color.Black; GridTransform = new Media3D.TranslateTransform3D(-5, -1, -5); // scene model3d var b1 = new MeshBuilder(); b1.AddSphere(new Vector3(0, 0, 0), 0.5); b1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2, BoxFaces.All); var meshGeometry = b1.ToMeshGeometry3D(); meshGeometry.Colors = new Color4Collection(meshGeometry.TextureCoordinates.Select(x => x.ToColor4())); Model = meshGeometry; // lines model3d var e1 = new LineBuilder(); e1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2); Lines = e1.ToLineGeometry3D(); // model trafos Model1Transform = new Media3D.TranslateTransform3D(0, 0, 0); Model2Transform = new Media3D.TranslateTransform3D(-2, 0, 0); Model3Transform = new Media3D.TranslateTransform3D(+2, 0, 0); // model materials RedMaterial = PhongMaterials.Red; GreenMaterial = PhongMaterials.Green; BlueMaterial = PhongMaterials.Blue; //var diffColor = this.RedMaterial.DiffuseColor; //diffColor.Alpha = 0.5f; //this.RedMaterial.DiffuseColor = diffColor; Points = new PointGeometry3D(); var ptPos = new Vector3Collection(); var ptIdx = new IntCollection(); for (int x = 0; x < 10; x++) { for (int y = 0; y < 10; y++) { for (int z = 0; z < 10; z++) { ptIdx.Add(ptPos.Count); ptPos.Add(new Vector3(x, y, z)); } } } Points.Positions = ptPos; Points.Indices = ptIdx; Text = new BillboardText3D(); for (var i = 0; i < 50; i++) { for (var j = 0; j < 50; j++) { Text.TextInfo.Add(new TextInfo("Hello World", new Vector3(i, j, 0))); } } Billboard1Model = new BillboardSingleText3D() { TextInfo = new TextInfo("Model 1", new Vector3(0, 1, 0)), FontColor = Color.Blue, FontSize = 12, BackgroundColor = Color.Plum, FontStyle = System.Windows.FontStyles.Italic, Padding = new System.Windows.Thickness(2) }; var background = Color.Blue; background.A = (byte)120; Billboard2Model = new BillboardSingleText3D() { TextInfo = new TextInfo("Model 1", new Vector3(2, 1, 0)), FontSize = 12, FontColor = Color.Green, BackgroundColor = background, FontWeight = System.Windows.FontWeights.Bold, Padding = new System.Windows.Thickness(2) }; background = Color.Purple; background.A = (byte)50; Billboard3Model = new BillboardSingleText3D(2, 0.8f) { TextInfo = new TextInfo("Model 1", new Vector3(-2, 1, 0)), FontSize = 12, FontColor = Color.Red, BackgroundColor = background, FontFamily = new System.Windows.Media.FontFamily("Times New Roman"), FontStyle = System.Windows.FontStyles.Italic, Padding = new System.Windows.Thickness(2) }; //BillboardImageModel = new BillboardSingleImage3D(CreateBitmapSample()) { MaskColor = Color.Black }; BillboardImageModel = new BillboardSingleImage3D(CreatePNGSample(), 1, 1); BillboardImageModel.Center = new Vector3(2, 2, 0); }
public MainViewModel() { // titles Title = "Simple Demo"; SubTitle = "WPF & SharpDX"; // camera setup Camera = new PerspectiveCamera { Position = new Point3D(3, 3, 5), LookDirection = new Vector3D(-3, -3, -5), UpDirection = new Vector3D(0, 1, 0), FarPlaneDistance = 5000000 }; // Create a custom render techniques manager that // only supports Phong and Blinn RenderTechniquesManager = new CustomRenderTechniquesManager(); RenderTechnique = RenderTechniquesManager.RenderTechniques["RenderCustom"]; EffectsManager = new CustomEffectsManager(RenderTechniquesManager); // setup lighting AmbientLightColor = new Color4(0.1f, 0.1f, 0.1f, 1.0f); DirectionalLightColor = Color.White; DirectionalLightDirection = new Vector3(-2, -5, -2); // floor plane grid Grid = LineBuilder.GenerateGrid(); GridColor = Color.Black; GridTransform = new Media3D.TranslateTransform3D(-5, -1, -5); // scene model3d var b1 = new MeshBuilder(); b1.AddSphere(new Vector3(0, 0, 0), 0.5); b1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2, BoxFaces.All); var meshGeometry = b1.ToMeshGeometry3D(); meshGeometry.Colors = new Color4Collection(meshGeometry.TextureCoordinates.Select(x => x.ToColor4())); Model = meshGeometry; // lines model3d var e1 = new LineBuilder(); e1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2); Lines = e1.ToLineGeometry3D(); // model transform Model1Transform = new Media3D.TranslateTransform3D(0, 0, 0); Model2Transform = new Media3D.TranslateTransform3D(-2, 0, 0); Model3Transform = new Media3D.TranslateTransform3D(+2, 0, 0); // model materials RedMaterial = PhongMaterials.Red; GreenMaterial = PhongMaterials.Green; BlueMaterial = PhongMaterials.Blue; Points = new PointGeometry3D(); var ptPos = new Vector3Collection(); var ptIdx = new IntCollection(); Text = new BillboardText3D(); for (int x = -5; x <= 5; x++) { for (int y = -5; y <= 5; y++) { ptIdx.Add(ptPos.Count); ptPos.Add(new Vector3(x, -1, y)); Text.TextInfo.Add(new TextInfo(string.Format("{0}:{1}", x, y), new Vector3(x, -1, y))); } } Points.Positions = ptPos; Points.Indices = ptIdx; }
private void RenderAction() { IRenderHost renderHost = DynaShapeViewExtension.GetViewport().RenderHost; List <Model3D> sceneItems = DynaShapeViewExtension.GetSceneItems(); pointGeometry = new PointGeometry3D { Positions = new Vector3Collection(), Indices = new IntCollection(), Colors = new Color4Collection() }; lineGeometry = new LineGeometry3D() { Positions = new Vector3Collection(), Indices = new IntCollection(), Colors = new Color4Collection() }; billboardText = new BillboardText3D(); foreach (MeshGeometryModel3D meshModel in meshModels) { meshModel.Detach(); if (sceneItems.Contains(meshModel)) { sceneItems.Remove(meshModel); } } meshModels.Clear(); //============================================ // Render nodes as points //============================================ int n = pointGeometry.Indices.Count; for (int i = 0; i < solver.Nodes.Count; i++) { pointGeometry.Positions.Add(solver.Nodes[i].Position.ToVector3()); pointGeometry.Colors.Add(DefaultPointColor); pointGeometry.Indices.Add(n + i); } //============================================================== // Render geometries from geometry binders //============================================================== foreach (GeometryBinder geometryBinder in solver.GeometryBinders) { if (geometryBinder.Show) { geometryBinder.CreateDisplayedGeometries(this, solver.Nodes); } } //============================================================================ // Render GUI elements //============================================================================ RenderGUI(); //============================================================== // Attach the geometries to Helix render host //============================================================== if (pointGeometry.Positions.Count >= 1) { pointModel.Geometry = pointGeometry; if (!sceneItems.Contains(pointModel)) { sceneItems.Add(pointModel); } if (!pointModel.IsAttached) { pointModel.Attach(renderHost); } // sceneItems.Remove(pointModel); // pointModel.Detach(); // sceneItems.Add(pointModel); // sw.Restart(); // pointModel.Attach(renderHost); // DynamoLogger.Instance.Log(sw.Elapsed.TotalMilliseconds + "ms (Attach)"); } else { if (sceneItems.Contains(pointModel)) { sceneItems.Remove(pointModel); } pointModel.Detach(); } if (lineGeometry.Positions.Count >= 2) { lineModel.Geometry = lineGeometry; if (!sceneItems.Contains(lineModel)) { sceneItems.Add(lineModel); } if (!lineModel.IsAttached) { lineModel.Attach(renderHost); } } else { if (sceneItems.Contains(lineModel)) { sceneItems.Remove(lineModel); } lineModel.Detach(); } foreach (MeshGeometryModel3D meshModel in meshModels) { sceneItems.Add(meshModel); meshModel.Attach(renderHost); } if (billboardText.TextInfo.Count >= 1) { billboardTextModel.Geometry = billboardText; if (!sceneItems.Contains(billboardTextModel)) { sceneItems.Add(billboardTextModel); } if (!billboardTextModel.IsAttached) { billboardTextModel.Attach(renderHost); } } else { if (sceneItems.Contains(billboardTextModel)) { sceneItems.Remove(billboardTextModel); } billboardTextModel.Detach(); } }
internal static BillboardText3D InitText3D() { var text3D = new BillboardText3D(); return(text3D); }
public MainPageViewModel() { EffectsManager = new DefaultEffectsManager(new Logger()); Camera = new PerspectiveCamera() { Position = new Vector3(0, 0, -15), LookDirection = new Vector3(0, 0, 15), UpDirection = new Vector3(0, 1, 0) }; var builder = new MeshBuilder(true, true, true); builder.AddBox(new SharpDX.Vector3(0, 0, 0), 2, 2, 2); builder.AddSphere(new Vector3(0, 2, 0), 1.5); Geometry = builder.ToMesh(); Material = new PhongMaterial() { AmbientColor = Color.Gray, DiffuseColor = new Color4(0.75f, 0.75f, 0.75f, 1.0f), SpecularColor = Color.White, SpecularShininess = 100f, }; Material.DiffuseMap = LoadTexture("TextureCheckerboard2.jpg"); Material.NormalMap = LoadTexture("TextureCheckerboard2_dot3.jpg"); var lineBuilder = new LineBuilder(); lineBuilder.AddLine(Vector3.Zero, new Vector3(5, 0, 0)); lineBuilder.AddLine(Vector3.Zero, new Vector3(0, 5, 0)); lineBuilder.AddLine(Vector3.Zero, new Vector3(0, 0, 5)); LineGeometry = lineBuilder.ToLineGeometry3D(); LineGeometry.Colors = new HelixToolkit.UWP.Core.Color4Collection() { Color.Red, Color.Red, Color.Green, Color.Green, Color.Blue, Color.Blue }; builder = new MeshBuilder(); builder.AddSphere(new Vector3(), 3); var mesh = builder.ToMesh(); PointGeometry = new PointGeometry3D() { Positions = mesh.Positions }; AxisLabelGeometry = new BillboardText3D(); AxisLabelGeometry.TextInfo.Add(new TextInfo("X", new Vector3(5.5f, 0, 0)) { Foreground = Color.Red }); AxisLabelGeometry.TextInfo.Add(new TextInfo("Y", new Vector3(0, 5.5f, 0)) { Foreground = Color.Green }); AxisLabelGeometry.TextInfo.Add(new TextInfo("Z", new Vector3(0, 0, 5.5f)) { Foreground = Color.Blue }); builder = new MeshBuilder(); builder.AddBox(new Vector3(0, -6, 0), 30, 0.5, 30); FloorModel = builder.ToMesh(); FloorMaterial = PhongMaterials.LightGray; timer = new DispatcherTimer(); timer.Tick += Timer_Tick; timer.Interval = new TimeSpan(0, 0, 0, 0, 16); timer.Start(); }