SpeedTree to UE4 Probleme "Benötige Hilfe"

  • Hi Leute,


    und zwar geht es wie ihr dem Titel entnehmen könnt um SpeedTree =)
    Ich besitze die SpeedTree_for_UE4 Version 8.1 und habe bereits einige Dinge in mein Unreal Projekt importiert. Steine und kleine mini Pflanzen funktionieren eigentlich recht gut doch sobald ich einen Baum importieren möchte sehe ich keine Blätter.
    Wenn er das Model importiert steht rechts unten "compiling shader" oder so was in der Art.
    Er Zeigt dann ganz kurz blätter in kantiger Grauform an doch sobald das Ding geladen ist habe ich nur noch den Stamm mit Ästen dort stehen.
    Das ist aber nicht jedes mal der Fall. Manchmal zeigt es beim laden auch nur direkt den Stamm inkl Ästen an oder es ist so dass ich an einer Stelle 3-4 Blätter hängen jhabe aber an 99,9% des Baumes nicht.


    Hat jemand von euch Erfahrung damit und kann mir da weiter helfen ?
    Hier ein kleiner Screen von einem Testprojekt.


    Benutze das Programm erst seit Heute und habe mir ein Video des Herstellers zum Ex und Import angeschaut.
    Einstellungen sind Identisch..Im Video wird der Baum immer direkt perfekt geladen -.-


    Lg Cap

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Also ich habe eben nochmal zwei Bäume ex bzw importiert.
    Bei dem ersten hat alles auf anhieb perfekt funktioniert, genau wie im Video erklärt.


    Ich habe den Baum direkt nach dem Import geöffnet und er wird wunderbar angezeigt und ich kann ihn ohne jegliche Probleme als Foliage setzen und nutzen.





    Nun dachte ich mir "okay dann wirds vllt ab jetzt klappen...kp woran es lag" und machte direkt mit dem zweiten Baum weiter den ich importiert habe.

    Bei dem zweiten Baum jedoch bekam ich das vorherig beschriebene Problem:



    Hier die Wireframeansicht:





    Lg Cap

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Es scheint von Baum zu Baum / Pflanze zu Pflanze unterschiedlich zu sein...
    Mal funktioniert es und mal nicht, obwohl die Einstellungen alle exakt gleich sind :/

    Bin mal gespannt ob wir das Problem lösen können :/

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Bei denen wo das nicht funktioniert sieht das Shaders kompilieren übrigens so aus wenn ich die als Foliage gesetzten Bäume setze:


    Sobald dann die Shader geladen sind habe ich nur noch ein Holzgerüst da mit zwei drei Blättern dran wie oben auf den Bild zu sehen.

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Also für mich sieht das aus als ob es die Geometrie der Blätter nicht mitimportiert hat.

    Die planes welche du dort siehst sind von den Ästen und sobald die Shader compiliert sind, werden die mit Alpha dargestellt.


    Bei dem Baum wo's funktioniert hat, sieht man ja auch im untexturierten Zustand viel mehr Geometrie.


    Warum es nicht immer funktioniert kann ich jetzt leider auch nicht sagen.

    Da müsstest du mal die beiden Bäume in Speedtree vergleichen.

  • Stimmt, hast recht..wenn ich die so vergleiche fällt mir das jetzt auch auf.

    Nun vllt liegt es auch am Programm :/
    Ich werde mal eine andere Version von UE ausprobieren. Heute morgen habe ich mir die 1.19.2 installiert. Werde das dann heute Abend mal ausprobieren und falls das auch nicht geht werde ich mal eine andere Version von SpeedTree testen.

    Die Werte alle vergleichen wird nicht ganz so einfach, denn dafür werde ich erst noch meine Tutorialreihe abarbeiten müssen die nächsten Tage um jede einzelne Einstellung auch wirklich 100% zu verstehen.

    Nur dran herum drehen und vergleichen ist da nicht so sinnvoll.
    Man soll ja auch etwas lernen und das ganze auch möglichst verstehen was dahinter steckt :)

    Nutze das Programm wie gesagt erst seit neustem und habe bisher nichts selbst gestaltet.
    Ich habe lediglich meine Libarys durchforstet und mal ein wenig exportiert =)

    Vielen Dank für deine Hilfe.


    Falls noch jemand anderes Anregungen zur Lösung hat, gern her damit =)

    Manche Menschen können den Regen spüren. Andere werden nur nass.


  • Sobald dann die Shader geladen sind habe ich nur noch ein Holzgerüst da mit zwei drei Blättern dran wie oben auf den Bild zu sehen.

    Im Bild sieht man ja, das mit dem Default Material die Flächen für die Blätter da sind. Es liegt also nicht an der Geometrie sondern am Material. Es ist vermutlich komplett transparent, vllt weil die Textur oder das Material allgemein nicht mit exportiert/importiert wurde. Wenn du die Texturen von SpeedTree in einem Ordner hast, kannst du ganz einfach dein eigenes Material erstellen, dann sollte es gehen. Ist natürlich sehr umständlich.
    Vllt wurden ja auch die UVs komisch exportiert, es gibt 100 Möglichkeiten, aber es ist irgendwo ein Material- oder UV-Fehler.

    • Offizieller Beitrag

    Wenn du auf die Blätter eine nicht Alpha Textur (zb Stein Textur) auf die Blätter legst, werden die dann angezeigt ? Damit kannst du relativ schnell ausschließen das es an der Alpha Material liegt.


    Zieh dann doch einfach mal die Blatt Textur des baums der funktioniert hat auf die Blätter des baums die nicht funktioniert haben.


    Nach den Tests weißt du obs ein Material Problem ist und ob es mit anderen Materials klappt.

  • Versuch mal das sollte klappen

    Funktioniert leider nicht.
    Ich habe gesehen dass nach der Einstellung dieser Werte ganz kurz die Blätter in Grauform angezeigt werden doch leider verschwinden sie direkt wieder.

    Ich habe mittlerweile auch mal mit dem Support geschrieben und die meinten ich soll denen mal ein Beispielordner senden wo ein Export drin ist.
    Habe dann direkt beides verschickt. Einmal die Rohdatei/Modelordner aus der Libary und einmal den Export aus der SpeedTree_forUE4.

    Es kam dann fix eine Antwort zurück in der die gute Dame mir erklärte dass es sich bei meiner Libary um VFX Modelle handelt die für Cinema/VFXVideoanwendungen gedacht sind. Diese sind wie sie mir erklärte alle sehr hochauflösend und das würde nicht funktionieren mit GameEngines.

    Die UnrealEngine unterstützt anscheinend nur 50.0000 Triangles (keine ahnung was sie mit Dreiecken meinte) Poligone werden es ja nicht sein oder etwa doch ?

    Sie meinte ich soll den jeweiligen Baum den ich in der Engine nutzen möchte, mit dem SpeedTree_Modeler bearbeiten und die Anzahl der im Baum vorhandenen Dreiecke herunter setzen.

    Alles über 50.000 macht anscheinend Probleme in vielen Engines.

    Leider ist es so dass ich überhaupt keine Ahnung von dem Programm habe und mir bisher keine Tutorials dazu angesehen habe. Werde das wohl noch nachholen müssen.



    Vielen Dank für eure ganzen Vorschläge !
    Sollte ich nochmal ähnliche Probleme haben die nicht mit dem Speedtree VFX Problem zusammen hängen so werde ich wissen wie ich vorgehen kann. :thumbup:

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Wenn du auf die Blätter eine nicht Alpha Textur (zb Stein Textur) auf die Blätter legst, werden die dann angezeigt ? Damit kannst du relativ schnell ausschließen das es an der Alpha Material liegt.


    Zieh dann doch einfach mal die Blatt Textur des baums der funktioniert hat auf die Blätter des baums die nicht funktioniert haben.


    Nach den Tests weißt du obs ein Material Problem ist und ob es mit anderen Materials klappt.


    Hab das grad mal ausprobiert und einfach mal ein neues Material gemacht und drauf gezogen.
    Hat mehr oder weniger funktioniert bis auf dass das ein wenig schief und kantig ausschaut ^^


    Ich werde mich jetzt die nächsten Tage mal mit der SpeedTree Software auseinander setzen und das was die Dame mir geraten hat mal umsetzen.

    Sollte aber funktionieren, bin da recht zuversichtlich dass sie damit recht hat.
    (ist ja der Support)


    Auf jeden Fall möchte ich wie bereits geschrieben nochmal allen recht herzlich danken.


    :pinguin:

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • Mit Dreiecken meint die Dame schon Polygone. Und zwar Tris. Also Polygone mit drei Ecken.

    Wenn du ein Quad importierst. wandelt die Engine sie auch in Tris um. Also ein Quad gleich zwei Tris. 50 000 ist zwar hoch für einen Baum, wenn du damit einen Wald machen willst, aber nicht zu hoch für die Engine. Das Problem wird also an einer anderen Stelle liegen. Speed Tree erzeugt recht polygonlastige Vegitation. Also runterschrauben wen du viele Bäume brauchst. Es ist schwer zu sagen wie viele man braucht. Kommt immer darauf an wieviel Zeug man nachher in der gesamten Szene hat. Geh mal runter auf 5000 Tris.

    Wo in deinem Fall der Fehler liegt kann ich auch nicht sagen. Lade doch mal dein Projekt irgendwo hoch, oder den Baum. Dann kann einer der Profis, einen Blick darauf werfen.

    Aber mit ein wenig rumprobieren sollte das zu finden sein. :)

    Schau dir dieses kostenlose Programm mal an.

    https://www.evolved-software.com/treeit/treeit

    Es gibt immer verschiedene Möglichkeiten warum Murks entsteht. Manchmal ist eine Textur zb. Um 90 Grad gedreht und passt nicht mehr...oder, oder, oder.

    Nur nicht verzweifeln. :)

    • Offizieller Beitrag

    Au das hatte ich nicht bedacht auf den Polycount solltest du achte vor allem bei Bäumen von dehnen man im Normalfall mehre in der Szene hat.


    Zwei dinge solltest du du beachten.


    1. Die Maximale Anzahl an Tris ist auf 50000 Begrenzt das weißt du nun

    Ein Polygon, kann ein Dreieck oder ein Quad sein. Ein Quad hat im Normalfall 2 Tris.

    Ein Modell kann aus Quads und Tris bestehen. So kann ein Objekt 1000 Quads und 500 Tris haben das wären dann insgesamt 1000 * 2 + 500 = 2500 Tris. Das beste wäre also zu schauen wie du dir den Tris Count anzeigen lassen kannst.


    2. Ein Objekt kann darf wie gesagt nicht mehr als 50k Tris haben in deiner gesamten Szene kannst du aber Theoretisch Objekte mit einigen Mrd Tris (Gesamt) haben. Allderings solltest du bedenken das du bei einem entsprechenden Polycount sehr schnell Performance Probleme bekommen kannst,

    Bei den heuten Rechner würde ich sagen das es ab 5 Millionen Tris pro Frame gefährlich werden könnte. Wenn du ein Monster Rechner hast schaffst du vielleicht auch 60 Millionen aber im Normalfall willst du das dein Spiel auf allen gängigen Rechner laufen und nicht nur auf Highend PCs.


    Beispiel: Einer deiner Bäume hat genau 50k Tris bei 5 Millionen bekommst du Performance Probleme.


    5000000/ 500000 = 100 Bäume.
    Du könntest also maximal 100 Bäume pro Frame anzeigen lassen bis ein langsamer Rechner in die Knie geht.


    Nun willst du in deiner Szene ja nicht nur Bäume haben sondern beispielswiese einen Charakter, Waffen, Häuser, Felsen und vielen mehr.

    Dadurch sinken natürlich auch drastisch eine Möglichen Bäume die dann theoretisch sichbar wäre.


    Durch das Culling, werden Bäume ausgeblendet die nicht im Sichtbereich des Players liegen diese Bäume müssen von der Engine nicht gezeichnet werden und brauchen deswegen kaum Performance.

    Deswegen ist es wichtig wieviele Tris pro Frame sichtbar sind.


    Wenn man zb in deinem Spiel auf einem Berg stehen kann wo man auf 5000 Bäume + Haus usw runtersehen kann, wird es brenzlich


    Ich hoffe du verstehst das Problem.


    Nun gibt es hierfür einige Lösungen:


    1.Das Camera Occlusion Culling ist standartmäßig an es Blendet alle Meshes aus die von etwas anderem verdreckt werden.

    Haus im Wald, bist du ausserhalb des Hauses siehst du den Wald = Hoher Polycount)

    Bist du im Haus siehst du nur die Wände und die Bäume die du siehst wenn du aus dem Fenster schaust = Niedriger Polycount.


    2.Distance LOD

    Die Distance LOD zeigt Objekte von dehnen du weiter entfernt bist in einem Nierigen Polycount an.

    (zb Baum ohne Blätter)

    Näherst du dich dem Baum wird das Mesh quasi ausgetauscht und der Baum wird mit einem höheren Polycount angezeigt.

    Man kann mehre LOD Stufen erstellen zb ein Baum mit 100 Tris aus 5km Entfernung ein Baum mit 1500 Tris aus 1000m Entfernung und ein Baum mit 10k Tris wenn man 20m entfernt ist.


    Unreal hat auch ein Auto Lod System das deinen Polycount deiner Bäume eventuell automatisch runtergedrückt hat. Hier ist dann entschiedet welche LOD Stufe gerade angezeigt wird. (Das musst du prüfen)

    Ich glaube auch Speedtri hat sowas wie ein Auto Lod System das verschiedene Bäume in unterschiedlicher Polycount Größe generiert. Hier wäre es wichtige welche LOD Stufen und exportierst.

    Vielleicht ist es auch Sinnvoll deine Bäume erstmal in ein 3D Programm zu laden und dort zu prüfen ob alles in Ordnung ist. (Der Polycount kannst du Checken, die LODs und ob alle Blätter dabei sind.


    Wenn alles im 3D Programm geklappt hat., dann solltest der Export in die Unreal auch kein Problem sein.

    • Offizieller Beitrag

    Die UnrealEngine unterstützt anscheinend nur 50.0000 Triangles (keine ahnung was sie mit Dreiecken meinte) Poligone werden es ja nicht sein oder etwa doch ?


    Du kannst ja mal im Internet schauen ich bin mir aber ziemlich sicher das es ein Limit gibt was ein Mesh maximal haben darf.


    Kann mir aber nicht vorstellen das die Grenze bei 50k ist da sie wahrscheinlich Power ob two sein müsste. (Eher 65k)

    Das Problem wird sein, das die Vertecies in einer Tabelle gespeichert werden müssen in einem Bit, Byte etc können aber nur eine maximale Anzahl an Informationen gespeichert werden.


    Auch aus Performance gründen macht es meiner Meinung nach keinen Sinn so große Meshes zu importieren. Culingbar (Denglisch) sind immer nur einzelne Meshes. Beseht ein Haus aus einem Mesh und besteht aus 50k Tirs, kann entweder nur immer das ganze haus eingeblendet oder nicht eingeblendet werden. Besteht das haus aus mehren Objekten, hast du zwar mehr Drawcalls aber die durch das Culling niemals alle angezeigt werden müssen. Effektiv sparst du so meiner Meinung nach mehr als das Haus als ein Mesh mit einem Drawcall zu importieren. Vor allem wenn du dich im Haus befindest, muss immer alles angezeigt werden und das Culling funktioniert nicht.

  • Mich hat das eben auch sehr gewundert mit den 50.000 weil ich der Meinung bin, schon Dinge gesehen zu haben die weit aus mehr besaßen aber wie gesagt, ich bin leider nicht vom Fach und beherrsche die Materie noch nicht so ganz, daher habe ich ihr das speziell im Bezug auf die Bäume einfach mal geglaubt.

    Ich werde das die Tage mal ausprobieren diese Triangles herunter zu setzen und dann mal schauen ob das so funktioniert.

    Zur Zeit bin ich an anderen Dingen beschäftigt, da werde ich mich erst die kommenden Tage wieder mit dem SpeedTreeproblem auseinander setzen.

    Habe mir das Buch vom Jonas gekauft und arbeite das gerade in Verbindung mit dem WorldCreator und der Software von Substance ab.

    Möchte mir nun endlich mal Landscapes erstellen die nach etwas aussehen.
    Megascans Studio und die beiden Programme Substance Painter und Substance Designer sind ja schon echt krasse Waffen meiner Meinung nach. Das haut mich schon ziemlich um wenn ich sehe was manche Menschen damit so anstellen.

    Manche Menschen können den Regen spüren. Andere werden nur nass.

  • ..aus Performance gründen macht es meiner Meinung nach keinen Sinn so große Meshes zu importieren. Culingbar (Denglisch) sind immer nur einzelne Meshes. Beseht ein Haus aus einem Mesh und besteht aus 50k Tirs, kann entweder nur immer das ganze haus eingeblendet oder nicht eingeblendet werden. Besteht das haus aus mehren Objekten, hast du zwar mehr Drawcalls aber die durch das Culling niemals alle angezeigt werden müssen. Effektiv sparst du so meiner Meinung nach mehr als das Haus als ein Mesh mit einem Drawcall zu importieren. Vor allem wenn du dich im Haus befindest, muss immer alles angezeigt werden und das Culling funktioniert nicht.

    Okay, klingt interessant.

    Das bedeutet ich könnte rein theoretisch ein detailliertes Haus in Cinema4D modellieren was nicht aus einem gesamten Mesh wenn ich es importiere besteht sondern aus vielen einzelnen teilen ?

    Genau so eine Option habe suche ich ebenfalls.
    Dass wenn ich etwas beispielsweise designe/modeliere, dies dann importiere, ich das gemütlich Sektion für Sektion mit Materialien belegen kann. Beispielsweise ein Haus.. Ich importiere das Haus als ganzes und kann in der Unreal dann das Fenster einzeln anklicken, die Fensterbank, die Treppe, das Dach und so weiter und so fort.. Aber das Objekt ist und bleibt sofern ich nix verschiebe als Ganzes.

    Das ist möglich ne ?

    Manche Menschen können den Regen spüren. Andere werden nur nass.

    • Offizieller Beitrag

    Ja ganz genau.

    Bei einem Haus kannst du im 3D Programm mit verschieden Materials belegen.

    Alles was im Haus später eine Rote Tapete haben soll, vergibst du ein Grünes Material (Oder natürlich ein Rotes Material)

    Machst du das bei vielen Meshes (Mehre Wände) und Importierst diese in die Unreal werden die vergebenen Material (Rot) als Slot angezeigt. Dort kannst du dann deine Rote Tapete reinziehen und alle Wände mit dem Roten Material bekommen die Rote Tapete.

    Beim Import in die Unreal brauchst du die Materials dann auch nicht mit Importieren oder du ersetzt die Importierten Materials durch deine Tapete.

    Wahrscheinlich wird dein Rotes Material aber für jedes Objekt mehrmals importierst. Hier macht es dann Sinn nur ein Tapeten Material zu erstellen und diese für alle Wände zu verwenden. Nicht 50 mal das Tapeten Material kopieren.



    Du kannst dein ganzes Haus mit allem und allem drum und dran in Cinema4D Modellieren und als ein Mesh Exportieren. zb Haus.fbx In der Unreal sind das dann vieles einzelne Meshes.


    Willst du dann an einer Wand etwas ändern, löscht du nur die Wand wo sich etwas geändert hat und Importierst nur diese Wand neu. So brauchst du nicht jedesmal das gesamte Haus neu importieren und jedes mal die Material neu vergeben.


    Nur wenn du alles Mehses via Combine oder verschmelzen oder wie das auch immer in Cinema heißt zu einem Mesh machst, hast du ein großes Mesh. (Das willst du nicht)


    EDIT: Nur eins Noch:

    Wenn du in deinem Haus ein Esstisch hast mit 5 Stühle und du das Haus mit allem Importierst, dann ist jeder Stuhl auch ein separates Mesh. Hier wäre es sinnvoll nur einen Stuhl zu Importieren und den dann aus dem Content Browser mehrmals in die Szene zu ziehen. So hast du nicht 5 *mal den selben Stuhl als Copy sondern einen Stuhl aus dem Content Browser als Instanz.

  • Hmh okay =)

    Aber das bedeutet jetzt nicht dass ich in Cinema 4D jedes Segment mit Farben belegen muss um hinterher dann in meiner Engine das fbx Model als ganzes mit einzelnen bearbeitbaren Segmenten haben zu wollen ?


    Manche Menschen können den Regen spüren. Andere werden nur nass.