NooNooPhysics V1.0

Übersicht Sonstiges Projekte

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Noobody

Betreff: NooNooPhysics V1.0

BeitragMo, Apr 20, 2009 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Nachdem ich die vergangenen paar Tage mit den letzten Umstrukturierungen und Bugfixes zugebracht habe, kann ich nun stolz die erste Version von NooNooPhysics veröffentlichen Razz

NooNooPhysics ist eine 2D - Physikengine, die ich im Laufe des vergangenen halben Jahres für meine Abschlussarbeit geschrieben habe.
Sie wurde in C++ und BlitzBasic geschrieben und ist Open Source; der Code darf frei verwendet werden.

Die Engine unterstützt soweit die Berechnung aller beliebigen konvexen Objekte.
Berechnet werden bisher Kollision und Reibung, desweiteren können Objekte fixiert oder in der Rotation limitiert werden; Soft Bodies sind ebenfalls möglich.

Die Berechnung erfolgt dabei auf eine eher unkonventionelle Art, die sogenannte Verletintegration; ich habe aber versucht, die Bedienung auf einfache Befehle zu beschränken (MoveEntity, TurnEntity etc.).

Damit die Engine in eigenen Projekten verwendet werden kann, muss man die im Paket zu findende NooNooPhysics.decls und NooNooPhysics.dll in den Userlibs - Ordner der Blitzbasic - Installation kopieren. Ausserdem muss man immer die Include, NooNooPhysics.bb, in das aktuelle Projekt einbinden.

Wie genau man die Engine initialisieren und benutzen muss, wird durch die Beispiele gezeigt.
Bei Fragen, die nicht durch die Beispiele geklärt werden, kann man natürlich jederzeit hier im Thread posten oder mir eine PN schreiben.


Noch ein paar Screenshots aus den angefügten Beispielen:

Beispiel 1, Setup und einfache Objekte:
user posted image

Beispiel 4, eigene Gravitationsberechnung:
user posted image

Das Downloadpaket enthält die DLL, die Decls, die Include, 4 Beispiele, eine Dokumentation aller Befehle und Variablen sowie den Sourcecode der DLL.
Download

Die Beispiele können auch als .exe heruntergeladen werden, damit man das Ganze testen kann, ohne gleich den Userlib - Ordner zu bedrängen.
Download

Bei Vorschlägen, Bugs und Anregungen kann man gerne hier im Thread posten oder mir eine PN schreiben, ansonsten wünsche ich viel Spass mit der Engine.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Nicdel

BeitragMo, Apr 20, 2009 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde es sehr gut, dass du diese DLL zur Verfügung stellt. Es funktioniert alles perfekt, mir sind bisher keine Bugs aufgetreten. Vorallem das 2. Beispiel gefällt mir.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

ozzi789

BeitragMo, Apr 20, 2009 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Wau das sieht echt gut aus!
auch preformance mässig Smile

mach weiter so
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Noobody

BeitragDi, Apr 21, 2009 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Unterstützung der Portalsadministration ist die Dokumentation der Lib nun auch in der Hilfe hier im Portal enthalten!
Sie kann hier gefunden werden und ist wärmstens zu empfehlen, da die Funktionen so sehr viel übersichtlicher sind als in der beigelegten .txt


Ich habe ausserdem noch ein wenig mit dem Beispiel 3 rumgespielt und einen kleinen Funpark daraus gebastelt:
user posted image

Download

Ich bereinige den Code dazu noch ein wenig und füge ihn dann auch zum Download hinzu - vielleicht macht ja jemand ein kleines Geschicklichkeitsspiel daraus.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Pitje Puck

BeitragMi, Apr 22, 2009 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Klasse!
Mein beten wurde erhört. Habe lange nach einer so einfach zu benutzenden 2d Physik Engine gesucht. Hut ab! Hab schon recht viel Experimentiert. Wenn etwas Ordentliches herauskommt werde ich es posten.

2 Fragen hätte ich noch:
Abschlussarbeit wovon? Schule, Studium ? (reine Neugier)
Ist, wie ich aus der Art der Veröffentlichung heraus schließe, frei verwendbar, oder?
MfG, Pitje

Noobody

BeitragDo, Apr 23, 2009 7:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Freut mich, dass die Lib von Nutzen ist! Razz

Pitje Puck hat Folgendes geschrieben:
Abschlussarbeit wovon? Schule, Studium ? (reine Neugier)

Es ist die Abschlussarbeit des Gymnasiums, das ich besuche. Ich muss in der Arbeit eine genügende Note erhalten, um fürs Abitur zugelassen zu werden (Schweiz).

Pitje Puck hat Folgendes geschrieben:
Ist, wie ich aus der Art der Veröffentlichung heraus schließe, frei verwendbar, oder?

Ja, das Ding ist komplett frei verwendbar. Du kannst sogar den Sourcecode auf den Kopf stellen, wenn du willst Wink
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Smily

BeitragDo, Apr 23, 2009 12:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Besser wäre es, einfach einen Lizensnamen zu nennen, dann kann jeder herausfinden, was er darf und was nicht.

Wenn du alles erlauben willst, gibts die WTFPL

Anonsten wäre die GPL oder LPGL (Wenn du willst, das dein Projekt in kommerziellen projekten verwendet werden darf, zweiteres), gut für sowas
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Noobody

BeitragDo, Apr 23, 2009 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe auf deinen Rat hin den Sourcecode unter die zlib/libpng Lizenz gestellt.

Das bedeutet:
Wikipedia hat Folgendes geschrieben:
Sie beinhaltet, dass der Autor der Software keine Haftung für irgendwelche Schäden übernimmt, die aus der Benutzung selbiger resultieren. Die Verwendung der Software ist frei zu allen, das heißt auch zu kommerziellen Zwecken, unter folgenden drei Bedingungen:

1. Man darf nicht behaupten, dass man der Urheber der Software ist. Bei der Verwendung in einem Produkt ist außerdem eine Erwähnung in den Unterlagen erwünscht, jedoch nicht erforderlich.
2. Ein geänderter Quellcode muss auch als solcher gekennzeichnet werden und darf nicht als ursprüngliche Quelle genannt werden.
3. Der Lizenzhinweis darf nicht entfernt werden

Das Paket wurde mit Lizenzhinweis aktualisiert.

Ausserdem habe ich den Source der Halfpipe - Demo dazugelegt, falls jemand interessiert ist.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Xaymar

ehemals "Cgamer"

BeitragSa, Apr 25, 2009 9:12
Antworten mit Zitat
Benutzer-Profile anzeigen
eine frage die mich schon seit mehreren tagen interressiert ist: kann man entitys und deren edges auf "no physics" stellen? wie?
Warbseite

AnniXa

BeitragSa, Apr 25, 2009 9:21
Antworten mit Zitat
Benutzer-Profile anzeigen
mit der eigenschaft \Locked = true

also wenn dein entity
test.TEntity ist, kannst du mit
test\Locked = true, die physik dafür abschalten.
|moonForge|
Ich bin Pokémon Meisterin seit 1998!

Noobody

BeitragSa, Apr 25, 2009 10:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Dafür kannst du, wie AnniXa schon erwähnt hat, das Feld 'Locked' deines Entities auf True stellen.
Wenn zusätzlich noch keine Kollision berechnet werden soll, so reicht es, wenn du das Feld 'CollisionEnabled' auf False stellst.

Beispiel: BlitzBasic: [AUSKLAPPEN]
Entity.TEntity = NNP_CreateEntity()

[...]

Entity\Locked = True
Entity\CollisionEnabled = False
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Xaymar

ehemals "Cgamer"

BeitragSa, Apr 25, 2009 10:27
Antworten mit Zitat
Benutzer-Profile anzeigen
ah danke:)
Warbseite

ToeB

BeitragMi, Mai 06, 2009 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntest du evtl. noich einbauen das man einzelne vertices festsetzten kann ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Noobody

BeitragDo, Mai 07, 2009 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, ist eingebaut und wird in der nächsten Version enthalten sein (wenn du dich noch ein kleines bischen gedulden kannst Wink ).
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

ToeB

BeitragDo, Mai 07, 2009 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar Wink

Aber kann man dann auch z.b. einzellne entitys festsetzten, also so das die nur noch über den Position-Befehl ihre position ändern, aber z.b. noch gedreht werden können (z.b. ein feststehdes rad) dazu hätt ich noch ne idee, mach noch so ein Child-system, sodass man z.b. eine box mit zwei rädern dran machen kann, die sich unabhägig voneinader drehen können, so dass man mit einem auto fahren kann..

Wäre richtig gut wenn du das machen könntest Surprised

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Noobody

BeitragDo, Mai 07, 2009 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
ToeB hat Folgendes geschrieben:
Aber kann man dann auch z.b. einzellne entitys festsetzten, also so das die nur noch über den Position-Befehl ihre position ändern, aber z.b. noch gedreht werden können (z.b. ein feststehdes rad)

Das wäre jetzt schon möglich - man müsste nur den zentralen Vertex fixieren, dann hat man den erwünschten Effekt.

ToeB hat Folgendes geschrieben:
dazu hätt ich noch ne idee, mach noch so ein Child-system, sodass man z.b. eine box mit zwei rädern dran machen kann, die sich unabhägig voneinader drehen können, so dass man mit einem auto fahren kann..

Das ist ebenfalls möglich durch die Unterteilung in Fragmente (siehe WL). Das Zeug muss allerdings noch optimiert werden, weswegen sich die Veröffentlichung noch ein wenig hinziehen wird.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Noobody

BeitragDi, Sep 15, 2009 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Kleiner Bug in NNP_ExportPhysics gefixt, der gewisse Attribute von Entities nicht richtig gespeichert hat.

Downloadlink bleibt derselbe.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Alkan

Betreff: Funktioniert nicht!!!

BeitragDo, Jan 14, 2010 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ähhmm..irgendwie funktioniert das bei mir nicht!
Da steht dann immer function 'blablabla' not found
mfg
Alkan
Edit:Also das Beispiel funktioniert nicht!
Hauptrechner: Win7 Ultimate x64|AMD Phenom II X4 965 BlackEdition 4x3.4GHz|4 GB DualKit DDR3-1600 Ram|1.5 TB Samsung EcoGreen|Cougar CM 700Watt|ASRock M3A790GFX/120M|Nvidia GeForce 9500GT|Ati Radeon HD3300(Onboard-Deaktiviert)
Server(früher Hauptrechner): Ubuntu 9.1 x86|Intel P4 HT 3GHz|Ati Radeon X600Pro|200 GB HDD
Worklog: Planetensimulation
Homepage(Under Construction): alkan96.dyndns.org
Wenn schon falsch, dann richtig falsch.
  • Zuletzt bearbeitet von Alkan am Do, Jan 14, 2010 17:27, insgesamt einmal bearbeitet

Goodjee

BeitragDo, Jan 14, 2010 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
dann hast dus nich eingebunden...etwas code könnte nicht schaden
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Noobody

BeitragDo, Jan 14, 2010 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Damit du die DLL verwenden kannst, musst du die .dll und die .decls in den Userlibs-Ordner deiner B3D-Installation stecken (z.B. C:\Programme\Blitz3D\Userlibs).

Wenn du später eine Exe machst, musst du die .dll in den selben Ordner wie die erstellte .exe kopieren. Falls deine Exe beispielsweise in C:\MeinTollesProjekt\Spiel.exe liegt, legst du die DLL nach C:\MeinTollesProjekt\NooNooPhysics.dll.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group