Suche Mitstreiter für Simulationssoftware



  • Hallo,

    wir sind ein kleines VFX Studio und wir wollen wachsen!

    Geplant ist eine Simulationssoftware für Menschenmassen, also eine sogenannte Crowdsimulation. Ich bin zwar hauptsächlich 3D Artist, hab aber auch schon eine Uni von innen gesehen 😃 (Informatik/Elektrotechnik).

    Der Umfang des Projektes ist mir bekannt, jedoch ist das Potenzial eines solchen Softwarepaketes finanziell bedeutend lukrativer als z.B. ein durchschnittlicher Spieletitel.
    Abrechnungstechnisch handhaben wir die Entwicklungsabteilung der Software als eigene Sparte mit eigenem Budget, was folgendes ausdrücken soll:
    Jeder der Mitarbeitet bekommt seine Zeit/Arbeit auf ein Rücklagenkonto vergütet, die als Einlage betrachtet wird. Alle Gewinne die so erwirtschaftet werden dann nach "Einlage" an die Mitstreiter ausbezahlt.

    Meldet euch einfach mal wenn euch die Sache interessiert und ihr mehr wissen wollt.
    Paddy



  • Hallo!

    Das Projekt klingt vom Ansatz her ja recht interessant. Erzähl doch bitte ein wenig mehr, vielleicht mache ich dann mit!

    Was genau soll denn das Programm alles können?
    In welcher Sprache und für welches OS wollt ihr es entwickeln?
    Wie lange schätzt du die Entwicklungszeit?

    Liebe Grüße,
    nevermore



  • Entwicklungszeit:
    Eher 2 als 1 Jahr bis man damit arbeiten kann.
    Sprache: C++ (logisch sonst würd ich hier nicht posten 😃 ) + einige APIs, OS User Windows...die Render/Calc-Clients erst mal auch...vielleicht portier ich die dann aber auch mal Linux. Für mich ist weniger wichtig ob die graphische Vorabansicht der Szene in der Simulation in GL (kenn ich von der Uni) oder DX passiert, da es dabei eher um Form und Look geht als um ein finales Bild, welches eh aus einem fertigen Renderingprogramm kommt.
    Benutzersprache: Englisch (viele VFXler sind eben nicht Deutsche...auch hier im Ländle, evtl kann man die Einstellung für die Benutzeroberfläche Skripten und eine Deutsche Hilfe oder Annotations erstellen, aber das steht noch "ganz" weit hinten im Designdokument).
    Aufgaben des Programms:
    Bewegung (Phase 1) und Interaktion (Phase 2) von Menschenmengen simulieren. Dabei soll jetzt nicht alles 150% der Realität entsprechen, sondern das Ganze soll eher dynamisch gut aussehen um Renderbar zu sein (Programme die Personen nur in der Position beechnen und als Punkt anzeigen um zum Beispiel eine Panic wissenschaftlich genau zu berechnen gibt es genug).
    Crew: Es werden Leute für viele Bereiche gebraucht.
    User Interface, Simulationsberechnung, Exporter zu RenderMan, eine Bridge nach Maya/Max um die Animationen übergeben zu können und die Modelle zu portieren, eine Speicherlösung für die einzelnen Individuen bis ca. 10000 Personen, etc... um die Maya-Bridge werd ich mich auf jeden Fall kümmern, da sich mit der Maya API wenige auskennen.
    Was ist denn dein Spezialgebiet?



  • Klingt ja wirklich interessant! Leider habe ich keine Ahnung wie man diese Menschenmengen simulieren könnte, hast du vielleicht ein paar Links zu diesem Thema? Wird da ja sicherlich einige Algorithmen geben, oder soll das alles entwickelt werden?

    Ein wirkliches Spezialgebiet habe ich wohl nicht. Was mich an dem Projekt interessieren würde, wäre die eigentliche Simulation, die Datenverarbeitung (für die vielen Individueen wie du sagtest) und vielleicht das Frontend. Ich bin Linux-Nutzer, könnte also z.B. ein Frontend für Linuxuser entwickeln.

    Ob ich wirklich beim Projekt mitmachen kann, will ich jetzt noch nicht versprechen. Hatte auch so mit einer Entwicklungszeit von 2 Jahren gerechnet. Ich hätte auf jeden Fall Spass dran, möchte aber nicht irgendwann in der Hälfte wegen Zeitmangels aufhören müssen. Ich lass mir das mal durch den Kopf gehen^^



  • Also mit ein "paar" Links wirds nicht getan sein...
    Pathfinding sollte sitzen, 3D Mathe und Fuzzy logischerweise ebenso...
    Ich hab schon drüber nachgedacht das Frontend auf eine GL Oberfläche aufzusetzen, damit wäre es dann Wurst ob das ganze unter Windows, Linux oder auf nem Mac läuft.



  • EDIT/



  • Ich finds auch immer besser 🙂 Ich glaube für das Projekt könnte ich mich begeistern. Es sind ja wirklich viele interessante Aspekte dabei. Und das in der Gruppe zu lösen macht bestimmt Spaß^^ Würde mich freuen, wenn sich viele dafür melden.



  • trotzdem:

    Gibt es sowas nicht schon?

    bzw. wie sieht es mit dem Wissenschaftlichen aus, habt ihr Biologen, Mathematiker etc an Board? (will meinem im Team)



  • Primär wichtig ist halt ein "Reize"-Konzept.
    Das einzelne zu simulierende Individuum muß halt seine Eindrücken in Form von Reizen bekommen. Diese beeinflussen dann das Handeln des Einzelnen. So hält an dieser Stelle die Erweiterbarkeit offen. Reize werden halt wie beim Menschen mit einem Sichtkegel und einer Höraura wahrgenommen. Dazu kommen halt noch die Reize aus der Berührung. Basis für die Beurteilung sind dann Charakterwerte des Chars wie man sie aus Rollenspielen kennt. Die Reize werden dann Fuzzy über die Char-Werte beurteilt und wirken so auf die eigentliche Aufgabe des Chars.

    Eine Skriptschnittstelle wird auch u.a. für Ereignisse benötigt, welche die Sim. beeinflussen und die getimed werden können, damit man halt einen gewissen Reaktionsrahmen vorbeurteilen kann und so auf Drehbuchanweisungen reagieren kann (z.B. die Explosion eines Autos, was als Reiz auf die Chars übergeht oder ein Tor fällt bei einem Spiel, worauf die Chars dann mehr oder weniger schnell und mehr oder weniger freudig reagieren).
    Beim Pathfinding spielt halt auch eine gewisse Unschärfe eine Rolle, damit eine gewisse Schwarmbildung stattfinden kann.
    Die graphische Darstellung des ganzen ist nicht ganz so erheblich, da das ganze ja nachträglich an einen photorealistischen Renderer exportiert wird. Displacements und hohe Texturauflösungen sind also unwichtig für die Simulationsbeurteilung (Texturen werden in der ersten Version wahrscheinlich völlig aus der Simulationsansicht rausfallen und die Chars einfach nur Matte geshaded). Wenn die Sim fertig ist wird die Szene, bzw. die Skelette der Chars, exportiert und danach wird das finale Mesh mit den mehr oder weniger hochauflösenden Texturen an die Skelette angelegt und als "RIB" rausgeschrieben. Das Shading, Riggen und die Animation kommen also aus Packages wie Maya.
    UI...war klar...wird dann höchstwahrscheinlich an mir hängen bleiben (wenn sich nicht ein Frontend-Coder erbarmed).
    Das Computed Rendering wird dabei eher Reizbasierend sein. Ein DispatchingServer wird z.B. feststellen zwischen welchen Chars es zu Boundingboxcollisionen kommt, welche Chars einfach nach ihrem eigenen Kopf weiter agieren können, etc und die Pakete dann weiterreichen. Echtzeit wird nie und nimmer erreichbar sein (was auch keine Rolle spielt).
    Die Wegfindung unterliegt zum einen dem eigenen Willen und zum anderen einen Auftrag. Das ganze wird dann gegeneinander gehalten und kann mehr oder weniger gesteuert wirken, je nachdem wie scharf eingestellt.
    Plattformtechnisch würde sich wie gesagt OpenGL anbieten, da es mehr oder weniger Plattformunabhängig ist.



  • Muhi:

    Klar gibt es immer ähnliche Lösungen...(1-2 Filmtaugliche)
    Aber eben nix aus Deutschland und sowas stärkt neben dem Geldbeutel auch den Standort, denn was Filmeffekte angeht ist die BRD immernoch ein 3. Welt Land.

    Biologen können wir erst mal ruhig beiseite lassen. Es geht ja um Filmsequenzen und nicht um Wissenschaftlich korrekte Darstellung. Viele Wissenschaftlich korrekte Simulationen stellen solche Sachen zwar simulationstechnisch 99,999% richtig da, jedoch nicht ansatzweise mit dem Ziel da Filmanimationen draus zu erstellen.



  • EDIT/



  • Eher X sieht die Wand durch Kollisionserkennung mit der Boundingbox "Wand".
    Der Reiz ist also "Hindernis".
    Wenn der Charwert für die Intelligenz Null ist würde er weiterlaufen und kollidieren (was dann unter Kollisionserkennung der Geometrien fallen würde um festzustellen wie er kollidiert).
    Eine Kollision würde unter Berücksichtigung der Wandhärte (Strohwand oder Steinwand) und der Geschwindigkeit den Reiz "Schmerz" auslösen.
    Wenn der Char nun menschlich aber nur Dumm wie Stroh ist würde der Schmerz eine Reaktion auslösen unter Einbeziehung seiner Schmerzschwelle. Und er würde sich auf dem Boden winden, sich ans Knie fassen bzw. eben das tun was er anhand seiner Bewegungsskripte her kann. Die Erstellung der Bewegungsskripte ist dann aber schon der Anwendungsbereich der Software.

    Wenn allerdings sagen wir mal Pinochio vor die Wand rennen würde, dann würde dieser, da er ein Schmerzempfinden von -1 hat und damit keinen Schmerz spüren kann einfach weiterlaufen oder aufstehen als wäre nix passiert, da der Reiz bei ihm keinen Effekt hat. Wie stark Reize wirken hängt also an den Char-Werten der einzenen Chars ab.



  • Also ich fasse nochmal zusammen damit ich das richtig verstehe:

    Die Individuen habe alle unterschiedliche Charakterwerte. Durch die Umgebung (durch Skripte) hervorgerufene Reize veranlassen das Individuum zur Reaktion (fuzzy). Die Simulationssoftware ist aber jetzt nicht dafür zuständig, die Bewegung vollständig zu simulieren, sondern sagt nur "Das Individuum läuft nach Ort X, es bewegt sich langsam, ...". Das 3D-Programm zu dem exportiert wird macht daraus erst die wirkliche Animation - Die Simulationssoftware animiert nicht. Ist das richtig so?



  • soll es sowas ähnliches wie das hier: http://de.wikipedia.org/wiki/Welt_am_Draht
    werden? 😉



  • Nicht ganz...

    Mit der Animationssoftware oder MotionCapture Programmen werden Animationssequenzen erstellt. Diese werden einer Bewegung zugeordnet und so der Simulation zugeordnet.
    Nehmen wir mal das Beispiel "Walkcycle", also 2 Schritte. Wie schnell der Cycle abgespielt wird hängt von der Laufgeschwindigkeit der Chars ab (jeder Mensch geht ja verschieden schnell). Dadurch geht eine Gruppe von sagen wir mal 3 Personen in Reihe schon mal unterschiedlich schnell. Wenn der vorne laufende Char dem 2. zu nahe kommt kann dieser entweder einen Gang runter schalten oder ausweichen. Das wäre ein Reiz der durch Simulation entsteht. Wenn die Gruppe aber den Befehl bekommt die Formation zu halten wird der 2. nicht ausweichen sondern langsamer werden, was auch den 3. bremst. Beschleunigen oder bremsen ist aber ein dynamischer Prozess, d.h. die Änderung wird nicht von Frame zu Frame sonder über die Zeit erst relevant...praktisch wie beim Stau. Man kann dabei wenig Effekt sehen wenn man das ganze auf einem "Paradeplatz" macht oder viel Effekt wenn das ganze einen Hügel hinunter geht.
    Reize können also durch Simulation oder durch Skripte hervorgerufen werden.
    Die Simulation wählt dann unter den Animationen die zur Verfügung stehen die passende aus und passt diese auf die Charwerte an (bzw. dessen Rig/Skelett) die Bewegungen der Skelette wird nun gespeichert, auf die Meshes die zu Grunde liegen angewendet und aus den dadurch entstehenden Positionen der Polygone wird dann eine Datei erstellt, die an den Renderer gesendet wird...vereinfacht gesagt.
    Das 3D Programm stellt nur das Mesh, Rig, die Textur und die Animationspattern zur Verfügung...danach ist es raus aus der Nummer.



  • Pale_Dog:
    Das ganze ist nicht poetisch, ethisch oder moralisch...
    Das ist einfach eine Simulation von Figuren in großem Rahmen, da sowas nicht einzeln animiert werden kann...es interessiert keinen was die Chars wirklich denken oder fühlen und sei dir versichert...die Chars auch nicht!

    Such eher mal nach dem Begriff "Crowd Simulation" um festzustellen worum es geht, also eher sowas wie BlenderPeople oder Massive.



  • EDIT/



  • Hmmm ich denke ich hätte Interesse am theoretischen Teil mitzuarbeiten.



  • Sollte eigentlich auch Distibuted Rendering heißen und bezieht sich dann auf die Ausrechnung der Interaktion.

    Zu viel Physik ist da sicher nicht drin... 😃
    Um das Forum hier mal zu entlasten:
    Das Forum fürs Projekt ist eingerichtet unter
    www.truesaints.de/phpBB2
    Wer also Lust hat an dem Projekt mitzuarbeiten kann sich da anmelden.

    An die Admins: Dieses Post ist kein Edit damit alle Abos informiert werden.



  • Edititert


Anmelden zum Antworten