10

サーバー上で単純な 3D シーンをすばやくレンダリングし、それらを HTTP 経由で JPEG として返す必要があるアプリケーションに取り組んでいます。基本的に、動的な 3D シーンを HTML ページに簡単に含めることができるようにしたいと考えています。

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

私の質問は、レンダリングを行うためにどのテクノロジーを使用するかについてです。デスクトップ アプリケーションでは当然 DirectX を使用しますが、何十人、何百人ものユーザーのイメージを並行して作成するサーバー側アプリケーションには理想的ではないかもしれません。誰もこれについて経験がありますか?このアプリケーションに最適な 3D API (できれば自由に利用できる) はありますか? ソフトウェア レンダラーをゼロから作成する方がよいでしょうか?

DirectX または OpenGL の使用に関する私の主な懸念は、それが仮想化されたサーバー環境でうまく機能するかどうか、および一般的なサーバー ハードウェア (私がほとんど制御できない) で意味があるかどうかです。

4

8 に答える 8

7

mental images による RealityServer は、ここで説明されていることを正確に行うように設計されています。詳細については、製品ページ (ダウンロード可能な Developer Edition を含む) を参照してください。

RealityServer ドキュメント

于 2009-08-12T15:36:22.173 に答える
4

あなたの最善の策は、Direct3D / OpenGLアプリをサーバー上で(停止せずに)実行することだと思います。次に、サーバー ページがレンダリング アプリにリクエストを送信し、レンダリング アプリが jpg/png/whatever を送り返すようにします。

  • Direct3D/OpenGL がハードウェアでシーンをレンダリングするのが遅い場合、ソフトウェア ソリューションはさらに悪化します。
  • レンダリング アプリを実行し続けることで、テクスチャ、バックバッファー、頂点バッファーなどの作成/破棄のオーバーヘッドを回避できます。単純なシーンを 1 秒間に数百回レンダリングできる可能性があります。

ただし、多くのサーバーにはグラフィック カードがありません。Direct3D はソフトウェアではほとんど役に立たず (Ms からエミュレートされたデバイスがありますが、効果をテストするためだけに有効です)、ソフトウェアで OpenGL を試したことはありません。

于 2008-09-15T16:13:36.633 に答える
2

Pov-ray をラップできます (ここでは POSIX と Windows ビルドを使用)。PHP の例:

<?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こちらから入手できます。

Jinja2 のようなテンプレート言語を使用して、独自のカメラ座標を挿入できます。

于 2012-10-10T13:38:45.507 に答える
0

Yafaray(http://www.yafaray.org/)は、一般的な3Dレンダリングを検討するための最初の選択肢として適しています。それは適度に速く、結果は素晴らしく見えます。Blender3Dモデラーなどの他のソフトウェア内で使用できます。ライセンスはLPGLです。

サーバー側のソフトウェアがたまたまPythonで記述されていて、目的の3Dシーンが科学データの視覚化である場合は、MayaVi2 http://mayavi.sourceforge.net/を調べるか、そうでない場合はhttp:を参照してください。 //www.vrplumber.com/py3d.py

広く普及しているPOV-Rayを提案する人は、それがライブラリやAPIを提供するあらゆる種類のエンティティではないことを理解する必要があります。サーバー側のプロセスは、テキストシーンファイルを作成し、新しいプロセスを実行して適切なオプションでPOV-Rayを実行し、結果の画像ファイルを取得する必要があります。それが特定のアプリケーション用に簡単にセットアップでき、他のレンダラーよりもPO​​V-Rayの専門知識が豊富な場合は、それを試してみてください。

于 2008-09-16T02:55:40.083 に答える
0

また、Java3D(https://java3d.dev.java.net/)を確認することもできます。これは、サーバーアーキテクチャがすでにJavaベースである場合の洗練されたソリューションです。

また、可能であれば、ソフトウェアのみのレンダリングソリューションを回避することをお勧めします。3Dレンダリングハードウェアに同時に要求を行う多くのサーバープロセスを混乱させることは、大変な作業のように思えます。

于 2008-09-24T01:27:18.613 に答える
0

API というよりはむしろレンダラーです。ポブレーhttpインターフェースも存在するようです...

于 2008-09-15T16:26:15.307 に答える
0

サーバー側のレンダリングは、シーンが膨大な数のオブジェクトで構成され、クライアント レンダリング用のデータ セットのクライアントへのダウンロードが非常に遅く、レンダリングがリアルタイムであることが期待されない場合にのみ意味があります。プログレッシブ シーン ダウンロードと組み合わせたjoglのようなものを使用する場合、クライアント側のレンダリングはそれほど難しくありません(つまり、前景オブジェクトをダウンロードしてレンダリングし、視点からの距離に基づいてオブジェクトを段階的にダウンロードして再レンダリングします)。

本当にサーバー側のレンダリングを行いたい場合は、Web サーバー部分とレンダリング部分を 2 台のコンピューターに分けて、それぞれのタスクに合わせて最適に構成することをお勧めします (レンダラーには OpenGL カード、最小限の HD と十分な RAM があり、サーバーには多くの高速ディスク、大量の RAM、バックアップ、OpenGL なし)。サーバーにはおそらく GPU がないため、仮想化されたサーバーでハードウェア レンダリングを実行できるとは思えません。

于 2008-09-15T16:27:34.600 に答える
-2

wgpu.netをチェックしてください。

私はそれが非常に役立つと思います。

于 2013-11-04T20:23:07.713 に答える