Mittwoch, 8. Februar 2012

Ein paar Infos zur Prim-/Mesh-Eigenschaft "Konvexe Hülle"

Primreduzierung am Anschauungsobjekt
Ich habe in den letzten Tagen auf verschiedenen deutschsprachigen Webseiten gelesen, dass doch einige Leute die primreduzierende Eigenschaft der konvexen Hülle im Baufenster noch nicht kennen. Deshalb schreibe ich mal über das, was mir zu diesem Thema bekannt ist.

Die "Konvexe Hülle" ist eine Eigenschaft, die man Prim-, Sculpty- und Mesh-Objekten im Baufenster zuweisen kann. Eingeführt wurde sie letztes Jahr im August, zusammen mit dem Mesh-Upload für das Second Life Main Grid. Beim Rezzen eines neu hochgeladenen Mesh ist standardmäßig immer die Konvexe Hülle aktiviert, um die Auswirkung auf das Land (Land Impact) möglichst gering zu halten.

Da dieser Artikel etwas länger wird, mache ich hier einen Break mit Link zur Fortsetzung:


Hier wird "Konvexe Hülle" eingestellt
Wird dagegen ein Prim neu gerezzt, ist immer die physikalische Form "Prim" voreingestellt. Durch Umstellen von Prims und Sculpties auf konvexe Hülle, werden diese vom Sim-Server wie ein Mesh berechnet und erhalten den gleichen Land Impact, den auch ein Mesh aufgrund seiner Serverkosten verursacht. Dies kann für Prims in einigen Fällen eine Reduzierung des Land Impact bedeuten, in anderen Fällen eine Steigerung (meist bei Sculpties).

Die konvexe Hülle weist technisch einem Prim, Mesh oder Sculpty, eine vereinfachte physische Oberfläche zu, die maximal 256 Knotenpunkte (Vertices) hat. In der inworld Umgebung wird diese Hülle als Kollisionsoberfläche ausgewertet. Ist für ein Objekt keine konvexe Hülle eingestellt, verwendet es als physische Oberfläche seine eigentliche Form mit allen Knotenpunkten und Polygonen, aus denen das Objekt erstellt wurde. Dies kann dann bei Meshes ein Vielfaches von 256 Vertices sein (maximal 65536).

Damit für ein Linkset der Land Impact unter "Konvexe Hülle" berechnet wird, reicht es, nur das Rootprim auf diese Eigenschaft zu stellen. Die Childprims können auf "Prim" oder auf "Keine" gesetzt werden. Letzteres spart weitere Physik-Kosten, aber die Prims verhalten sich dann wie Phantom-Prims. Sie haben also keine physikalisch Kollision mehr und Avatare fallen praktisch durch sie hindurch.

Kostenberechnung für Land Impact
Quelle: Latest Update on Mesh
Ein Nachteil der konvexen Hülle ist, dass sie in ihrer Form nicht immer dem sichtbaren Objekt entspricht. Gibt es Pfadschnitte, Torsionen, Löcher oder Verscherungen, ist die Oberfläche der konvexen Hülle meist größer, als die sichtbare Oberfläche dieser Objekte und ein Avatar (oder ein anderes Objekt) kollidiert bereits außerhalb der sichtbaren Oberfläche mit diesen Prims.

Damit man bei einem Linkset die konvexe Hülle aktivieren kann, braucht man einen meshfähigen Viewer. Zu finden ist die Einstellung im Baufenster in der Registerkarte "Eigenschaften" unter "Art der physischen Form". Entgegen anderslautender Meinungen, lassen sich mit Hilfe der konvexen Hülle bei reinen Prim-Linksets immer Landkosten einsparen, ganz egal ob die Form ein Würfel, ein Torus, eine Kugel oder irgendeine andere Form ist. Genauso ist es egal, ob die Prims Ausschnitte, Torsionen oder andere, optionale Formänderungen haben.

Oben: Anzahl Prims (körperlich)
Unten: Anzal Prims (Land Impact)
Tatsächlich negativ wirken sich aber die folgenden Konstellationen für die Berechnung der konvexen Hülle aus:
  • Prims und Sculpties im gleichen Linkset
  • Prims und Meshes im gleichen Linkset
  • Prims oder Meshes mit Skripten in einem Linkset

Das beste Vorgehen zum Reduzieren des Land Impact für reine Prim-Linksets, lässt sich nur durch Ausprobieren ermitteln. Bei kubischen Prims ist fast immer eine Einsparung von 50% möglich, auch wenn man einfach nur alle Prims zusammen auf Konvexe Hülle umstellt. Bei gemischten Primformen mit oder ohne Bearbeitung (Pfadschnitt, Torsion, usw.), ist es wichtig, wo im Linkset das Rootprim sitzt und dass möglichst viele Childprims unter "Art der physischen Form" auf "Prim" eingestellt werden. Wenn man keine Kollision benötigt, sollten Childprims auf "Keine" eingestellt werden, denn das spart bei gewissen Konstellationen weitere Landkosten.

Nach meiner Mammut-Einführung nun ein paar Beispiele, die den trockenen Text von oben besser veranschaulichen. Bei Klick auf die Bilder öffnet sich eine größere Version, so dass man die Primanzahl erkennen kann. Ich habe zur Info immer auch das zusätzliche Landkosten-Fenster geöffnet (siehe hier oben rechts). Dort wird oben die Anzahl der Primitives angezeigt. Das ist die Menge der tatsächlichen Prims im Linkset. Im unteren Drittel unter "Auswirkungen auf Land" ist dann der Wert "Ausgewählt" zu finden. Dieser zeigt die Anzahl von Prims an, die für das Land berechnet werden (Land Impact). Beide Werte sind oben im Bild rot unterstrichen.

Zunächst ein optimaler Fall. Alle 4 Prims im Linkset sind kubisch. Hier reicht es, einfach das gesamte Linkset auf "Konvexe Hülle" zu stellen. Die Ersparnis im Land Impact beträgt 2 Prims, also 50%.


Physische Form = "Prim" > Land Impact = 4
Physische Form = "Konvexe Hülle" > Land Impact = 2

Was oft zu besseren Ergebnissen führt, ist das Rootprim im Linkset zu ändern, wie das folgende Beispiel zeigt. Das Linkset hat 4 Prims mit Pfadschnitt, Aushöhlung, Torsion und ganz oben ist sogar ein Torus. Mit dem blauen Prim als Root (ganz unten) komme ich auf 49 Prims Land Impact (linkes Bild). Wechsle ich dagegen den Root auf das gelbe Prim, habe ich plötzlich nur noch 3 Prim Land Impact, also 25% Ersparnis (rechtes Bild). Setze ich zusätzlich noch alle Childprims auf die physische Form "Keine", entfällt noch ein weiteres Prim und ich erreiche trotz koplexerer Primformen 50% Ersparnis (unteres Bild).


Physische Form = "Konvexe Hülle" > Land Impact = 49
Rootprim gewechselt > Land Impact = 3

Childprims auf "Keine" > Land Impact = 2

Nun folgen mehr praktische Beispiele anhand von drei Freebie Häusern, die ich mir vom Marketplace habe zuschicken lassen. Zum Nachvollziehen hier die drei Häuser.
  1. House Residential Dorka - (29 Prims)
  2. Willow's Studio Dollarbie - (11 Prims)
  3. Skybox House 1.2 Nian Design with pool - (175 Prims)

Das "House Residential Dorka" hat 29 Prims. Stelle ich es einfach auf Konvexe Hülle, hat es nur noch 14 Prims, kann danach aber nicht mehr betreten werden.

Die Lösung ist jedoch ganz einfach. Alle Prims, die durch Aushöhlung einen begehbaren Raum erzeugen, müssen unter "Verknüpfte Teile bearbeiten" einzeln auf "Prim" zurückgestellt werden. Bei dem abgebildeten Haus sind das die Türdurchgänge und die beiden oberen verglasten Ecken. Auch die schräge Treppe habe ich auf Prim zurückgestellt. Und ich war ziemlich verblüfft, dass ich am Ende nur einen Prim mehr als Land Impact hatte, also 15 Prims zu Buche schlugen. Und das in einem jetzt vollwertig nutzbaren Haus. Sollten beim späteren Durchlaufen des Hauses noch Kollisionen mit anderen unsichtbaren Physik-Hüllen auftreten, einfach die Stelle in Ruhe ansehen und herausfinden, durch welches Prim dieser Ghost Shape erzeugt werden könnte und dieses dann auch auf "Prim" umstellen.


Normales Prim Haus > Land Impact = 29
"Konvexe Hülle" + Nachbearbeitung > Land Impact = 15

Hier noch ein verblüffendes Beispiel. Das ganz einfache "Willow's Studio Dollarbie" hat 11 Prims. Darin sind aber zwei recht komplexe Sculpty-Prims enthalten (die Fenster mit den Streben). Trotzdem ging der Land Impact einfach nur durch Umstellen des kompletten Hauses auf 7 runter. Und hier musste ich nichtmal nacharbeiten. Das Haus war voll begehbar bis in die letzte Ecke. :)


Normales Prim Haus > Land Impact = 11
"Konvexe Hülle" > Land Impact = 7

Mein letzter Test war dann ein harter Brocken. Ein gut ausgestattetes Design Haus, das per Rez-Faux Box aufgebaut wird. Bevor man das Haus auf Konvexe Hülle umstellt, sollte man es per Rez-Faux sichern (Save oder Freeze), da sonst in allen Prims noch Skripte enthalten sind. Es hat zu Beginn 175 Prims mit allem drum und dran. Ein kleiner Vorteil ist, dass das Haus nicht aus einem großen Linkset besteht, sondern aus mehreren kleineren Primgruppen (insgesamt 30 Linksets oder Prims). So kann man etwas besser rumprobieren. Die geskripteten Türen, sowie weitere Gimmicks mit Skripten, sind von vornherein nicht verlinkt. Diese sollte man auch nicht versuchen umzustellen. Die Treppen habe ich hier ebenfalls nicht auf Konvexe Hülle umgestellt. Als Ergebnis kam ich dann auf 134 Prims, was einer Einsparung von 'nur' 41 Prims entspricht. Andererseits, 41 Prims sind besser, als gar keine Einsparung.^^


Normales Prim Haus > Land Impact =175
"Konvexe Hülle" (Wände/Boden) > Land Impact =134

Für ein Freebie kann ich übrigens das zuletzt gezeigte Haus empfehlen. Es ist ansprechend gestaltet.

Insgesamt kann ich sagen, dass man mit etwas Rumprobieren eigentlich immer eine Einsparung von Prims auf das Land erreichen kann. Eine klare Regel ist für mich dabei nicht erkennbar, was wohl daran liegt, dass ich die eigentlichen Knotenpunkte und Polygone der einzelnen Objekte nicht kenne.

Bei meinen Tests hat sich aber recht schnell ein Gefühl dafür eingestellt, wie man die Einsparungen optimieren kann, oder wie man überhaupt eine Einsparung erreicht. Ich werde jetzt jedenfalls mein Land mal unter diesem Gesichtpunkt begutachten und dort wo es geht, ein paar Prims optimieren.

Weitere Informationen
>> LL-Wiki: Mesh physics
>> LL-Forum: Physical mesh, Prim, and Convex Hull ... How, when, why ?
>> Ciaran Laval: Using Convex Hull To Lower Land Impact

6 Kommentare:

  1. Ich baue auf einer Homestead Sim an einer Gor Rollenspielumgebung und bin froh über jedes Prim, das ich einsparen kann. Die Möglichkeiten der konvexen Hülle wäre also sehr interessant für mich. Nun hat mir ein erfahrener Simbauer davon abgeraten, da diese Funktion mehr Lag verursachen soll.
    Weisst du etwas darüber?

    AntwortenLöschen
  2. Also bisher habe ich noch nirgendwo auf Webseiten gelesen, dass diese Funktion Lag verursachen soll. Und ich lese ziemlich viele SL-bezogene Seiten.

    Rein von der Logik her, sollte kein Lag durch die konvexe Hülle entstehen. Eher sogar weniger. Diese Funktion stülpt ja über das Linkset ein vereinfachtes Meshgitter mit weniger Polygonen. Dies bedeutet, bei Kolissionsabfragen müssen weniger Werte ausgelesen werden (also z.B. wenn ein Avatar auf einem Prim läuft). Steht ein Linkset unter konvexer Hülle einfach nur in der Gegend rum und kollidiert weder mit Avataren, noch mit anderen Prims, dann ist die Belastung für den Sim-Server exakt die gleiche, als wenn das Linkset auf normale Prims eingestellt ist. Dies kannst du auch gut an dem "Erweitert"-Fenster sehen, wo im mittleren Bereich die Serverkosten angezeigt werden. Sie sind bei Prims und konvexer Hülle nahezu identisch. Demnach sollte die konvexe Hülle kein Server Lag verursachen.

    Viewer Lag scheidet eigentlich auch aus, da es für die Darstellung von Linksets egal ist, ob sie als Prim oder konvexe Hülle eingestellt sind. Auch hier sind die Anzeigekosten (Größe des Download Stream) identisch.

    AntwortenLöschen
  3. Wahhh, mir ist bewußt, das Dein - sehr hilfreicher - Beitrag zu "Konvexen Hüllen" jetzt 8 Jahre alt ist. Trotzdem ist es mir ein Bedürfnis Dir, Maddy, tausend Dank dafür zu sagen. Ich habe zu diesem Thema - bisher - kaum anderes und sicher nichts Besseres gefunden. DANKE!

    Soweit ich es sehe, ist diese Möglichkeit immer noch viel, viel, viel zu wenig bekannt.

    Ich bin gerade dabei in einem gekauften Schloss/Castle die Grundmauern von Prim in konkave Hüllen auszutauschen und dann wieder zu verlinken. Das funktioniert großartig. Ich denke, ich kann den LI von 127 auf weniger als die Hälfte reduzieren.

    Am liebsten würde ich alle Builder auf diesen/Deinen Beitrag hinweisen und sagen: Baut, verdammt noch mal anständig! ;-)

    Einzige Verbesserung in Deinem Beitrag (wobei ich hoffe, daß Du noch bloggst und andere es auch lesen): Ich habe lange suchen müssen, bis ich dieses sehr hilfreiche Fenster "Erweitert" bei den Konkaven Hüllen gefunden habe. Bis ich darauf gekommen bin, daß es aufploppt, wenn ich auf "mehr Infos" klicke, habe ich einige Zeit und Suche gebraucht. Das wäre ein Verbesserungs-Wunsch für Deinen Blog-Beitrag.

    Ansonsten: nochmal tausend Dank. Du hast mich heute SEHR glücklich gemacht und ich arbeite freudig weiter an der LI-Reduzierung.

    LG von Strandwind

    AntwortenLöschen
    Antworten
    1. Der Hinweis, dass "mehr Infos" das "Erweitert" Fenster öffnet, war auf dem Bild abgebildet, das hier im Beitrag nicht mehr angezeigt wurde. Ich habe es von einer anderen Quelle wieder eingefügt. Und dein Kommentar gibt ja nun allen weiteren Lesern auch noch den Hinweis.

      Löschen
  4. Ich schiebe noch nach: ich habe etwas Probleme mit der englischen Sprache. Deswegen bin ich für Deine deutschsprachige Erklärung sehr dankbar.

    Ich habe in den letzten Tagen einen kleinen Kurs bei "Builders Brewery" besucht und die großartige Dozentin Wolfslied hat die konvexen Hüllen verwendet. (Also: Kurse mit Wolfslied kann ich sehr empfehlen, da habe ich viel gelernt :-) und die kümmert sich wirklich um jeden einzelnen Zuhörer - auch wenn es in englisch etwas mühsam ist.)

    Und aufgrund dieses Kurses habe ich in SL Info (nicht sehr ergiebig, leider) und im Netz nach näheren (deutschen) Informationen zu "konvexen Hüllen" gesucht.

    Ich wiederhole mich: DANKE, daß Du, Maddy, mich hier so gut informieren konntest.

    Ich würde mir wünschen, daß diese Info sich weiter verbreitet. Darf ich auf diesen Beitrag verlinken? (In SL-Info?) Oder magst Du da selber noch mal darauf hinweisen?

    (Sorry,) Berauschte Grüße von Strandwind

    AntwortenLöschen
    Antworten
    1. Hallo Strandwind, es freut mich, dass so ein alter Beitrag noch für jemanden interessant ist. Du kannst meine Blogposts verlinken, wohin du möchtest. Ich denke aber, dass dieses Thema die meisten kennen. Sie nutzen es nur nicht. Genauso wie llSetKeyframedMotion, Prims in Mesh umwandeln oder Pathfinding.

      Dank deines Kommentars habe ich das Bild ersetzt, das wegen eines defekten Links nicht mehr angezeigt wurde. :)

      Löschen