|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
|
Nach oben |
|
|
Chriss Senior JLI'ler
Anmeldedatum: 18.08.2004 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 10.01.2008, 22:38 Titel: |
|
|
Box:
pMin
[out] Pointer to a D3DXVECTOR3 structure, describing the returned lower-left corner of the bounding box. See Remarks.
pMax
[out] Pointer to a D3DXVECTOR3 structure, describing the returned upper-right corner of the bounding box. See Remarks
Sphere:
pCenter
[out] D3DXVECTOR3 structure, defining the coordinate center of the returned bounding sphere.
Bedeutet also das du bei der Boundingsphere den Mittelpunkt bekommst und den Radius der Kugel.
Bei der Mox bekommst du die Kante links unten und die kante rechts oben. Also keinen Mittelpunkt, wobei du den ja leicht selber bestimmen kannst.
Grüße |
|
Nach oben |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 11.01.2008, 17:50 Titel: |
|
|
Und der Mittelpunkt der Bounding Box ergibt sich aus:
("Kante links unten" + "Kante rechts oben") /2.0f = Mittelpunkt.
Für mich wäre der Mittelpunkt der Boundingbox auch der Mittelpunkt der Bounding Sphere. Oder seh ich das falsch?
Edit:
Kann es sein, dass diese D3DXComputeBoundingSphere- Funktion ziemlich (sorry für den Ausdruck) Toilette ist?
Der Radius der Bounding Sphere, der von der Funktion zurückgegeben wird, ist immer viel zu groß.
Hab mal überlegt, wie man das zu Fuß berechnet. Wenn man die Maximum- und Minimumvektoren von D3DXComputeBoundingBox hat, dann fallen mir auf anhieb 2 Möglichkeiten ein.
1. Man nimmt die größte Ausdehnung aller 3 Achsen als Radius.
2. Man berechnet Länge der Diagonale des Maximumvektors der Bounding box.
Bei Möglichkeit 1 hätte man die ideale Größe für einen relativ Kugelförmige Mesh, jedoch wäre sie für einen quaderförmigen oder ähnliches Objekt ungeeignet, weil sie dann zu klein wäre.
Möglichkeit 2 um schließt in jedem Fall das Objekt. Jedoch würde man schnell erkennen, dass bei einem Kugelförmigen Mesh die Bounding Sphere zu groß wäre.
Weiß jemand, wie man den optimalen Radius für ein beliebiges Objekt per Hand berechnen könnte oder ob es sonst eine andere Möglichkeit gibt, den exakten Radius zu ermitteln? _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 12.01.2008, 16:24 Titel: |
|
|
LeeDiGer hat Folgendes geschrieben: | Weiß jemand, wie man den optimalen Radius für ein beliebiges Objekt per Hand berechnen könnte oder ob es sonst eine andere Möglichkeit gibt, den exakten Radius zu ermitteln? |
1. du suchst dir den mittelpunkt des Objekts (entweder legst du ihn einfach fest oder berechnest ihn mit allen vertices [ mathematischer Schwerpunkt])
2. du berechnest die distanz von allen anderen Vertices zu diesem Mittelpunkt und addierst sie zusammen.
3. du teilst diese Summe durch die anzahl vertices, das ist dein Radius
Ansonsten kannst du Bounding Sphere Kollision auch einfach per Hand berechnen, aber das weißt du bestimmt oder? Wenn nicht: CPP: | bool collision = (v1 - v2).lengthSquare() <= square(r1 + r2) |
Gruß DXer |
|
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
|