|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 03.09.2003, 22:14 Titel: Hilfe bei Objektverwaltung |
|
|
Hallo,
so. Sowohl das Forum, als auch der Titel sind wohl nich ganz korrekt, aber was besseres fiel mir nicht ein. Ich beschreib mal worums geht.
Ich habe sagen wir 3 verschiedene Objekte (meinetwegen 3D-Modelle, egal). Ich kann diese Objekte per Maus auswaehlen und ebenso bewegen. Allerdings kann ich immer nur ein Objekt auswaehlen.
Jetzt kommt das Problem. Bei jedem Selektieren wir das Objekt als "Aktives" durch einen Pointer auf die Bewegungsroutine uebertragen. Ebenso wird mit dem Objekt der momentane Standpunkt in der 2D-Welt uebertragen. Somit laesst es sich leicht bewegen durch Vektorsubtraktion usw, usw.
Waehle ich aber ein anderes Objekt an, waehrend sich das Letzte noch bewegt, stoppt das Letzte abrupt. Das ist mir natuerlich auch klar warum, weil ja der Positionsvektorund Objektzeiger, der uebergeben wird sozusagen nicht mehr fuer das vorherige Objekt bestimmt war. Trotzdem kann das nicht sein. Sieht ja dumm aus, wenn auf einmal alles abrupt steht
Aber wie kann ich da mit einer Loesung rangehen? Kann ich irgendwie sagen:
"Solange sich das Letzte noch bewegt, soll es zum Ziel gehen, egal ob was anderes gewaehlt ist oder nicht"?
Und hat jmd. von euch ne Ahnung, wie man "Auswahlrahmen" zum selektieren realisieren kann?
Vielen Dank...
P.S.: Ich braeucht "nur" n paar Anregungen zu ner Loesung, ueber die man reden koennte, weil ich hab da den totalen Block... |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 03.09.2003, 23:33 Titel: |
|
|
Du mußt deine Bewegungsroutine so umarbeiten, dass sie mit einer Liste von Objekten (Verkettete Liste oder STL-Vector) arbeiten kann. Wenn du dann einen Auswahlramen ziehst, testest du jedes Objekt, ob deren Mittelpunkte sich innerhalb des rechteckes befinden und fügst sie der Liste hinzu.
HTH
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 03.09.2003, 23:39 Titel: |
|
|
Hmmm das funktioniert aber im 3D-Raum nicht, oder? Ich kann ja nich alle Strahlen von 0,0,0 bis Rechteckende in Objekte umsetzen?
Ich hatte 2D geschrieben, beim Auswaehlen haette ich aber ganz gerne 3D gemacht. Ansonsten leuchtet mir deine Moeglichkeit vollkommen ein. |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 03.09.2003, 23:48 Titel: |
|
|
Du wirst wohl oder übel für dein 2D-Rechteck in Bildschirmkoordinaten einen 4 Grenzebenen berechnen müssen, die durch den Kamerapunkt und die in 3D-Koordinaten umgerechneten Eckpunkte begrenzt sind und zwei weitere Ebenen die die maximale und minimale Entfernung zur Kamera darstellen. Dadurch erhältst du eine Pyramide mit abgeschnittener Spitze (du schaust direkt von oben drauf) und kannst wieder für alle 3D-Objekte Berechnen, ob deren Mittelpunkte sich innerhalb der Pyramide befinden.
Wie genau (im matematischen Sinne) die Pyramiede bestimmt wird kann ich dir aber nicht so aus dem Kopf sagen. _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 04.09.2003, 13:07 Titel: |
|
|
Stimmt. Hast recht. Ein verkleinertes ViewFrustum sollte taugen. Ums berechnungstechnisch einfacher zu machen sollte ja auch ein Quader funktionieren? Is eben etwas ungenauer?
Aber danke dir fuer den Ansatz. Waere ich wohl so nicht drauf gekommen |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 05.09.2003, 11:16 Titel: |
|
|
Zu der Verwaltung:
Da würde ich einfach einen STL-vector anlegen, in den du die "Bewegungsbefehle" speicherst. Wenn die Bewegung vollständig ausgführt ist, kannst du das Element aus dem vector löschen.
In der Bewegungsfunktion fragst du eben dann alle Elemente des vectors ab und bewegst die Objekte, die darin gespeichert sind. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|