Jump to content
Unity Insider Forum

Life Is Good

Members
  • Gesamte Inhalte

    696
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    17

Alle erstellten Inhalte von Life Is Good

  1. Marching Cubes generiert ein normales Mesh aus einer SDF, den musst du gar nicht "auf einen Planeten anwenden", der Algor_i_thmus bleibt genau gleich. Den groben Lösungsansatz siehst du in seinem Video beim Planeten float distance = radius - length(pos) + noise(pos); Das ist in dem Fall deine SDF, wobei die SDF einer Sphäre float SphereSDF (vec3 pos) { return length(pos) - radius; } ist (normalerweise genau umgekehrt, aber das macht nichts, dann kehrt sich einfach nur dein Distanzwert um). Das erklärt also warum du ne Kugel rauskriegst. Was dir fehlt ist noise(pos) und hier wirds deutlich schwieriger. Im Grunde versuchst du mit Funktionen so rumzumodellieren dass du irgendeine modifizierte Form deiner Kugel kriegst. Es gibt jede Menge unterschiedliche Algorithmen um die unterschiedlichsten Ergebnisse zu erzielen. Da wirst du wild ausprobieren müssen und das wird dauern bis du auf ein Ergebnis kommst mit dem du zufrieden bist.
  2. Nein, sorry. Ist aber höchstwahrscheinlich sowieso schon veraltet. Ich würde an deiner Stelle nach neueren Resourcen suchen.
  3. Passend dazu, und auch zu Unity's ECS, lass ich mal diesen exzellenten Artikel hier liegen https://www.gamedev.net/blogs/entry/2265481-oop-is-dead-long-live-oop/
  4. Hab das repository mal aktualisiert, und die 3 Themengebiete auf 3 unterschiedliche PDFs aufgeteilt. Ich glaube das wirkt einfach besser, und überfordert nicht so sehr. https://github.com/LifeIsGoodMI/ECS-And-DoD-In-Unity Hier auch nochmal im Anhang. ECS_StartGuide.pdf ECS_Unity_Article.pdf The_Core_Of_Unitys_ECS_Documentation.pdf
  5. Ich hab einen nicht so kurzen Artikel über Unity's Implementation eines Entity Component System (ECS) Model & Data Oriented Design (DoD) geschrieben. Es ist keinerlei Vorwissen über ECS oder DoD erfoderlich. Der Artikel behandelt die Prinzipien von ECS, DoD, beinhaltet eine eigene kleine Dokumentation über die fundamentalen Konzepte von Unity's ECS und enthält einen kleinen Start Guide, indem ich Stück für Stück zeige wie man ein sehr simples "Spiel" umschreiben kann. Am Ende kommt dann noch ein kleiner, kritischer Kommentar zu Unity. Sowas muss man natürlich nicht am Stück lesen, man kann da durch springen wie man will. Ihr findet den Artikel und das Unity Projekt auf meinem GitHub Account: https://github.com/LifeIsGoodMI/ECS-And-DoD-In-Unity Ausserdem scheints so, als würde GitHub's PDF Viewer keine Hyperlinks unterstützen, also hab ich die PDF hier noch einmal zusätzlich angehangen. ECS_DoD_Unity.pdf
  6. Ich hab den Algorithmus ein wenig angepasst, um das Problem mit den weichen Ecken zu lösen. Im Grunde schau ich mir einfach die vertices an, die nicht ganz korrekt sind, addier alle Normalen zusammen (nennen wir das Ergebnis einen Vektor A) und interpoliere dann von diesem Vertex aus in die Richtung A bis die SDF an diesem Punkt = 0 ist. Ich musste allerdings einen kleinen Bias einbauen, aber ich denke das sind einfach bloß Genauigkeitsprobleme, da die Implementation aktuell komplett auf floats setzt. Die schwarzen Linien am Ende zeigen das Ergebnis der Normalen (Vektor A) bei den Vertices, die zunächst gesmoothed wurden. Ich werd noch mehr testen müssen, um zu schauen, ob die Lösung so allgemein aufrecht erhalten werden kann.
  7. Hey, Ich experimentier aktuell mit meiner eigenen Idee rum, Oberflächen aus Distanzfunktionen (signed distance function, SDF) zu generieren. Ihr könnt meinen Ansatz in diesem Thread verfolgen, falls ihr euch für so Voxel Zeugs interessiert: https://www.gamedev.net/forums/topic/697431-a-novel-approach-to-non-manifold-dual-contouring/ Im Grunde gehts darum Eckpunkte (vertices) durch Schnittpunkte von Oberflächenkanten (surface edges) ausfinding zu machen. Die 2D Methode scheint ohne probleme zu funktionieren, und ermöglicht so auch scharfe geometrische Features wie Ecken. (dabei ist's auch deutlich einfacher zu verstehen, als 2D Dual Contouring) Mit dem 3D Ansatz bin ich aktuell noch ein wenig am kämpfen, aber erste Ergebnisse gibts dazu auch schon, wie ihr hier nochmal sehen könnt:
  8. Ich hab mal ein wenig Code auf mein GitHub profil hochgeladen.
    Simple, leichte und (relativ :) ) saubere Implementationen von A* und Flow Fields pathfinding (bei A* fehlt noch ein kleines Video oder so...)
    Mir ist aufgefallen, dass gerade zu A* ziemlich verwurstelte Code Beispiele bei Google rauskommen :D
    Wen sowas interessiert, der kann ja mal reinschauen. Vielleicht schreib ich auch mal 'ne Tutorial oder so dazu.

    A* https://github.com/GoGreenOrDieTryin/Unity-A-Star
    Flow Fields https://github.com/GoGreenOrDieTryin/Unity-Flow-Fields

    1. Djeurissen

      Djeurissen

      Darf man Kritik äußern xD? Warum übergibst du den Start/Ende/Grid im Konstruktor. Jetzt musst du jedesmal ein neues A* Objekt erzeugen wenn du ne neue Suche machen willst...

      Ansonsten wenn du mehr Performance haben willst nutz nen Heap. Der sorgt dafür das du nicht immer durch die ganze Liste iterierst wenn du den besten Knoten haben willst.

      Aber ansonsten ne schön einfach zu verstehende A* Implementierung. Aber weil ich angeben will hier ist meine https://github.com/Djeurissen/SmartAI/blob/master/SmartAI/Search/AStarSearch.cs

    2. Life Is Good

      Life Is Good

      Klar ! Es kann nie sauber genug sein :)

      Dabei hab ich mir ehrlich gesagt nichts besonderes gedacht, einfach so simple wie möglich gehalten.
      Eigentlich hätte ich start & ende auch einfach public machen können, um die dann über den Inspector zu zuweisen.

      Zum Speicher:
      Absolut. Ich halt meistens bloß so viel wie möglich lokal. Wenn man daraus was größeres machen würde, könnte man allein dadurch noch gut was an Performance rausholen.

      Dein Code gefällt mir übrigens auch gut.

    3. Kuxii

      Kuxii

      Muss ich doch Glatt mal Testen, Suche schon lange was gescheites^^ Meine versuche Schlugen leider fehl und ergaben das die KI 6754374 meter neben den Pfad rumm eierte^^

  9. Gekürzt //... using System.Linq; //... [SerializeField] private GameObject[] gameObjects; //... gameObjects.ToList().ForEach(go => { if (go.activeSelf) go.SetActive(false); }); //...
  10. Ich bin mal ein wenig durch meinen Code gesprungen. An einer Stelle muss ich sehr häufig über eine kleine Anzahl an Elementen iterieren

    Foo target;
    for (int i = 0; i < 4; i++)
      if (collection[i].flags == fooFlag)
      	target = collection[i];

    Ein ganz simples Stück Code also.
    Linq sieht aber natürlich sehr viel hübscher aus, also hab ich statt des Oberen Schnipsels zu erst so was hier gemacht
     

    var target = collection.First(e => e.flags == fooFlag);

    Was ich beobachtet habe: Das 2. ist halb so schnell. Das sind 20ms, statt 10ms (wird jeden Frame aufgerufen,  d.h. zweiteres erfüllt schonmal gar nicht mehr die 60hz Anforderung, was ja heute ziemlich standard ist.... Macht also viel aus !)

    1. Vorherige Kommentare anzeigen  %s mehr
    2. Life Is Good

      Life Is Good

      Ohh, bist du auf der aktuellsten Version ? Ich hab gehört dass das NavMesh mit der neuen Version ein wenig kaputt gegangen sein soll. Ich hab's das letzte mal vor nem Jahr oder so verwendet und da ging sowas noch.

    3. Zer0Cool

      Zer0Cool

      Na, das Problem existiert zumindest seit Version 5.4.1. Ich muss es mal in Unity 2017 nochmal testen, aber glaube nicht, daß an der Ecke was passiert ist:
      https://feedback.unity3d.com/suggestions/navmesh-agent-local-avoidance-recalculate-navmesh-path-when-another-agent-get-in-the-way

      Wenn man mit einer handvoll Agenten hantiert, merkt man das Problem noch nicht unbedingt, da die local avoidance auf sehr kurzen "Ausweichpfaden" noch funktioniert (also wenn nur 2 Agenten aneinander vorbeilaufen sollen).
      Ein typischer Testfall ist, du lässt 20 Agenten zu einen Ziel laufen (z.b. Spieler). Beim Unitynavmesh klumpen die Agents dann an einer Stelle vor dem Spieler (aus Laufrichtung) zusammen (und stapeln sich teilweise hintereinander auf). Eigentlich sollten aber die Agents den Spieler einkreisen. Gibt auch noch andere Probleme an engen Stellen auf dem Navmesh, wenn sich die Agents "treffen".

    4. Life Is Good

      Life Is Good

      Ich hab's bloß mit einer handvoll Agenten getestet also
      ¯\_(ツ)_/¯

  11. void Start() { c = new TEST(); } Du rufst hier den Konstruktor von TEST auf, Unity rät ausdrücklich davon ab, das bei von MonoBehaviour abgeleiteten Klassen zu tun. Dazu solltest du auch eine Meldung in der Konsole sehen. C# hat übrigens keine Pointer, sondern bloß Referenzen.
  12. Ich bin gerade dabei meinen Path Tracer auf die GPU zu porten, dabei ist mir was interessantes aufgefallen.
    Ich hab den selben Code 2 mal mit bloß einem Unterschied:
    Der eine ist rekursiv, der andere iterativ (da Recursion ja nicht so doll für GPUs ist :) )
    Ansonsten hab ich nichts verändert !
    Die Ergebnisse sind identisch.
    Und jetzt kommts:
    Der rekursive hat 10min und 11sek gebraucht, der iterative bloß 157sek.
    Das ist ein Performance boost von etwa 390% !!
    Skaliert wohl mit längeren Berechnungen noch mehr.

  13. Nach 3h debuggen den Fehler meines kleinen Path Tracers gefunden. Ich hab vergessen meine Vektoren im Default Constructor mit 0, 0, 0 zu initialisieren. Ich komm mir gerade verdammt blöd vor :D

    1. Vorherige Kommentare anzeigen  %s mehr
    2. Tiwaz

      Tiwaz

      Joa ich hab auch schon mal einen Abend und den halben nächsten Tag damit verbracht einen Bug zu suchen, weil ich eine Component am falschen GameObjekt angehängt hab.. Da kommt man sich echt dämlich vor ^^

    3. Felix K.

      Felix K.

      Ist doch nice. Ist zwar erst einmal bicht so toll, aber aus solchen Fehlern lernt man am besten. Mir geht's zumindest so.

    4. Life Is Good

      Life Is Good

      Jup, ist bloß etwas frustrierend, wenn man seinen Code wieder durchgeht und den Fehler nicht findet. Normalerweise hab ich so grob 'ne Ahnung was der Fehler ist :D

  14. Tesselation Shader können sowas. Unity selbst bringt aber keinen mit. Ich glaube Sascha hier aus dem Forum hatte mal selbst einen geschrieben und in den Asset Store gestellt, wenn nicht sind da auf jeden Fall andere zu finden (RTP Pack z.B. kommt auch mit einem Tesselation Shader)
  15. Hit sammelt für dich einfach nur ein paar Infos von dem was getroffen wurde. Über hit.collider.gameObject kannst du wieder ganz normal Komponenten von dem GameObject, das getroffen wurde, abrufen. So also z.B. den MeshRenderer, von dem du dann das Material kriegst.
  16. Sieht doch schon ganz lustig aus Viel Glück mit Steam.
  17. Mail von Unity "I hope you are doing well! My name is Morgan, I’m a Product Manager at Unity Technologies. As a special thank you for being one of our most active Unity Personal developers, we’d like to offer you the opportunity to sign up for Unity Plus at 25% off." Nette Aktion von UT :)

    1. Vorherige Kommentare anzeigen  %s mehr
    2. Tunkali

      Tunkali

      habs auch bekommen und zugeschlagen :-)

    3. MarcoMeter

      MarcoMeter

      Ich will trotzdem das Dark UI für die Personal Edition :/

    4. Bastiuscha

      Bastiuscha

      @Sascha: Danke! Stimmt ja, hatte ich vergessen, weil ich mich nicht einlogge.

    1. Vorherige Kommentare anzeigen  %s mehr
    2. Life Is Good

      Life Is Good

      Jo, d.h. Unity kriegt endlich C# 6 Support, dann können wir z.B. C#'s dynamic nutzen.

      Ich meine damit stünde auch offen das Unity endlich den alten GC fallen lässt, aber da bin ich mir auch nicht so sicher

    3. Mr 3d

      Mr 3d

      das hört sich gut an.. bin auch absoluter noob, was sowas betrifft, aber ich nehme mal an, dass das auch performance mäßig ein bisschen was ändern dürfte.. gibts da irgendwelche Zahlen? ^

    4. Silveryard

      Silveryard

      C# 6 ist ein Standard, welche Features die Sprache hat. Das hat erst mal nichts mit runtime performance zu tun.

       

      Was dagegen ein Update wäre, wäre ein Mono Runtime und/oder GC update. Größter vorteil an einem neuen GC ist, dass man dann foreach wieder ohne Bedenken benutzen kann. Soll mit der finalen Version von 5.5 auch kommen.

  18. Hey, ich suche nach der Funktion, die automatisch das Umbenennen eines neuen Assets fokusiert. Erstellt man beispielsweise ein neues Skript kann dieses direkt umbenannt werden (ohne extra auf rename gehen zu müssen) Ich hab die Vermutung, dass es ProjectWindowUtil.StartNameEditingIfProjectWindowExists ist, aber ich weiß mit den Parametern, die die Funktion nimmt, nichts anzufangen und die Klasse scheint nicht dokumentiert zu sein. Das ist zwar nichts sonderlich wichtiges, aber halt nice to have
  19. Hey SpaceMarder, ich kann deinen Punkt leider überhaupt nicht nachvollziehen. Warum rätst du dazu smalltalk mit dem Auftraggeber zu führen ? Auch wenn der jetzt nicht viel von meinem Gebiet versteht, will ich diesen Auftrag ist meine Aufgabe den Kunden zu beraten und ihm die Entscheidung einfacher zu machen, indem ich ihm ein Bild von dem male, was "nötig" ist und einen groben Einblick geben in das, was ich tue. Ich hab jetzt erst vor kurzen die ersten kleinen Aufträge angenommen und da ging es auch direkt los. (Ich hatte jetzt auch keine großen Unternehmen als Kunden) Das mit der Vertragsfreiheit find ich auch ein bisschen Wirr. Klar kann mich ein Vertrag benachteiligen, die Vertragsfreiheit besagt doch bloß, dass ich frei bin darin den Vertrag einzugehen, und das Möglichkeiten bestehen mich von diesem wieder zu lösen. Geht jetzt bloß nicht los mit dem Gedanken "Verträge können mich sowieso nicht benachteiligen, also unterschreib ich einfach!" Ps. Ich hab Hummelwalker's Buch nicht gelesen, aber ich glaube du meinst Unity's JavaScript statt Java
  20. Der komplette Kurzfilm 'Adam' von Unity ist jetzt online ! :)

    1. Vorherige Kommentare anzeigen  %s mehr
    2. devandart

      devandart

      Techdemos sind im Prinzip ja Werbung, was möglich ist. Somit verschwendet man nichts, sondern investiert. Und wenn Unity dadurch Gewinn generiert, ist Unity zufrieden. :D

    3. overdev

      overdev

      Naja da werden immer so krasse Welten gezeigt bzw auch interessante Stories erzählt was man sich dann sehr sehr gerne in einem Spiel wünscht. Das meinte ich damit.

    4. Bastiuscha

      Bastiuscha

      Das "übertriebene" Motionblur ist mir nicht negativ aufgefallen. Finde die Demo auch mal richtig richtig fett. Richtig fett

  21. Hey, ist's irgendwie möglich den Collider der Partikel so einzustellen, dass sie wie Trigger fungieren ? Ich möchte, dass Kollisionen erkannt werden, das Objekt aber weiter durch das Mesh, mit dem es kollidiert ist, fliegt. Sozusagen wie bei einer abgeschossenen Kugel die durch ein Holzbrett oder sowas schlägt.
  22. Hey, ich suche für meine Mathe Facharbeit ein Modell einer Lokomotive (free) um sie etwas auf zuhübschen und hab das hier gefunden -> http://tf3dm.com/3d-...tive-57498.html Hab das Modell mal bei mir reingeladen, sieht schick aus und so. Auf der Seite steht aber Fällt meine Facharbeit darunter ? Schließlich reich ich die an meinen Fachlehrer und so ja weiter... Online stellen oder so werd ich sie aber wohl eher nicht. Ich rechne mal nicht damit, dass was zurück kommt, wenn ich den Uploader selbst frage, da das Modell schon über 3 Jahre alt ist...
  23. Habe den Link hier gefunden, das hat mein Problem gelöst http://stackoverflow.com/questions/23450430/after-deserialization-cannot-cast-object Da ich JSON nutze verwende ich einfach die SerializerSettings um den Typen mit zuspeichern.
×
×
  • Neu erstellen...