Quantcast
Viewing all articles
Browse latest Browse all 18858

WPF 3D Graphics in C#

Hello, I'm trying to make a 3D plane in C#, it runs with no error, but why the plane doesn't show up? My code is below:

<Window x:Class="Water.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="630" Width="1120"
        KeyDown="Window_KeyDown"><Grid><Viewport3D x:Name="Water" ClipToBounds="True"><!--Camera--><Viewport3D.Camera><PerspectiveCamera x:Name="MainCamera" Position="0,0,30" LookDirection="0,0,-1" FieldOfView="60"><PerspectiveCamera.Transform><RotateTransform3D><RotateTransform3D.Rotation><AxisAngleRotation3D x:Name="CameraRoate" Axis="0,1,0" Angle="0"/></RotateTransform3D.Rotation></RotateTransform3D></PerspectiveCamera.Transform></PerspectiveCamera></Viewport3D.Camera><!--Lights--><ModelVisual3D><ModelVisual3D.Content><Model3DGroup><DirectionalLight Color="#FFFFFF" Direction="0.6, -0.5, -0.6"/><DirectionalLight Color="#FFFFFF" Direction="-0.6, -0.5, -0.6"/><AmbientLight Color="#FFFFFF"/></Model3DGroup></ModelVisual3D.Content></ModelVisual3D><!--Water--><ModelVisual3D x:Name="WaterMesh"><ModelVisual3D.Content><GeometryModel3D><!--Front Texture--><GeometryModel3D.Material><MaterialGroup><DiffuseMaterial><DiffuseMaterial.Brush><SolidColorBrush Color="BlueViolet"/></DiffuseMaterial.Brush></DiffuseMaterial></MaterialGroup></GeometryModel3D.Material><!--Back Texture--><GeometryModel3D.BackMaterial><DiffuseMaterial><DiffuseMaterial.Brush><ImageBrush ImageSource="Texture\water.jpg"/></DiffuseMaterial.Brush></DiffuseMaterial></GeometryModel3D.BackMaterial></GeometryModel3D></ModelVisual3D.Content><!--Set Rotation Angle--><ModelVisual3D.Transform><RotateTransform3D><RotateTransform3D.Rotation><AxisAngleRotation3D x:Name="WaterRotate" Axis="1,0,0" Angle="0"/></RotateTransform3D.Rotation></RotateTransform3D></ModelVisual3D.Transform></ModelVisual3D></Viewport3D></Grid></Window>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Media3D;
using System.Windows.Media.Imaging;

namespace Water
{
    public class WaterGrid : ModelVisual3D
    { //<ModelVisual3D> -> <ModelVisual3D.Content> -> 
        //<GeometryModel3D> -> <GeometryModel3D.Geometry> ->
        //<MeshGeometry3D />
        public WaterGrid()
        {
            this.Content = new GeometryModel3D();
            (this.Content as GeometryModel3D).Geometry = Mesh();
        }

        internal Geometry3D Mesh()
        {
            MeshGeometry3D mesh = new MeshGeometry3D();
            mesh.Positions.Add(new Point3D(-10,  10,  0));
            mesh.Positions.Add(new Point3D(-10, -10,  0));
            mesh.Positions.Add(new Point3D( 10, -10,  0));
            mesh.Positions.Add(new Point3D( 10,  10,  0));

            mesh.TriangleIndices.Add(0);
            mesh.TriangleIndices.Add(1);
            mesh.TriangleIndices.Add(2);
            mesh.TriangleIndices.Add(2);
            mesh.TriangleIndices.Add(3);
            mesh.TriangleIndices.Add(0);

            mesh.Normals.Add(new Vector3D(0, 0, 1));
            mesh.Normals.Add(new Vector3D(0, 0, 1));
            mesh.Normals.Add(new Vector3D(0, 0, 1));
            mesh.Normals.Add(new Vector3D(0, 0, 1));

            mesh.TextureCoordinates.Add(new Point(0, 0));
            mesh.TextureCoordinates.Add(new Point(0, 1));
            mesh.TextureCoordinates.Add(new Point(1, 1));
            mesh.TextureCoordinates.Add(new Point(1, 0));

            return mesh;
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Media.Media3D;

namespace Water
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            ModelVisual3D model = new ModelVisual3D();
            WaterGrid mesh = new WaterGrid();
            WaterMesh.Children.Add(model);
        }
    }
}


Viewing all articles
Browse latest Browse all 18858

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>