vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Microsoft Technical Submit  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.5  | Shop Copyright ©2000-2008
 
zurück
Knüller: vb@rchiv CD Vol.4
Knüller: vb@rchiv Offline-Reader - Die Offline-Wissensdatenbank

vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4
 
Tools & Components Anzeigen 
 
Unser Tipp: Alle Online-Forenbeiträge aus dem vb@rchiv - gesammelt in einer Offline-Wissendatenbank, mit Internet-Update-Funktion, u.v.m.

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Rund um DirectX
Tutorial: Picking in DirectX oder wie man 3D klicken kann...(Raycasting) 
Autor: Weltraumputze
Datum: 07.02.08 16:14

Hallo,

ich weiss das man im Forum eigentlich Fragen stellt und nicht gleich die Lösung bringt, aber ich hab so ewig gesucht bis ich ein paar Informationen zu dem Thema gefunden hab. Was nützt C++ Code wenn man nunmal in VB (und NICHT VB.Net) programmiert? Es ist ja schön wenn man die schönsten 3D Welten programmieren kann, schon seine Soundengine fertig hat , auch schon mit Effekten rumspielt und dann feststellt: verdammt, ich brauch interaktion per maus. Klingt einfach, ist es aber nicht! nicht wenn man kein Matheprofi ist und eben nicht in C++ schreibt! Und die, die ne Lösung gefunden haben hinterlassen sie nirgendwo im Inet.

Nun gut, was muss ich tun? Eigentlich ganz einfach, ich muss die 2D Koordinaten vom Bildschirm in 3D Kordinaten in meiner 3D Welt umrechen. Schlechte Nachricht: es gibt unendlich, gute Nachricht: sie liegen alle in einer Linie. Denn, von der Kamera aus gesehen, liegen alle Punkte hintereinander. Also reicht es wenn ich wenigstens 2 Punkte dieser Linie habe um die gerade zu definieren! Ich spare mir jetzt mal die ganze Mathematik dahinter, die wird ja oft genug erklärt (nur wie bringt man 3 Zeilige Rechenklammern in Programmcode?!) und bringe gleich eine fertige Lösung.

Sub Conv2Dto3D(Device As Direct3DDevice8, ScreenX, ScreenY, ByRef NearPoint As _
  D3DVECTOR, ByRef FarPoint As D3DVECTOR)
Dim viewm As D3DMATRIX
Dim projm As D3DMATRIX
Dim worldm As D3DMATRIX
Dim viewp As D3DVIEWPORT8
Device.GetTransform D3DTS_VIEW, viewm
Device.GetTransform D3DTS_PROJECTION, projm
Device.GetTransform D3DTS_WORLD, worldm
Device.GetViewport viewp
D3DXVec3Unproject NearPoint, Vec3D(CDbl(ScreenX), CDbl(ScreenY), 0), viewp, _
  projm, viewm, worldm
D3DXVec3Unproject FarPoint, Vec3D(CDbl(ScreenX), CDbl(ScreenY), 1), viewp, _
projm, viewm, worldm
End Sub
ganz einfach und simpel zu benutzen, oder?:

Dim vN As D3DVECTOR
Dim vF As D3DVECTOR
Conv2Dto3D D3DDevice, X, Y, vN, vF
ich hoffe das es euch geholfen hat. Mit vielen Grüßen Weltraumputze...

..oO°*Kondome schützen nicht vor Geschlechtsverkehr*°Oo..
Alles was man zur DirectX8 Programmierung braucht
Visual Basic auf USB-Stick

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Tutorial: Picking in DirectX oder wie man 3D klicken kann......720Weltraumputze07.02.08 16:14
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...244Weltraumputze08.02.08 13:53
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...208VBWolfi20.02.08 11:12
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...200Weltraumputze21.02.08 08:26
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...163VBWolfi22.02.08 09:30
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...166Weltraumputze22.02.08 12:35
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...202VBWolfi25.02.08 11:13

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2008 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.

Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel