JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=64feb937502391e29ca2c9a5f30a1755Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Hilfe bei Objektverwaltung

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 03.09.2003, 22:14    Titel: Hilfe bei Objektverwaltung Antworten mit Zitat

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 Wink
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
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 03.09.2003, 23:33    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 03.09.2003, 23:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 03.09.2003, 23:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 04.09.2003, 13:07    Titel: Antworten mit Zitat

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 Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 05.09.2003, 11:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum