This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Hallo, Gast
Sie müssen sich registrieren bevor Sie auf unserer Seite Beiträge schreiben können.

Benutzername
  

Passwort
  





Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 23
» Neuestes Mitglied: Lilida
» Foren-Themen: 601
» Foren-Beiträge: 1.574

Komplettstatistiken

Aktive Themen
AI text/image to mesh
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: Cheryl Furse
Vor 6 Stunden
» Antworten: 0
» Ansichten: 9
Promo Couple Walk
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: Cheryl Furse
25.04.2024, 11:42
» Antworten: 0
» Ansichten: 67
Red light district
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: Cheryl Furse
23.04.2024, 11:12
» Antworten: 6
» Ansichten: 297
Sim geht in Schlafmodus
Forum: OpenSim
Letzter Beitrag: ThunderTower
21.04.2024, 12:31
» Antworten: 5
» Ansichten: 612
Tanzball rezzen
Forum: OpenSim-Manager
Letzter Beitrag: Lilida
16.04.2024, 14:27
» Antworten: 6
» Ansichten: 566
Was ist ne Kaffestube ohn...
Forum: Kaffeestube
Letzter Beitrag: Susan
15.04.2024, 15:17
» Antworten: 0
» Ansichten: 294
C Programmierung und bull...
Forum: Scripting
Letzter Beitrag: Cheryl Furse
07.04.2024, 00:50
» Antworten: 2
» Ansichten: 369
Steampunk-Party mit Marlo...
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: ThunderTower
02.04.2024, 18:29
» Antworten: 0
» Ansichten: 248
ERÖFFNUNG FLORES SEA Wild...
Forum: Informationen und aktuelle Meldungen
Letzter Beitrag: ThunderTower
01.04.2024, 18:52
» Antworten: 3
» Ansichten: 355
Einladung zur SCIFI Party...
Forum: Virtual Africa
Letzter Beitrag: Cheryl Furse
31.03.2024, 13:32
» Antworten: 7
» Ansichten: 724

 
  Herzlich Willkommen im Silberwelten Forum!
Geschrieben von: ThunderTower - 06.08.2022, 11:18 - Forum: Informationen und aktuelle Meldungen - Antworten (5)

Willkommen Susi Lane und Trawell in unserem gemeinsamen Forum.

Im Namen aller, möchte ich Euch recht herzlich begrüßen!

Wir wünschen beiden bei uns eine angenehme Zeit.

Vielen Dank!


Yes

Drucke diesen Beitrag

  Brucha stellt sich kurz vor
Geschrieben von: Brucha - 05.08.2022, 20:15 - Forum: Kaffeestube - Antworten (2)

Huhu an alle, 

wollte mich mal kurz vorstellen, für alle die mich noch nicht kennen.   Angel

Manche kennen mich noch unter dem Namen "Bruch a" aus dem OsGrid .. 
und vielleicht andere aus Metropolis, dort war ich die kleine Piper Perano die mit Tommy Jonas viel angestellt hat .. 
unter anderem waren wir auch sehr oft am MIttwoch Abend im Doppelpack zu hören .. 

Leider ist Tommy vor 3 Jahren gestorben .. 

und habe ich mit Eryn Galen das Grid "free-souls" im Weltenverbund 4Creative..

Ich freue mich wieder mehr online zu sein ..
und ich leg auch ab und zu auf ..

Wenn ihr Fragen hab .. als her damit .. 

LG Brucha

Drucke diesen Beitrag

  Herzlich Willkommen im Silberwelten Forum!
Geschrieben von: ThunderTower - 05.08.2022, 17:12 - Forum: Informationen und aktuelle Meldungen - Antworten (1)

Willkommen Brucha hier bei uns im Forum.

Ich möchte Dich recht herzlich begrüßen und

wünsche Dir bei uns eine stressfreie und angenehme Zeit.

Lukas

Vielen Dank!

Yes

Drucke diesen Beitrag

  Mesh Upload Probleme meistern
Geschrieben von: Tron Mcp - 04.08.2022, 15:06 - Forum: Meshen - Antworten (2)

Mesh Upload Probleme (in komplexen Projekten) meistern


Gute Meshquellen gibt es viele, Links dazu finden sich hier im Forum.
Ob kostenlos oder gegen Bezahlung, sie bieten die Möglichkeit im eigene Grid etwas Individuelles zu haben
Die Datei ist schnell geholt, aber dann kommt die eigentliche Arbeit

Zunächst muss das Wandeln in eine DAE Datei erfolgen da die meisten Quellen die Dateien nur in Formaten .max .obj .fbx oder .3ds anbieten. Artikel dazu habe ich hier im Forum schon gepostet.
Meist landet das Wandlungs Ergebnis dann für einen letzten Zwischenschritt in Blender, was auch gleich genutzt wird um das Mesh vor dem Export zu untersuchen und zu reparieren.
Der .DAE Export wird im Anschluß im Simulator hochgeladen.

All dieses ist schon Inhalt etlicher Veröffentlichungen gewesen, und heute nicht Thema. Es stellt aber den Idealfall dar.
Oft läßt sich ein scheinbar intaktes Mesh, exportiert als DAE, dennoch nicht erfolgreich hochladen.

Nun sind wir im Thema dieses Artikels:

Ich werde versuchen meine Beobachtungen, Tricks und Tipps zur Reparatur von Mesh an euch weiter zu geben.
Ich sage gleich dazu das es Themenbedingt stets noch andere Fehlerquellen geben kann, und ermutige ausdrücklich eure Beobachtungen hier zu schreiben.

Ausgangslage sei also ein nicht hochladbares Mesh das in Blender (importiert oder erstellt) vorliegt.
Wir werden uns verschiedene Gründe dafür ansehen wie es zu diesem unbefriedigenden Zustand kommt, und versuchen diese Fehler zu bereinigen.

Unser Arbeitszyclus wird dabei immer gleich bleiben:
1. In Blender Korrekturen vornehmen
2. In Blender dae exportieren
3. In Firestorm dae hochladen probieren - Fehler notieren
4. In Blender zurückkehren und Fehler beheben
5. Gehe zurück auf 1.

Ich werde hier verschiedene Fehlerquellen anhand eines Komplexen Projektes beschreiben, und versuchen sie zu beseitigen:

PROBLEM - Projekt ist zu komplex:

   
Beispiel: Ich habe bei Cadnav.com ein tolles Segelschiff gefunden. Nach Wandlung ist es nun in Blender.
Wir sehen einen Menge Meshobjekte (orange Dreiecke) und insgesamt gut 450.000 Verticles.
450K Verticles in Blender werden aber zu ungefähr der doppelten Anzahl Dreiecken in Firestorm, da beide Programme den Begriff anders verwenden.

Erster Gedanke: Das kriegt man so nie hochgeladen. Bisher habe ich in Firefox korrekte Objekte bis ca 160K Dreiecke erfolgreich hochgeladen, aber mit den unten beschrieben Physik Tricks geht mehr.
Nachdem ich umfängliche Reparaturen in Blender gemacht habe um die Texturierung ordentlich hinzubekommen, teste ich zuerst mal mein Glück.
Sind wir früher davon augegangen das sowohl die Komplexität des Meshes, als auch eine zu hohe Renderzeit mittels Timer zum Abbruch führen kann,
steht mir heute nun bessere Hardware zur Verfügung, was es zumindest theoretisch ermöglicht mehr hochzuladen.

Testumgebung:
Die Tests mache ich auf einem 12Core AMD Threadriper Pro 3945WX mit 128GB RAM und M2-PCIEx4 SSDs. Als Grafik kommt eine Geforce RTX3080 zum Einsatz.
Firestorm ist lokal installiert, der Simulator läuft auf dem gleichen Rechner in einer VM. An Rechner, Netzwerk, Datenrate liegt es also nicht wenn was nicht klappt.
Uploads von komplexen intakten Meshes gehen in Sekunden, was vormals 5 Minuten brauchte.
Es zeigt sich aber auch sofort das Firestorm nicht ansatzweise die Hardware auslasten kann.
Die CPU Last geht nie über 15% im Meshupload, und die Grafik dümpelt bei 5% herum.
Es liegt nahe das Firestorm zum Berechnen des Meshes nur einen Core einsetzt.

Ich starte also mit einem Komplett Export des Projektes als DAE, und versuche diese im Uplaod Modul von Firestorm zu laden.
Das geht schon mal gar nicht. Das Mesh wird nicht einmal im Vorschau Monitor geladen. Fehler beim DAE Parsen.

LÖSUNG1: MESH Zerlegen, teilweise importieren, und inworld wieder zusammenbauen:
Also fange ich an das Gesamtprojekt in einzelne Teilexporte zu zerstückeln um diese getrennt zu laden.
Zunächst orientiere ich mich an den vorhandenen Meshelementen- was später inworld einzelne Prims eines Linksets darstellen.
Dazu ist es hilfreich ein Bezugselement zu haben das mit allen Meshobjekten exportiert wird, so kann man die Einzeluploads nachher inworld zuverlässig zusammensetzen.

- Dieses Hilfelement muss inworld durch Linkset auflösen und neu verlinken (das Referenzprim zuletzt anwählen!) zum PRIM1 werden.
Nun kann man mittels Baumenü alle Referenzprims auf gleiche Vektorposition schieben, und die Meshteile des komplexen Objektes genau passend übereinander legen.
Man verlinkt dann alles einzeln importierten Elemente, und trennt später die Referenzprims ab.
Aber erst wenn wirklich das gesamte Projekt fehlerfrei abgeschlossen ist, wird das letzte Referenzprim abgetennt!
Solange ein Referenzpim noch dran ist kann man weitere Korrekturen einfach nachladen und positionieren.
Als Referenzmesh mache ich ein neues Meshelement in Blender und nehme den Standard Würfel den ich auch 0/0/0 Position erstelle.
Ich achte bei der Namensgebung meines Referenzprims darauf, das er aufgrund der Namenssortierung ganz unten in Blender angezeigt wird. Also am besten mit Z... beginnnen.
Das wird für nachfolgenden Trick wichtig.

TRICK: MESHUPLOAD drastisch BESCHLEUNIGEN
Beobachtung: Beim Hochaden von komplexen Meshes dauert die Physikberechnung meist zehnerpotenzen länger als die Berechnung des eigentlichen Meshes.
Dazu ist sie wohl der am häufigsten vorkommende Grund warum ein Uplaod nach langer Wartezeit misslingt.
Meist brauche ich aber diese Physik Berechnung gar nicht, zum Beispiel bei Kleidung, kleinem Ambiente, oder Teilen von Fahrzeugen die nachher eh immer Phantom werden.
Ich kann sie aber nicht auf direkten Wege umgehen, jedoch austricksen.

Dieses Physik Austricksen geht so:
Man erstellt sich einen Würfel als DAE Datei. Dieser wird beim Einstellen der Meshuploads unter der Rubrik Physik, als "aus Datei laden" ausgewählt.
Neue Firestorm Viewer bietet das schon selber mit der Vorauswahl "Würfel" im Physikmenü an.

   

Diese Physik aus der Datei wird aber leider nur auf das Rootprim des Uploads angewendet.
Dann aber geht der Upload in Sekunden, was vorher für eine gemütliche Kaffeepause reichte.
Als Nebeneffekt entfällt nach 15 Minuten rendern die Fehlermeldung "missing physical Block" wenn Firstorm keine gültige Physikhülle berechnen konnte.
Ebenso kann man dadurch auch Mesh nun hochladen welches davor bereits im Physikreiter bei der Überprüfung, zu einer Fehlermeldung führte weil zuviele Physikflächen benötigt würden.

Wir müssen also in unserem Beispiel aufpassen das das Nutzmesh des Schiffs als rootprim geladen wird, und der Referenzprim die Primnummer 2 erhält.
Dafür ist die Namensgebung der Meshelemente in Blender wichtig. Blender sortiert die Meshelemente nach Namen, wobei das Oberste angezeigte das Rootprim beim Upload wird.

Werden mehrere Meshelemente hochgeladen, so kann man laut meinen Tests nur die Physik des ersten Rootprims beeinflussen. Der Rest wird stur berechnet.

Nun laden wir wie eben besprochen jeweils ein Nutzprim mit einem Referenzprim hoch. Dabei zeigt sich schnell in welchem Prim welcher Fehler liegt.
In meinem Musterbeispiel gelingt der Upload von ca 2/3 der Prims sofort. Der Rest muss untersucht und repariert werden.

Welche Fehlermeldungen in Firestorm sind bekannt:

FEHLER: - Firestorm Meldung zu viele Verticles:
  Ursache: ein Meshelement des Blender Linksets enthält mehr als 32768 Verticles, was zu über 65635 Dreiecken in der Firestorm Anzeige führt.
  Beachte das in Blender angezeigte Verts nicht das sind was Firestorm unter Verts versteht. In Blender werden diese Verticles als Tris angezeigt.
  Wählt man in Blender jedes Meshobjekt einzeln an, so werden in der oberen Leiste die Daten dieses Meshelements angezeigt.
  In diesem Foto steht "Tris 68410" - daher scheiterte der Upload. Der Tris Wert muss unter 32768 sinken damit der Upload geht.
  Die Zahlen sind nicht 2:1 rechenbar! Nur ungefähr stimmt dieser Wert.

   

Abhilfe: Teile das Meshobjekt in Blender.
Man geht in Blender in den Editmodus des betreffenden Meshelements.
Dann markiert man mit gehaltener Schift Taste so viele Flächen in Blender bis die Anzahl der nicht markeirten Dreiecke unter die kritischen Wert sinkt.
Nun wechselt man in den Object Modus dieses Meshelementes und kopiert es.
Dabei bleibt die vorher im Edit Modus getroffene Auswahl erhalten und wird auf beide Kopien dupliziert.
Nun wechselt man nacheinander in beiden Meshobjekten in den Edit Modus.
In einem löscht man die markierten Flächen, im Anderen invertiert man die Auswahl, und löscht dann die invertierte Auswahl.
Dies treibt man so lange bis jedes Meshelement die Kritische Verticles Zahl unterschreitet.
Nun wieder zu Arbeitspunkt 1 unseres Workflows.

FEHLER: - Fehler beim DAE Parsen:
Dies kann mehrere Ursachen haben. Denn hinter dieser Fehlermeldung verbirgt sich das die DAE Datei bei der Syntax Prüfung durchgefallen ist.
Dae Dateien sind eine im XML Format vorliegende Collada Textbeschreibungs Datei.
Nun gibt es aber von Collada viele Versionen dieser Beschreibungen wie eine dae datei aussehen soll, was ihr in folgenden Link nachschlagen könnt.

https://www.khronos.org/collada/

Wenn ihr einen dae Datei mit einem XML fähigen Editor wie Notepad++ öffnet, seht ihr das im Klartext:
Hier eine Collada Datei die Fehler beim DAE Parsen liefert:  (allerdings um Geometriedaten gekürzt um den Forumsserver zu schonen)

Code:
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <asset>
    <contributor>
      <author>Blender User</author>
      <authoring_tool>Blender 2.79.0 commit date:2018-03-22, commit time:14:10, hash:f4dc9f9d68b</authoring_tool>
    </contributor>
    <created>2022-08-03T12:38:27</created>
    <modified>2022-08-03T12:38:27</modified>
    <unit name="meter" meter="1"/>
    <up_axis>Z_UP</up_axis>
  </asset>
  <library_images>
    <image id="Holzplanken" name="Holzplanken">
      <init_from>/C:/Users/Tron/Desktop/Schiffe/140%20Sirene%20in%20ARBEIT/Max/cadnav.com_model/LA%20SIRENE%20SHIP%20OF%20LINE/SIREOLDM.jpg</init_from>
    </image>
  </library_images>
  <library_effects>
    <effect id="blue_painted_planks_diff_1k_png-effect">
      <profile_COMMON>
        <newparam sid="blue_painted_planks_diff_1k_png-surface">
          <surface type="2D">
            <init_from>blue_painted_planks_diff_1k_png</init_from>
          </surface>
        </newparam>
        <newparam sid="blue_painted_planks_diff_1k_png-sampler">
          <sampler2D>
            <source>blue_painted_planks_diff_1k_png-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="blue_painted_planks_diff_1k_png-sampler" texcoord="blue_painted_planks_diff_1k_png"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="planks_brown_10_diff_1k_png-effect">
      <profile_COMMON>
        <newparam sid="planks_brown_10_diff_1k_png-surface">
          <surface type="2D">
            <init_from>planks_brown_10_diff_1k_png</init_from>
          </surface>
        </newparam>
        <newparam sid="planks_brown_10_diff_1k_png-sampler">
          <sampler2D>
            <source>planks_brown_10_diff_1k_png-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="planks_brown_10_diff_1k_png-sampler" texcoord="planks_brown_10_diff_1k_png"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_001-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_001-surface">
          <surface type="2D">
            <init_from>Tex__1_001</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_001-sampler">
          <sampler2D>
            <source>Tex__1_001-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_001-sampler" texcoord="Tex__1_001"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="_587_Piraten_Flagge_TJ_png-effect">
      <profile_COMMON>
        <newparam sid="_587_Piraten_Flagge_TJ_png-surface">
          <surface type="2D">
            <init_from>_587_Piraten_Flagge_TJ_png</init_from>
          </surface>
        </newparam>
        <newparam sid="_587_Piraten_Flagge_TJ_png-sampler">
          <sampler2D>
            <source>_587_Piraten_Flagge_TJ_png-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="_587_Piraten_Flagge_TJ_png-sampler" texcoord="_587_Piraten_Flagge_TJ_png"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="medieval_wood_diff_1k_png-effect">
      <profile_COMMON>
        <newparam sid="medieval_wood_diff_1k_png-surface">
          <surface type="2D">
            <init_from>medieval_wood_diff_1k_png</init_from>
          </surface>
        </newparam>
        <newparam sid="medieval_wood_diff_1k_png-sampler">
          <sampler2D>
            <source>medieval_wood_diff_1k_png-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="medieval_wood_diff_1k_png-sampler" texcoord="medieval_wood_diff_1k_png"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Holzplanken-effect">
      <profile_COMMON>
        <newparam sid="Holzplanken-surface">
          <surface type="2D">
            <init_from>Holzplanken</init_from>
          </surface>
        </newparam>
        <newparam sid="Holzplanken-sampler">
          <sampler2D>
            <source>Holzplanken-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Holzplanken-sampler" texcoord="Holzplanken"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="seil_geflochten_png-effect">
      <profile_COMMON>
        <newparam sid="seil_geflochten_png-surface">
          <surface type="2D">
            <init_from>seil_geflochten_png</init_from>
          </surface>
        </newparam>
        <newparam sid="seil_geflochten_png-sampler">
          <sampler2D>
            <source>seil_geflochten_png-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="seil_geflochten_png-sampler" texcoord="seil_geflochten_png"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="SIREOLDM2_JPG-effect">
      <profile_COMMON>
        <newparam sid="SIREOLDM2_JPG-surface">
          <surface type="2D">
            <init_from>SIREOLDM2_JPG</init_from>
          </surface>
        </newparam>
        <newparam sid="SIREOLDM2_JPG-sampler">
          <sampler2D>
            <source>SIREOLDM2_JPG-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="SIREOLDM2_JPG-sampler" texcoord="SIREOLDM2_JPG"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="rough_wood_Diff_1k_png-effect">
      <profile_COMMON>
        <newparam sid="rough_wood_Diff_1k_png-surface">
          <surface type="2D">
            <init_from>rough_wood_Diff_1k_png</init_from>
          </surface>
        </newparam>
        <newparam sid="rough_wood_Diff_1k_png-sampler">
          <sampler2D>
            <source>rough_wood_Diff_1k_png-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="rough_wood_Diff_1k_png-sampler" texcoord="rough_wood_Diff_1k_png"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="IMG_0449_Rost_seamless_1K_TJ_png-effect">
      <profile_COMMON>
        <newparam sid="IMG_0449_Rost_seamless_1K_TJ_png-surface">
          <surface type="2D">
            <init_from>IMG_0449_Rost_seamless_1K_TJ_png</init_from>
          </surface>
        </newparam>
        <newparam sid="IMG_0449_Rost_seamless_1K_TJ_png-sampler">
          <sampler2D>
            <source>IMG_0449_Rost_seamless_1K_TJ_png-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="IMG_0449_Rost_seamless_1K_TJ_png-sampler" texcoord="IMG_0449_Rost_seamless_1K_TJ_png"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="medieval_wood_diff_1k_quer_png-effect">
      <profile_COMMON>
        <newparam sid="medieval_wood_diff_1k_quer_png-surface">
          <surface type="2D">
            <init_from>medieval_wood_diff_1k_quer_png</init_from>
          </surface>
        </newparam>
        <newparam sid="medieval_wood_diff_1k_quer_png-sampler">
          <sampler2D>
            <source>medieval_wood_diff_1k_quer_png-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="medieval_wood_diff_1k_quer_png-sampler" texcoord="medieval_wood_diff_1k_quer_png"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Seil2_png-effect">
      <profile_COMMON>
        <newparam sid="Seil2_png-surface">
          <surface type="2D">
            <init_from>Seil2_png</init_from>
          </surface>
        </newparam>
        <newparam sid="Seil2_png-sampler">
          <sampler2D>
            <source>Seil2_png-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Seil2_png-sampler" texcoord="Seil2_png"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_012-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_012-surface">
          <surface type="2D">
            <init_from>Tex__1_012</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_012-sampler">
          <sampler2D>
            <source>Tex__1_012-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_012-sampler" texcoord="Tex__1_012"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__2_002-effect">
      <profile_COMMON>
        <newparam sid="Tex__2_002-surface">
          <surface type="2D">
            <init_from>Tex__2_002</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__2_002-sampler">
          <sampler2D>
            <source>Tex__2_002-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__2_002-sampler" texcoord="Tex__2_002"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__3-effect">
      <profile_COMMON>
        <newparam sid="Tex__3-surface">
          <surface type="2D">
            <init_from>Tex__3</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__3-sampler">
          <sampler2D>
            <source>Tex__3-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__3-sampler" texcoord="Tex__3"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__2_001-effect">
      <profile_COMMON>
        <newparam sid="Tex__2_001-surface">
          <surface type="2D">
            <init_from>Tex__2_001</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__2_001-sampler">
          <sampler2D>
            <source>Tex__2_001-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__2_001-sampler" texcoord="Tex__2_001"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_002-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_002-surface">
          <surface type="2D">
            <init_from>Tex__1_002</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_002-sampler">
          <sampler2D>
            <source>Tex__1_002-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_002-sampler" texcoord="Tex__1_002"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_009-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_009-surface">
          <surface type="2D">
            <init_from>Tex__1_009</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_009-sampler">
          <sampler2D>
            <source>Tex__1_009-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_009-sampler" texcoord="Tex__1_009"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_004-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_004-surface">
          <surface type="2D">
            <init_from>Tex__1_004</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_004-sampler">
          <sampler2D>
            <source>Tex__1_004-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_004-sampler" texcoord="Tex__1_004"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_011-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_011-surface">
          <surface type="2D">
            <init_from>Tex__1_011</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_011-sampler">
          <sampler2D>
            <source>Tex__1_011-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_011-sampler" texcoord="Tex__1_011"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_010-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_010-surface">
          <surface type="2D">
            <init_from>Tex__1_010</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_010-sampler">
          <sampler2D>
            <source>Tex__1_010-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_010-sampler" texcoord="Tex__1_010"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_003-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_003-surface">
          <surface type="2D">
            <init_from>Tex__1_003</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_003-sampler">
          <sampler2D>
            <source>Tex__1_003-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_003-sampler" texcoord="Tex__1_003"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_006-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_006-surface">
          <surface type="2D">
            <init_from>Tex__1_006</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_006-sampler">
          <sampler2D>
            <source>Tex__1_006-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_006-sampler" texcoord="Tex__1_006"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_008-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_008-surface">
          <surface type="2D">
            <init_from>Tex__1_008</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_008-sampler">
          <sampler2D>
            <source>Tex__1_008-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_008-sampler" texcoord="Tex__1_008"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_007-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_007-surface">
          <surface type="2D">
            <init_from>Tex__1_007</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_007-sampler">
          <sampler2D>
            <source>Tex__1_007-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_007-sampler" texcoord="Tex__1_007"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_005-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_005-surface">
          <surface type="2D">
            <init_from>Tex__1_005</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_005-sampler">
          <sampler2D>
            <source>Tex__1_005-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_005-sampler" texcoord="Tex__1_005"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__1_013-effect">
      <profile_COMMON>
        <newparam sid="Tex__1_013-surface">
          <surface type="2D">
            <init_from>Tex__1_013</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__1_013-sampler">
          <sampler2D>
            <source>Tex__1_013-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__1_013-sampler" texcoord="Tex__1_013"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__2_003-effect">
      <profile_COMMON>
        <newparam sid="Tex__2_003-surface">
          <surface type="2D">
            <init_from>Tex__2_003</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__2_003-sampler">
          <sampler2D>
            <source>Tex__2_003-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__2_003-sampler" texcoord="Tex__2_003"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
    <effect id="Tex__3_001-effect">
      <profile_COMMON>
        <newparam sid="Tex__3_001-surface">
          <surface type="2D">
            <init_from>Tex__3_001</init_from>
          </surface>
        </newparam>
        <newparam sid="Tex__3_001-sampler">
          <sampler2D>
            <source>Tex__3_001-surface</source>
          </sampler2D>
        </newparam>
        <technique sid="common">
          <phong>
            <diffuse>
              <texture texture="Tex__3_001-sampler" texcoord="Tex__3_001"/>
            </diffuse>
            <specular>
              <color sid="specular">0 0 0 1</color>
            </specular>
          </phong>
        </technique>
      </profile_COMMON>
    </effect>
  </library_effects>
  <library_materials>
    <material id="blue_painted_planks_diff_1k_png-material" name="blue_painted_planks_diff_1k_png">
      <instance_effect url="#blue_painted_planks_diff_1k_png-effect"/>
    </material>
    <material id="planks_brown_10_diff_1k_png-material" name="planks_brown_10_diff_1k_png">
      <instance_effect url="#planks_brown_10_diff_1k_png-effect"/>
    </material>
    <material id="Tex__1_001-material" name="Tex__1_001">
      <instance_effect url="#Tex__1_001-effect"/>
    </material>
    <material id="_587_Piraten_Flagge_TJ_png-material" name="_587_Piraten_Flagge_TJ_png">
      <instance_effect url="#_587_Piraten_Flagge_TJ_png-effect"/>
    </material>
    <material id="medieval_wood_diff_1k_png-material" name="medieval_wood_diff_1k_png">
      <instance_effect url="#medieval_wood_diff_1k_png-effect"/>
    </material>
    <material id="Holzplanken-material" name="Holzplanken">
      <instance_effect url="#Holzplanken-effect"/>
    </material>
    <material id="seil_geflochten_png-material" name="seil_geflochten_png">
      <instance_effect url="#seil_geflochten_png-effect"/>
    </material>
    <material id="SIREOLDM2_JPG-material" name="SIREOLDM2_JPG">
      <instance_effect url="#SIREOLDM2_JPG-effect"/>
    </material>
    <material id="rough_wood_Diff_1k_png-material" name="rough_wood_Diff_1k_png">
      <instance_effect url="#rough_wood_Diff_1k_png-effect"/>
    </material>
    <material id="IMG_0449_Rost_seamless_1K_TJ_png-material" name="IMG_0449_Rost_seamless_1K_TJ_png">
      <instance_effect url="#IMG_0449_Rost_seamless_1K_TJ_png-effect"/>
    </material>
    <material id="medieval_wood_diff_1k_quer_png-material" name="medieval_wood_diff_1k_quer_png">
      <instance_effect url="#medieval_wood_diff_1k_quer_png-effect"/>
    </material>
    <material id="Seil2_png-material" name="Seil2_png">
      <instance_effect url="#Seil2_png-effect"/>
    </material>
    <material id="Tex__1_012-material" name="Tex__1_012">
      <instance_effect url="#Tex__1_012-effect"/>
    </material>
    <material id="Tex__2_002-material" name="Tex__2_002">
      <instance_effect url="#Tex__2_002-effect"/>
    </material>
    <material id="Tex__3-material" name="Tex__3">
      <instance_effect url="#Tex__3-effect"/>
    </material>
    <material id="Tex__2_001-material" name="Tex__2_001">
      <instance_effect url="#Tex__2_001-effect"/>
    </material>
    <material id="Tex__1_002-material" name="Tex__1_002">
      <instance_effect url="#Tex__1_002-effect"/>
    </material>
    <material id="Tex__1_009-material" name="Tex__1_009">
      <instance_effect url="#Tex__1_009-effect"/>
    </material>
    <material id="Tex__1_004-material" name="Tex__1_004">
      <instance_effect url="#Tex__1_004-effect"/>
    </material>
    <material id="Tex__1_011-material" name="Tex__1_011">
      <instance_effect url="#Tex__1_011-effect"/>
    </material>
    <material id="Tex__1_010-material" name="Tex__1_010">
      <instance_effect url="#Tex__1_010-effect"/>
    </material>
    <material id="Tex__1_003-material" name="Tex__1_003">
      <instance_effect url="#Tex__1_003-effect"/>
    </material>
    <material id="Tex__1_006-material" name="Tex__1_006">
      <instance_effect url="#Tex__1_006-effect"/>
    </material>
    <material id="Tex__1_008-material" name="Tex__1_008">
      <instance_effect url="#Tex__1_008-effect"/>
    </material>
    <material id="Tex__1_007-material" name="Tex__1_007">
      <instance_effect url="#Tex__1_007-effect"/>
    </material>
    <material id="Tex__1_005-material" name="Tex__1_005">
      <instance_effect url="#Tex__1_005-effect"/>
    </material>
    <material id="Tex__1_013-material" name="Tex__1_013">
      <instance_effect url="#Tex__1_013-effect"/>
    </material>
    <material id="Tex__2_003-material" name="Tex__2_003">
      <instance_effect url="#Tex__2_003-effect"/>
    </material>
    <material id="Tex__3_001-material" name="Tex__3_001">
      <instance_effect url="#Tex__3_001-effect"/>
    </material>
  </library_materials>
  <library_geometries>
    <geometry id="_073Takelageholz1_0_9K_OK-mesh" name="0073Takelageholz1 0.9K OK">
      <mesh>
        <source id="_073Takelageholz1_0_9K_OK-mesh-positions">
          <float_array id="_073Takelageholz1_0_9K_OK-mesh-positions-array" count="2640">4.096275 -1.146764 1.001157 ...   HIER LIEGEN UNZÄHLIGE GEOMETRIE DATEN ....  1.137058 2.724982 -5.684546 1.139298 2.723041</float_array>
          <technique_common>
            <accessor source="#_073Takelageholz1_0_9K_OK-mesh-positions-array" count="880" stride="3">
              <param name="X" type="float"/>
              <param name="Y" type="float"/>
              <param name="Z" type="float"/>
            </accessor>
          </technique_common>
        </source>
        <source id="_073Takelageholz1_0_9K_OK-mesh-normals">
          <float_array id="_073Takelageholz1_0_9K_OK-mesh-normals-array" count="5928">0.03372699 -0.9994295 0.001769185 ...   HIER LIEGEN UNZÄHLIGE GEOMETRIE DATEN ....  -0.3747135 -0.1323949 0.9206841 -0.367168</float_array>
          <technique_common>
            <accessor source="#_073Takelageholz1_0_9K_OK-mesh-normals-array" count="1976" stride="3">
              <param name="X" type="float"/>
              <param name="Y" type="float"/>
              <param name="Z" type="float"/>
            </accessor>
          </technique_common>
        </source>
        <source id="_073Takelageholz1_0_9K_OK-mesh-map">
          <float_array id="_073Takelageholz1_0_9K_OK-mesh-map-array" count="9168">0.554894 0.1041238 0.5781096 0.08640754 ...   HIER LIEGEN UNZÄHLIGE GEOMETRIE DATEN .... 0.949736 0.4484052 0.937247 0.5943775 0.937247</float_array>
          <technique_common>
            <accessor source="#_073Takelageholz1_0_9K_OK-mesh-map-array" count="4584" stride="2">
              <param name="S" type="float"/>
              <param name="T" type="float"/>
            </accessor>
          </technique_common>
        </source>
        <vertices id="_073Takelageholz1_0_9K_OK-mesh-vertices">
          <input semantic="POSITION" source="#_073Takelageholz1_0_9K_OK-mesh-positions"/>
        </vertices>
        <triangles material="Holzplanken-material" count="1528">
          <input semantic="VERTEX" source="#_073Takelageholz1_0_9K_OK-mesh-vertices" offset="0"/>
          <input semantic="NORMAL" source="#_073Takelageholz1_0_9K_OK-mesh-normals" offset="1"/>
          <input semantic="TEXCOORD" source="#_073Takelageholz1_0_9K_OK-mesh-map" offset="2" set="0"/>
          <p>64 0 0 ...   HIER LIEGEN UNZÄHLIGE GEOMETRIE DATEN .... 367 176 4583</p>
        </triangles>
      </mesh>
    </geometry>
    <geometry id="A00000Cube-mesh" name="A00000Cube">
      <mesh>
        <source id="A00000Cube-mesh-positions">
          <float_array id="A00000Cube-mesh-positions-array" count="24">-1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1</float_array>
          <technique_common>
            <accessor source="#A00000Cube-mesh-positions-array" count="8" stride="3">
              <param name="X" type="float"/>
              <param name="Y" type="float"/>
              <param name="Z" type="float"/>
            </accessor>
          </technique_common>
        </source>
        <source id="A00000Cube-mesh-normals">
          <float_array id="A00000Cube-mesh-normals-array" count="18">-1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 0 0 1</float_array>
          <technique_common>
            <accessor source="#A00000Cube-mesh-normals-array" count="6" stride="3">
              <param name="X" type="float"/>
              <param name="Y" type="float"/>
              <param name="Z" type="float"/>
            </accessor>
          </technique_common>
        </source>
        <vertices id="A00000Cube-mesh-vertices">
          <input semantic="POSITION" source="#A00000Cube-mesh-positions"/>
        </vertices>
        <triangles count="12">
          <input semantic="VERTEX" source="#A00000Cube-mesh-vertices" offset="0"/>
          <input semantic="NORMAL" source="#A00000Cube-mesh-normals" offset="1"/>
          <p>1 0 2  HIER LIEGEN UNZÄHLIGE GEOMETRIE DATEN 3 5 1 5 5 5</p>
        </triangles>
      </mesh>
    </geometry>
  </library_geometries>
  <library_visual_scenes>
    <visual_scene id="Scene" name="Scene">
      <node id="_073Takelageholz1_0_9K_OK" name="_073Takelageholz1_0_9K_OK" type="NODE">
        <matrix sid="transform">-6.56362e-7 2.090881 3.15714e-7 0 2.090881 6.56362e-7 7.73981e-14 0 2.17098e-14 -3.15714e-7 2.090881 0 0 0 0 1</matrix>
        <instance_geometry url="#_073Takelageholz1_0_9K_OK-mesh" name="_073Takelageholz1_0_9K_OK">
          <bind_material>
            <technique_common>
              <instance_material symbol="Holzplanken-material" target="#Holzplanken-material">
                <bind_vertex_input semantic="UVChannel_1" input_semantic="TEXCOORD" input_set="0"/>
              </instance_material>
            </technique_common>
          </bind_material>
        </instance_geometry>
      </node>
      <node id="A00000Cube" name="A00000Cube" type="NODE">
        <matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
        <instance_geometry url="#A00000Cube-mesh" name="A00000Cube"/>
      </node>
    </visual_scene>
  </library_visual_scenes>
  <scene>
    <instance_visual_scene url="#Scene"/>
  </scene>
</COLLADA>


Was man gut erkennt ist die Collada Versions Nummer 1.4.1 in Zeile 2. Die Datei muss also zu dieser Syntaxbeschreibung kompatibel sein.
Das nächste Problem stellt der Firestorm Viewer dar. Der muss auch diese Collada Versions Nummer der DAE Datei unterstützen.

Hinzu kommt: Collada beschreibt wie man was für den Transport deklariert, aber nicht was alles an Funktionen von den Plattformen unterstützt werden muss.
Tatsächlich nutzt jedes Geometrie System nur Teile des Collada Umfangs, denn Collada ist ein reines Transport Format.
Es sagt nichts darüber aus was die Import Software danach damit anfangen kann.

Zurück zu Praxis: Wenn der "Fehler beim DAE Parsen" auftritt kann es sich also auch um Inkompatibilitäten der Funktionsnutzung zwischen Quellsystem( hier Blender) und Zielsystem ( Hier Firestorm) handeln.

Nachschauen kann man die Fehler im Protokoll "Firestorm.logs" welches sich sich im verborgenen Teil von Windows befindet:
   C:\Users\USERNAMEN\AppData\Roaming\Firestorm_x64\logs

Hier ein Ausschnitt dieser Datei beim Ladeabbruch eines Meshes mit "Fehler beim DAE Parsen":
Code:
2022-08-05T10:30:06Z WARNING # newview/llfloatermodelpreview.cpp(2034) LLFloaterModelPreview::onPermissionsReceived : Upload permission set to true but uploadModelUrl is empty!
2022-08-05T10:30:06Z INFO # llprimitive/lldaeloader.cpp(963) LLDAELoader::OpenFile : Collada Importer Version: 1.4.1
2022-08-05T10:30:06Z INFO # llprimitive/lldaeloader.cpp(973) LLDAELoader::OpenFile : Dae version 1.4.1
2022-08-05T10:30:06Z INFO # llprimitive/lldaeloader.cpp(1092) LLDAELoader::OpenFile : Importing 0092WantenvorneOBEN15 model with 1 material references
2022-08-05T10:30:06Z INFO # llprimitive/lldaeloader.cpp(1099) LLDAELoader::OpenFile : 0092WantenvorneOBEN15 references Seil2_png-material
2022-08-05T10:30:06Z INFO # llprimitive/lldaeloader.cpp(1132) LLDAELoader::OpenFile : Collada skins processed: 0
2022-08-05T10:30:06Z INFO # llprimitive/lldaeloader.cpp(2099) LLDAELoader::processElement : Negative scale detected, unsupported transform.  domInstance_geometry: _092WantenvorneOBEN15
2022-08-05T10:30:06Z INFO # llprimitive/lldaeloader.cpp(2122) LLDAELoader::processElement : Negative scale detected, unsupported post-normalization transform.  domInstance_geometry: _092WantenvorneOBEN15
2022-08-05T10:30:06Z INFO # llprimitive/lldaeloader.cpp(1151) LLDAELoader::OpenFile : Scene could not be parsed

Ursache des Abbruches scheint diesmal tatsächlich ein Spiegeln im Objekt Modus gewesen zu sein. Es handelt sich um die Wanten des Segelschiffes welches ja spiegelsymetrisch ist.
"Negative scale detected, unsupported Post- Normalisiation"
Ein Versuch das Mesh manuell wieder zu bereinigen scheitert, da die Fehler nicht in der Dreickstruktur liegen, sondern Teil der unsichtbaren Beschreibung der Meshelemente sind.

Fehlerbehebung in diesem Falle:
Zuerst geht man in den ObjektModus, und erstellt eine neues Meshelement (z.bsp Würfel). Dieses hat nun automatisch korrekte Beschreibungen.
Der Trick besteht nun darin das defekte Mesh dazu zu bringen diese korrekten Beschreibungen zu übernehmen. Dazu wählt man im Objekt Modus zunächst das defekte Meshobjekt und danach das Intakte an.
Nun geht man auf Verknüpfen. Am Namen des resultiernden verknüpften Objektes sieht man den Erfolg. Es soll der Name des Würfelobjektes stehen bleiben.
Nun schaltet man in diesem Objekt in den Edit Modus, und selektiert alles. Nun klickt man auf den "Mesh - Normals - Recalculate Outside" Befehl. Danach selektiert man die Flächen des Hilfswürfels und löscht diese.
Nun ist das Meshobjekt repariert und kann exportiert und geladen werden.


Daher folgt nun einen loose Sammlung an Fehlern die mir in dieser Kategorie bisher aufgefallen sind:

FEHLER: In Blender wurden Objekte im Objektmodus gespiegelt. Dies führt dazu das in der DAE Datei die Geometrie Achsen nicht mehr in der geforderten Ausrichtung liegen, was Firestorm nicht verkraftet.
Abhife: In Blender nie im Objektmodus spiegeln, sondern im Editmodus alle Dreiecke anwählen, und diese Spiegeln. Dann belieben die Bezugsachsen gleich, aber die Dreiecke liegen dazu gespiegelt. Aber nach einem Spiegeln im edit Modus sind immer die Normalen auch gespiegelt, udn daher falsch. Das ist aber schnell behoben: Unbedingt die Auswahl des vorherigen Spiegelns belassen, dann die Befehle "MESH - Normals - Flip Normals" wieder im editmodus anwenden. danach passt alles.


FEHLER: ungültige Syntax.
Typischerweise wurden bei der Objektbenamung Sonderzeichen verwendet die in XML / Collada nicht innerhalb Textfeldern zugelassen sind.
Abhilfe: Meshobjekte Umbenennen und auf Sonderzeichen verzichten. Die Umbenennung kann sowohl in Blender oder auch dae datei mittels XML Editor erfolgen.
Im XML Eeditor muss man aber alle Stellen finden wo der ungültige Name vorkommt.
Beispiel:  
         <geometry id="A00000Cube-mesh" name="A00000Cube">
         <node id="A00000Cube" name="A00000Cube" type="NODE">
        .....
Oft ist es einfacher das in Blender zu korrigieren und neu zu exportieren


FEHLER: Gleichlautende Namen von Meshobjekten
Eine häufige Fehlerursache sind gleichlautende Namen in verschiedenen Meshobjekten eines Linksets.
Das führt dazu das Firestorm nur bis zum ersten Mal des Auftretens des Linknamens sucht, und die Weiteren nicht findet.
Abhilfe: In Blender Umbenennen und Leerzeichen entfernen.
Man sucht in Blender nacheinander alle Einträge für Meshobjekte ab und ändert gleichlautende Namen.
Dabei gilt es zu beachten das beim Export nur der linke Namensteil verwendet wird bis zum ersten Leerzeichen.
Alles hinter einem Leerzeichen wird abgeschnitten ud verschluckt.
Ist der Linke Teil gleich, und die Unterschiede erst nach dem Leerzeichen vorhanden, dann kommt es zu diesem Fehler.
Beispiel: Meshobjekt1 Name: "Haus Wand1" und Meshobjekt2 Name: "Haus Wand2" würden zu diesem Fehler führen.
Dagegen wären  Meshobjekt1 Name: "Haus_Wand1" und Meshobjekt2 Name: "Haus_Wand2" korrekt.
Also am besten Leerzeichen nicht für die Namensbezeichnung in Blender verwenden, und auf Eindeutigkeit achten.
Nun wieder zu Arbeitspunkt 1 unseres Workflows.


FEHLER: Korruptes Mesh.
In diese Kategorie fallen zuerstückelte Meshes was man meist erst auf den 3. Blick erkennt.Da ist Reparatur per Hand nötig.
Suche nach geometrischen Fehlern, oft ist Dopplungen von Teilen des Meshes vorhanden (wie Linien, Punkte Dreiecke), oder aber die Verbindungen sind gestört, verdreht, unterbrochen , etc.
Ein pauschales Rezept zu Abhilfe ist mir bisher nicht bekannt.
Vielmehr ist es ein Testen verschiedener Befehle ob das Problem damit bereinigt wird. Dabei unbedingt vorab immer Backups machen.
Beispiel: Ein simples Mesh bestehe aus 4 Dreiecken, die jeweils an der Kante des zentralen Mitteldreiecks liegen. Das sieht vordergründig alles gut aus.
Aber tatsächlich ist das mittlere Dreieck nicht/oder nur teilweise mit den anderen 3 Umliegenden verbunden. Es hat unabhängige Flächen, Kanten oder Punkte die nur genau über den Anderen liegen.
In der Folge hat die Fläche ein Loch, da ja ein Dreieck fehlt. Nun gut ein Loch ist verschmerzbar, aber wenn es mehr werden, klappt der Upload bei der Physikberechnung nie mehr, und dauert ewig bis zum Abbruch.

Befehle die ich zum Reparieren verwenden:

Was manchmal hilft ist im Edit Modus alles auszuwählen, auf "Punkt" zu gehen und verbinden "Merge Verticles" anzuschalten.
Oft werden dann zerrissene Meshstrukturen wieder verbunden, und Dupletten vereinigt.
Wenn man mit Mesh - CleanUp - Limited Disolve" und einem kleinen Wert "1" repariert wird, ist manchmal danach die Fläche wieder intakt.

Weitere Nützliche Befehle:
"Mesh - CleanUp - Delete Loose"
"Mesh- CleanUp - Limited Disolve" "1" -- Dieser Befehl berechnet die Meshhülle neu und beachtet das es danach keine Winkel kleiner als das hier gewählte 1° zwischen Dreiecken gibt. Das reduziert oft auch die Dreieckszahl sowie die Flächenzahl gewaltig, aber kann die Texurorientierung zerstören. Oft muss danach neu texturiert werden.
"Merge Verticles" -- Der Befehl wird nach Auswahl aller Dreiecke durch einen Klick auf die Geometrieachsen ausgelöst. Er verbindet Punkte, Linien und Flächen die gemeinsame Koordinaten haben zu einer Struktur. In diesem Fall sieht man den den Erfolg des Befehls daran, das der Mittelpunt (Achsen/Curso) des Meshes umspringt. Das führt oft zu schliessen von unsichtbaren Löchern im Mesh. Es reduziert die Komplexität, und die Anforderungen an die Physikberechnung.
"Mesh Verticles - Remove Doubles" -- Ähnlich wie davor, jedoch mit expliziter Entfernung von übereinander liegenden doppelten Punkten, Linien, Flächen.
"Mesh - Normals - Recalculate Outside" -- Es wird versucht die gesamte Dreieckshülle bezüglich Text Ausrichtungs-Normalen neu zu berechnen. Geht es gut, so zeigen danach alle Dreiecke nach aussen. Oder anders gesagt sieht man von aussen bertrachtet eine komplette Hülle. Anwendung z.Bsp: Ein Globus der von aussen betrachtet wird.
"Mesh - Normals - Recalculate Outside" -- Dieser Befehl macht das gleiche wie der vorherige, nur liegen die Texturierten Flächen nun nach innen gewandt. Anwendung z.Bsp: Eine Weltraumspähre über der innen befindlichen Raumstation.
ebenso kann man weitere Befehle unter "Mesh - CleanUp - XXXX" testen

Wenn alles nichts hilft kopiere ich das defekte Meshelement und rekonstuiere die defekten Partien.
Oft kommen diese Fehler durch Konvertierungen auds anderen Grafikformaten.

FEHLER: Nicht alle Dreiecke einer Meshfläche haben gleiche Textur Ausrichtung (Normalen).
Hintergrund: Anders als in Blender und Collada Format kann unser Simulator nicht beidseitig texturiere Dreiecke verarbeiten.
Auch kommt es beim Editieren vor das manche Flächen falsche Normalen erhalten, wenn Blender durcheinander kommt was Innen und Aussen in einer Form ist.
Dies macht beim Hochladen bei der Physik Berechnung Ärger, und verhindert oft den erfolgreichen Upload.
Abhilfe: Meshobjekt anwählen und in den Edit Modus gehen.
Manuell: Cursor Anzeige auf "Normalen" stellen. Nun Dreiecke auswählen und schauen welche Normalen falsch liegen. Nur diese anwählen und Fehler durch "Mesh - Normals -Flip Normals" bereinigen.
Automatisch mit Risiko: alle Flächen anwählen und mit  "Mesh - Normals - Recalculate Outside" Aussenhüelle richtig berechnen lassen.


FEHLER: Missing Physical Blocks:
Die Lage der Dreiecke erlaubt keine physik Hüllen Berechnung.
Oft auch deswegen weil einige Dreiecke eines Körpers die falsche Texturausrichtung (nach innen) aufweisen.
Abhilfe1: Mesh reparieren.
Abhilfe2: Physikberechnung austricksen mit Phyikeinstellug "Würfel" oder obigen "Würfel DAE Datei".


FEHLER: Unterschreiten oder Überschreiten der im Simulator zulässigen Strukturgöße
Ein weiterer Fehler beim Upload ist etwas ganz banales. So gibt es im Simulator in der Opensim.ini Werte für minimale und maximale Strukturgrößen.
Diese minimale Strukturgröße wird auch oft unterschritten wenn beisielsweise beide Seiten eines Segels sichtbar sein sollen aber in einem Meshobjekt liegen.
Das Objekt ist schlicht zu schmal in der Segeldicke.
Abhilfe: Da würde erst ein Skalieren auf höhere Dicke einen Upload erlauben.
Durch andere Aufteilung - z.Bsp. in mehrere Meshobjekte für Vorder- und Hinterseite kann das umgangen werden.


FEHLER: Upload klappt nicht aber kein Fehler gefunden
Wie schon oben geschrieben könne XML Versions Unterstützung von Viewern und Simulatoren je nach Version abweichen.
Manchmal hilft es einfach einen anderen Viewer oder Simulator zu verwenden.
So lange es sich um nicht geriggtes Mesh handelt, hat sich bei mir Singulatity auf einem 0.8.1 Testgrid deutlich besser geschlagen, als aktuelle Firestorm Versionen bei einem 0.9.x Grid.
Aber das hängt sogar vom Betriebssystem (.NET Version bzw Mono) ab.
Ausserdem haben einige Firestorm Versionen einen SL BUG und limitieren bei uns größere Objekte, obwohl das Grid das erlaubt.



Dieser Artikel "lebt" und wird erweitert sobald neue Erkenntnisse vorliegen.

Drucke diesen Beitrag

  Nutzung der Kalenderfunktion im Forum
Geschrieben von: ThunderTower - 03.08.2022, 08:40 - Forum: Informationen und aktuelle Meldungen - Antworten (3)

Nutzung der Kalenderfunktion im Forum!

Aufgrund der Vielzahl von Veranstaltungen ist die Nutzung der Kalenderfunktion vom Forum (rechts oben) interessant.

Hier lassen sich übersichtlicher alle Veranstaltungen eintragen. Die meisten Termine greifen erst nach 2 oder 3 Tagen, sind aber

unter Neueste Threads oder Neueste Beiträge nicht mehr sichtbar.

Wichtige Veranstaltungen die NICHT erfasst, werden leicht verpasst:-)

   

Drucke diesen Beitrag

  Grids Hopper Nights
Geschrieben von: Rudi Bakerly - 31.07.2022, 16:46 - Forum: Termine und Veranstaltungen in Opensim - Antworten (10)

Ich darf euch heute im Namen aller teilnehmenden Grids eine neue Eventreihe vorstellen : Grid Hopper Nights

Ziel der Eventreihe ist es Donnerstag bis Sonntag verschiedene DJ´s aus verschiedenen Grids an verschiedenen Locations auftreten zu lassen.
Los gehts schon am 04.08.2022. Nähere Infos folgen.

   

" So ein Tag so wunderschön wie heute "

Drucke diesen Beitrag

  Linknummer Erkennung anhand des Primnamens
Geschrieben von: Tron Mcp - 31.07.2022, 11:58 - Forum: Scripting - Keine Antworten

Linknummer Erkennung anhand des Primnamens

Wenn man von einem Script aus mehrere Links bearbeiten will, so erfolgt dies üblicherweise über die Linknummern.

Diese Hilfsroutine ermittelt die aktuelle Linknummer eines Links anhand dessen bekannten Linknamen.
Sie durchsucht dazu das gesamte Linkset bis zum ersten Auftreten dieses Namens, und meldet Treffer als Linknummern zurück.
Wird kein Treffer erzielt, wird 0 zurück geliefert, was keine aktuelle Linknummer darstellt.


Anwendungsbeispiel:
Der Auspuff eines Motorrades soll Rauchen, der Scheinwerfer Licht an/aus schalten.
Ein zentrales Hauptscript soll diese Aktion aus dem Rootprim heraus mitsteuern.

Dies erfordert die genaue Kenntnis der Linknummer die angesprochen werden soll.
Letztere ändert sich ggf. wenn links hinzukommen oder abgteilt werden.

Manchmal ändern sich die Linknummern in Opensim auch selbstständig, oder werden sogar bei manueller Abfrage falsch angezeigt.
Dies ist ein BUG, der aber richtig nerven kann. Das hat mich dazu gebracht diese Routine zu schreiben, die den Fehler umgeht.

Code:
// Linkermittlung by Tron 31.07.2022
// Ermittelt die aktuelle Linknummer eines Links anhand dessen bekannten Linknamen

string  linkname1 = "prim2";    // Name des gesuchten Prims
integer link1;                  // Rückgemeldete Linknummer zu obigen Namen


// Ermitteln der aktuellen Linknummer in allen verknüpften Prims des Linksets, anhand des Linknamens.
// Rücklieferung der Linknummer wenn der Linkname gefunden wird, ansonsten Rückgabe von 0 wenn kein Treffer erzielt wurde.
integer getlink(string linkname)
{
    integer linknummer = llGetNumberOfPrims();
    do
    {
        if (linkname == llGetLinkName(linknummer)) { return (linknummer);}
        linknummer--;
    }
    while (linknummer > 0);
    return (0);
}


default
{
    state_entry()
    {
        link1 = getlink(linkname1);             // Nach dem Linknamen suchen
        if(link1 > 0) llSay(0, "das Prim mit dem Namen "+ linkname1 + " hat aktuell die Linknummer " +(string)link1);
        else llSay(0, "das Prim mit dem Namen "+ linkname1 + " wurde nicht gefunden. Prüfe bitte auch auf Gross/Kleinschreibung und Leerzeichen im Linknamen");
    }
   
   
    touch_start(integer touched)  { llResetScript(); }
}

Drucke diesen Beitrag

  Richi´s Music-Call - Thread wurde geschlossen!
Geschrieben von: ThunderTower - 30.07.2022, 17:07 - Forum: Informationen und aktuelle Meldungen - Keine Antworten

Der Thread Donnerstag - Richi´s Music-Call wurde auf Wunsch geschlossen.

Weitere Änderungswünsche oder Benutzer- Löschung bitte per IM an mich.

Drucke diesen Beitrag

  Laufwerksüberwachung für Intel RAID Controler einrichten
Geschrieben von: Tron Mcp - 29.07.2022, 13:57 - Forum: Serversoftware - Keine Antworten

Installation und Konfiguration von Intel Rapid Storage Management für Windows Rechner

Im Artikel "Verhalten bei RAID Fehlern" habe ich den in fast allen Intel Business Chipsätzen vorhandenen Intel RAID Controller angesprochen.
Im Nachgang habe ich darauf verwiesen das Laufwerke überwacht gehören um Datenverlust Gefahr schon im Ansatz zu erkennen.

Nun hier die Beschreibung wie man das konkret einrichtet.

1. Nach einem Check ob das Mainbord Intel RAID unterstützt wissen wir ob diese Installation lohnt.
Infos können beim Hersteller des Mainbords, dem Handbuch oder im BIOS selber über die Option ein Raidmodus zu aktivieren erhalten werden.

Vorbereitung bei Neuinstallation:
Den RAID Modus im Motherboard BIOS umzustellen NUR VOR DER BETRIEBSSYSTEM INSTALLATION VORNEHMEN!
Erst wird der RAID Modus für SATA aktiviert, danach das RAID angelegt.
Nun erfolgt die (Windows) Betriebssystem Installation. ( Nur dafür geht der Intel RAID Modus)
Danach suchen wir im Netz direkt den "intel rapid storage" Treiber und holen uns den von der Original Intel Seite.

Stand 07.2022 für WIN10 und 11 war dieser Link aktuell:
https://www.intel.com/content/www/us/en/...forms.html

Wir wählen SetupRST.exe

Es gibt den aber auch für andere Windows Versionen.

Diesen installieren wir nun. Im Fenster Rechts Unten kommt ein neues Icon hinzu:
"Intel Rapid Starage Technologie für Unternehmen".

Ein Rechtsklick darauf zeigt uns 4 Optionen. Wir klicken auf "Anwendung öffnen".

Bei einem bereits installierten RAID erscheint ein ähnliches Bild: Storage Technology Driver Installation Softwa
Intel® Rapid Storage Technology Driver Installation Softwar
   

Man kann aber RAIDS auch hier drinnen anlegen (sofern das BIOS richtig eingerichtet ist).

Ein kurzer Check der Einträge zeigt uns in welchem Zustand die Laufwerke und das RAID sind.
In diesem Falle haben in ein RAID1 (sehen wir unter Volumes) das aus 2 SATA SSDs je 466GB besteh.
Es ist normal das etwas der Laufwerks Kapazität für das RAID als Verwaltungsinstanz genutzt wird.

Rechts unter Volume Eigenschaften ist der wichtigste Eintrag: "Initialisiert: JA"
Das zeigt uns das das RAID nach dem Anlegen bereits eine Spiegelung der Hauptplatte auf das 2. Laufwerk komplett durchgeführt hat.

Diese dauert nach dem Anlegen eines RAID Verbundes je nach Laufwerksart und Größe bis zu mehrere Stunden, und wird im Hintergrund durchgeführt. ABER: Solange die nicht abgeschlossen ist, besteht keine Datensicherheit.

Im Fehlerfalle (Ausfall / oder Abwesenheit eines Laufwerkes) wird dieser Eintrag auf "Degraded" heruntergesetzt.
Sobald eine Reparatur stattfindet wird das unten unter "informationen" mit "Rebuild xx" angezeigt, zusammen mit einem Prozentsatz der Wiederherstellung.



Einrichten der Benachrichtigung:

Wir gehen nun auf "Voreinstellungen" und sehen folgendes Bild:
 
   

Dies beschreibt wann Meldungen im Bildschirm angezeigt werden. Das ist bei einer Workstation sinnvoll wo jemand real davor sitzt.

Bei einem Server der still vor sich hinläuft bringt dies nichts. daher gehen wir nun auf "E-MAIL":

   

Hier stellen wir die MAIL Parameter für die Benachrichtigung ein:

Zunächst benötigen wir einen MAIL Server (Dienst) den wir per SMTP ansprechen können.
Dessen SMTP Adresse wird nun eingetragen. Ihr müsst eventuell bei eurem Mailprovider nachsuchen wie dieser Eintrag lautet.

Dann benötigen wir ein EMAIL Account auf obigen Server in dessen Name die Benachrichtigungs Mail abgesendet wird.
(Dies kann auch die Gleiche sein wie die Empfangs Adresse, sofern man sich selber MAILS senden darf.)

Nun kommt noch die EMAIL Adresse des zu benachrichtigenden Admins hinein.
Man kann hier bis zu 3 Empfänger oder Gruppenaccounts eintragen.

Nun ist das wichtigste ein Test der Parameter. Wir drücken auf "Test E-MAil senden" und prüfen den Empfang.
Klappt dieser gehen wir auf "Änderungen Übernehmen"

Nun sollten wir nicht mehr blind sein was Laufwerks Probleme angeht

Tron

Drucke diesen Beitrag

  Verhalten bei RAID Fehlern
Geschrieben von: Tron Mcp - 29.07.2022, 12:54 - Forum: Serversoftware - Keine Antworten

Was mache ich bei auftretenden RAID Fehlern?
Was ist wichtig zu beachten damit die Daten nicht verloren gehen?


Den folgenden Artikel widme ich meinen Kollegen die im Spätdienst auf sich alleine gestellt sind, und Unterstützung bei RAID Fehlern benötigen.



Es gibt bei RAID Problemen meist nur einen Versuch. Wenn der misslingt sind die Daten verloren.

Erster Check: Läuft der Server / Rechner noch und sind die Daten zugreifbar?
     nein:  EXPERTEN BEIHOLEN!!!!!, Backup suchen, und gegebenenfalls gegen Überschreiben sichern.
     ja:      DATEN EXTERN SICHERN!!!!!!! bevor irgendwelche Arbeiten gemacht werden



Grundlagen zum Verständnis

Arten von RAID CONTROLLERn:

Raid Controller treffen wir in unseren Systemen in 3 gängigen Arten an:

- Hardware Raid Controller (LSI, Adaptec, ...) : 

Zum Beispiel als Steckkarte, oder auf dem Motherboard aufgelötet. Typische Vertreter: LSI, Adapec,...

Eigenschaften: Das Management der Daten, die Berechnung der Parity, die Verteilung der Daten auf den Laufwerken managt der Raid Controller selbstständig. Nach aussen hin ( zum Betriebssystem) erscheint ein eingerichteter Raid Verbund als ein physikalisches Laufwerk.
Da diese Raid Umsetzung "auf BIOS Level" geschieht sind diese Laufwerke unter allen Betriebssystemen nutzbar.

Die Performance des Gesamt RAID Systems hängt sehr stark von verwendeten Controller und dem eingesetzten RAID Lavel ab.
Tendenziell sind diese Controller viel langsamer als "primitive" Software Raids, aber haben die höchste Ausfall Sicherheit.
Gute RAID Controller haben Batterie Puffer ihrer RAM Caches damit sie keinen Datenverlust bei Stromausfall erleiden.

Negativ: RAID Settings werden gerne im RAID Controller gespeichert,
Bei defekten Raid Controllers ist ein Umzug des Raid auf einen baugleichen Controller fast unmöglich.
Auf andere Boards oder Controller Typen können RAIDS fast nie ohne kompletten Datenverlust umgezogen werden.

IM FEHLERFALL:
Das Management Interface kann im Fehlerfall über Shortcut beim Startzeitpunkt des BIOS erreicht werden.
Des weiteren haben solche hochwertigen Raid Controller auch ein in Windows installierbares Raid Management Tool anzubieten.

Was im Fehlerfall davon genutzt wird hängt von der Situation ab.

Das BIOS Tool geht immer, aber ist evt. kryptisch zu bedienen. Es gibt aber verläßliche Auskunft über RAID Typ, Status,
und bietet Anzeigen welche Platte defekt ist.

Hardware Raid Controller können üblicherweise Hot Spare Platten unterstützen (sofern Anschlüse frei sind). Genaueres später bei Erklärung der RAID Level.

Shortcuts im BIOS Modus: Control A (Adaptec) und Control C (LSI SAS Controller ) gesichtet. Es gibt aber keinerlei Norm.
Software Tools sind besser grafisch aufbereitet, sind aber häufig nicht auf betreffenden Rechnern installiert.


- OnChip Raid (Intel):

Bisher nur als integrierte Lösung von Motherboard Chipsätzen gesichtet. Dafür auf fast jeden Motherboard mit Intel Business Chipsatz der letzten 10 Jahre verfügbar.

Dieses weit verbreitete Raid System scheint eine Mischung aus Hard und Software RAID zu sein.
Kennzeichen: Es gibt im Bios ein Management Interface meist das mit Control I  aufgerufen werden kann.
Aber: Als Raid werden die Platten nur in Windows nach Installation eines Raid Treibers angezeigt.
Installiert man Linux so ist ein vorher im Controller angelegter Raid Verbund wieder als einzel Festplatten zu sehen.
Fazit: Software unterstützes Raid mit Bios Management Interface

Positiv: Umzug auf ein Board mit baugleichen Controller sollte möglich sein, da Raid Infos offenbar auf der Platte gespeichert werden.
Aber Vorsicht. Andere Möglichkeiten sind zu bevorzugen! Siehe später.

IM FEHLERFALL:
Das Management Interface kann im Fehlerfall über Shortcut Control I  beim Startzeitpunkt des BIOS erreicht werden.
In dem Management Tool gibt es eine Rebuild Funktion, sowie dei Möglichkeit das Raid zu degraden.


- Software Raid (z. Bsp: Microsoft):

Server Betriebssysteme bieten die Möglichkeit ein sehr performantes Software Raid einzurichten.
Letztendlich ist jedes NAS auch nichts anderes, nur meist auf Linux Basis.

Negativ: Bei einem Ausfall des Betriebssystemes kann auf das Raid nicht mehr zugegriffen werden




RAID LEVEL:

RAID 0:
Nutzungsart: Festplatten werden nur additiv zur Vergrößerung der Kapazität und der Datenrate vewendet.

Plattenzahl: Mindestens 2, können aber auch viel mehr sein. Begrenzung der Anzahl durch Controller, Anschlüsse, IDs.

Datenzugriff: Das Schreiben und Lesen der Daten erfolgt jeweils Blockweise abwechselnd auf die zum RAID0 verbundenen Platten.
Die Daten werden dadurch geichmäßig auf alle Laufwerke verteilt, und haben keinerlei Redundanzen oder Sicherung.

Datenrate: Sofern der Controller oder die Anbindung nicht beschränkt,
erfolgt eine Multiplikation der Laufwerks Datenrate und der Laufwerks Kapazität mit der Anzahl der Laufwerke.

Auswirkung des Defektes eines Laufwerks: Totaler Datenverlust
Reparaturmöglichkeit zur Rettung der Daten: Keine ( ausser kostenpflichtige Daten Rettungs Anbieter)

Vorsorge: Anderen RAID Level verwenden, je nach Anforderung.
bei Anforderung Datenrate: RAID10 einsetzten
bei Anforderung Kosten: RAID 5 einsetzten.


RAID1:
Nutzungsart: Exakte Spiegelung jeweils zweier Laufwerke

Plattenzahl: 2

Datenzugriff: Schreiben erfolgt auf beide Platten parallel. Lesen bei guten Controllern alternierend und Bandbreiten additiv.

Datenrate: Beim Schreiben die einfach Schreibrate eines Laufwerks, beim Lesen annähernd die Summenrate beider Laufwerke.

Auswirkung des Defektes eines Laufwerks:  Controller meldet RAID degraded, aber der Rechner läuft ohne Einbruch der Datenrate unbeirrt weiter.

Reparaturmöglichkeit zur Rettung der Daten: Sehr gut.
Solange ein Laufwerk noch intakt ist, sind die Daten komplett in Ordnung.

Reparaturmöglichkeit: Solange ein Laufwerk noch intakt ist, muss nur das Defekte durch ein (möglichst baugleiches, oder größeres)
Laufwerk ersetzt werden. Die meisten Controller erkennen das und starten den Rebuild Modus automatisch.
ansonsten mit dem Shortcut beim Booten in das Controller BIOS wechseln, und den rebuild Prozess anstossen.

Anleitung: Rechner herunter fahren. (So bleibt die Installation der noch intakten platte immer Fehlerfrei- auch wenn das falsche Laufwerk gezogen wurde). Ein Laufwerk abklemmen (entnehmen etc), und mit dem Anderen starten.

Da beide Platten identisch sind muss nur die defekte gefunden, und durch eine möglichst baugleiche ersetzt werden. Bitte wenn es geht dafür den Rechner aber ausschalten. Dies hat den Vorteil das man selbst beim versehenlichen Ziehen der falschen Platte die Intakte nicht "ungültig" macht. Raid Controller schreiben üblicherweise Zeitstempel, und erkennen so die "zuerst weggeflogene" Platte eines Verbundes, und erklären die ggf. für ungültig.

Je nach verwendeter Laufwerksart kann man bei manchen auch angeschaltet "on the fly" defekte Laufwerke austauschen, was man nur tun sollte wenn die Datenversorgung durchlaufen muss.


RAID5:
Nutzungsart: Festplatten werden additiv zur Vergrößerung der Kapazität und der Datenrate vewendet. Jedoch wird eine Platte zusätzlich für Parity verwendet um den Ausfall genau eines Laufwerkes ohne Datenverlust zu überstehen.

Plattenzahl: Mindestens 3, können aber auch viel mehr sein. Begrenzung der Anzahl durch Controller, Anzahl der physikalischen Anschlüsse oder anzahl freier IDs.

Datenzugriff: Das Schreiben und Lesen der Daten erfolgt über alle zum Raid5 verbundenen Platten quasi gleichzeitig da jede Platte nur Teile der Information enthält. Die Daten werden dadurch geichmäßig auf alle Laufwerke verteilt. Datenrettung von einzelnen Laufwerken ist nicht möglich. 

Datenrate: Sofern der Controller oder die Anbindung nicht beschränkt, erfolgt Erhöhung der Laufwerks Datenrate gegenüber einem Einzellaufwerk.
Aber der Datendurchsatz wird durch die (Paritäts Berechnung und Fehlerkorrektur) Rechenarbeit des Controllers stark begrenzt.
In der Praxix sind RAID5 mit Abstand die langsamsten Raid Verbünde.
Auch wirkt sich stark aus wenn Latenzen und Datenraten der Laufwerke unterschiedlich sind, und dies nicht ein Cache ausgleichen kann.

Auswirkung des Defektes eines Laufwerks: Raid wird "degraded" und noch langsamer. Fällt mehr als eine Platte aus sind alle Daten verloren.

Reparaturmöglichkeit zur Rettung der Daten:
1. Ruhe Bewahren und zunächst eine komplette Datensicherung extern durchführen.

2. Danach prüfen ob die Möglichkeit besteht ein neues Laufwerk zusätzlich mit anzuschliessen und als "Hot Spare" zu definieren.
Dann wird dieses Laufwerk automatisch als Ersatz des Defekten hergenommen, und der Rebuild Prozess startet.
Unbedingt das Ende des rebuild Prozesses abwarten, bis das RAID5 als intakt dargestellt wird. Nun erst die defekte Platte entfernen.
Hat man nach dem Rebuild nun die Falsche gezogen, so sind die Daten noch immer da, nur das RAID wieder degraded.

3. War 2. nicht möglich, und ist 1. abgeschlossen, so ist genau ein Versuch ist möglich zur Reparatur des RAID5 Verbundes.
Daher das defekte Laufwerk sehr akribisch ermitteln. Experten holen wenn man selber unsicher ist!!!!!
Controller Software führt überllicherweise Logs und mault defekte Laufwerke an.
Auch ermöglicht Controller Software Laufwerke zur Indentifizierung der Hardware blinken zu lassen.
Dies hilft wenn die logisch Nummerierung der Laufwerke im Controller nicht mir der physikalischen Nummerierung der Einbauplätzte übereinstimmt.
Es muss sicher gestellt werden das genau die defekte Platte gezogen wird.
Erwischt man die Falsche sind alle Daten weg.

Vorsorge: Anderen RAID Level verwenden, je nach Anforderung.
bei Anforderung Datenrate: RAID10 einsetzten
nur bei Anforderung Kosten: RAID 5 einsetzten, aber möglichst eine Hot Spare Platte mitlaufen lassen.

Fazit: RAID 5 ist das "Arme Leute Raid" oder auch "Betriebswirtschaftler Raid" wenn man mit möglichst wenigst Aufwand große Datenmangen abspeichern will.
Datenrate und Datensicherheit ist aber nicht überragend. Eine gute Backup Strategie auf offline Medien ist dabei unerlässlich.


Andere RAID LEVEL fristen ein Nischen dasein, und sind nur leichte Varianten dieser obigen 3 Grundformen.

RAID 10 ist eine Mischung aus RAID 0 das aber doppelt ausgeführt ist wie RAID1, jedoch anstelle 2er Laufwerke aus 2 Laufwerks Verbünden bestehend. Fazit: Erweitert ein RAID1 für mehr Kapazität als ein Laufwerk bereitstellen kann.

Andere Varianten sind mehr Marketingnamen, die letztendlich nur die Anzahl der Paritäts-/Redundanz- Laufwerke erhöhen oder die Datenverteilung über die Laufwerke verändern.


EIN TIPP zum Schluss:

EIN RAID HILFT NUR WENN ES ÜBERWACHT WIRD: Je nach Raid Typ übersteht es mehr oder weniger Fehler ohne Datenverlust.
Aber selbst das sicherste Raid1 hilft nichts wenn der Ausfall des 1. Laufwerks erst registriert wird, bis auch das 2. den Geist aufgibt.


Für Hardware Controller kommen dafür meist SNMP Tools zum Einsatz.

Bei Intels OnChip Raid hilft die kostenlose Intel Rapid Storage Management Software. Hier kann sich der Admin einen Mail bei Laufwerksproblemen senden lassen. (im Intel Rapid Storage Management unter "Vorsinstellungen- Emails" konfigurieren)
Da die meisten unsere Opensim Server diesen Controller haben sollten wir den auch aktiv nutzen.


RAID1 ist bei unseren Anwendungen im Opensim Bereich die einzige sinnvolle Variante, da typischerweise die Datenmange eines kleinen bis mittleren Grids auf ein einzelnes Laufwerk passt. Lieber teilt man das Grid Instanzenweise auf mehrere RAID1 Laufwerke auf.

Bevor ihr andere RAIDs als RAID1 einsetzt, sprecht mit Experten. 

Wer mir nicht glaubt sei an den halbjährigen OSGRID Ausfall wegen eines RAID5 Datenverlust Problems erinnert. Wenn ich mich richtig erinnere waren da mehr als eine Platte ausgefallen, und die Daten weg. Das halbe Jahr wurde erfolglos versucht die Daten alle wieder herzustellen.
Mit der hier vorgestellten Laufwerks Überwachung wäre der Fehler wohl früher bei der ersten defekten Platte schon erkannt worden, und ein Datenverlust vermieden.

Drucke diesen Beitrag