LoD-Entfernung bei Sub-buildings. Kennt sich jemand mit ModTools aus?

  • Hallo zusammen,

    ich brauche Rat von jemandem, der sich ein bisschen mit ModTools, bzw. Programmiersprache auskennt. Habe ein Bürogebäude gemacht, das eine Dachfläche als Sub-building (Zusatzgebäude) hat. Um Details bei der LoD Version (vereinfachte Version wenn man das Gebäude von weiter weg anschaut) zu sparen, beinhaltet die LoD Version des Hauptgebäudes das Dach mit. Es gibt also zwei Gebäude in einem: Das Dach, ohne LoD und das Hauptgebäude mit LoD. Nun ist aber das Poblem, dass das Dach schneller in seine LoD-Version umschaltet, als das Hauptgebäude, was auf einer bestimmten Entfernung ein Loch im Dach erscheinen lässt.


    Ich weiß, dass es mit der Mod ModTools möglich ist die LoD-Entfernung zu vergrößern, jedoch weiß ich nicht, ob das auch bei Sub-buildings geht. Die Informationen darüber stehen übrigens auf "cslmodding.info".


    Wenn jemand weiß, ob es möglich ist diese LoD-distance bei Sub-buildings zu verändern, und wenn ja mit welchem Quellcode, wäre das unendlich hilfreich. Ich verstehe nämlich nix vom programmieren. :D

    Oder vielleicht kennt ja jemand jemanden, der sich damit auskennt...


    Danke schonmal im Vorraus, ich hoffe das Problem war einigermaßen verständlich geschildert.

  • Ich kenne mich da leider zu wenig aus, um konkret helfen zu können. Sorry.


    Kann ich ggf. kritisch fragen ob es eine gute Idee war/ist, die LOD faktisch einem anderen Asset zuzuordnen? Wo soll denn bei der von Dir angedachten Lösung der effektive Vorteil liegen? Aber wahrscheinlich zeigen schon meine Fragen, wie wenig ich mich auskenne... :) Sorry.

  • Natürlich darfst Du fragen, ist immerhin nie eine schlechte Idee hinterfragt zu werden.


    Natürlich wäre es auch möglich einfach jedem der beiden Gebäude sein eigenes LoD zu geben. Aber da das Dach sehr in das Gebäude integriert ist würde das in einer starken Vergrößerung des LoDs resultieren. Richtlinie sind da ja eigentlich run 100 tris, ich denke es würden um die 50 dazukommen, wenn ich am Hauptgebäude die Seitenelemente am Dach hinzufügen wollte und am Dach selber die exakte Form nachstellen müsste. Die 100 tris habe ich glaube ich eh schon um das dreifache überschritten, was aber durch die Größe des Gebäudes meiner Meinung nach geradde noch ok ist.


    Hier mal ein Screenshot zur besseren Darstellung. Das dunkelbraune rindenmulchähnliche auf dem Dach ist das Sub-building. Man sieht, das es nicht die ganze Dachfläche mit einbindet und eine recht komplizierte Form hat.




    Solange die LoD-Entfernung dieselbe ist, sehe ich diesen Weg als deutlich ressourcensparender. Sollte ich keinen Weg finden das umzusetzen, muss ich wohl auf die andere Möglichkeit zurückgreifen.

  • Ein spannender Komplex, an dem Du arbeitest. Gefällt mir. Freue mich auf die Fertigstellung! Bist Du Dir sicher, dass die technische Infrastruktur auf dem Dach maßstäblich passt?


    Aber zum eigentlichen Thema:

    (a) Es heisst Richtlinie. Somit ist es formal-juristisch ein Orientierungswert und keine zwingende Grenze. Es kommt ja auch darauf an, was genau man baut. Und Dein Komplex entspricht faktisch drei einzelnen Gebäuden...


    (b) Magst Du auch einmal das LOD-Modell zeigen?

    Einmal editiert, zuletzt von Yosh ()

  • Freut mich, dass er dir gefällt. Ist auch qusi fertig, ich muss nur noch dieses eine Problem lösen....


    Zum Maßstab der Infrastruktur: Die Lüftungsanlagen auf dem Dach sind tatsächlich sehr groß und auffällig, und damit auch vom Boden aus zu sehen.


    Hier einmal in echt:


    Zum Thema Richtlinie: Es wäre auch nicht die Welt, wenn ich das LoD noch detailierter machen müsste. Aber ich denke es ist am besten den Wert so niedrig wie möglich zu halten, damit auch Menschen mit einem nicht so guten PC das Gebäude nutzen können.


    Und zum LoD Modell:



    Unten rechts ist das Hauptgebäude mit der detaillierten Version des Dachs rechts darüber. Die LoD version des Hauptgebäudes beinhaltet das Dach, wärend das Dach-LoD nur aus einem winzigen, kaum erkennbaren Dreieck besteht.

  • "Zum Maßstab der Infrastruktur" Okay. :)


    Zur LOD. Wie gesagt, gibt es Modder die ihre Programme, deren Grenzen und Möglichkeiten etc. deutlich besser kennen und beherrschen als ich. Dennoch würde ich mich zu einer ggf. zwei Empfehlungen hinreißen lassen:


    1. Zoomt man primär nach oben heraus. Wenngleich die Dachaufbauten schon prägnant sind würde ich dazu tendieren, diese im LOD-Modell komplett plan zu machen. Als Kompromiss lässt Du die Dachaufbauten ggf. mehr oder weniger so, wie sie bereits jetzt im LOD-Modell sind.


    2. "auf einer bestimmten Entfernung ein Loch im Dach erscheinen lässt" Diese Problem entsteht m.E. vor dem Hintergrund, dass Du die diskutierte "Richtlinie" wie ein strenges Gesetz o.ä. betrachtest. Löse Dich davon und ordne jedem Gebäudeteil sein LOD-Modell zu. Dann hast Du das Problem nicht.


    Anmerkung; Du bemühst Dich bei diesem - wie auch dem einen oder anderen Asset zuvor - um eine detaillierte, individuelle, hochwertige Gestaltung. Ohne es m.E. zu übertreiben o.ä. Je hochwertiger das eigentliche Asset ist desto größer fällt dann manchmal auch das LOD-Modell aus. Meine Meinung.

  • Okay, danke für deine Ratschläge!


    Ich werde nochmal weiterschauen, vielleicht bekomme ich das Script ja noch.


    Wenn nicht werde ich mich an deinen Rat halten und einfach jedem Teilgebäude seine eigene LoD-Version geben.

  • Wenn ich Deine Beiträge noch einmal in Ruhe lese bekomme ich das Gefühl, dass Du bis dato noch gar keinen Scripttext haben könntest cbudd ... Ich benutze immer diesen. Frage mich nicht, was der alles kann und was dieser beinhaltet oder nicht... Ggf. probierst Du es einfach einmal aus.



    "

    // Building Sub Mesh

    var subMesh = 0; // sub mesh id, order as in ui, starting from 0

    var shader = Shader.Find("Custom/Vehicles/Vehicle/Rotors");

    var asset = ToolsModifierControl.toolController.m_editPrefabInfo as BuildingInfo;

    asset.m_subMeshes[subMesh].m_subInfo.m_material.shader = shader;

    asset.m_subMeshes[subMesh].m_subInfo.m_lodMaterial.shader = shader;

    asset.m_subMeshes[subMesh].m_subInfo.m_lodMesh = null;

    asset.m_subMeshes[subMesh].m_subInfo.m_lodMaterial = null;

    asset.m_subMeshes[subMesh].m_subInfo.m_lodMaterialCombined = null;

    asset.m_subMeshes[subMesh].m_subInfo.m_lodObject = null;

    "

  • Ich habe dieses Script tatsächlich ebenfalls für das Bürogebäude verwendet. Und zwar für die transparenten Galsflächen am Treppenhaus. Kann man auf dem einen Screenshot oben ein bisschen erkennen. Das Script sorg dafür, dass an einem ausgewählten Sub-building ("var subMesh =0") ein Shader angewandt wird. In diesem Fall der Rotors Shader, der für die Transparenz sorgt ("var shader = shader.Find("Custom/Vehicles/Vehicle/Rotors")") Weiter habe ich auch keine Ahnung was passiert...


    Es gibt auch ein Script für die LoD-Entfernung, das jedoch nur für das Hauptgebäude funktioniert und nicht für Sub-buildings.

  • Gute Neuigkeiten! Ich habe das Problem gelöst.


    Und zwar ist alles was das normale Script fürs Ändern der LoD-Entfernung macht, ein unsichtbares großes tris unter dem Gebäude einzufügen. Das habe ich einfach manuell gemacht und konnte so die LoD-Entfernung angleichen. Manchmal geht es eben auch auf die pragmatische, manuelle Weise ;)

  • Gute Neuigkeiten!


    Ich habe das "FLEX Modern Office" heute morgen hochgeladen und freigeschaltet. Bin gespannt ob es einen Platz bei dir in der Stadt findet.

  • Cool. Vielen Dank für die Information :):ms_thumbs_up:!


    Heute und wohl auch morgen bin ich ein wenig busy. Aber spätestens im zweiten Teil der Woche schaue ich mir das in Ruhe an. Ich halte Dich auf dem Laufenden cbudd!

  • Vielen Dank für Dein "Flex Modern Office". Das gefällt mir richtig gut cbudd !


    Ein sehr modernes, individuelles, ausgefallenes Gebäude. Super umgesetzt. Der hohe Detailgrad wird u.a. bei der technischen Infrastruktur auf dem Dach sowie der Außenerschließung deutlich. Dennoch hast Du auch den Tris-Wert komplett im Griff.





    Sehr beeindruckend, dass Du auch die innere Erschließung ausgearbeitet hast. Als ich dies sah dachte ich mir gleich, dass ein sehr guter Assetbauer diese bestimmt auch nächtlich illuminieren wird. Und siehe da: die hohe Erwartung komplett erfüllt.




    Ganz stark cbudd! :search::applaus::daumenhoch64:


    Ich mag das Genre (moderne überwiegend deutsche Architektur), in dem Du aktiv bist sehr. Ich hoffe, da kommt doch einiges!

  • Danke Yosh für dein reichliches Lob und die gute Umsetzung in deiner Stadt! Screenshots der eigenen Gebäude "in Aktion" zu bekommen ist immer eine große Motivation.


    Meine nächsten Projekte werden eine Mischung aus Props und französchen Gebäuden, die größtenteils schon fertig sind. Es gibt aber auch noch ein paar moderne deutsche Gebäude auf meiner Checkiste. :)

  • Eine Frage, warum die Dachpartie als SubBuilding?

    MainboardMSI X99A XPower AC
    CPUIntel Core I7-5930K 3,70 GHz (6/12)
    ArbeitsspeicherG-Skill F4-2400C15Q2-64GRK (nur 32 GByte in Verwendung)
    GrafikkarteMSI GForce GTX-970 Gaming 4G
    BetriebssystemWindows 10 Pro
    ProgrammeBlender 3D 4.0, GIMP 2.10, Word & Excel
    SpieleCities-Skylines Deluxe-Edition, Cities Skylines 2 Ultimate-Edition, Planet Zoo, Planet Coaster, Per Aspera, Surviving Mars, Infraspace, Transport Fever 2, Portal 1 & 2
  • Ich habe dieses Script tatsächlich ebenfalls für das Bürogebäude verwendet. Und zwar für die transparenten Galsflächen am Treppenhaus. Kann man auf dem einen Screenshot oben ein bisschen erkennen. Das Script sorg dafür, dass an einem ausgewählten Sub-building ("var subMesh =0") ein Shader angewandt wird. In diesem Fall der Rotors Shader, der für die Transparenz sorgt ("var shader = shader.Find("Custom/Vehicles/Vehicle/Rotors")") Weiter habe ich auch keine Ahnung was passiert...


    Es gibt auch ein Script für die LoD-Entfernung, das jedoch nur für das Hauptgebäude funktioniert und nicht für Sub-buildings.

    Das genannte Skript ist für Submeshes gedacht, nicht für Subbuildings. Das geht ja auch gar nicht, weil das Subbuilding ja schon eine eigene crp-file ist, die man nur ändern kann, wenn man sie selber im Editor öffnet.

    Dieses Skript ist der Vollständigkeit halber für Gebäude (buildings) - also für den Rotors-Shader, nicht das LOD.


    var shader = Shader.Find("Custom/Vehicles/Vehicle/Rotors");

    var asset = ToolsModifierControl.toolController.m_editPrefabInfo as BuildingInfo;

    if(asset.m_material != null) asset.m_material.shader = shader;

    asset.m_lodMesh = null; asset.m_lodMaterial = null;

    asset.m_lodMaterialCombined = null; asset.m_lodObject = null;


    und dieses für props:

    var shader = Shader.Find("Custom/Vehicles/Vehicle/Rotors");

    var asset = ToolsModifierControl.toolController.m_editPrefabInfo as PropInfo;

    if(asset.m_material != null) asset.m_material.shader = shader;

    asset.m_lodMesh = null; asset.m_lodMaterial = null;

    asset.m_lodMaterialCombined = null; asset.m_lodObject = null;



    Aber ein tolles Gebäude! Persönlich fände ich es ohne Dachpartie besser - stattdessen ein schönes glattes Dach ohne die riesige Lüftungsanlage - unabhängig davon, dass sie in Wirklichkeit da ist. Vom Bürgersteig aus sieht man sie ja auch nicht. Im Spiel leider die ganze Zeit, da wir uns da ja in der Vogelperspektive befinden.