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; }
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(); }