我正在开发一个应用程序,需要在服务器上快速渲染简单的 3D 场景,然后通过 HTTP 将它们作为 JPEG 返回。基本上,我希望能够简单地在 HTML 页面中包含动态 3D 场景,方法如下:

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

我的问题是使用什么技术来进行渲染。在桌面应用程序中,我很自然地会使用 DirectX,但恐怕它对于为数十甚至数百个用户同时创建图像的服务器端应用程序来说可能并不理想。有人对这个有经验么?是否有适合此应用程序的 3D API(最好是免费提供的)?从头开始编写软件渲染器是否更好?

我对使用 DirectX 或 OpenGL 的主要担忧是它是否能在虚拟化服务器环境中正常运行,以及它对于典型的服务器硬件(我对此几乎无法控制)是否有意义。

有帮助吗?

解决方案

mental images 的 RealityServer 旨在准确执行此处描述的操作。产品页面上提供了更多详细信息(包括可下载的开发人员版本)。

RealityServer 文档

其他提示

我想说你最好的选择是在服务器上运行 Direct3D/OpenGL 应用程序(不停止)。然后让服务器页面向渲染应用程序发送请求,并让渲染应用程序返回 jpg/png/任何内容。

  • 如果 Direct3D/OpenGL 在硬件中渲染场景的速度很慢,那么任何软件解决方案都会更糟
  • 通过保持渲染应用程序运行,您可以避免创建/销毁纹理、后缓冲区、顶点缓冲区等的开销。您可以每秒渲染一个简单的场景 100 次。

然而,许多服务器没有显卡。Direct3D在软件上没什么用处(Ms有一个模拟设备,但它只适合测试效果),在软件上从未尝试过OpenGL。

您可以包装 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 等模板语言来插入您自己的相机坐标。

与其说是 API,不如说是渲染器; 波夫赖?似乎还存在一个 http 界面...

您还可以查看 Java3D (https://java3d.dev.java.net/),如果您的服务器架构已经是基于 Java 的,那么这将是一个优雅的解决方案。

如果可以的话,我还建议尝试摆脱纯软件渲染解决方案 - 尝试解决大量服务器进程,这些进程都对 3D 渲染硬件提出并发要求,这听起来像是一项繁重的工作。

亚法雷(http://www.yafaray.org/)可能是一般 3D 渲染的首选。它相当快,而且结果看起来很棒。它可以在其他软件中使用,例如Blender 3D 建模器。许可证是LPGL。

如果服务器端软件恰好是用 Python 编写的,并且所需的 3D 场景是科学数据的可视化,请查看 MayaVi2 http://mayavi.sourceforge.net/, ,或者如果没有,请浏览 http://www.vrplumber.com/py3d.py

那些建议广泛流行 POV-Ray 的人需要意识到它不是一个库或任何提供 API 的实体。服务器端进程需要编写一个文本场景文件,执行一个新进程以使用正确的选项运行 POV-Ray,并获取生成的图像文件。如果这对于特定应用程序来说很容易设置,并且如果您比其他渲染器更熟悉 POV-Ray,那么我们就去做吧!

仅当场景由大量对象组成时,服务器端渲染才有意义,这样将数据集下载到客户端进行客户端渲染的速度就会太慢,并且渲染预计不会是实时的。如果您使用类似的东西,客户端渲染并不太困难 焦格尔 加上渐进式场景下载(即下载前景对象并渲染,然后根据距视点的距离增量下载对象并重新渲染)。

如果您确实想做服务器端渲染,您可能需要将 Web 服务器部分和渲染部分分离到两台计算机上,每台计算机都针对其任务进行最佳配置(渲染器具有 OpenGL 卡、最低的 HD 和足够的 RAM,服务器具有大量快速磁盘、大量内存、备份且无 OpenGL)。我非常怀疑您是否能够在虚拟化服务器上​​进行硬件渲染,因为该服务器可能没有 GPU。

查看 工作网.

我认为这很有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top