Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Mesh Import in Open Simulator
#1
Mesh Import in Opensimulator


(beschrieben für Firestorm Version 4.6.9 – 4.7.7). Als Grundlage dient ein in Blender erstelltes Objekt.
 
Allgemeines: Dieses Dokument beruht auf eigenen Tests. Es erhebt weder den Anspruch auf Vollständigkeit sowie Unfehlbarkeit. Ich habe es dennoch veröffentlicht, da derartige Infos nur schwer erhältlich sind, und jeder der schon mal Mesh hochgeladen hat, die Komplexität der Materie zu spüren bekam.
 
 
Allgemeines zu Mesh und 3D Speicherformaten
 
3-D Formate entspringen überwiegend proprietären Produkten führender Hersteller von  3D-Software.
 
Funktionsumfang und Komplexität jener Softwareprodukte ist jedoch stark unterschiedlich.
Entsprechend ihrer Herkunft und Entstehungszeitraum enthalten sie jeweils nur die Funktionen die jene Softwareprodukte auch bieten.
 
Auch ist nicht abgegrenzt was tatsächlich zum Umfang einer 3D Bearbeitung gehört.

 
Folgende Funktionsbereiche sind mehr oder weniger in 3D Software vorhanden:
 
- Erstellung von Koordinaten in Fläche oder Raum
- Erstellung von Gittermodellen (Meshes) = Verbinden der Koordinaten
- Füllen der Gitter mit Flächen (Surfaces, Faces). Diese können aus Dreiecken, Vierecken oder Polygonen bestehen
- Texturien von Flächen. Diese kann in beliebiger Komplexität mittels Texturen, Bemalen oder belegen mit Materialien erfolgen.
- Erstellen von Skelettmodellen und Beweglichkeitsdefinitionen (Bones)
- Animieren von Skelettmodellen anhand Zeitachsenmodellen (Timeline)
- Anpassen von Meshes an Bewegungsachsen, Drehpunkte, Skelettmodelle etc. (Bones, Rigged Mesh,..)
- Partikelsysteme (Haare, Wasser, etc. )
- Ausleuchtung von Szenen
- Animation von Szenen anhand Timeline
….
 

Dieser Funktionsumfang interessiert uns in der Folge nicht, da wir uns nur auf echtzeitfähige 3D Grafik beschränken wollen, die sich n Open Simulator importieren lässt.
 
Er ist aber für viele Problematik im Umgang mit 3D Dateien verantwortlich.
Viele Formate enthalten Teile die wir nicht benötigen,
 
Umgekehrt fehlen in manchen Formaten für uns wichtige Teile, die wir benötigen, oder sind in für uns unbrauchbarer Weise enthalten.
 
Hier eine beschränkte Auswahl von 3D Dateiformaten die uns häufig begegnen:
 
.MAX  Neues Format der Firma Autodesk. Profisoftware, inkompatibel zu allen anderen Softwaretiteln. In verschiedenen inkompatiblen Versionen verbreitet. Mächtigstes Format das auch extrem große Meshes beherrscht. Keine kostenlose Export oder Konvertiermöglichkeit in freie Formate als verfügbar bekannt. Software selbst ist hoch komplex und schwer zu bedienen. Lizenzmodelle verhindern Hobby Anwendung. Das .dae Exportmodul der Software konnte im Test nicht überzeugen. Es stürzte häufig ab. Exporte waren oft korrupt und nicht import fähig.
Da das Format in Firmen oft zur Entwicklung eingesetzt wird, finden sich viele hochwertige Modelle aus Firmenprodukt Katalogen im Internet zum freien Download.
 
.3DS  Ursprünglich altes Format von 3DS-MAX der Firma Autodesk. Weit verbreitet, auch in vielen anderen Software Titeln als Import und Export Format vorhanden. Mittlerer Komplexität. Häufige Probleme beim Import in Blender wenn Skalierung nicht stimmt, oder sich Bezugspunkte durch die Konvertierung verändern. Sehr viel freies (meist älteres, oder aus max konvertiertes) OpenSource Material im Netz ist in diesem Format verfügbar.
 
.OBJ  Eignung für weniger Komplexe Mesh Größen, aber mehr als ausreichend für Simulator Importe. Sehr gut konvertierbares Format zum Import in Blender. OBJ Dateien eignen sich auch sehr gut zur Ausgabe Konvertierung in .dae.  Wenn nicht .dae oder .blend direkt verfügbar sind, dann ist .OBJ das Vorzugsformat. OBJ Import und Export Module hat jede brauchbare 3D Software.
 
.LWO  Format von Lightwave. Wenig verbreitet in Opensimulator Kreisen. Import meist unproblematisch. Import und Export Module sind in andern Softwaretiteln gelegentlich vorhanden.
 
.BLEND Natives Format von Blender, ähnlich .OBJ. Vorzugsformat zum Abspeichern von Archiven für Opensimulator. Format wird aber nur von Blender verwendet. Import und Exportmodule in andern Titeln sind mir nicht bekannt.
 
.DAE Standardisiertes freies Format. Nur Teile des Funktionsumfanges werden vom Simulator unterstützt. Daher funktionieren Uploads im Viewer manchmal nicht. Fazit: es muss in einem bestimmten .dae Derivat abgespeichert werden damit der Import in den Simulator klappt.
 
 
 
Grundlagen zu importfähigen .dae Meshes:
 
das im Simulator zu importierende Mesh muss im .dae Format vorliegen.
 
Da der Begriff Mesh in verschiedenen Kontext in Verwendung ist, lege ich für diesen Artikel folgende Bedeutung zum Verständnis fest: Ich halte mich an die Verwendung des Begriffs in Blender.

Das bedeutet folgendes: Ein Meshobjekt ist die kleinste in Blender unabhängig zu bearbeitende Einheit. Der gesamte Inhalt einer DAE Datei kann aus mehreren gleichzeitig zu ladenden Meshobjekten bestehen. Jedes Meshobjekt wird beim Import in Opensimulator zu einem eigenen (verknüpften) Prim gewandelt.
 
 
Geltende Einchränkungen innerhalb des .dae Formates bei Import in OpenSimulator:
 
     Das zu importierende Mesh darf nur aus Dreiecken bestehen ( Also beim Export in . dae die Umwandlung alles Flächen (Faces) von N-Poligonen und Vierecken in Dreiecken anwählen)
 
     Die Anzahl der Dreiecke sollte möglichst unter 30000 liegen. Höhere Dreieckzahl kann zu zerstörten Flächen führen. Diese erkennt man an weissen untexturierten Dreiecken innerhalb texturierter Flächen.
Abhilfe: Nur vor dem Export möglich durch Reduktion der Auflösung oder Aufteilung des Meshes in mehrere separate Importschritte.
Ab so ca. 60000 Dreiecken geht es meist schief, und der Viewer hängt sich nach langer Rechenzeit auf. (Die Zahlen stellen nur Richtwerte dar!)

 
     Skalierung und Ursprungspunkt: Je nach Erstellung werden verschiedene Masstäbe für das Gitternetz verwendet: mm, cm, m oder aussereuropäische Massysteme.
Die Viewer erwarten Meshes ungefähr in der benötigten Größenordnung, die ein importiertes Mesh zwischen 0.01 und 256 Metern ergeben.
Die Größe ergibt sich aus Meshgröße * Erstellungs Massstab * Viewer Skalierung.
Als Fallstrick kann sich auch ein weit entfernter Mesh Mittelpunkt (=Drehpunkt) erweisen, da nicht die Kantenlänge sondern die Verteilung der Punkte im Raum ausschlaggebend ist, und der MeshUrsprung zählt da als Punkt dazu.

 
     Skalieren geht nur zwischen 0,01 und 100 gut. Ausserhalb dieses Bereichs stürzt der Viewer meist ab.
 
     Das Ergebnis der Skalierung darf folgende OberGrenzen nicht überschreiten:
     ◦     Kantenlänge der Sim
     ◦     in Simulator (Region .ini Datei) eingestellte maximale Meshgröße/Primgröße (meist 64, 128m, selten 256m)
     ◦     in Simulator (Region .ini Datei)  eingestellte maximale Meshgröße/Primgröße für physikalische Objekte, falls das Mesh per Physik mobil sein soll (meist 32m oder 64m, selten 128m).
     ◦     TIP: Keine zu großflächigen Meshes am Stück bauen (z.Bsp: gesamte Simfläche). Wenn möglich teilen. Hintergrund: Die Berechnung der darzustellenden Objekte im Viewer erfolgt Abstands Abhängig. Ist das Mesh zu groß muss der Viewer mehr laden als für die Anzeige notwendig wäre.
 
     ein Import darf mehrere (sub) Meshes enthalten, die wiederum mehrere verschiedene Oberflächen enthalten. Jedoch sollte man folgendes bedenken:
     ◦     Je Mesh wird 1 Prim berechnet. Je Mesh wird ein unabhängiges Element (Verknüpft wenn es mehrere Meshes sind) hochgeladen.
        Jedes dieser Elemente kann im Simulator unabhängig verändert werden. Vernünftige Anzahl wird ca. 20 nicht überschreiten

     ◦     Je Mesh und Oberfläche ist genau eine Textur erlaubt. Ab ca. 6-8 Texturen gibt es Import Fehler.
        Der Zugriff auf importierte Oberflächen ist analog zu den Flächen eines Primwürfels.
        Jede Fläche kann eigene Textur, Ausrichtung, Skalierung, NormalMap, Glowmap, Transparenzwert, Färbung und Leuchten haben.
        Ansonsten ist die Oberfläche nicht separat editierbar. Die Anwahl erfolgt über Bearbeiten Menü – Fläche auswählen im Viewer.
        Die Oberflächen Nutzung reduziert die Primzahl, und die nachträgliche Editierbarkeit.
        Sie hat KEINE Auswirkung auf die Simulator und Serverlast!
        Für Fahrzeuge ist die 1Prim Lösung besser, da es nicht zum Verlust der Zuordnung durch Aufbruch des Verbundes kommen kann.
        Nachteilig wirkt sich der Verlust der Objekt Teilbarkeit auf die Client Performance aus,
        wenn einige Meshes nicht wie sonst auf Phantom gesetzt  werden können, und unsinnigerweise Physik dafür gerechnet wird.
        Dazu aber später im Kapitel Physik mehr Details , und bessere Lösungen

    ◦     TIP: UNBEDINGT die Blend Datei mit getrennten Meshes separat abspeichern um in Blender die Editierbarkeit des Projektes sicherzustellen.
       Auch hat es sich bewährt zunächst die Entwürfe nicht „verbunden“ zu einem Mesh zu importieren.
       Erst wenn alles passt eine Kopie der Blend datei zur Verknüpfung der Meshes erstellen, diese Verbinden, und als 1Prim dae exportieren.

 
Fazit: Glück ist wenn es funktioniert, nicht abbricht, und sogar noch das erhoffte Ergebnis rauskommt.
 
 

Grundlagen zu importfähigen Texturen für .dae Meshes:
 

Texturen für Meshes können im 24bit oder 32Bit Farbtiefe als PNG, Tiff oder JPEG vorliegen.
Ist vorgesehen ein Mesh mit der Bodentextur zur Deckung zu bringen (Beispiel Mesh Schneewehe auf Schnee Simboden),
so sollten nur 24Bit Texturen zur Anwendung kommen da es sonst sichtbare Farbunterschiede gibt.
Andere Formate habe auch andere Farbräume!


 
Vorzuziehen ist PNG weil es keine Datenreduktion enthält, und mit Transparenz Kanälen umgehen kann.
Tiff kann noch zusätzlich Tiefen Informationen mitführen, jedoch ist die Anwendbarkeit/Steuerbarkeit im Simulator kritisch.
Besser externe PNG Dateien mit Tiefeninfo (NormalMap) und Glanz (Glow) verwenden.
JPEG verschwendet sinnlos Textur Schärfe durch mehrfach Datenreduktion.
Die Texturen werden intern eh wieder (in andern Codec!) komprimiert abgespeichert. JPEG ist also die schlechteste Wahl.
Da Windows Rechner standardmäßig Tiffs nicht anzeigen, ist der Umgang damit unerfreulich.

 
Die Auflösung der Texturen ist aktuell auf 1024x1024 beschränkt.
Es gilt der Grundsatz: so viel Auflösung wie nötig – aber sinnlose Speicherverwendung vermeiden.
Für mich hat es sich bewährt im Vorfeld zu überlegen wie groß die zu texturierende Fläche auf dem Monitor später dargestellt werden wird, davon die Monitor Pixel des Ausschnitts grob zu berechnen, dann durch die Anzahl der Textur Wiederholungen zu teilen. So erhält man ein Richtmaß für die benötigte Textur Auflösung. Gut ist es dann diese Textur in dieser – und einer höheren Auflösung hochzuladen, und zu testen ob der Unterschied sichtbar ist.
 

Dabei soll die Summe der gesamten Textur Last des Sichtradius nicht den Grafikspeicher der ClientPCs übersteigt.
Ich setzte mindestens 1GB dedizierten Grafikspeicher bei OpenSim geeigneten einfachen Rechnern voraus.
Wer diese Grafikspeicher nicht hat (Intel!) der wird eh an anderer Stelle mit Ruckelgrafik scheitern.


Aus Performance Gründen der Grafikkarten Speicherverwaltung soll eine 2^n Kantenlänge gewählt werden. Vorzugsgrößen sind hiermit: 1024, 768, 512, 384, 256, 192, 128, 96, 64, 32.

Wobei X und Y unterschiedlich sein dürfen. Es hat sich in der Regel bewährt die Textur mit gleicher DPI zu skalieren und das Länge/Breite Verhältnis zu bewahren.

Bei manchen Importen skaliert der Viewer automatisch auf 256 / 512 oder 1024, das sollte durch gute Vorgabe vermieden werden, da die Skalierung durch den Simulator schlechtere Ergebnisse bringt.
 
Exporte von texturierten Mesh aus andern 3D Programmen, die diese Regeln nicht einhalten werden nicht texturiert geladen, oder führen zu Fehlern.
 
 



Nach all der Theorie nun zum Schrittweisen Import von Mesh 
(in OpenSimulator mittels Firestorm)
 
 
Unsere Fallstudie setzt ein einfaches Objekt aus 2 Elementen voraus.
 
In Blender waren dies vor dem Export folgendermassen dargstellt:
 
- Die Triangel Rakete und Schweif beschreiben je ein Objekt.
     Dabei ist das Objekt Schweif von dem Objekt Cylinder in der Positionierung abhängig.
     Manipuliert man Rakete im 3D Raum, dann gilt das für Schweif mit.
- die Triangel Cylinder und Cylinder.002 sind die eigentlichen Meshes
- die runden BMW Kreise stellen zugeordnete Materials dar
- die Bild Symbole stellen dem Materal zugeordnete Texturen da
 

   
 
 
Wichtig ist die Selektions Reihenfolge der Objekte Schweif und Rakete vor dem .dae Export.
Sie legt fest welches MeshObjekt das root Prim wird. Dies hat nach dem Import im Simulator Auswirkungen, beispielsweise für den gemeinsamen Dreh- und Schwerpunkt.


Beide Objekte wäre auch im Simulator gleichermaßen verbunden wenn sie nicht in der Baumstruktur in der Hierarchie stünden.
Die Baumstruktur hat also nur in Blender für die Bearbeitung Auswirkung.
Vorsicht: Mehr als 2 verschachtelte Triangel Ebenen führen zu einem Import Fehler! Liegt eine derartige Blender Struktur vor, so muss die zunächst umgebaut werden.
 
 
Erklärung der Struktur im Detail:
 
Element1 (Raketen) vereint 3 Blender Materials (Zuendkammer, Spitze, Brennkammer), wovon nur 2 Texturen tragen.
 
Die 3 Materials in Cylinder sind durch die vorherige Vereinigung („join“) von 3 Meshes mit unterschiedlichen Material entstanden.
 
Merke: Bei Join Vereinigung von Meshes entstehen soviele Materials, wie vorher unterschiedliche Materials vorhanden waren. Die Anzahl der Meshes hingegen spielt keine Rolle. Nachträgliche Texturierung im Simulator von Objekten mit Materials, aber ohne Textur scheitert in der Regel wegen Fehlpositionierung.
 
Nach dem Import im Simulator wird daraus ein 1 Prim Objekt mit 3 Oberflächen „Faces“, wovon 2 texturiert sind, und eines nur gefärbt.
 
Daran angehängt ist ein weiteres Element2 (Schweif) bestehend aus einem einzelnen Mesh mit einem einzelnen texturierten Material. Nach dem Import im Simulator wird daraus ein 1 Prim Objekt mit 1 texturierten Oberfläche „Face“. Dies ist der Normalfall wenn nicht Prim Optimiert wie bei Element 1 gearbeitet wird.
 
Details zum Export erfolgen später in der Export Lektion zu Blender. Hier nur die Anmerkung, das die .dae mit der Option Texture Export erzeugt wurde. Die Texturen werden dabei im gleichen Verzeichnis wie die .dae zusätzlich abgelegt. Beim Import müssen diese auch zusammen im gleichen Verzeichnis liegen.
 
 
Import in Firestorm:
 
 
Das Mesh Import Fenster wird über „Bauen – Hochladen - Modell“ gestartet. Nach Auswahl der Demodatei: RaketenV01.dae erscheint dieses Fenster:
 
Das Fenster ist in 2 Blöcke unterteilt:
 
Rechts das Vorschau Fenster das beim Suchen nach den richtigen Parametern unterstützen soll, und links die 3 Reiter der Parameter Eingabe.
 

   

 
Zunächst sehen wir uns das Vorschau Fenster an:
 
Im Vorschaufenster sind durch Scrolen und Drehen manchmal schon fehlerhafte Exporte zu erkennen.
Außerdem kann die Wirkung der Dreiecksreduktion grob begutachtet werden. Dazu später mehr.
 
 
Bedienung:
 
Mit Mausklick in den Bildbereich lässt sich das Bild per Mausrad rein/raus Zoomen.
Ebenso wirken Mausbewegungen Vorwärts / Rückwärts mit gedrückter linker Taste.
Bewegungen Links/Rechts seitwärts mit gedrückter Taste drehen das Objekt.
 
Mittels der Checkboxen „Texturen, Kanten und Physik“ kann das zu importierende Objekt begutachtet werden.
Physik und Vorschaudehnung gehen dabei erst nachdem unter dem Reiter Physik „Analysieren“ gewählt wurde.
Die Vorschaudehnung zerlegt Physikflächen als Explosionsmodell, um die Kollisionsflächen des Objektes anzuzeigen.
In Opensimulator ist aus Lizenzgründen nicht die Funktionalität der SL Havoc Physik hier enthalten.
Daher arbeitet der Mesh Physik Import nicht zuverlässig. Zu Behelf und Optimierung später.
 
Skingewichte und Gelenke gehen nur wenn entsprechende Daten in der .dae Datei enthalten sind.
Wer in der Liga spielt, braucht meine Erläuterung hier nicht mehr.

     
 
 
Wichtigste Schaltfläche des Vorschau Bereichs ist die Auswahl „Hoch, Mittel, Niedrig, Niedrigst“.
Damit wird die Ansicht auf eine der 4 erzeugten Mesh Auflösungen umgestellt.
 
Dazu muss man wissen das der Simulator, zur Reduktion von Client Aufwand, 4 verschiedene Meshes für verschiedene Betrachtungsabstände erzeugt.
 
Dabei entspricht Hoch der detaillierten Nahbetrachtung, Mittel wird für einen etwas weiteren Betachtungsabstand gewählt, usw.
Niedrigst ist dann der am weitesten weg liegende Abstand, aus dem das Objekt noch dargestellt wird.
Diese Weite ist im Simulator in den Grafikdetails einstellbar.
 
Bei Umschalten dieser Schaltfläche sieht man die Darstellungsfehler bei entfernter Betrachtung.
Die Einstellung der Fehlerrate erfolgt links in gleichnamiger Schaltfläche, die ich anschließend gleich erkläre.

Wichtig hier: immer die Ansicht einstellen, die links gerade bearbeitet wird.
 
 
 
Der Einstellungs- Bereich:
 

   
 
Dies sind die Startwerte der angewählten Importdatei.
 
Mesh Auflösung „Hoch“:

Unter „HOCH“ sieht man die Anzahl der tatsächlich in der Datei vorhandenen Dreiecke, und der dazugehörigen Scheitelpunkte zur Normalen Berechnung. Die Zahl der Dreiecke unter hoch ist also nicht veränderbar. Die Ansicht entspricht einer Nahbetrachtung in Makro Modus durch den Avatar.
 
Nun kommt die Schaltfläche „Normalen Generieren“ ins Spiel. Sie Bestimmt ob die Oberfläche aus der Datei 1:1 importiert wird, oder beim Import eine Glättung der Flächen erfolgen soll. Dies hat folgende Auswirkungen:
 
Ohne „Normalen Generieren“ bleibt unsere Rakete ein 12eckiger Zylinder. Den habe ich absichtlich so grob angelegt um massiv Dreiecke zu sparen. Manche Designer hätten da 128 Zylinderflächen genommen damit alles rund erscheint...  aber das wäre uneffizient gewesen.
Schalte ich „Normalen Generieren“ an so wird der Zylinder auch mit 12 Flächen rund.
Nachteil wären dann beispielsweise bei Möbeln oder Häuserecken fehlende Ecken und Kanten.
 
Also hier bitte einschalten da es nicht auf rechteckige Formen und Kanten ankommt.
Nun wird das Feld Knitterwinkel freigegeben.
Damit kann man die Glättung grober Flächen noch anpassen, jedoch habe ich selten davon sinnvoll Gebrauch gemacht.


Dennoch mal eine Stufe rauf und wieder runter auf 75.000 Schalten. Nun erst wird die Ansicht im Vorschaufenster richtig berechnet! Bei diesem Objekt schlecht sichtbar, aber generell ist die Glättung um Vorschaufenster gut zu erkennen.
 
Gleichzeitig verändert sich dadurch meist der Wert Scheitelpunkte.
Bei manchen Meshes zum Beispiel mit gekrümmten Blättern beträgt die Reduktion und damit der Gewinn bis 50%.
Hier springt er von 321 auf 216. Keinen Gewinn gibt es nur bei Bauten mit lauter rechten Winkeln.
 
Kurzer Blick in Vorschau „Hoch“ bestätigt das Ergebnis.
 
Damit ist das Mesh „Hoch fertig“.
 

 
Mesh Auflösung „Mittel“:
 
Zunächst die Vorschau auf „Mittel“ stellen. Kurzer Blick bestätigt desaströse Zerstörung des Mesh. Also was tun?
 
- Möglichkeit 1: „Quelle - Mittel“ unter „Generieren“ „Dreieckslimit“ belassen und die Dreieckszahl hochstellen bis die Störungen akzeptabel sind.
 
Danach auch für Mittel wieder „Normalen generieren“ wie vorhin.
 
-Möglichkeit 2: eine andere Datei mit weniger Details in  Blender erstellen, exportieren und hier mit „Mittel“ - „Aus Datei laden“ hochladen.
 
Dies ist sicher bei komplexen Meshes mit vielen Dreiecken die absolut beste Lösung.
 
Der Aufwand für die Erstellung vervierfacht sich in Blender dadurch wenn das für alle 4 MeshStufen so durchgeführt wird.
 
In anderer 3D Software kann man hochwertige automatische Poligon Reduktion nutzen.
 
-Möglichkeit 3: „Mittel“ - „Detailstufe oben verwenden“. Diese würde auf die zusätzliche Erstellung von Meshes für diese Ebene verzichten.
 Vorteil : Schnell für Test und Entwicklung

 
Bei der geringen Dreieckzahl unseres Objektes wäre das meine erste Wahl, für alle 4 Mesh Ebenen.
 
Bei effizienter Mesh Erstellung ist der Import problemlos und einfach. Fehler bei der Mesh Erstellung können hier nicht mehr ausgebügelt werden, bestenfalls vertuscht.
 
 
Nachdem nun alle Meshes die normalisierte Originaldatei verwenden, müssen wir Art des Modells auswählen und den Namen ggf. Korrigieren
 
Was genau das Feld „Dieses Modell repräsentiert“ bewirkt habe ich nirgends gesehen, aber es scheint eine Schnellumschaltung verschiedener Betriebsmodis zu sein, die folgende unter anderen Funktionen beeinflusst: Physikerstellung/ Phantom, Überprüfung von in der ini Datei gesetzten Limits (maximaler Primzahl, Größen,...), Freischaltung von Zusatz Funktionen.
 
Avatarform: → Das Mesh enthält Bones und Gelenke, die Funktionen werden freigeschalten. Das Objekte wird sich später als Avatar bewegen, was auf die Physik Einfluss hat.
 
Avatar Anhang: → das Objekt wird eh Phantom, vergiss die Physik. Der Montage Punkt wird wichtig.
 
Mobile Objekte: → es gelten die Regeln für physische Objekte: Maximale Größe 32/64 etc. Außerdem muss eine Masse und ein Massenmittelpunkt bestimmt werden.
 
Baukomponenten: statisches Element mit Kollision
 
der Rest:  ist fraglich wie sich das auswirkt.
 

   


 
Einstellung der Physik
 
 
Grundlagen:
 
Die Physik regelt die Kollisionsberechnug mit anderne Objekten. Ausserdem werden Massen und Massenmittelpunkte ermittelt.
 
In Opensimulator ist diese Funktion nicht wirklich gut implementiert, da wie schon oben geschrieben das Original Modul Lizenzpflichtig wäre. Daher hat mich die Funktionsweise dieser Funktion oft an den Rande des Abgrundes gebracht. Heute bin ich einen Schritt weiter.
 
Abhilfe: Objekt „irgendwie“ importieren und auf Phantom setzten
dann mit Hilfe einfacher Prims Kollisionsobjekte erzeugen, platzieren und testen. Geht alles wie gewünscht, diese Physik Prims auf transparent setzen.
 
Generell läßt sich zu Mesh sagen das Physik kritisch ist. Es kommt immer wieder vor das Objekte oder AVAS durch das Mesh fallen. Dies passiert wenn der Mittelpunkt des gegen das Mesh bewegten Objektes die Oberfläche durchstösst, und sich dann hinter dem Mittelpunkt der kollidierenden Fläche des Meshes befindet. Daraufhin fliegt es ungehindert weiter, kann aber oft nicht zurück. AVAS bleibt da meist nur ein Teleport.
 
Auch hier gilt als Abhilfe auf Simulator Standards zurückzugehen. Also die Verwendung von Sim Boden möglichst direkt unter dem Boden Mesh, oder den Einsatz großer Quader Prims als Bodenfläche. Letzteres ist unbedingt bei TP Zonen unter Mesh Boden zu empfehlen.
 
Physik Optimierung ist ein so hoch komplexes Thema dass ich das gesondert behandeln werde.
Wichtig zu wissen ist: die Physik muss mit der sichtbaren Form des Objektes nichts gemein haben.
Es zählt einzig allein das Ergebnis der Bewegungs - Einschränkung das man erzielen will.
So reicht es für eine Wand im 1. Stock eines Gebäudes nur eine Plane (Fläche) als Physik zu nehmen.
Diese nahe der Innenwand platziert gibt den gleichen Effekt wir ein Würfel der die Wand nachbildet.
Auch Ebene wirken in alle Richtungen als Hindernis, unabhängig von der Sichtbarkeit der Flächen.
 

     

 
 
Zur Bedienung der Maske:
 
unter Schritt1 wird das 8 (von den vorigen 4) Meshes ausgewählt das zur Physik Berechnung herangezogen wird.
Das Schlechteste kann Löcher aufweisen, die zu höheren Zahl von Kollisionsflächen (=Scheitelpunkt Hüllen) führt.

Eine weiter Option ist „externe Datei für Physik hochladen“.
Das habe ich manchmal gemacht, wenn ich die Physik nutzen will, aber das Mesh zu komplex ist.
Eigentlich sollte das immer genutzt werden – wenn es denn funktionieren würde.
Anwendungsfall wäre beispielsweise ein Blumenkasten mit vielen Blumen drin. Aber Kollision soll nur der Rechteckige Kasten erzeugen.
Das wären dann 6 Flächen anstelle bis zu hunderter durch die Blumenblätter.
Natürlich berechnet die Physik Hüllen zur Optimierung, aber je nach Objekt kann die Automatik völlig daneben liegen.


Zum Verständnis: Die Physik ist eine völlig unabhängige zweite Welt im Simulator. Die siehst du nicht, aber sie wird ständig mitberechnet. Dein Avatar hat Hüllen die ihn umgeben, ebenso wie jedes nicht „Phantom“ Element. Bewegt sich etwas , so kann es mit anderen Hüllen kollidieren. Diese berechnet die Physik Engine. Dafür gehen nicht wenig Rechenleistung drauf.

Zum Schritt2, analysieren
Nur 2 Bedienelemente haben Funktion: Löcher schließen und analysieren.
Löcher schließen verbindet Öffnungen in der Physik des Meshes. Beispiel Bootshülle: Du kannst nachher nicht mehr durch die offene Tür in die Kombüse. Aber du fällst auch nicht durch den Gulli im Boden.
 
Danach analysieren drücken. Dieses berechnet die Anzahl notwendiger Kollisionshüllen/Flächen.
 
Das Ergebnis wird unten (Ergebnis Dreiecke/ Scheitelhüllen) angezeigt.
 
Was ist gut? Das kommt auf das Objekt und die Komplexität an.
Ein Baum mit Stamm und Ästen ist schlecht, je nach Struktur kommen hunderte Kollisions-Flächen zusammen.

Eine Näherung mit nur einen rechteckigen Stamm (Würfel) mit 6 Scheitelhüllen ist schon besser, aber immer noch nicht optimal.
4 wäre erzielbar wenn die obere und unter Fläche des Würfels offen wären.


Noch besser ist es nur 2 Flächen(Planes) im Kreuz zu stellen und damit den Würfel zu ersetzten.
Und optimal ist es nur mehr eine Ebene (Plane) als Stamm Physik hinzusetzen.
Ein dagegen fahrendes Auto würde dadurch genauso zuverlässig gestoppt.
Wo dies nicht notwendig ist, lasse ich Grünzeug auf Phantom, und habe eine schnelle Sim
 
Was ist schlecht:
Kleines Objekt > 10
begehbares Haus > 100
 
 
 
Skalierung
 
zu gültiger Skalierung habe ich schon etliches geschrieben.
Idealerweise sollte hier etwas zwischen 0,1 und 10 drin stehen, und die richtige Meshgröße rauskommen.
Ansonsten: Gehe zurück nach Blender, und mache dort die Hausaufgaben.
 
Die Option „Texturen Einschliessen“ lädt die in der .dae referenzierten Texturen aus dem gleichen Verzeichnis wie die *.dae Datei.
 
Diese werden in dem Texture Ordner unter dem Meshnamen abgelegt, und zudem im Mesh gleich geladen. Klappt das erspart es viel Arbeit.
ABER: Der Grafikspeicher Verbrauch der Sim ist viel effizienter wenn jede Texture dedupliziert in der Sim verwendet wird.
Daher Texturen im Testsimulator hochladen, und checken bis alles passt.
Dann in den Produktiv Simulator nur mit dem einem Original alles neu texturieren. Dieses ist einfach da ja die Textursettings bleiben.

Eine Möglichkeit Sims auf doppelt vorliegende gleiche Texturen zu untersuchen bietet ein Textur Cache Reader. Sollte die gleiche Textur da mit mehr als einer UUID drin liegen, gibt es Optimierungs Potential. (Dies gilt nicht für gebackene AVA Texturen!!!!!)


Nun muss das Objekt „Gewichte und Gebühren“ berechnen.
Anschießend steht an gleicher Stelle „Hochladen“.
 
Danach befindet sich das Mesh im Inventar.
 


   
 
 
Die einzelnen Materialien des Objektes „Rakete“ sind nun zu Seiten der Meshes geworden.
Der Zugriff erfolgt nun über Teile Bearbeiten – Fläche auswählen.
 
Nun Mesh in der Sim platzieren und nachbearbeiten.
Meist sind das noch Textur Nachbesserungen, hinzufügen von Normal Maps, Glow Maps, Glanz- oder Leuchtoptionen für Materials.
 
Sofern man einen separaten Physik Layer mit importiert hat, so trennt man diesen nach erfolgter Platzierung des Objektes in der Sim nun ab,
und wählt für diesen: Textur: Transparent.
Der Rest des Objektes wird anschließend auf Phantom gesetzt.
Antworten }
Thanks given by: Achim
#2
Betreff: Mesh Import in Open Simulator
Bitte korrigieren Sie die folgenden Fehler bevor Sie fortfahren:
Tron Mcp hat private Nachrichten deaktiviert. Sie können diesem Benutzer keine Nachricht schicken.

Klasse Anleitung Tron.
Hier ein paar änderungs-/Verbesserungsvorschläge.

Zum einen, Unterstützen die Viewer nur 512MB Grafikkarten RAM auch wenn du mehr RAM hast.

Dann ist die Textur Größe von 1024x1024 auf 2048x2048 erhöht worden.

OpenSim Arbeitet intern nur mit dem Jpeg2000 Format. (Ausnahmen: Mesh Formate Sculptmap und Heightmap)

In diesem  Jpeg2000 Format steht unter anderem auch die Ursprungsgröße und das Ursprungsformat.

Dies wird beim herunterladen wieder zurück gewandelt.

Einfügen würde ich noch, das JPG eine Komprimierung hat die nach außen immer stärker wird und somit sich dieses Format nicht für Tile Texturen eignet.

Die Funktion "Dieses Modell repräsentiert..." hat keinerlei Funktion steht im Handbuch.


Skalierung kann man weit über 10 einstellen, halt so groß wie eingestellt ist in der opensim.ini (bis 256 Meter Standard).

Bei mir geht das nur bis 1024x1024x1024 Meter sonst habe ich Fehler in der Datenbank (Ja diese kann man anpassen, aber die Modelle/Szenen/Regionen lassen sich dann nicht so einfach weitergeben)

Textur Cache Reader, dies solltest du noch ausführlicher erläutern.
Denn durch so etwas laufen Datenbanken erheblich schneller wenn das jeder macht.

Weiter so klasse.
mfg.
Manni
- Beipackzettel: Kann Spuren von persönlichen Meinungen, Sarkasmus und Ironie enthalten.
Ausdrücke sind nicht für den Verkehr geeignet. Gelesen mindestens haltbar, siehe oben. -
Antworten }
Thanks given by: CarfsefanypE
#3
danke Manni für die Präzisierung, ich teile deine Meinung. Denke aber es reicht die Einträge so stehen zu lassen und drauf zu verweisen.


Zum Grafik Speicher: stimmt, die meisten Viewer unterstützen nur 512 MB Grafikspeicher für Texturen, aber ich hatte mal einen Viewer im Test da ging auch mehr einzustellen.  Jedoch braucht die Grafikkarte auch Speicher für Berechnungen, sowie als Seitencache für die Darstellung. Da werden 1GB schnell knapp.
Du hast mich auf die Idee gebarcht mal eine Hardware Empfehlung zu posten.

- Da der Textur Cache Reader auch anders eingesetzt werden kann, werde ich hier keinen Link hinzufügen.
Als Admin Tool für verantwortungsvolle User ist er aber gut. Kontaktiere mich Inworld für Details.
Antworten }
Thanks given by:
#4
Habe mich etwas falsch ausgedrückt, unterstützt wird nur 512MB Grafikkarten RAM auch wenn du mehr RAM hast.
Im Viewer kann man aber diesen nicht einstellen, sondern den Cache auf der Festplatte und dieser kann höher sein.
- Beipackzettel: Kann Spuren von persönlichen Meinungen, Sarkasmus und Ironie enthalten.
Ausdrücke sind nicht für den Verkehr geeignet. Gelesen mindestens haltbar, siehe oben. -
Antworten }
Thanks given by:
#5
Upload Tipps wegen teilweisen Versagen mancher Viewer bei bestimmten Eigenschaften des Meshes.

Sollte ein Upload mal fehlschlagen, muss nicht immer das Mesh daran schuld sein.
Oft hilft es einfach einen anderen Viewer oder eine andere Version des gleichen Viewers zu verwenden.

Beispiele: In neueren Firefox Versionen hatte sich ein 32Meter bug eingeschlichen. Mesh das größer als 32m war, wurde nicht hochgeladen.
In neuen Singularity Versionen ging dies aber bis heute ohne Problem. Ebenso gingen viel ältere Firestorm Versionen problemlos.

Anders rum macht Singularity bei geriggtem Mesh mehr Probleme weil die Codebasis offenbar älter ist.

Was wo geht und wo nicht, ist aber nicht Sinn dieses Artikels- sondern euch zu ermutigen bei Problemen einfach erst einen anderen Viewer zu testen bevor man Stunden auf Fehlersuche in Blender verbringt.


Manchmal hilft auch der Upload mit einem schnelleren Rechner, oder das Zerlegen in Einzelteilen.

Erst danach würde ich den Fehler im Mesh selbst suchen.


Es gibt zig weitere Kriterien die ein Meshupload in manchen Viewer verhindern, wo ein Testen andere Viewer lohnt:


- Mesh das seien Ursprungspunkt sehr weit von den eigentlichen Objekten hat. Der Ursprung wird in die Größen Berechnung mit gerechnet und ergibt schnell Größen über 100m
- Mesh das die 256m Marke knackt konnte in manchen Viewer Versionen nicht kleiner skaliert werden.
Am besten beseitigt man solche Probleme vor dem Upload in Blender, und skaliert da bereits richtig.


Sollte alles nicht helfen gehts auf Fehlersuche:

Doppelte Namen von Meshobjekten in dae beseitigen:
Manchmal lohnt auch ein Blick in die DAE Datei mit Notepad++. Dae Files sind gut lesbare XML Dateien.
Jedes Meshobject ist in der Dae eine eigene Passage und enthält einen eigenen Namen. 
Kommen Namen doppelt vor misslingt der upload bis diese Eindeutigkeit der Namen wieder hergestellt ist. Typischer Fehler "missing physical hull".
Einfacher geht es in Blender vor dem Export, wenn man sicherstellt das alle Meshobjekte keine Leerzeichen im Namen haben, denn diese Leerzeichen bewirken (manchmal) ein Abschneiden des Namens bevor er eindeutig wird.

Zeichenvorrat in Meshobject Namen verringern:
Ebenso sollte der Namen nur aus Standard 7Bit Ascii Buchstaben und Zahlen bestehen wenn man absolut sicher gehen will in keinem Viewer Upload Probleme zu bekommen.



Besonders fehlerträchtig sind die Meshdownloads von freien aber auch kostenpflichtigen Plattformen.

Nicht das die Ersteller schlecht gearbeitet hätten, aber oft wird das Mesh mehrfach im Format gewandelt um von der Erstellerplattform zur Zielplattform zu kommen.

Konvertierung von Origalplattform zu Zwischen- und Zielformaten variieren. 
Bei diesen Konvertierungen passieren viele Fehler, die nur manchmal - und dann mit sehr viel Geduld, und einiger Erfahrung in Blender wieder beseitigbar sind.
Oft hat man da nur eine Chance wenn man an die original Datei der Ersteller Plattform als Download bekommt, und die Konvertierung in mehre (Zwischen-) Formate selbst macht. 
Einen Hinweis dazu habe ich im Artikel zu FBX Export von MAX Dateien gegeben

Typische Fehler sind:

- Material Zuordnung geht verloren. Das gesamte Mesh hat kein Material, oder nur mehr höchstens ein Material.

- Die UV Orientierungen gehen verloren, die Texturen passen nicht mehr zur Meshform. Dies ist besonders bei baked texturen nicht mehr reparabel.

- Flächen werden korrupt, weil eine Plattform bestimmte Datenformate nicht unterstützt

- Flächen liegen falsch weil manche Plattformen nur mit ortogonalen Koordinaten Systemen zurecht kommen.

- Flächen werden zerstört weil die Bezüge / Referenzen falsch konvertiert werden. Typisch "Spiegel Befehl" oder mehrfacher Einbau eines referenzierten Objektes.

- Flächen haben teilweise falsche Normalen Orientierungen. Vermutlich weil die Quellplattform beidseitige Texturierung pro Fläche unterstützte.

- Flächen, Linien und Punkte verlieren ihre Verknüpfungen. Typisch ist wenn man select linked macht, benachbarte Flächen nicht angewählt werden. Dies kann in Blender repariert werden

......
Antworten }
Thanks given by:


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste