Nur auf der Suche nach einer allgemeinen Anleitung, es ist eine sehr lange Zeit seit ich mit irgendetwas 3D fiedelte und die Landschaft hat sich viel verändert, wenn Sie entschuldigen Wortspiel.3D-Rendering-Leistung/Pipeline für Detailstufe (LOD) meshes in threejs
Ich habe eine Reihe von sehr detaillierten 3D-Modellen (3M + Gesichter) aus realen Gelände-Scans, die in einem Browser gerendert werden müssen. Sie sind "unregelmäßig" und können nicht aus einem Gitter/DEM oder irgendetwas gerendert werden.
Ich habe die Modelle in kleinere Objekte unterteilt und LOD für jedes Objekt (3 Ebenen) generiert, die eine gemeinsame Menge von Vertices und drei Indexpuffer erzeugt, die auf einige oder alle der Scheitelpunkte verweisen, die ich progressiv zum JS-Client streame.
Ich beabsichtige, irgendwo zwischen 500k - 1M Polygone einen Rahmen zu rendern, indem ich die LOD für jedes Objekt basierend auf der Entfernung von der Kamera festlege.
Also meine Frage ist, wie kann ich effizient zwischen diesen Ebenen wechseln?
Ich habe versucht den naiven Ansatz, der natürlich Beulen und Störungen in der Bildrate erzeugt, wie die Daten an die GPU gesendet werden. Aber ich suchte nach einer Möglichkeit, alle Daten (Scheitelpunkte und die drei Indexpuffer) an den GPU-Speicher zu senden und sie dann mit einem bestimmten Indexpuffer zu rendern, sagen wir dem Puffer mit niedriger Auflösung, und dann zu med oder high zu wechseln res Puffer, wenn die Kamera näher kommt.
Die Three.LOD() -Lösung scheint mir nichts zu nützen, da sie nur den gleichen fps-Fehler wie meine naive Lösung erzeugt.
Würde einige Anleitung, jedoch allgemein schätzen. Prost!
Danke. Dies ist ungefähr das, was ich konzeptionell dachte, aber diese Methode scheint von der Three.js-API veraltet zu sein. Mir ist nicht ganz klar, was das aktuelle Äquivalent ist, irgendwelche Ideen? –
Haben Sie den Quellcode überprüft? – WestLangley
Danke, nahm mich ein paar Tage, um das zu versuchen, aber scheint den Trick zu tun. Prost! –