Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Lange hat's gedauert, aber endlich wurde Version 1.5 (vorher als 1.35 beta in der Mache) der Newton Game Dynamics Engine veröffentlicht, zeitgleich für Win32 und MacOS X, Linux wird in Kürze folgen.
Einige der interessanteren Neuerungen dieser Version :
Kontinuierliche Kollisionen Für Objekte und Materialien aktivierbar. Wenn aktiv, dann können Objekte bei hoher Geschwindigkeit nicht mehr durch andere Objekte durch, interessant für z.B. Kollisionen zwischen sehr großen und sehr kleinen Objekten.
Komplett überarbeiteter Fahrzeugcontainer Der Fahrzeugcontainer ist nun einfacher zu nutzen (Räder müssen nicht mehr balanciert werden) und auch sehr viel leichter zu konfigurieren.
Kollisionssystem stark verbessert Schneller und robuster, ausserdem wurden einige Bugs ausgebessert. Das Kollisionssystem kann separat genutzt werden, wenn man also keine Physik braucht aber trotzdem gerne eine robuste Kollisionsabfrage möchte.
Massenzentrum variierbar Mittels einfacher API-Funktion lässt sich nun das Massezentrum eines Objektes verschieben. Interessant z.B. bei Fahrzeugen, wo das Zentrum der Masse oft tiefer liegt als das geometrische Zentrum.
Ausserdem gibts diverse Fixes und kleinere Änderungen/Verbesserungen.
Die Delphi-Header gibt es wie gewohnt hier (~20 KBytes), und diesmal habe ich im Download auch eine Übersetzung der benutzerdefinierten Joints beigelegt. Newtons Interface für benutzerdefinierte Joints ist ein sehr mächtiges Werkzeug mit dem man (ein wenig Physikkentniss vorausgesetzt) eigene Joints erstellen kann, statt dass man auf vordefinierte Joints (wie bei den meisten "Konkurrenzprodukten") angewiesen ist. Die Unit enthält alle im SDK enthaltenen Joints, neue Joints sollte man von der Klasse TNewtonCustomBaseJoint abgeleitet werden.
Leider hatte ich kaum Zeit zum Testen, weshalb hier und da noch Fehler im Header bzw. (wohl eher) in der Joint-Unit enthalten sein könnten. Sollte da jemand was finden, bitte hier oder im Newtonforum kundtun.
P.S. : Wie sich eben rausgestellt hat, muss man in FPC übergangsweise einen Stack von mindestens 1 MByte für sein Newton-Programm einstellen da man sonst mit einer Exception "belohnt" wird. Das liegt nicht am Header sondern an der neuen Newton.dll und es wird bereits dran gearbeitet.
Hmm, bisher habe ich ja mit der ODE gearbeitet, aber wenn die derartige Verbesserungen gemacht haben, wechsel ich vielleicht. Zumal mein ODE-Code ziemlich verbuggt ist. (Hat mich gewundert, dass ich eine 1+ damit bekam)
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich hab grade eine Mail bekommen in der mich jemand auf Fehler in der CustomJoint-Unit hingewiesen hat. Leider hab ich da beim Upload ne alte Datei (sprich alter Funktionsname der Fehler verursacht) hochgeladen. Wer die Units also nutzt, bitte das Paket neu runterladen.
@Frase :
In Zukunft kommt sowas wohl, aber ist halt eine sehr komplexe Sache dass robust zu machen. So lange kann man aber seine Objekte über Compounds recht formgenau annähern. Wenn man das geschickt macht, hat man im Endeffekt fast dreiecksgenaue Kollisionen.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Sicher, wenn man sich dafür ne eigene Routine schreibt und dann für jedes so extruierte Dreieck eine konvexe Hüller erstellen lässt und diese Hüllen dann zusammen in einen Compound packt hat man quasi eine Dreiecks-Kollision (Dynamisch). Für statische Objekte gibts ja Treecollisions, da ist dass dann dreiecksgenau, und wenn man seine Objekte z.B. aus Zylindern, Boxen und Kugeln in einem Compound zusammensetzt, dann ist die Kollisionshülle auch oft recht nah an der Geometrie.
In der neuen Version sind übrigens auch sehr komplexe Compounds möglich (siehe dazu meine PlayGround-Videos im Newtonforum), und selbst Kollisionen zwischen sehr komplexen Compounds wurden um einiges beschleunigt. Lars Idee ist also durchaus denkbar, solange man es nicht grade übertreibt. Von der Umsetzung her ist das dann natürlich recht einfach, da Newton ja nicht direkt die Dreiecksdaten braucht sondern die Hüllen aus den Eckpunkten erstellt. Wenn man da dann also ein Dreieck nimmt und entgegen der Normalen leicht extruiert und daraus ne konvexe Kollisionshülle erstellt, dann entspricht die Hülle ja genau diesem "Dreieck".
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Kleines Update :
Habe gestern die SDL-Demos auf meiner Newton Subdomain auf NGD 1.5 aktualisiert. Viel musste bei den meisten Demos nicht geändert werden. Nur bei der Fahrzeugdemo gibts jetzt jede Menge Typecasts, da für Reifen-IDs nun Pointer genutzt werden müssen (für kommende 64-Bit Kompatibilität).
P.S. : Newton 1.5 beinhaltet leider noch einige Bugs, z.B. ein Problem mit dem Supersampling des neuen Vehicle-Containers, was zu starken Geschwindigkeitseinbrüchen v.a. bei komplexeren Fahrzeugen führen kann. Es dürfte also demnächst eine bug-bereinigte Version kommen, und dann sollte auch ein Linux-Release an der Reihe sein.
Mitglieder in diesem Forum: Google [Bot] und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.