Frage

Ich arbeite an einer Anwendung, die einfachen 3D-Szenen schnell macht auf dem Server muss, und sie dann als JPEG über HTTP zurückzukehren. Grundsätzlich mag ich die Lage sein, einfach eine dynamische 3D-Szene in einer HTML-Seite enthalten, durch so etwas wie tun:

<img src="http://www.myserver.com/renderimage?scene=1&x=123&y=123&z=123">

Meine Frage ist, über welche Technologien zu verwenden, um das Rendering zu tun. In einer Desktop-Anwendung würde ich ganz natürlich DirectX verwenden, aber ich habe Angst, daß es nicht für eine serverseitige Anwendung ideal sein könnte, die Bilder für Dutzende zu schaffen würde oder sogar Hunderte von Benutzern im Tandem. Hat jemand Erfahrung mit diesem? Gibt es einen 3D-API (vorzugsweise frei verfügbar), die für diese Anwendung ideal sein würde? Ist es besser, einen Software-Renderer von Grund auf neu zu schreiben?

Mein Hauptanliegen über DirectX oder OpenGL verwendet, ist, ob es in einer virtualisierten Serverumgebung gut funktionieren wird und ob es sinnvoll, mit dem typischen Server-Hardware macht (über die ich habe wenig Kontrolle).

War es hilfreich?

Lösung

Reality von mental images ist so konzipiert, genau das zu tun, was hier beschrieben wird. Weitere Details sind auf der Produktseite (einschließlich einer herunterladbaren Developer Edition).

Reality docs

Andere Tipps

Id sagen, die beste Wahl haben, ist eine Direct3D / OpenGL-Anwendung auf dem Server ausgeführt wird (ohne Unterbrechung). Dann macht die Server-Seite eine Anfrage an das Rendering-App senden, und hat die Rendering-Anwendung, um eine jpg / jpeg / was auch immer wieder snend.

  • Wenn Direct3D / OpenGL langsam ist, um die Szene in Hardware zu machen, dann wird jede Software-Lösung schlechter sein
  • halten Durch die Rendering-Anwendung läuft, können Sie den Aufwand für die Erstellung meiden / zerstören Texturen, backbuffers, Vertex-Puffer, etc. Sie konnten eine einfach Szene 100 von Mal pro Sekunde machen potentialy.

Jedoch viele Server haben keine Grafikkarten. Direct3D ist largly nutzlos in Software (es ist eine emulierte Gerät von Ms, aber es ist nur gut für die Prüfung Effekte), nie versucht OpenGL in Software.

Sie können wickeln POV-Ray (hier mit POSIX und das Windows-Build). PHP Beispiel:

<?php
chdir("/tmp");
@unlink("demo.png");
system("~janus/.wine/drive_c/POV-Ray-v3.7-RC6/bin/pvengine-sse2.exe /render demo.pov /exit");
header("Content-type: image/png");
fpassthru($f = fopen("demo.png","r"));
fclose($f);
?>

demo.pov verfügbar hier .

Sie können eine Template-Sprache verwenden, wie Jinja2 Ihre eigene Kamera Koordinaten einzufügen.

Nicht so sehr eine API, sondern ein Renderer; Povray ? Es scheint zu existieren auch eine http Schnittstelle ...

Sie auch bei Java3D aussehen könnte ( https://java3d.dev.java.net/), die eine elegante Lösung, wenn die Server-Architektur wäre Java-basierte bereits.

Ich würde auch mit einer reinen Software-wegzukommen Rendering-Lösung versuchen empfehlen, wenn Sie können - versuchen, eine ganze Reihe von Server-Prozessen hadern, die alle machen gleichzeitige Anforderungen an die 3D-Rendering-Hardware klingt wie eine Menge Arbeit.

YafaRay ( http://www.yafaray.org/ ) könnte eine gute erste Wahl sein, Sehen Sie für die allgemeine 3D-Rendering. Es ist ziemlich schnell und die Ergebnisse sehen gut aus. Es kann innerhalb anderer Software verwendet werden, z.B. die Blender 3D-Modellierer. Die Lizenz ist LPGL.

Wenn die serverseitige Software geschieht in Python geschrieben werden, und die gewünschte 3D-Szene ist eine Visualisierung wissenschaftlicher Daten, schauen Sie in MayaVi2 http://mayavi.sourceforge.net/ , oder wenn nicht, gehen Sie für eine browse unter http://www.vrplumber.com/py3d.py

Diejenigen, die den weit verbreiteten POV-Ray vorschlagen müssen, es ist nicht eine Bibliothek oder jede Art von Einheit zu realisieren, die eine API bietet. Der serverseitige Prozess müßte eine Textszenendatei schreiben, führen Sie einen neuen Prozess POV-Ray mit den richtigen Optionen zu laufen, und nehmen Sie die resultierende Bilddatei. Wenn das ist einfach für eine bestimmte Anwendung einzurichten, und wenn Sie mehr Know-how mit POV-Ray haben als mit anderen Renderer, geht gut für sie!

Server-Seite Rendering macht nur Sinn, wenn die Szene von einer großen Anzahl von Objekten, besteht darin, dass der Download des an den Client für Client-Rendering-Datensatz wäre viel zu langsam und der Rendering sein wird nicht in Echtzeit zu erwarten. Client-Seite-Rendering ist nicht allzu schwierig, wenn Sie so etwas wie verwenden jogl gekoppelt mit progressiver Szene Download (dh Vordergrundobjekte herunterladen und macht, dann Objekte schrittweise downloaden basierend auf Abstand vom Blickpunkt und wieder machen).

Wenn Sie wirklich serverseitige Rendering tun möchten, Sie möchten den Web-Server-Teil und das Rendering Teil auf zwei Computer mit jeweils optimal auf ihre Aufgabe konfiguriert trennen (Renderer hat OpenGL-Karte, minimal HD und gerade genug RAM, Server hat viele schnelle Festplatten, viel rAM, Sicherungen und ohne OpenGL). Ich bezweifle sehr, können Sie Hardware-Rendering auf einem virtualisierten Server zu tun, da der Server wahrscheinlich keine GPU hat.

Schauen Sie sich wgpu.net .

Ich denke, es ist sehr hilfreich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top