2009-03-03 10 views
15

Ich schreibe ein Werkzeug, das verwendet wird, um eine Menge 3D-Daten zu verarbeiten, Dinge wie rotierende Objekte zu tun, zu übersetzen, zu skalieren und all die guten Sachen. Kennt jemand eine gute Bibliothek, die schon einiges von diesem 3D-Zeug macht?Gute Bibliothek für 3D-Mathematik in C#?

Ich bin nicht daran interessiert, die Daten im Moment zu visualisieren, und bin hauptsächlich daran interessiert, die Operationen durchzuführen.

Dinge, die ich weiß, dass ich an dieser Stelle benötigen:

  • 2D/3D/4D-Vektoren
    • (Addieren, Subtrahieren, Skalarprodukt, Kreuzprodukt, etc ...)
  • Rotation/Translation/Skalierung mit Matrizen
  • Quaternionen

Ich konnte die Sharp3D Bibliothek finden, aber es scheint, dass es tun könnte, was ich will, aber seit langer Zeit nicht aktualisiert wurde. Hat jemand das schon mal benutzt? Irgendwelche anderen (besseren) Vorschläge?

Antwort

12

Microsoft.Xna.Framework (Lieferung dieses XNA) könnte die Arbeit tun.

Die XNA Framework Math-Bibliothek verfügt über mehrere grundlegende geometrische Typen, die zum Bearbeiten von Objekten im 2D- oder 3D-Raum verwendet werden können. Die primitiven Objekte in dieser Bibliothek stellen die Daten dar, die zur Darstellung eines geometrischen Objekts oder einer Operation für dieses Objekt erforderlich sind. Jeder geometrische Typ hat eine Anzahl mathematischer Operationen, die für den Typ unterstützt werden.

Vektor

XNA Framework die Vector2, Vector3 und Vector4 Klassen zur Darstellung und Manipulation von Vektoren zur Verfügung stellt. Ein Vektor wird typischerweise verwendet, um eine Richtung und eine Größe darzustellen. Im XNA-Framework kann es jedoch auch zum Speichern einer Koordinate oder eines anderen Datentyps mit denselben Speicheranforderungen verwendet werden.

Jeder Vektor-Klasse verfügt über Methoden zur Durchführung von Standardvektoroperationen wie:

  • Dot Produkt
  • Kreuzprodukt
  • Normalisierungs
  • Transformation
  • Linear, Cubic, Catmull-Rom, oder Hermite-Spline-Interpolation.

Matrices

Das XNA Framework stellt die Matrix-Klasse für die Transformation der Geometrie. Die Matrix-Klasse verwendet eine Zeilenhauptordnung, um Matrizen zu adressieren, was bedeutet, dass die Zeile vor der Spalte angegeben wird, wenn ein Element einer zweidimensionalen Matrix beschrieben wird. Die Matrix-Klasse stellt Methoden zur Durchführung von Standard-Matrixoperationen bereit, z. B. zum Berechnen der Bestimmten oder Inversen einer Matrix, zusätzlich zu Hilfsmethoden zum Erstellen von Skalierungs-, Übersetzungs- und Rotationsmatrizen.

Quaternions

XNA Framework stellt die Struktur Quaternion die effiziente Rotation um einen Vektor, um einen festgelegten Winkel zu repräsentieren und zu berechnen.

+0

Für die Nachwelt [XNA ist auch tot] (http://gamasutra.com/view/news/185894/Its_official_XNA_is_dead. php # .UUnmResyF), die im April 2014 offiziell sein sollte. – cod3monk3y

0

Versuchen Scinet Linea um www.obacs.com. Es ist keine kostenlose Bibliothek, aber im Vergleich zu Alternativen ist es nicht sehr teuer ww

0

Scinet Linea ist nicht mehr verfügbar unter www.obacs.com. Es kommt jetzt in Scinet Math, das viel mehr Fähigkeiten hat. Ich habe vor einem Monat eine Kopie für meine Recherche gekauft. Ich mag es bis jetzt.

2

Ich habe es noch nie zuvor benutzt, aber ich habe einfach Sharp3D gepackt und es scheint gut zu funktionieren (abgesehen von einigen Problemen mit starken Namen, die ein paar Minuten brauchten). Mein Eindruck ist, dass es nicht gerade leicht ist, aber weit davon entfernt, auf der schweren Seite zu sein.

Was keine aktuellen Updates, es ist nicht wie Mathematik verändert oder etwas ...