Snap to Grid 3D
Übersicht

![]() |
MegamagBetreff: Snap to Grid 3D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Forum! ![]() Und zwar geht es diesmal um einen Level-Editor, den ich gerade für mein Spiel schreibe. Das ganz ist in 3D und man soll auf einem Grid seine Sachen platzieren können. Dafür möchte ich aber gerne, dass jene Gegenstände sich dem Grid "anpassen". Damit meine ich, dass wenn man die Maus bewegt, die Gegenstände nicht auf der direkten Mausposition sind, sondern immer auf dem Knotenpunkt des Gitters. Hier ist mal kurz die Ladefunktion des Grids: BlitzBasic: [AUSKLAPPEN] Local faktor = 128 "grid" ist das Model an sich, "grid_tex" ist seine Textur und "node" ist ein Test-Mesh, dass sich halt immer an den Knotenpunkt heften soll. Hier ist mal meine Positionierung bis jetzt: BlitzBasic: [AUSKLAPPEN] pick = CameraPick(cam, MouseX(), MouseY()) Die funktioniert auch, ich steht nur gerade ein bischen auf dem Schlauch, wie ich da jetzt so eine "Snap"-Funktion mit rein bringen soll (Die Gittergröße ist mit der Variable "faktor" angegeben [siehe 1. Funktion]). Wäre toll, wenn mir da jemand helfen könnte! ,-Megamag |
||
Mein DeviantArt Profil
Gewinner des BAC #136 |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man dividiert einfach die Position durch die Rastergröße, rundet und multipliziert dieses Zwischenergebnis mit der Rastergröße:
BlitzBasic: [AUSKLAPPEN] Function MakeRaster#(x#,rasterSize#) mfG mpmxyz PS: Der Code ist ungetestet und kann daher Fehler enthalten. ![]() |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das wäre ja alles kein Problem, aber die Rastergröße sind 2D-Koordinaten einer Textur, während die anderen Koordinaten die gepickten 3D-Koordinaten sind. Und dein Code würde ja nur klappen, wenn die Rastergröße in 3D-Koorinaten angegeben wäre. | ||
Mein DeviantArt Profil
Gewinner des BAC #136 |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Am einfachsten ist es ein Plane zu nehmen, darauf eine beliebig große Textur 32x32 oder so und dort nur einen Streifen am Rand einzeichnen(einrahmen).
In Blitz3D die Maus picken und diese in Integerwerten speichern oder beim plazieren Floats in Int konvertieren |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Code von mpmxyz kann man einfacher schreiben :
BlitzBasic: [AUSKLAPPEN] Function MakeRaster#(x#,rasterSize#) mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke skey-z und ToeB!
Nur ist das Problem immer noch das Selbe: RasterSize ist die Rastergröße auf der Textur. Wenn ich jetzt also schreibe: BlitzBasic: [AUSKLAPPEN] MakeRaster(PickedX(),128) Dann wird das nichts... Daher bräuchte ich einen Lösungsansatz, um von den Textur-Koordinaten auf die 3D-Koordinaten zu kommen (oder meinetwagen auch einen ganz anderen Lösungsansatz ![]() |
||
Mein DeviantArt Profil
Gewinner des BAC #136 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst beachten, das der 3D Raum nicht in Pixel sondern in Units aufgeteilt ist, also musst du gucken wie viele Units die Textur groß ist und dann das raster dran anpassen ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und kann man das berechnen, oder muss ich das ausprobieren? ![]() |
||
Mein DeviantArt Profil
Gewinner des BAC #136 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, wenn du einfach EntityTexture machst ist egal bei welcher Größe die Texture immer auf 1/1/1 scalliert, benutz du ScaleTexture, musst du statt 1 nur noch den Faktor den du da eingegeben hast benutzen
BlitzBasic: [AUSKLAPPEN] EntityTexture( Entity, Texture ) Wenns dann noch nich passt, einfach mit PositionTexture etc. rumspielen... mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group