Hallo Miteinander
Ich programmiere einen Würfel der sich drehen soll. Der Würfel wird in C# programmiert.
Nur leider werden nicht alle Seiten dargestellt nur 3 😦
Ich wollte fragen ob jemand den Fehler sieht oder sieht was fehlen könnte.
In WPF habe ich den View Port und das Licgt eingestellt mit inem Würfel in WPF hab ich keien Problme.
Danke
Gruss Leon
Ich habe den code hier normal rein gepostet da wenn ich ihn farbig reinposten will es schlecht aussueht 😦
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Media.Media3D;
using System.Windows.Media;
namespace cube3d2
{
class Cube : ModelVisual3D
{
Model3DGroup meshGroup;
public Cube()
{
meshGroup = new Model3DGroup();
CreateCube();
}
private void CreateCube()
{
Point3D position = new Point3D(0, 0, 0);
Point3D a = new Point3D(position.X - 1, position.Y - 1, position.Z + 1);
Point3D b = new Point3D(position.X + 1, position.Y - 1, position.Z + 1);
Point3D c = new Point3D(position.X + 1, position.Y - 1, position.Z - 1);
Point3D d = new Point3D(position.X - 1, position.Y - 1, position.Z - 1);
Point3D e = new Point3D(position.X - 1, position.Y + 1, position.Z + 1);
Point3D f = new Point3D(position.X + 1 , position.Y + 1, position.Z + 1);
Point3D g = new Point3D(position.X + 1, position.Y + 1, position.Z - 1);
Point3D h = new Point3D(position.X - 1, position.Y + 1, position.Z - 1);
GeometryModel3D front = new GeometryModel3D(BuildRectangle(a, b, f, e, new Vector3D(0, 0, 1)), new DiffuseMaterial(new SolidColorBrush(
Colors.Blue)));
GeometryModel3D right = new GeometryModel3D(BuildRectangle(b, c, g, f, new Vector3D(1, 0, 0)), new DiffuseMaterial(new SolidColorBrush(
Colors.Red)));
GeometryModel3D back = new GeometryModel3D(BuildRectangle(c, d, h, g, new Vector3D(0, 0, -1)), new DiffuseMaterial(new SolidColorBrush(
Colors.Silver)));
GeometryModel3D left = new GeometryModel3D(BuildRectangle(d, a, e, h, new Vector3D(-1, 0, 0)), new DiffuseMaterial(new SolidColorBrush(
Colors.Green)));
GeometryModel3D top = new GeometryModel3D(BuildRectangle(e, f, g, h, new Vector3D(0, 1, 0)), new DiffuseMaterial(new SolidColorBrush(
Colors.Orange)));
GeometryModel3D bottom = new GeometryModel3D(BuildRectangle(a, d, c, b, new Vector3D(0, -1, 0)), new DiffuseMaterial(new SolidColorBrush(
Colors.Violet)));
meshGroup.Children.Add(front);
meshGroup.Children.Add(right);
meshGroup.Children.Add(back);
meshGroup.Children.Add(left);
meshGroup.Children.Add(top);
meshGroup.Children.Add(bottom);
this.Content = meshGroup;
}
private MeshGeometry3D BuildRectangle(Point3D a, Point3D b, Point3D c, Point3D d,Vector3D normal)
{
MeshGeometry3D geometry = new MeshGeometry3D();
int baseIndex = geometry.Positions.Count;
//Add vertices
geometry.Positions.Add(a);
geometry.Positions.Add(b);
geometry.Positions.Add(c);
geometry.Positions.Add(d);
//Add normals
geometry.Normals.Add(normal);
geometry.Normals.Add(normal);
geometry.Normals.Add(normal);
geometry.Normals.Add(normal);
//Add indices
geometry.TriangleIndices.Add(baseIndex + 0);
geometry.TriangleIndices.Add(baseIndex + 2);
geometry.TriangleIndices.Add(baseIndex + 1);
geometry.TriangleIndices.Add(baseIndex + 2);
geometry.TriangleIndices.Add(baseIndex + 0);
geometry.TriangleIndices.Add(baseIndex + 3);
return geometry;
}
}
}
Daher in Zukunft bitte einfach an [Hinweis] Wie poste ich richtig? Punkt 6 halten.
Hi c#Leon,
Nur leider werden nicht alle Seiten dargestellt nur 3 😦
bist du sicher, daß du die Flächen alle in der gleichen Drehrichtung erstellst?
In WPF habe ich den View Port und das Licgt eingestellt mit inem Würfel in WPF hab ich keien Problme.
Ih nchs verstehen wasd u dmit sgaen mcöhtest...
Christian
Weeks of programming can save you hours of planning