Laden...

Problem mit Koordinaten von Vertices

Erstellt von sbertl000 vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.504 Views
sbertl000 Themenstarter:in
822 Beiträge seit 2005
vor 17 Jahren
Problem mit Koordinaten von Vertices

Hallo

Ich zeichne mit DirectX eine Linie, Punkt 1 hat die Farbe Purple, Punkt 2 ist rot, jedoch erscheint die Linie irgendwie verkehrt.

Meine SetupCamera Methode

        private void SetupCamera()
        {
            device.RenderState.CullMode = Cull.None;

            device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, this.Width / this.Height, 1.0f, 3000f);
            device.Transform.View = Matrix.LookAtLH(new Vector3(0, 0, 800f), new Vector3(), new Vector3(0, 1, 0));
            device.RenderState.Lighting = false;
        }

Meine OnPaint Methode

device.Clear(ClearFlags.Target, System.Drawing.Color.CornflowerBlue, 1.0f, 0);

            SetupCamera();

            CustomVertex.PositionColored[] verts3 = new CustomVertex.PositionColored[2];

verts3[0].Position = new Vector3(300, 100, 1);
            verts3[0].Color = Color.Purple.ToArgb();
            verts3[1].Position = new Vector3(0, 200, 1);
            verts3[1].Color = Color.Red.ToArgb();

device.BeginScene();
            device.VertexFormat = CustomVertex.PositionColored.Format;
            device.DrawUserPrimitives(PrimitiveType.LineStrip, 1, verts3);
            device.EndScene();

            device.Present();

            this.Invalidate();

So siehts aus (Anhang)

sbertl

sbertl000 Themenstarter:in
822 Beiträge seit 2005
vor 17 Jahren

Und so sollte es aussehen, oder?

sbertl

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
In welcher Orientierung laufen denn im gerenderten Bild die Koordinatenachsen?
Ich vermute Du schaust einfach von der "falschen Seite".

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

sbertl000 Themenstarter:in
822 Beiträge seit 2005
vor 17 Jahren

In DirectX ist es ein rechtshändiges Koordinatensystem.

Ich habs mir auch schon gedacht, das mit der falschen Seite, nur wie behebe ich das?

sbertl

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
Zeichne mal die Koordinatenachsen ein (jeweils von (0;0;0) auseghend eine Linie nach (100;0;0), (0;100;0), und (0;0;100). Dann kannst Du sehne wie die positiven Richtungen der Achsen liegen und solltest eigentlich direkt sehen was los ist. Wenn nicht, bitte nochmal das Bild mit dem Achsen posten.

//Edit: Am besten die Achsen noch in unterschiedlichen Farben, damit man sieht wer wer ist.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

sbertl000 Themenstarter:in
822 Beiträge seit 2005
vor 17 Jahren

Ok, hab das mal soweit gemacht, das Ergebnis ist im Anhang. Aber was ist jetzt los? Ha ich die Kamera verdreht, oder ist bei DirectX die +X Koordinate links?

sbertl

3.170 Beiträge seit 2006
vor 17 Jahren

Du musst dich einfach auf die andere Seite der X-Y-Ebene stellen mit der Kamera, aber auf den selben Punkt schauen, so daß Du die Ebene von der anderen Seite siehst. Das erreichst Du wen Du bei der Z-Koordinate der Kameraposition das Vorzeichen wechselst.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

sbertl000 Themenstarter:in
822 Beiträge seit 2005
vor 17 Jahren

Ok, super, das war das Problem.

sbertl