2010-07-21 4 views
0

편집 내부 코드 : 고정
안녕하세요 여러분, 내가 가지고 내 창에 다음과 같은 이벤트 핸들러 :3D 큐브를 그리려는데 작동하지 않습니다.


private void buttonView_Click(object sender, RoutedEventArgs e) 
{ 
    //Camera 
    PerspectiveCamera camera = new PerspectiveCamera(); 
    camera.LookDirection = new Vector3D(5, -2, -3); 
    camera.Position = new Point3D(-5, 2, 3); 
    camera.UpDirection = new Vector3D(0, 1, 0); 
    camera.NearPlaneDistance = 1; 
    camera.FarPlaneDistance = 10; 
    //Lighting 
    DirectionalLight light = new DirectionalLight(Colors.White, new Vector3D(-3, -4, -5)); 
    //Cube 
    Cube cube = new Cube(); 
    GeometryModel3D cubeModel = new GeometryModel3D(); 
    cubeModel.Geometry = cube.Mesh; 
    cubeModel.Material = new DiffuseMaterial(Brushes.Red); 
    //ModelGroup 
    Model3DGroup modelGroup = new Model3DGroup(); 
    modelGroup.Children.Add(light); 
    modelGroup.Children.Add(cubeModel); 
    //Model 
    ModelVisual3D model = new ModelVisual3D(); 
    model.Content = modelGroup; 
    //Viewport 
    Viewport3D view = new Viewport3D(); 
    view.Camera = camera; 
    view.Children.Add(model); 
    //Show it all 
    Frame f = new Frame(); 
    f.Content = view; 
    grid1.Children.Add(f); 
} 

이 내 큐브 클래스입니다 : 그러나


public class Cube : Primitive 
{ 
    Point3D[] positions = new Point3D[] { 
     new Point3D(0, 1, 1), 
     new Point3D(0, 0, 1), 
     new Point3D(1, 1, 1), 
     new Point3D(1, 0, 1), 
     new Point3D(1, 1, 0), 
     new Point3D(0, 0, 0), 
     new Point3D(0, 1, 1), 
     new Point3D(0, 0, 1), 
     new Point3D(0, 1, 0), 
     new Point3D(0, 1, 0), 
     new Point3D(1, 1, 1), 
     new Point3D(0, 1, 1), 
     new Point3D(1, 1, 1), 
     new Point3D(1, 0, 1), 
     new Point3D(1, 1, 0), 
     new Point3D(1, 0, 0), 
     new Point3D(1, 0, 1), 
     new Point3D(0, 0, 1), 
     new Point3D(1, 0, 0), 
     new Point3D(0, 0, 0), 
     new Point3D(1, 1, 0), 
     new Point3D(1, 0, 0), 
     new Point3D(0, 1, 0), 
     new Point3D(0, 0, 0) 
     }; 
    int[] vertices = new int[] { 
     0, 
     1, 
     2, 
     1, 
     3, 
     2, 
     4, 
     5, 
     6, 
     5, 
     7, 
     6, 
     8, 
     9, 
     10, 
     9, 
     11, 
     10, 
     12, 
     13, 
     14, 
     13, 
     15, 
     14, 
     16, 
     17, 
     18, 
     17, 
     19, 
     18, 
     20, 
     21, 
     22, 
     21, 
     23, 
     22 
     }; 
    public Cube() 
    { 
     this.Mesh.Positions = new Point3DCollection(positions); 
     this.Mesh.TriangleIndices = new Int32Collection(vertices); 
    } 
} 

public abstract class Primitive 
{ 
    public Primitive() 
    { 
     this.Mesh = new MeshGeometry3D(); 
    } 
    public MeshGeometry3D Mesh { get; protected set; } 
} 

, 내가 클릭하면 버튼, 아무것도 표시되지 않습니다. 내 이벤트 처리기에 오류가 있습니까?

+0

큐브가 저에게 큐브처럼 보이지 않습니다 = ( – Luiscencio

답변

1

나는 바보입니다. 죄송합니다. 문제는 설정하지 않았다는 것입니다.

camera.FarPlaneDistance 단지 camera.NearPlaneDistance (두 번)입니다.
불편을 끼쳐 드려 죄송합니다..

+1

아무도 우리 모두보다 더 바보입니다. – Luiscencio

+1

코드를 적절히 업데이트하십시오. – Woot4Moo

+0

좋아, 코드를 업데이트했습니다. – meanandvicious

관련 문제