2d-Koordinaten in 3d umwandeln?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

sonicfire

Betreff: 2d-Koordinaten in 3d umwandeln?

BeitragSo, Jun 18, 2006 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo liebe BBP-Community! Smile

Ich sucher seit heute vormittag nach einer Lösung für mein Problem:

Ich habe eine kleine 3d-Welt erschaffen und möchte nun in dieser eine Entity mit der Maus "bewegen" können.

Beispielsweise sollte die Entity in die tiefe gehen wenn ich die Maus nach oben bewege (vorrausgesetzt die Kamera guckt gerade nach vorne). usw.
Nur ein Beispiel jetzt!

Das Problem für mich ist hierbei, das ich nicht weiss wie ich quasi die Maus (X/Y) Koordinaten auf meine 3d-Welt "mappen" kann.

Existiert dafür ein direkter Befehl?

Ich bitte um Verzeihung, falls ich schlicht und ergreifen den Wald vor lauter Bäumen nicht sehe Wink. Aber das Forum habe ich weitestgehend durchforstet und bin bisher noch auf keine Lösung gestoßen.

Wäre dankbar für jede Hilfe! Smile

EDIT: Kleines Bild zur Verdeutlichung:
user posted image
(Der flache graue Kasten ist nicht direkt unter der Maus, wo er sein sollte)

Willi die Rübe

BeitragSo, Jun 18, 2006 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ql:CameraPick
ql:PickedX
ql:PickedY
ql:PickedZ

Das ist alles was mir dazu einfällt Smile
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon
Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX

At the Farewell Party visit: MySpace | Homepage

Lunatix

BeitragSo, Jun 18, 2006 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne Willi

Damit kannst du die Position eines 3D Objektes in 2D koords umwandeln.
Er will aber das gegenteil, von 2D in 3D.

Leider weiß ich auch grad keine antwort ... Confused
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Mr.Keks

BeitragSo, Jun 18, 2006 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne Junk

Du verwechselst das wohl mit ql:CameraProject() Very Happy
MrKeks.net

Willi die Rübe

BeitragSo, Jun 18, 2006 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch Junkprogger Very Happy
Du hast bestimmt den OH Artikel dazu gelesen, indem steht:Zitat:
Die Funktion CAMERAPICK ermittelt die Identität eines 3D-Objekts an der Koordinate X|Y
Ich gebe zu die Beschreibung ist etwas verwirrend, aber sobald du das mal ausprobiert hast, weißt du, wie die Beschreibung gemeint ist.

Beispiel gefällig? Very Happy

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2

SetBuffer BackBuffer()

cam = CreateCamera()
PositionEntity cam, 0,5,-10

plane=Createplane()
EntityPickMode plane, 2

Cube=CreateCube()
EntityColor cube, 200,0,0


Repeat

  p=CameraPick(cam, MouseX(), MouseY())
  If p>0 Then
   PositionEntity cube, PickedX(), PickedY(), PickedZ()
  EndIf
 
 UpdateWorld
 RenderWorld
 Flip
Until KeyHit(1)

Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon
Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX

At the Farewell Party visit: MySpace | Homepage
  • Zuletzt bearbeitet von Willi die Rübe am So, Jul 16, 2006 12:19, insgesamt einmal bearbeitet
 

sonicfire

BeitragSo, Jun 18, 2006 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Jawolla! Es funktioniert! Es funktioniert! Surprised Very Happy
Willi, du bist mein Retter! Danke!
~sonic

Lunatix

BeitragMo, Jun 19, 2006 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, verdammt^^

tatsächlich, habs verwechselt^^

war wohl ein bissl verwirrt Mr. Green (bestimmt wegen Linux und Win(unter Sonstige^^))
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

sonicfire

BeitragMo, Jun 19, 2006 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch eine kleine Frage? Ich bin mal so frei:

Ich versuche momentan eine Art Grid (Raster) zu "erzeugen", damit ich quasi meine 3d-Bauteile "snappen" lassen kann.
(Also nicht freies positionieren, sondern eben innerhalb eines Rasters, wie z.b. 64x64 Pixel-Raster oder sowas).

Habe da intuitiv erst an sowas in der Art gedacht:

---

If CameraPick(cam, MouseX()/64*64, MouseY()/64*64)
PositionEntity brick, PickedX(), PickedY(), PickedZ()
EndIf

---

...damit hatte ich zwar annähernd ein "Snapping", aber habe dann ganz schnell gemerkt das es SO nicht korrekt ist Embarassed Laughing

Kann mir da jemand einen Denkanstoß in die richtige Richtung geben?

EDIT: Code-Tags weggelassen, um das mit dem 64*64 hervorzuheben

Mr.Keks

BeitragMo, Jun 19, 2006 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
If CameraPick(cam, MouseX(), MouseY())
PositionEntity brick, Int(PickedX())/64*64, Int(PickedY())/64*64, Int(PickedZ())/64*64
EndIf

erscheint mir sinnvoller ^^
MrKeks.net
 

sonicfire

BeitragDi, Jun 20, 2006 0:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Shocked Also manchmal ... Embarassed ...hehe!
Danke!! Funktioniert bestens! Very Happy
~sonic

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group