JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Kollision zwischen Strecke und Dreieck
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Faller
Junior JLI'ler


Alter: 36
Anmeldedatum: 30.11.2006
Beiträge: 88
Wohnort: Dresden
Medaillen: Keine

BeitragVerfasst am: 15.12.2006, 14:58    Titel: Antworten mit Zitat

ok dann fangen wir mit der welt an die welt ist fertig das heist ich kann sie darstellen habe jedes Dreieck im Buffer
LPDIRECT3DVERTEXBUFFER9 VB_Triangle[3000] = {NULL};
hier die deklaration
die 3000 hinten gibt die Dreicke an wieviele maximal da sein können kann ich ja spätter noch verkleinern wenn ich anfange nicht nur eine Dreieck in einem buffer zu speichern sondern mehrere, derzeitig brauche ich für meine karte 2000 un ein baar zerquetschte Buffer, optimiert is das net.

ich Speicher jedes Dreieck da hinein.
wohin es soll lesse ich vorher aus einer datei aus.
so nun möchte ich die Punkte aus dem Buffer auslesen und dann gugen ob sie mit dem weg des Spielers Kolidiert der weg ist ja eine Strecke, so wenn das pasiert dann soll der spieler sich net bewegen also wieder auf seinem ausgangs punkt zurück gesetzt werden

so dachte ich mir das
ich suche nun nach einer Möglichkeit die Punkte wieder auszulessen, mann hat mir ja eine methode gegeben, mit der das scheinbar möglich ist ich würde halt eben gerne sie einmal ausprobiren deswegen würde ich gerne das du mann mir hier mal ein beispiel gebt

ich würde gerne ein beispiel bekommen wie man aus VB_Triangle[0]
die 3 punkte mit ihren 3 werten wieder heraus bekommt ich wäre sehr dankbar

ps hoffe das ich nun besser geschrieben zu habe
_________________
versuche alles nur wann und wie ist die frage


Zuletzt bearbeitet von Faller am 15.12.2006, 15:45, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 15.12.2006, 15:20    Titel: Antworten mit Zitat

CPP:
LPDIRECT3DVERTEXBUFFER9 VB_Triangle[3000] = {NULL};


Du brauchst max 3000 Dreiecke? LPDIRECT3DVERTEXBUFFER9 sind nicht nur für Dreiecke es geht auch anders, bedenke das.

Weshalb ziehst du dir nicht einfach bestehende Physik Libs rein?

Aber hier mal etwas zum orientieren, ziemlich grob aber ich hoffe es hilft dir dennoch:

Eine Liste mit Polygonen, ein Polygon hat hier 3 Vertexe welche mit der dazugehörigen Worldmatrix multipliziert wurden (Worldgeometrie hat das meist nicht nötig da die Punkte meist nichtmehr mit der Worldmatrix kombiniert werden müssen.)

Wenn du dich nun bewegen willst solltest du natürlich aus der Liste der Polygone nur die rauspicken welche für deinen test relevant sind (Octree, BSP, blabla.) ansonsten tut es auch die Bruteforcemethode indem du einfach alles testest.

Testen tust du einfach so:

CPP:
bool Hit = false;
for(unsigned int i=0; i<AnzahlKollisionsPolygone; ++i)
{
   Polygon* aktuellesPolygon = PolygonListe[i];
   Hit = ::D3DXIntersectTri(aktuellesPolygon->Vertex0.Position,
      aktuellesPolygon->Vertex1.Position,
      aktuellesPolygon->Vertex2.Position,
      actor->Position,
      actor->Direction,
      NULL,
      NULL,
      &Distance
      );
   if (Hit && Distance<=actor->Radius+actor->Laufweite)
   {
      // kann nicht laufen
      break; // Schleife abbrechen
   }
   Hit = false;
}
if (!Hit)
{
   actor->Position += actor->Direction+actor->Laufweite;
}



Zitat:
so das is ja eine methode einer klasse ich arbeite net gerne mit klassen das vorne weg (mag die einfach persönlich net )


Wieso nicht?
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 15.12.2006, 23:14    Titel: Antworten mit Zitat

Hm, da hat Fallen wohl die Anwendung der DX Fuktion gepostet, das soltlewriklich helfen.
Allerdings bleibt nur zu betonen, das BruteForce (alle Dreiecke testen) wahrscheinlich in die Hose gehen wird.
Du hast 3000 Dreiecke, wenn du sagen wir 10 Spieler hast, die jeder bisschen ballern, kansnt du leicht mal 30 Objekte haben, d.h. musst du 30*3000=90000 Dreieckstests machen.

So, wenn du jetzt noch die Spieler untereinander testen willst, ok, jedes Spielermodell hat sagen wir 500 Dreiecke, dann haste bei 10 Spieler 500*9*10 (weil jeder ja mit 9 anderen getestet werden muss9, das ergibt dann nochmal 45000 Tests.
Ok, jetzt noch die 20 Geschosse mit den jeweil 10 Spielern, ich denke du siehst ein, das du da schnell auf extram viele Tests komsmt.

Dazu noch die Grafikausgabe -> Performance im Arsch.

Für Spieler deshalb lieber Strahl/Kugel, dann wären das nur noch 450 Tests, wobe ein Kugel Test schneller sein solte, als ein Dreieckstest.

Ich weiß ja net wie du die Landschaft ers tellst, aber du solltest die Gedanken darüber machen, wie du sie schneller ein einfacher Beschreben kannst.
Einfahc in irgendeinem 3D RPogramm ne Scene zu basteln und zu laden dürfte alles adnere als Optimal sein.

Erzähl halt mal, was genu du porgrammieren willst.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 15.12.2006, 23:43    Titel: Antworten mit Zitat

Möglichkeiten gäbe es noch zB folgende:

- Worldgeometrie in Areale unterteilen (wie schon gesagt Octree, BSP oder ähnliches)
- Testen ob ein Polygon in Richtung der "Testrichtung" zeigt, diese dann ausschliessen, ein Dotproduct sollte da afaik ausreichend sein
- nicht die Worldgeometrie als kollisionsgeometrie nehmen sondern eine vereinfachte Version der Worldgeometrie, zB aus einer Brücke mit ausmodellierten Pfeilern etc kann man simple Rechtecke erstellen, ala 3, Seitenbegrenzungen und Laufboden, evtl noch die Stützpfeiler
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Faller
Junior JLI'ler


Alter: 36
Anmeldedatum: 30.11.2006
Beiträge: 88
Wohnort: Dresden
Medaillen: Keine

BeitragVerfasst am: 16.12.2006, 13:58    Titel: Antworten mit Zitat

thx für eure idee um die performens zu erhalten habe ich wolgendes geändert die LPDIRECT3DVERTEXBUFFER9 hab ich auf 40 gesenkt so das hat auch die programierung vereinfacht hab mir das noch ma durch gelesen und funst so bestimmt besser auch die kolision werde ich wohl auf einen Kreis besrängen
wegen der landschaft ich erstelle sie in Milkshape und importiere sie dann in mein spiel was eigentlich gut funktioniert zu dem kolisions test von Fallen wie erstelle ich ein polygon in c++ damit ich es dann so testen kann wie du es machst ich habe jetze alle punkte abgespeichert und werde es wohl nach dem link mit der kollision strecke dreieck nur mit der welt machen was vieles vereinfachen solte ich schreib wieder wenn die Kollision mit der welt funst vieleicht heute abend mal sehen
_________________
versuche alles nur wann und wie ist die frage
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
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