CAD Daten und Polycount

  • Selbst wenn du das alles komplett fehlerfrei importiert bekommst, können die hohe Polygonzahl und die vielen Materialien ganz schnell zum Performancekiller werden.

    Der Polycount ist zwischenzeitlich nicht mehr das Problem, das war vor ein paar jahren noch der Fall.

    Erst Kürzlich hatte ich ein Mesh mit über 16 Millionen Tris und mehrin VR getestet, lief absolut Ruckelfrei. (Ich denke es geht bei weitem mehr)


    Wer möchte, kann sich ja mal den Spaß machen und den delorean mehrmals in die Szene ballern. Sagt mir bescheid ab welchem Polycount die Szene nicht mehr Ruckelfrei läuft. Einige wären sicherlich überrascht.


    Das soll nun natürlich kein Freibrief sein Objekte sinnlos und ohne Retopo in die Szene zu knallen.

    Weiterhin gilt die Richtline; Sowenig Polygone wie möglich und so viele wie nötig.


    Man muss definiv keinen Charakter mehr mit nur 15000 Tris bauen.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Also an sich hast du schon recht, selbst knapp 12 Millionen Polygone (fast 800.000 pro Modell) macht noch nicht wirklich Probleme. (selbst auf meinem Laptop mit GTX1070 mobile version)



    Aber erstmal alle Normalen der Flächen nach außen gedreht zu bekommen benötigt schon 1-2 Stunden.

    Scheint so als hätte der Artist hier sehr oft Gebrauch gemacht vom Größe -1 trick um Objekte zu spiegeln.


    Und dann gibts noch immer solche unschönen Dinge wie sämtliche Texte als 2D Geometrie zu realisieren:


    12k Polygone allein für nen einfachen Sitz zu verbraten:


    Sämtliche Details voll auszumodellieren bis hin zu den Schlauchummantelungen:


    auch viele überflüssige Edgeloops und Details die man doch besser per Normalmap realisieren sollte:



    und trotzdem hast du noch Stellen dabei an denen du die Backfaces siehst, weil ohne Wandstärke modelliert wurde:



    Nochmal zur Klarstellung:

    das ist soweit alles ok für den Einsatzzweck für den das Modell gedacht war, aber zur Verwendung in einer Echtzeitengine wird man da noch vieles anpassen müssen, selbst wenn man aufs UV mapping weitesgehend verzichtet und einfarbige Materialien statt Texturen benutzt.

    (bis auf dort wo man durch Textureinsatz die Geometriedetails massiv reduzieren kann)


    Ach und abgesehen davon, das in der fbx die Sitze und die Lenksäule verzerrt waren, fehlt auch das Lenkrad.

  • Interessant finde ich, das die Unreal ja immer mehr auf Industrie Visualisierungen ausgelegt werden.


    Der Traum der Entwickler: Man nehme eine Stepfile (STP) direkt von Solidworks oder Autocad und haut diese via Datasmith in die Unreal rein und alles ist perfekt.


    DIe Realität sieht leider anderst aus: Die Meshes sind technisch und von der Topologie her schrott. Die Probleme die kraid nennt.

    Hinzu kommen aber noch unschiedlich skallierte Texture UVs oder sie sind einfach gar nicht vorhanden.

    Sind die Textur UVs nicht vorhanden, können auch keine verknüftigen Light UVs errechnet werden. Data Smith verwendet hier einen anderen allgorithmus wie der Generate Lightmap UVs Haken in den Import Settings.


    Ich glaube das kann in Zukunft funktionieren, wenn auch die ingenieure und Architekten VR und AR als Workflow akzeptieren und die Modelle entsprechend vorbereiten.

    Ich denke bei den Entwickler ist noch nicht vorgedrungen oder noch nicht notwendig die Modelle entsprechend zu bauen.

    Es ist eine Schande wenn man als 3D Artist solche Modelle bekommt und das Modell quasi neu bauen muss nur weil der ingenieure geschlampt hat. Kann sein dass er es nicht für Notwendig hält die Normals korrekt auszurichten oder auf alle Objekte UVs drauf zu machen.

    Ich denke wir werden es erleben, das man solche Modelle in die Engine zieht und sie sofort auch mit hohem Polycount verwendbar sind.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Ich glaube das kann in Zukunft funktionieren, wenn auch die ingenieure und Architekten VR und AR als Workflow akzeptieren und die Modelle entsprechend vorbereiten.

    Ich denke bei den Entwickler ist noch nicht vorgedrungen oder noch nicht notwendig die Modelle entsprechend zu bauen.

    Es ist eine Schande wenn man als 3D Artist solche Modelle bekommt und das Modell quasi neu bauen muss nur weil der ingenieure geschlampt hat. Kann sein dass er es nicht für Notwendig hält die Normals korrekt auszurichten oder auf alle Objekte UVs drauf zu machen.

    Ich denke wir werden es erleben, das man solche Modelle in die Engine zieht und sie sofort auch mit hohem Polycount verwendbar sind.

    Da ich beides kann (CAD + Polygone) geb ich mal meine Saft dazu, auch wenns am eigentlichen thread Thema vorbei geht:

    Ich sehe das eher anders herum. Die real-time visualisierungstechniken müssen auf den CAD workflow angepasst werden, denn der ist weitaus näher an der Fertigungswelt und auch am realen Bauteil. Oder es müsste bessere Konvertierungsmöglichkeiten geben, was aber nur über AI möglich ist.

    Wahrscheinlich greift es sogar ineinander, denn das meiste an Renderingtechnik kommt aus der Polygonwelt.


    (Und der Ingenieur ist normalerweise zu teuer um sich um UVW mapping, etc zu kümmern.)

  • auch wenns am eigentlichen thread Thema vorbei geht:

    Da hast du recht. Da ich das Thema interessante finde, hab ich mal isoliert :)


    Ich sehe das eher anders herum. Die real-time visualisierungstechniken müssen auf den CAD workflow angepasst werden, denn der ist weitaus näher an der Fertigungswelt und auch am realen Bauteil. Oder es müsste bessere Konvertierungsmöglichkeiten geben, was aber nur über AI möglich ist.

    Dass wir jetzt nicht aneinander vorbei reden.


    Ich als 3Dler kann nur mit dem arbeiten was ich bekomme. Wenn ich eine Maschine bekommen wo warum auch immer Kettenglieder eines Fließband fehlen, stell ich mir die Frage warum das so ist.


    Der Kunde XYZ beauftrag den Ingenieur (Planer) die Maschiene in Solidwork, Revit oder was auch immer zu bauen. Gleichzeitig beauftrag der Kunde uns mit diesen Daten zu arbeiten.


    Der Kunde zahlt sowohl den Planer als auch mich. Um die ganzen Daten aufzuarbeiten und sie plausibel zu machen, brauch ich eine Woche. Ich behaupte jetzt einfach mal für den Konstrukteur wäre es deutlich weniger Arbeit gewesen solche Fehler zu vermeiden.


    Die Probleme sind meiner Meinung nach folgende:

    1.Die Konstrukteur wusste gar nicht das die Maschine auch visuallsiert werden soll.

    2.Oftmals sind das nicht finale EIngangspläne in der Architektur visuallisierung werden solche Pläne gebraucht um überhaupt die Baugenehmigung zu bekommen erst danach kommt der Detail plan.


    Ich denke dass, wenn sich AR und VR weiter durchsetzt, wird mehr darauf geachtet das solche dinge nicht mehr passieren. Ob der Kunde nun den Konstrukteur zahlt oder den 3Dler kommt doch im Endeffekt auf das selbe raus. Außer das mich das 1 Woche kostet und den Konstrukteur vielleicht oder oder 2 Tage selbst wenn er doppelt so teuer ist. Solche Projekte liegen auch nicht selten im 5 oder 6 stelligen Bereich.


    Ich hatte in den Stepfiles echt schon alles: Fehlende Schrauben, Fehlende Motoren, geflippte Normals, UVs nur teilweise vorhanden.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Danke fürs isolieren. Das ganze AR/VR Thema im Engineering finde ich auch richtig interessant und UE4 ist ja durchaus gerade das Tool dafür.


    Bei den Fehlern wie fehlende Teile ist es natürlich Fragwürdig warum das so ist. Wobei es schon an Punkt1 liegen kann. (Oder einfach die schlechte Konvertierung von CAD -> STL)


    Ich muss hierzu mal meine Gedanken sammeln. Wir hatten heute Abend jemanden von Google DE bei uns als Redner in einer Freiwilligen Veranstaltung bei uns in der Firma, der über Digitalisierung und wie sich die deutsche Unternehmenskultur dafür verändern muss, usw. geredet hat. Und ich glaube ich werde noch weiter abschweifen, weil du Dinge beschreibst die damit ineinander greifen in meinen Gedanken. (Visualisierung ist ja durchaus auch ein Teil von Digitalisierung)

  • Interessantes Thema. Zu meinen Aufgaben gehörte des öfteren das visualisieren von CAD-Daten. Solange es reines rendering war konnte ich die Daten meist pur übernehemen. Das fehlen von sich wiederholenden Geometrien ist der Effizienz des Konstrukteurs geschuldet. Schlimmer ist es wenn mehrere Konstrukteure an einem Projekt sitzen. Unmengen an sich überlappenden Geometrien. Und Kopfschuss wurde es wenn es um Realtime ging. Eine riesige Stahlkonstruktion, dargestellt in Unity. Überlappende Geometrien, entfernen aller Schrauben+Unterlegscheiben und Muttern :), schließen der entstanden Löcher, Reduktion der Polygonanzahl. Da war ich heil froh wenn mit Instanzen gearbeited wurde.

  • Okay mal eine Frage an euch beide:

    Tomura Meier


    Beim Letzen Projekt hab ich nur die Stepfile bekommen, die Objekte hießen Komplett unterschiedlich.

    Ich schätze mal das es vielleicht 20 unterschiedliche Schrauben Typen in Größe und Form gab.


    Keiner der Schrauben hat war durch die benennung identifizierbar. Die eine Schraub hieß vielleicht "part356" und die nächste schraube wieder einen anderen namen.


    Ich hatte nun folgende Idee:

    Ich wollte in Unreal alle Schrauben identifizieren und im ersten Schritt durch Platzhalter ersetzen. so dass aus allen 9mm schrauben eine Instanz wird. So leicht den Polycount für diesen Schrauben Typ reduzieren kann oder weitere LODs hinzufügen kann.


    Damit das funktioniert müsste meiner Meinung nach ein Plugin geschrieben werden dass die schrauben Identifiziert (Ist es eine 9mm Schraube oder eine 12mm Schraube...


    Dann müsste die Ausrichtung der Schraube identifiziert werden, (In welche RIchtung zeigt die Schraube)


    Damit das alles flexibel und änderbar ist, würde ich gerne alle Schrauben in eine Tabelle (Array) packen wo jede Schraube in der Maschine eine ID bekommt. So könnte ich eine ganz bestimmte schraube durch die Tabelle selectieren und beispielsweise durch eine nicht Instanziere Schraube ersetzen. (Einfach nur die Translation von der Instanz schraube auf eine Copy Schraube übertragen.


    Dadurch kann ich die schraube beispielsweise animieren oder abbrechen lassen. WIrd eine schraube falsch generiert möchte ich diese auch ingame selectieren und drehen können.


    So in ungefähr stell ich mir das vor. Habt ihr Ideen ?


    Alternativ frage ich mich: Wenn ich die Stepfile in einem CAD Programm öffne hab ich dort andere Möglichkeiten als in Max oder Maya ?


    DIe schrauben dort beispielsweise anderst strukturiert kann ich dort womöglich alle 9mm Schrauben selectieren und exportieren ?


    Das wäre auch schon eine große HIlfe.


    Ich bin gespannt auf Eure Antworten.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Einige deiner Anforderungen sehe ich mehr im Bereich deines 3D-Programmes. Also im vorbereitendem Workflow. Mir Datasmith habe ich keinerlei Erfahrungen und aus der Hilfe konnte ich keine Optionen ersehen die dir weiterhelfen. Soweit ich das für Max ersehe gibt es dort, mit Hilfe von Scripten, die Möglichkeit im nachhinein gleiche Geometrien zu instanzieren. Das Script ist von 2011....kann sein das Max jetzt von Hause aus schon weiter ist. Das hilft dir jetzt nicht weiter. :/ Es sollten sich mal Programmierer zu diesem Thema äußern.

  • Einige deiner Anforderungen sehe ich mehr im Bereich deines 3D-Programmes

    Das Problem ist das beispielsweise die Schrauben sehr sehr sehr Highpoly sind.

    Ich hab nun keine Lust eine Retopo für jede Schraube durchzuführen.

    (Das sind einige Hundert Schrauben)


    Ein Replace der Schrauben in Max ist kein Problem aber dann entsehen nach dem Export in Unreal extrem viele einzelne Objekte (Pro Schraube ein Drawcall)

    Deswegen schwebt mir eher eine Lösung in Unreal vor wodurch die Schrauben komplett in Unreal durch Blueprints insanziert werden.

    Gehe ich den Weg im 3D Programm, hab ich die Möglichkeit: Entweder sehr viele einzelne Objekte oder ich Merge alle Schrauben zu einem Mesh. Dann hab ich aber bescheidene Light UV weil die Schrauben in der UV winzig werden.



    Ich würde halt im Prinzip nur für nur 30 Schrauben eine Retopo machen. Da kann dann auch ruhig jede Schraube ne eigene UV erhalten.


    Das ist der Grund warum ich eher eine Lösung in Unreal suche.


    Meier


    Wie siehts mit einer Anwort hiermit aus:


    Alternativ frage ich mich: Wenn ich die Stepfile in einem CAD Programm öffne hab ich dort andere Möglichkeiten als in Max oder Maya ?


    DIe schrauben dort beispielsweise anderst strukturiert kann ich dort womöglich alle 9mm Schrauben selectieren und exportieren ?

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • "find similar" und "convert to blueprint"

    Similar ja genau so ungefähr. Die Meshes in BLueprint convertieren muss ich denke ich nicht.

    Ich würde einfach nur an den Stellen wo sich die Highpoly Schrauben befindet ein neues Dummy (lowpoly) Objekt Spawnen das entweder -X,+X, -Y +Y,-Z oder +Z ausgerichtet ist. Diese Ausrichtungen mit dem schrauben Typ in eine Tabelle. So gibt es nur ein Mesh (bluebrint) das geändert werden müsste für die 9mm Schraube. Für die 12 mm Schraube gibt es dann ein anderes Blueprint.


    Dadurch hab ich nur 30 instanzierte Schrauben statt 1000 nicht Instanzen.

    Genau wie die Prefabs in Unity.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Kann mich nicht mehr erinnern wie das in Unity mit den Prefabs war.


    In Unreal importierst du ein Mesh in den Content Browser. Wenn du nun das Mesh aus dem COntent Browser in den Viewport ziehst, dann ist dieses Mesh eine Instanz von dem Mesh im Content Browser.

    Ziehst du das Mesh ein weiteres mal in den Viewport und änderst im 3D Programm etwas am Mesh und drückst in Unreal auf Reload so werden alle Änderungen automatisch auf alle Meshes im Viewport übernommen.

    Was ich also meiner Meinung nach machen müsste, ist die Highpoly Schraube durch ein Mesh aus dem Content browser zu ersetzen. Meiner Meinung nach müsste ich also nur alle Schrauben die in Größe und Form identisch sind durch das Mesh "screw9mm" aus dem Content Browser ersetzen.

    So existiert die Schraube nur einmal im COntent Browser und muss durch ein Blueprint an die richtige Stelle verfrachtet und ausgerichtet werden.

    Das zumindest in der Theorie.


    IN der Praxis würde also die Highpoly Schrauben so wie sie aus der Step kommen als einzelne Objekte in die Unreal importieren. Ich brauch nen Alegoritmus der die Schrauben erkennt und diese durch ein Blueprint ersetzt dass einen Platzhalter hat. Diesen Platzhalter setze ich nun durch die Lowpoly schraube.


    Die schwierigkeit ist also die Schrauben zu erkennen und diese in richtiger Ausrichtung zu ersetzen.

    Mal so am Rande. Hast du mal versucht Instanzen aus Maya in ein FBX zu exportieren mit der Option Preserve Instances.

    Mit Preserve Instance hab ich auch schon rumgespielt das funktioniert auch. Wie sich diese importierten Instanzen auf die Performance wirken kann ich nicht sagen. Aber vom Prinzip her muss ich dann das selbe wie oben in Max oder Maya machen.

    Ich würde die einzelnen Schrauben auch gerne in eine Tabelle laden ich denke das wird schwierig wenn die MOdelle bereits als Instanz importiert werden.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Das scheint das so ein Mix zu sein. Find similar und Instanzierung gibt es im 3D-Programm. Es sei den du möchtest den Schritt übergehen und die Konstruktionsdaten sofort in Unreal importieren, was ich nicht ratsam finde da du da bestehende Defiziete in der Geometrie und Mapping nicht fixen kannst. Kann gut sein das ich eine lange Leitung hab und deinen Sachverhalt nicht raffe. :) Aber ja das auffinden von gleichen Geometrien sehe ich als größte Hürde. Das müßte glaube ich die Engine schon mitliefern. Viellecht gibt es die Möglichkeit auf die Metadaten der Geometrie zuzugreifen. Ist nur eine Idee.... das da etwas eindeutiges steht was du über Blueprint ansprechen kannst.

  • Es sei den du möchtest den Schritt übergehen und die Konstruktionsdaten sofort in Unreal importieren, was ich nicht ratsam finde da du da bestehende Defiziete in der Geometrie und Mapping nicht fixen kannst.

    Ja genau es wird einige Meshes geben, die ich direkt Importieren kann. Objekte wo nur ein Material draufkommt und die auch keine verknüftige UV brauchen.


    Meinst du man sieht im CAD Programm mehr Informationen ? Meinst du sind die Kettenglieder einer Kette als Gruppe hinterlegt so das ich alle Kettenglieder importieren kann ?


    Meinst im CAD Programm sind alle Schrauben als Gruppe hinterlegt ?


    Vielleicht könnte ich mir bestimmte Meshes auch direkt aus dem CAD Programm importieren zb nur die 9mm Schrauben.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Zitat

    Meinst du man sieht im CAD Programm mehr Informationen ? Meinst du sind die Kettenglieder einer Kette als Gruppe hinterlegt so das ich alle Kettenglieder importieren kann ?

    Tja.... keine Ahnung. Fehlende Elemente wurde mir als "einmal reicht für die Konstruktion" erklärt.

    Zitat


    Meinst im CAD Programm sind alle Schrauben als Gruppe hinterlegt ?

    Dito.... kein Plan. Nach einem Stepimport konnte ich keine Gruppen feststellen sondern nur wenn der Konstrukteur gnädig war Instanzen.

    Zitat


    Vielleicht könnte ich mir bestimmte Meshes auch direkt aus dem CAD Programm importieren zb nur die 9mm Schrauben.

    Ich hab mit npower in Max gearbeited, da konnte man die Teile selektieren die ich importieren will.


    Welches CAD-Tool wird verwendet?

    Bekommst du native CAD-Daten oder ein Exportformat wie zBsp. Step?

    Bei dem Thema Metadaten habe ich mich darauf bezogen.

  • Wir bekommen Step Files ein Cad Programm haben wir (noch) kein.

    Bevor wir eins kaufen (vielleicht solidworks) möchte ich vorher wissen ob mir mir das was bringt.


    Derzeit hat eine Maschiene rund 16 Millionen Polygone und Max geht schon ziemlich in die Knie wenn ich alles selektiere um alles ein stück zu verschieben. Es dauert schon spührbar lange bis Max alle Objekte Objekte selektiert hat. So macht das fast keinen Spaß.


    In Unreal haben wir das selbe Problem die Auswahl aller Objekte dauert ewig. Deswegen würde ich die Maschine gerne in Teilstücke zerlegen. Nur da ist das Problem das nichts korrekt benannt ist und bei eiigen Tausend Objekte , macht es kaum Sinn die Händisch zu gruppieren.

    Wenn das in einer CAD Software performant läuft, würde ich beispielsweise dort die Step öffnen und die Objekte einzeln rausexportieren und vielleicht schon in CAD benennen.


    Ich kenne das Auto CAD so, dass nicht nur die Objekt benennungen vorhanden sind sondern auch viele Zusatzinformationen. So waren beispielsweise alle Türen in einer Gruppe doors zugeordnet. Auch wenn die Meshes part... heißten haben, konnte man so alle Türen selektieren.
    Wäre der Hammer wenn ich so zb auch alle Schrauben eines Typs selektieren könnte.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.