Beiträge von Bob

    Könntest Du nochmals zusammenfassend schildern, was genau geht oder nicht geht und was das Ziel ist.


    Allgemein:

    1. "AttachActorToActor" (Blueprint A an Blueprint B anheften)

    2. "AttachToComponent" (SkeletalMesh von A and B anheften)

    3. "SetMasterPoseComponent" (Master Pose von B auf A übertragen, sofern beide auf dem selben Skeleton basieren)


    Der Reihe nach ausgeführt erreichst Du das Anheften des Objekts mit deiner eigenen Transformation und Animation.

    Der RGBA Output besteht aus 4 einzelnen Kanälen (R, G, B, A) => float4.

    Der RGB Output besteht aus 3 einzelnen Kanälen (R, G, B) => float3.


    Ich vermute Du wolltest nicht den RBGA als Height Input verwenden sondern nur den Alpha Kanal?

    Screenshot wäre hilfreich um genauer zu antworten.


    Grundsätzlich handelt sich es dabei um ein Problem, dass Du versuchst einen float3 mit einem float4 zu verrechnen.

    Es werden immer die gleiche Anzahl Kanäle erwartet, mögliche Lösung könnte sein:


    - den float3 Part mit "Append" in einen float4 umzuwandeln.

    - den float4 Part mit einer "Component Mask" in einen float3 umzuwandeln.


    Grüße

    Wenn Du an Deinem Vorhaben festhalten möchtest, sollte das kein Problem sein.

    Die Level müssten nur cooked vorliegen und anschließend vom Client wieder heruntergeladen werden.

    Einige Punkte müssten aber vermutlich beim packagen beachtet werden.

    Siehe oben. Vermutlich durch den Edit untergegangen.


    Hast Du das bisher versucht?

    Kommt Pixel Streaming infrage?

    Kein clientseitiger Download nötig und volle Qualität.


    Mehr dazu in der offiziellen UE4 Doc.


    Wenn Du an Deinem Vorhaben festhalten möchtest, sollte das kein Problem sein.

    Die Level müssten nur cooked vorliegen und anschließend vom Client wieder heruntergeladen werden.

    Einige Punkte müssten aber vermutlich beim packagen beachtet werden.


    Grüße

    Du könntest das Licht baken und anschließend nur das Environment animieren - je nach dem was Du vor hast wäre das eine Möglichkeit.


    Durch anständige Optimierungsmaßnahmen wäre auch eine dynamische Lösung kein Problem.

    Hallo,


    ein guter Anfang, wenn nicht schon geschehen:

    https://docs.unrealengine.com/…ures/Streaming/index.html


    Vereinfacht gesagt, wenn Dein Spiel mehr Grafikspeicher braucht als reserviert/zugewiesen ist werden geringer aufgelöste Versionen Deiner Texturen geladen um im Grafikspeicher Budget zu bleiben.


    Mögliche Lösungen wäre das "Budget" zu erhöhen ("r.Streaming.PoolSize") oder Texture Streaming komplett zu deaktivieren (Project Settings). Letzteres ist nicht sehr ratsam aber wenn es so dringend ist eventuell eine Lösung.


    Die Ursache ist häufig die Verwendung von sehr großen Texturen in großer Anzahl, ggf. musst Du dort reduzieren und optimieren.

    Du musst die Texel Density aber im 3D Programm einstellen. Wo wo kann man in Unreal die Texel Density einstellen ?

    Die Texel Density ist kein magischer Wert, der irgendwo gespeichert werden muss.

    Du möchtest eine bestimmte Anzahl Pixel pro cm² erreichen, wie Du die TD erreichst ist völlig egal.

    Niemand "muss" in der 3D Software eine TD einstellen, sowas ist mit einfachster Mathematik auf Grundschulniveau möglich. Abgesehen davon bietet Maya noch nicht sehr lange die TD Einstellungsmöglichkeiten an, andere Software z.T. bis heute auch nicht und dennoch ist dieser Workflow schon länger bekannt und wird angewandt.


    Wenn du eine Texel Density verwendest, dann ist das bei jedem Programm der Fall.

    Texel Density ist eine Einheit ähnlich zur Pixeldichte und kann nicht "verwendet" werden, man kann versuchen oder daran arbeiten eine gewünschte Texel Density zu erreichen.

    Ich vermute Du wolltest sagen, dass es nicht explizit Maya betrifft, das ist natürlich richtig.


    Ne dass ist so nicht richtig,

    Ich Layoute zuerst die gesamte UV dann sind die UVs im UV-Space.

    Nun haue ich die Texel Density drauf und alle UVs passen sich automatisch an. Da brauch ich auch nichts rechnen das ist nur ein Klick.

    Das kannst Du so machen, wirst aber keine Masken oder Bakes verwenden können.


    Zuwas dann die Texel density ? Das macht keinen Sinn.

    Macht es keinen Sinn oder verstehst Du es nur nicht?

    Wichtiger Unterschied.


    Hast du den schonmal mit der Texel density gearbeitet ? So kommen wir jedenfalls nicht weiter. Ich arbeite nun schon einige Jahre mit diesem Workflow und so wie du das erklärst macht das absolut keinen Sinn. Sorry

    Wenn Grundrechenarten für dich schon keinen Sinn ergeben dann würde ich Dir raten diesen Workflow nicht zu hinterfragen.

    "Sorry"

    Du willst die TD in der Engine erreichen, nicht in Deiner 3D Software.

    Wenn Du natürlich in Maya die TD einstellst, werden zwangsläufig die UVs über den 0-1 Space hinaus skaliert.


    Für den Workflow mit kachelbaren Materials setzt Du Deine Auflösung und TD bspw. ebenfalls in Maya, teilst aber den Wert bis alles in den 0-1 Space passt.

    Im Anschluss benutzt Du die Formel von oben und rechnest diesen als Multiplikator aufs Tiling dazu.


    Dadurch hat das kachelbare Material die korrekte TD und Du kannst dennoch mit den UVs im 0-1 Space arbeiten ( Masken, Bakes erstellen).

    Diese Masken/Bakes kachelst/skalierst Du natürlich nicht sondern behältst sie 1:1 bei.

    Ob Du die UVs skalierst oder das Tiling in der Engine macht keinen Unterschied im Ergebnis was die TD angeht.


    Wenn Du über den 1-0 UV Space hinausgehst verlierst Du allerdings jede Möglichkeit mit Masken oder Bakes zu arbeiten.

    Das bezieht sich auf eine 1m² Fläche.


    256px / 100cm = 2,56

    512px / 100cm = 5,12

    1024px / 100cm = 10,24


    etc.


    Dem Guide entsprechend wäre für eine 100cm x 100cm Fläche eine 1024px² Textur notwendig um die TD von 10,24 zu erreichen.

    Wird stattdessen eine 2048px Textur verwendet, können die UVs um 1/4 verkleinert werden usw.


    Bei kachelbaren Texturen gilt (Auszug aus dem verlinkten Guide):


    (längste Seite in Meter) * (Gewünschte Anzahl Pixel pro Meter (Texel Density ohne Komma)) / (Auflösung der kachelbaren Textur) = Anzahl Wiederholungen


    Für Deinen Turm wäre also die längste Seite interessant, die Auflösung Deiner kachelbaren Textur und die gewünschte TD.


    z.B. 20 Meter, 10.24 TD, 2048px Auflösung


    20 * 1024 / 2048 = 10


    In der UE4 solltest Du nun ein Tiling von 10 für das Material einstellen um die gewünschte TD von 10.24 zu erreichen.


    In der Praxis gibt es häufig die Schwierigkeit, dass die verwendeten Texturen nicht die realistische Größe repräsentieren (z.B. Steine zu klein/zu groß). Hier muss darauf geachtet werden, dass die erfasste echte Größe der Textur berücksichtigt wird und zusätzlich in die Formel einfließt.

    Um bei den Steinen für Deinen Turm zu bleiben: Es ist wichtig zu wissen wie viel Meter die Textur in der Realität repräsentieren, je nach Aufnahme von näher oder ferner können bei gleichbleibender Texturgröße unterschiedlich große Bereiche erfasst werden.

    Mesh Modularität ist absolut nachvollziehbar und auch richtig.

    Das Aufteilen eines Meshes in mehrere mit dem Ziel die Auflösung der einzelnen Segmente zu erhöhen ist mir neu und ich sehe darin keinen Vorteil (Ausnahme: ein Mesh, mehrere Materials).


    Ich sehe bei Objekten, die in sich selbst nicht modular gestaltet werden können oder eine Modularität keinen Zweck hat, nur die Möglichkeit Shader basierende Lösungen zu schaffen oder der Einsatz von mehreren UVs & Material IDs.


    Deinen Vorschlag sehe ich kritisch, es ist die offensichtlichste Lösung, kommt aber mit einigen z.T. gravierenden Nebeneffekten.


    Um beim Beispiel des geplanten Turms zu bleiben wäre erst mal wichtig zu wissen, ob eine modulare Bauweise angepeilt ist.

    Mit anderen Worten, benutzt Du den gleichen Turm einmal/mehrfach oder sind verschiedene Türme mit auswechselbaren Segmenten geplant.


    Aus den bisherigen Beiträgen stellt sich nur die Frage, wie das Problem der steigenden Auflösung durch steigende Mesh Oberflächen, in den Griff zu bekommen ist.


    Die Antwort darauf ist eine auf Shader basierende Lösung mit kachelbaren Texturen, eine Aufteilung des Meshes auf mehrere UVs/Material IDs oder ein UDIM Verfahren.

    Ich verstehe nicht, was und warum gebaked werden soll.


    Wenn es um die zusätzlichen Details geht wie Schmutz, Bewuchs etc. so sollte das ebenfalls im Shader stattfinden.

    Im Bezug auf das letzte Bild (Turm mit Mauern etc.), gehen wir davon aus, dass eine Texel Density von 10,24 (wie im verlinkten Beitrag) angestrebt ist.

    Willst Du nun Turm Fragmente von 4m² erstellen und jedes individuell texturieren?


    Ergänzung: Obige Angabe von 4m² basiert auf der Nutzung von 4k Texturen. Bei 2k Texturen verringert sich die maximale Größe der Segmente auf 2m². Dabei wird vorrausgesetzt, dass der UV Space 100% ausgenutzt werden kann.

    Bei einem entsprechend großen Mesh hätte man nicht nur eine große Anzahl Meshes, sondern auch für jedes Segment Texturen und Materials.