Entwickler-Ecke
Freeware Projekte - Realtime Cloth Simulation - Version 1.321
F34r0fTh3D4rk - Fr 21.03.08 20:50
Titel: Realtime Cloth Simulation - Version 1.321
hi,
Ich habe die Tage mal eine kleine Demo gebastelt, welche eine kleine Simulation von Objekten wie Kleidung in Echtzeit darstellt.
Die Physik ist nicht gerade das, was man als korrekt bezeichnen würde, allerdings eignet sie sich gut für Echtzeitanwendungen wie z.B. Spiele.
Hier gibt es einen großen Screenshot:
http://www.exec-dev.de/Cloth/cloth_high_res.jpg
Die Bedienung des Programms ist einfach:
- Pfeiltasten / Bild oben und unten - Bewegen des Objektes
- Plus / Minus - Objekt vergrößern / verkleinern
- Maus (Taste gedrückt halten und Bewegen) - Kamera bewegen
- w - wireframe mode
- l - Beleuchtung an / aus schalten
- o - wechselt zwischen Kugel und Würfel
- r - Simulation zurücksetzen
- s - Normalenglättung an/aus
- p - Shader an/aus
- 1-4 - Reibung einstellen
- 5-6 - Subsampling einstellen
- "." / "," - Auflösung des Gitters einstellen
- F1-F4 - Fixpunkte an/aus
- F5 - Screenshot
Hier gibt es den Download:
http://www.exec-dev.de/Cloth/Cloth.zip
Für Fragen und Anregungen bin ich offen, wer sich selbst mit dem Thema beschäftigen möchte, sollte sich den Artikel
"Advanced Character Physics" von Thomas Jakobsen anschauen.
Falls reger Bedarf besteht, werde ich den Quellcode ein wenig aufbereiten und veröffentlichen.
mfg
BenBE - Sa 22.03.08 00:30
Hi,
kurz experimentiert, sieht auch schon sehr vielversprechend aus ... ABER:
1. Siehe Screenshot. Das solltest Du mal noch irgendwie schauen, dass da nicht das Objekt öfters mal durchschaut (und das statisch sogar so bleibt)
2. Renderfehler wenn das Tuch über sich selbst umgeklappt ist.
F34r0fTh3D4rk - Sa 22.03.08 11:07
hi,
ja ich hab schon ne kleine Gegenmaßnahme drin, die verhindern soll, dass Objekte durcheinander durchschauen, allerdings funktioniert das auch nur in begrenztem Maße. Bei der Selbstkollision (die ich nicht behandle) sieht das ganze schon schwieriger aus.
Übrigens hat das Tuch keine Rückseite, ich zeichne nur die Vorderseite und schalte Backface Culling ab, deshalb ist die auch nicht ganz so wie sie sein sollte.
mfg
F34r0fTh3D4rk - Mi 07.05.08 19:23
Ich hatte mich gewundert, warum die Kollision mit dem Würfel so viel langsamer war, als die mit der Kugel.
Das hinzufügen eines
wirkt manchmal Wunder ;)
Die etwas performantere Version ist hochgeladen.
mfg
F34r0fTh3D4rk - Mi 07.05.08 19:35
hi,
Hab gerade Version 1.1 hochgeladen. Jetzt kann man mit den Tasten F1-F4 die Fixpunkte bestimmen.
mfg
Delete - Mi 07.05.08 19:40
Moin,
ich finde die neue Version schon richtig gut! :zustimm:
Besonders im Wireframe mode sieht man so richtig wie schön es animiert ist.
Bloß:
- wenn man licht ausschaltet sieht das alles ein bisschen komisches aus(das object ist weiß)?
-es gibt grafik fehler wenn dieses Lacken aufeinander fällt.
Kann man sicher etwas draus machen!!!!
j.klugmann
F34r0fTh3D4rk - Mi 07.05.08 19:45
hi,
hab grad nochmal hinzugefügt, dass man das Objekt jetzt auch nach oben und unten bewegen kann.
Die Fehler liegen daran, dass sich Polygone überlagern. Es sind schon einige Gegenmaßnahmen getroffen, aber so richtig behoben ist das Problem nicht. Das liegt, wie schon gesagt an der fehlenden Selbst-Kollision und der Tatsache, dass das Tuch aus Performancegründen (weil es eine Physik Demo ist) keine Rückseite hat.
Achja das mit dem Licht ist vielleicht missverständlich. Kein Licht bedeutet nicht, dass es dunkel ist. Ohne Licht gibt es kein richtiges Hell oder Dunkel, deshalb wird einfach alles weiß gezeichnet. Diese Funktion ist hauptsächlich für die Kombination mit dem Wireframe Modus gedacht.
mfg
arj - Do 08.05.08 15:15
Respekt. Saugeil. Ich hab mich im Studium mit Physiksimulationen beschäftigt.
Das sieht richtig gutaus. :)
wunsiedler - Do 08.05.08 18:28
Wenn man die 4 Fixpunkte nach unten legt und zw. Kugel und Quader umschaltet, fliegt das Tuch weg und landet neben dem Quader. Tilt. :D Fixpunkte wieder zurück, schwingt sich das Tuch wieder darüber. Sehr schön.
Allerdings: Fixpunkte unten, Kugel max. beim umschalten auf Quader verschwindet das Tuch im Nirvana....
BenBE - Fr 09.05.08 10:08
Wenn man die Fixpunkte kurzzeitig alle abschaltet, schwingt das Tuch beim Reaktivieren stark in die Richtung des ersten aktivierten Fixpunktes ... Wenn man diesen kurz darauf wieder deaktiviert, kann man damit ein sehr efektives Katapult bauen, was nicht mal, wenn man danach alle 4 Fixpunkte wieder aktiviert, das Tuch zurück ins Blickfeld holt.
F34r0fTh3D4rk - Fr 09.05.08 13:38
Ich sollte vielleicht mal eine Weltgrenze einführen ^^ ist eigentlich kein Ding, aber für solche Katapult Aktionen war das Programm auch eigentlich nicht gedacht :P
mfg
Silas - Fr 09.05.08 14:31
Mein Respekt, sieht wirklich sehr realistisch aus :zustimm:
Allerdings hat dein Programm noch einen Bug (oder ist das ein Feature?): Wenn man die Kugel/den Würfel vergrößert/verkleinert, liegt er nicht mehr auf dem "Boden". Dadurch kann man mit einer überdimensionierten Kugel das Tuch extrem weit spannen und herrlich durch die Gegend schießen :D .
Deswegen drei Featurewünsche:
- Beim verkleinern/vergrößern des Objekts sollte das untere Ende auf der gleichen Höhe bleiben
- Das Objekt sollte nicht in den Boden verschiebbar sein
- Man sollte die Objekthöhe (z.B. mit PageUp/PageDown) ändern können
- Wenn das Tuch zerreißt (was ja durchaus vorkommt), sollte es kaputt sein.
Zum letzten: kA wie kompliziert das in deinem Fall ist, deswegen: Nicht so wichtig, wäre aber schön. :)
Edit: Wer lesen kann, ist glatt im Vorteil :roll:
AXMD - Fr 09.05.08 19:44
Hallo!
Deine Demo gefällt mir sehr gut. Was mir allerdings ein bisschen fehlt ist die Möglichkeit, das Gitter, das auch im Wireframe-Modus angezeigt wird, fein- oder grobmaschiger einzustellen, um die Qualität der Simulation erhöhen bzw. verringern zu können.
Was mir noch aufgefallen ist: lässt man das Tuch zu einem ungünstigen Zeitpunkt los rutscht es mangels Reibung komplett vom Würfel herunter und bleibt dann am Boden liegt, was sehr seltsam aussieht, da das riesige Tuch auf einige wenige Pixel zusammen"fällt". Anstatt dieses Lila-Tons ist dann auch sehr viel grau zu sehen (siehe Bild im Anhang).
AXMD
PS.: Die Frameraten reichen denke ich auf eine Nachkommastelle genau, 10 sind wohl etwas zu viel des Guten ;)
Reinhard Kern - Sa 10.05.08 02:16
Titel: Re: Realtime Cloth Simulation
F34r0fTh3D4rk hat folgendes geschrieben: |
hi,
Ich habe die Tage mal eine kleine Demo gebastelt, welche eine kleine Simulation von Objekten wie Kleidung in Echtzeit darstellt.
...
|
Hallo,
wenn du Kugel/Quader durch Claudia Schiffer und das Tuch durch eine Kreation von Lagerfeld ersetzen kannst, könntest du damit richtig Geld verdienen. Ist ja nur ein quantitativer Unterschied...
Ich fürchte nur, man kann sowas heute nicht mehr als Einzelperson realisieren. Aber solange du Zeit dafür hast, mach weiter in der Richtung. Da steckt viel mehr Potential drin als in noch einem MP3-Player oder Texteditor.
Ich denke, mit einer Software, die einerseits individuelle Körpermasse berücksichtigt und andrerseits Kleiderstücke auf einem solchen Körper in 3D darstellt, könnte man sogar SEHR SEHR viel Geld verdienen - jeder Shop weltweit, der im Internet Klamotten anbietet, kann das brauchen.
Gruss Reinhard
huuuuuh - Sa 10.05.08 06:24
wenn man die kugel ohne fixpunkte zum würfel ändert fliegt das tuch auch weg. ohne wiederkehr
F34r0fTh3D4rk - Sa 10.05.08 16:53
So, es gibt eine neue Version ;)
Version 1.2
Änderungen:
- Das Tuch kann die Welt nun nicht mehr verlassen
- Das Objekt (Kugel oder Box) kann nicht mehr im Boden versinken
- Die Simulation lässt sich nun zurücksetzen
- Die Auflösung des Tuchgitters ist einstellbar
- Luft- sowie Kontaktreibung sind einstellbar
- EDIT: Subsampling ist nun auch einstellbar
Allerdings scheint es noch einen Grafikfehler bei der Normalenglättung zu geben, das muss ich mir nochmal anschauen, gegebenenfalls mache ich die noch ausschaltbar. Ein optionaler Lichtshader (Phong) ist auch noch in Planung.
mfg
AXMD - Sa 10.05.08 17:05
Hallo!
Die neue ZIP-Datei scheint beschädigt zu sein.
AXMD
F34r0fTh3D4rk - Sa 10.05.08 17:09
hi, habs grad nochmal hochgeladen.
Jetzt lässt sich auch das Subsampling steuern.
Prinzipiell gilt:
- Je größer Sumsampling, desto genauer (aber auch langsamer) die Simulation.
- Je größer die Auflösung, desto realistischer (aber auch langsamer) die Simulation
- Je größer die Auflösung, desto ungenauer die Simulation
Daraus folgt, dass man für eine höhere Auflösung auch mehr Subsampling benötigt, was die Simulation doppelt langsam macht.
Also entweder hohe Auflösung und niedriges Subsampling oder geringe Auflösung und hohes Subsampling, oder etwas was dazwischen liegt (was bei der Standardeinstellung der Fall ist). In Echtzeitanwendungen wie Spielen ist die Auflösung jedoch meist geringer. Das lässt sich aber durch grafische Effekte leicht überdecken.
mfg
BenBE - Sa 10.05.08 17:17
Bei den meisten Parameter-Kombinationen fällt das Tuch durch das Objekt hindurch, besonders, wenn das Objekt sehr klein oder sehr groß ist.
Außerdem sieht die Simulation jetzt an vielen Stellen etwas unnatürlich aus, besonders da sich das Tuch zu verdrehen scheint, obwohl sich die Kugel nicht dreht und solche Effekte.
F34r0fTh3D4rk - Sa 10.05.08 17:23
Es gab noch einen Bug beim Einstellen der Reibung, der jetzt behoben sein sollte.
Was du sagst ist vollkommen zutreffend, deshalb ist die Wahl der richtigen Parameter entscheidend.
mfg
huuuuuh - Sa 10.05.08 17:49
bei der höchsten auflösung verhält sich das tuch wie ne flüssigkeit
die objekte machen da garnix
F34r0fTh3D4rk - Sa 10.05.08 18:38
Wie gesagt müsstest du dann auch die Substeps hochschrauben, damit es wieder realistisch aussieht.
Der Zweck der Simulation ist nicht etwa physikalische Korrektheit, es geht primär um den visuellen Effekt.
mfg
F34r0fTh3D4rk - Sa 10.05.08 21:00
Reges Feedback bring rege Neuerungen:
Version 1.3
- Grafikfehler (Normalenglättung) behoben
- Normalenglättung lässt sich ausschalten
- Phong Licht Shader (ausschaltbar) lässt alles noch glatter aussehen
mfg
huuuuuh - Sa 10.05.08 21:23
ich krig jetz ne access violation wenn ichs beende (adresse 00000000 falls wichtig)....is aber nich weiter schlimm...sieht gut aus :zustimm:
hier noch ein paar vorschläge: fixpunkte sichtbar und verschiebbar und anzahl der fixpunkte veränderbar
F34r0fTh3D4rk - Sa 10.05.08 22:03
Das mit der Anzahl der Fixpunkte wüsste ich jetzt nicht so recht wie man das machen sollte, weil man ja erst einmal definieren muss, wo das Tuch denn Fix sein soll. Der Rest ist machbar, nur wird das Programm mit zunehmenden Funktionen auch zunehmend unübersichtlich und nen Editor wollte ich eigentlich nicht draus machen. ^^
Zeigt sich bei dir ein grafischer Unterschied wenn du "p" drückst ? Wenn nicht, habe ich glaube ich die Ursache für die AV. Ansonsten weiß ich noch net genau.
Bekommt denn noch wer anders die AV ?
€: hab eine gefixte Version hochgeladen, bitte mal schauen, ob der Fehler noch existiert. Danke
mfg
Marc. - Sa 10.05.08 22:19
Hi!
Wenn ich alle Fixpunkte löse und anschließend, nachdem das Tuch sich bereits ein Stück weit vom Objekt entfernt hat, wieder einen Punkt setze, dehnt sich das Tuch gegen unendlich.
Siehe Screenshot. ;)
Ich muss aber zugeben, dass ich es grad nicht schaff, den Bug ein drittes mal zu reproduzieren. :P
Lag wohl am zuvielen Schwung.
BenBE - Sa 10.05.08 22:52
Man nehme:
Highest Detail, Subsampling 1, Air 0.025, Contact 0,425, Würfel, Radius 19
Wenn's nicht auf Anhieb klappt, einfach nochmal resetten, oder kurz nach dem Reset alle Fixpunkte lösen.
huuuuuh - Sa 10.05.08 23:18
ok jetz krig ich die access violation nich mehr.
Silas - So 11.05.08 09:08
Morgen!
Beim Programmstart bekomme ich folgende Meldung:
In der Simulation ist der Phong-Shader anschließend aktiviert, funktioniert aber aufgrund der Röhrenrechnerqualitäten meines Notebooks nicht (die ganze Simulation besteht aus einem ungeshadeten Einheitsgrau). Wäre gut, wenn dein Programm in dem Fall von vornherein den Standard-Shader verwenden würde.
Wünschenswert wäre vielleicht noch, dass sich die Kugel abhängig von der Kameraposition bewegt, weil das Bewegen an einen bestimmten Punkt nach Kameradrehung sonst zu viel Akrobatik verlangt. ;)
F34r0fTh3D4rk - So 11.05.08 09:45
Das Problem scheint entweder daran zu liegen, dass ich nicht alle Extensions prüfe, oder du hast ein Problem mit deiner Grafikkarte. Zweiteres halte ich für wahrscheinlicher, da der Shader ja scheinbar erfolgreich ans Programm Objekt gelinkt wird. (Bin kein absoluter Experte auf dem Gebiet, deshalb sagt mir, wenn ich mich irre ^^)
Er sollte die Fixed Function Pipeline nutzen, wenn er feststellt, dass keine Shader unterstützt werden. (Was bei dir scheinbar nicht der Fall ist)
@
BenBE: Subsampling hochdrehen. 2 reicht schon aus.
@
Marc.: Gegen diese unendliche Ausdehnung kann ich sicher etwas tun, danke. (Bei höherem Subsampling sollte dies allerdings auch kaum mehr auftreten -> deshalb ist 10 default, ich konnte den Fehler übrigens sofort reproduzieren)
Wenn man Subsampling auf 100 stellt, bekommt sich das Tuch wieder in den Griff, ich muss mal etwas gegen die zu hohe Energiezufuhr tun, danke ;) Das sollte viele Probleme fixen.
mfg
F34r0fTh3D4rk - So 11.05.08 14:42
Kleines Update:
Version 1.31
- Es wird nun angezeigt, ob Shader unterstützt werden oder nicht.
- Es gibt eine Geschwindigkeitsbegrenzung, durch die solche krassen Effekte weitestgehend beseitigt sein dürften. (Katapult-Effekt und Riesentuch-Effekt)
Viel Spass mit der neuen Version!
mfg
Regan - So 11.05.08 14:47
Also ich find das Programm richtig gut gelungen. Wie lange machst du sowas? Da muss ja eine riesige Arbeit dahinter stecken. Respekt :zustimm: .
BenBE - So 11.05.08 14:49
Wenn man das Tuch auf dem Objekt liegen hat, und etwa für 3-5 Sekunden die Titelleiste zum Verschieben des Fensters festhält, findet sich das Tuch unter dem Objekt wieder ... (Default Settings)
F34r0fTh3D4rk - So 11.05.08 15:20
Das ist in Version 1.32 bereits gefixt, ich dachte ich hätte das schon drin, war aber wohl doch nicht so ;)
Ich warte aber noch auf Verbesserungsvorschläge, bevor ich sie veröffentliche.
So viel Arbeit steckt da eigentlich nicht hinter, nach 20 Minuten war der Hauptteil an Code geschrieben, das sind wirklich nur ganz paar Zeilen.
mfg
huuuuuh - So 11.05.08 16:23
ich würd gerne noch nen tetraeder oder wenn das einfacher is ne pyramide drinhaben...
F34r0fTh3D4rk - So 11.05.08 16:27
Ich dachte mir, dass das jetzt kommt ;) Bei Pyramiden wird es allerdings vorkommen, dass die Spitze durch das Tuch hindurchguckt. Mal gucken was sich machen lässt ;)
mfg
BenBE - So 11.05.08 16:27
Ferner wär ein Zylinder und ein Ring nicht schlecht.
Was ich außerdem festgestellt hab:
- Könntest Du die Fixpunkte in der 3D-Welt einzieichnen
Auch die aktivierten Optionen (Smoothing, Phong Shader, ...) wäre mit unter nicht schlecht zu sehen, ob die an sind.
Auch wäre es hilfreich, wenn Du die Farbe von Untergrund, Objekt und Tuch so änderst, dass diese auch bei Nutzung des Phong Shaders auseinanderhaltbar sind.
@FotD: Dagegen hilft eine Kollisionserkennung :mrgreen:
F34r0fTh3D4rk - So 11.05.08 16:34
Nen Zylinder hatte ich ohnehin auf meinem Zettel ;)
-Fixpunkte einzuzeichnen hatte ich schon versucht im Ortho Modus, ging noch net so recht, kommt aber noch :)
-Ja aktivierte Optionen anzeigen hatte ich auch schon dran gedacht, mach ich ;)
-Ich kann dem Boden andere Materialeigenschaften geben, bissl andere Farbe, Wünsche ?
@Kollisionserkennung: Dann müsste ich allerdings zusätzlich zu der Kollision noch die Kollision Dreieck<>Ecke testen und das wieder auf die einzelnen Punkte umrechnen. Ist mir ein wenig zu aufwändig und würde auch bissl was an Performance kosten. Runde Objekte sind deshalb in sofern praktisch, dass sie keine Ecken haben ;)
Ein Ring ist sicher auch ne schöne Sache, da hab ich bisher aber nur schmu beim Zeichnen rausbekommen und für die Kollision wüsste ich da auch nichts. Für die Pyramide müsste ich meinen Code für die Box halt etwas erweitern, hoffentlich geht das dann, mal schauen ;)
mfg
F34r0fTh3D4rk - So 11.05.08 19:42
Version 1.32
- Zylinder als Objekt verfügbar
- Anzeige, ob ein bestimmtes Feature an- oder ausgeschaltet ist
- Kleinere Bugfixes (u.a. der Fenster-Drag Bug)
EDIT:
Version 1.321
- Farbliche Unterscheidung von Boden, Objekt und Tuch
- Fixpunkte werden nun eingezeichnet
Wenn die Updates zu frequentiert kommen, sagt bescheid. Es gibt ja entweder die Möglichkeit wenige große Updates zu machen oder immer den aktuellen Entwicklungsstand hochzuladen, um Dinge die man kürzlich geändert hat, sofort wieder anpassen zu können.
Falls sich jemand für den Quellcode interessiert, ich habe noch eine (nicht ganz) 300-Zeilen Version (die allererste). Diese ist vom Code deutlich weniger umfangreich (die aktuelle Version hat an die 1200 Zeilen) aber hat eine ähnliche Funktionalität. (zumindest was die Simulation an sich angeht)
Bei Bedarf kann ich die mal hochladen.
(Das Topic dann aber bitte nicht in die OpenSource-Sparte verdammen plz ^^)
mfg
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!