Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

infinity^0

Frischling

  • »infinity^0« ist der Autor dieses Themas

Beiträge: 7

Wohnort: Oberbayern

  • Private Nachricht senden

1

16.02.2011, 21:54

Um Pixel verrechnet?

Ich möchte erreichen, Vektorkoordinaten in Bildschirmpixel zu verwalten, auf der aktuellen Z-Achse(momentan geht Z-Achse=0).
Die X-Achse klappt schon. Die Y-Achse könnte schon funktionieren. Aus irgendeinem Grund, in etwa der mitte der Y-Achse, wird eine Koordinate/Pixel "ignoriert". Das Objekt bewegt sich dann diese eine position nicht, der Mauspfeil schon, der das Objekt steuert. wenn ich die Y-Viewkoordinaten ändere, wirds auch nicht besser, eher noch mehr "Ungenauigkeiten".

Was kann ich für die Y-Achse anpassen, damit das berechenbar bleibt?
Bei einer Auflösung von 1024x768, habe ich für x+-=0.001f und y+-=0.0026.
Gesteuert wird üer die Maus - das übliche links oben 0,0 bis rechts unten 1024x768.
Alles ohne Worldview. Mit Worldview ist das Objekt weg. Selbiges auch bei
D3DXMatrixPerspectiveFovLH (&matProj, D3DX_PI/2, 0.512f, 0.0f, 1024.0f );
bei fov statt 0 ne 1 und das Objekt ist weg.
EyePt( x, y, -1.0f);
LookatPt(x, y, ,0.0f);
UpVec(0.0f, 1.0f, 0.0f);

SetTransform hat sowohl View als auch die Projection.

Das Objekt ist ein Triangle, zum Testen. x=0.0f,0.0f,0.5f;y=0.5f,0.0f,0.0f;z bleibt 0.
Ich hoffe, ich habe nichts wichtiges vergessen.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

2

18.02.2011, 14:58

Also ich verstehe leider nicht so ganz, was du genau tun willst. Du willst, dass die Koordinaten eines Vektors den Pixen des Bildschirms entsprechen? Also dass sich quasi Vector2(1024,768) in der rechten unteren Ecke befinden soll? Aber wozu?
Vor allem wird das ganze ja wieder über den Haufen geworfen, so bald du mit der Kamera, näher hin oder weiter weg gehst. Welches Ziel verfolgst du also?

infinity^0

Frischling

  • »infinity^0« ist der Autor dieses Themas

Beiträge: 7

Wohnort: Oberbayern

  • Private Nachricht senden

3

27.02.2011, 20:00

moin,

ich möchte zwei Programme schreiben, die sich etwas ähnllich sind. Ersteres wird in 3D arbeiten, müsste es aber nicht. Da das zweite Programm dem ersten in der grafischen Ausgabe ähnlich ist, wollte ich es zum Anlass nehmen, mich da gleich reinzuarbeiten in 3D. Schade ist, das Direct3D nur 3D macht und den Entwickler nicht oder nicht sehr gut/einfach unterstützt, wenns darum geht zwischen x,y,z float-Vektoren und x,y Pixelkoordinaten(Screen) hin und her zu rechnen. Habe schon mehrfach gelesen, dass es möglich ist und auch neue Methoden/Funktionen kennengelernt. Im Grunde müssten es Befehle sein, die sowohl float als auch DWORD beinhalten. Zum hin und herrechnen eben. D3DXVec3Project nutzt das wohl andersrum (2D in ein bestimmtes 3D-Objekt reinprojezieren). Nur dieser Befehl und Viewport nutzen beide Datentypen? Im Endeffekt wird das Projezieren sowieso immer gemacht, sonst könnten wir keine 3D-Objekte auf dem Bildschirm sehen. Nur das Auslesen der Bildschirmkoordinaten dieser Projektion scheint nicht so eindeutig bzw auch nicht so einfach zu sein. Oder doch?

Manche hier beschreiben zwei Wege, die wohl nicht so einfach sind. Ich hatte und habe so meine Probleme damit. Matrix Viewing und eben D3DXVec3Project.

Ein Teil des Bildschirms beinhaltet quasi das Panel(2D würde reichen) und ein anderer Teil die Grafikausgabe von Informationen (3D). Beim zweiten Programm ist es das selbe, nur das dort die Grafikausgabe bewusst in 3D genutzt wird. <- Dort Objekte über den Mauszeiger zu identifizieren und evtl zu markieren ist vermutlich nur eine erweiterung für meine aktuelles Problem. Ich möchte dadurch, dass ich zwischen Vektoren (floats) und Koordinaten (DWORD) abfrage, meine 3D-Objekte mit dem Mauspfeil kontrollieren. Gelungen ist mir das schon, aber die Berechnungen sind etwas ungenau/fehleranfällig. Ich nutze sicher nicht den offiziell Richtigen weg. Darum schätze ich, ist mein Weg limitiert und es werden vielleicht irgendwann neue Probleme auftauchen.

Das erste Programm (optisch nur in 2D gehalten) hat immer z=0; das zweite scrollt im z (und auch im x). Es soll (Grafik scrollt leicht schräg nach unten weg) so umgerechnet werden ,dass ich es in 2D (mit der Maus) kontrollieren kann.

Ich weiss, dass jede Änderung mit der Kamera vieles, wenn nicht alles über den Haufen wirft. Darum suche ich nach dem "offiziellen weg".

boah, bisschen viel Text. Ich hoffe, das ist so verständlich. Mille grazie. Bin echt neugierig, wie lange mich das noch aufhalten wird. Besiegen wird es mich nicht!! :D

Ach ja:Bitte erschlagt mich nicht einfach mit geläufigen Begriffen, besser ist es Begriffe gleich mit einem vielleicht kleinen Zweizeiler an Quelltext mit ersichtlichen Anschauungsmaterial (sprich notwendigen Befehlen) zu verbinden :thumbsup: . In DirectX bin ich vielleicht fortgeschrittener Anfänger und C/C++ kann ich, und zwar unterschiedlich gut. Ein Spiel habe ich in DirectX noch nicht programmiert - kommt vielleicht noch. Mit der Windows-Api habe ich ein kleines Spiel programmiert und bin dabei schon Mal auf grafische Grenzen für nächste Ideen gestoßen. Darum entschied ich mich, mich mit der GPU zu beschäftigen. Und im 3D-Dschungel bin ich hier gelandet :lol: . Aber auch in der Welt der floats und damit ist manchmal nicht gut Kirschenessen :S.

Werbeanzeige