【问题标题】:API for server-side 3D rendering [closed]用于服务器端 3D 渲染的 API [关闭]
【发布时间】:2010-09-09 00:31:32
【问题描述】:

我正在开发一个应用程序,该应用程序需要在服务器上快速渲染简单的 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 的主要担忧是,它是否能在虚拟化服务器环境中正常运行,以及它是否适用于典型的服务器硬件(我几乎无法控制)。

【问题讨论】:

    标签: api 3d render server-side


    【解决方案1】:

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

    RealityServer docs

    【讨论】:

    【解决方案2】:

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

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

    但是很多服务器没有显卡。 Direct3D在软件中基本上没用(有一个Ms的模拟设备,但它只用于测试效果),从未在软件中尝试过OpenGL。

    【讨论】:

      【解决方案3】:

      您可以包装 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 可用here

      您可以使用 Jinja2 之类的模板语言来插入您自己的相机坐标。

      【讨论】:

      • 有没有在php上运行pov ray的演示
      【解决方案4】:

      与其说是 API,不如说是渲染器; Povray?似乎还存在一个http 接口...

      【讨论】:

        【解决方案5】:

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

        如果可以的话,我还建议尝试使用纯软件渲染解决方案——尝试处理大量对 3D 渲染硬件提出并发需求的服务器进程听起来像是很多工作。

        【讨论】:

          【解决方案6】:

          Yafaray (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 方面比其他渲染器更专业,那就去吧!

          【讨论】:

            【解决方案7】:

            服务器端渲染只有在场景包含大量对象时才有意义,这样将数据集下载到客户端以进行客户端渲染会太慢,并且预计不会实时渲染。如果您使用 jogl 之类的东西并结合渐进式场景下载(即下载前景对象并渲染,然后根据与视点的距离增量下载对象并重新渲染),客户端渲染不会太困难。

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

            【讨论】:

            • OP 可能想要在服务器上呈现的原因与我发现这个问题的原因相似;他们想要从上传到服务器的场景中渲染缩略图或抓帧。
            • 服务器端渲染的另一个原因是安全性(客户端渲染可能导致数据留在内存中)。如果您不希望将敏感数据传输到设备,则可以选择服务器端渲染
            【解决方案8】:

            查看wgpu.net

            我觉得很有帮助。

            【讨论】:

            • 此服务似乎尚未启动。没有文档或 API,只是一个技术演示。您觉得它在哪些方面有帮助?
            • 我正在寻找将 3d 模型放到网络上并允许用户查看它们的解决方案,例如购买:)。我公司的主要要求是保护模型。我给他们写了几个问题,它看起来是最好的选择。我正在寻找使用甚至购买一些解决方案并在我的服务器上托管。我想知道价格。
            • 这个页面已经失效了。
            猜你喜欢
            • 2013-12-08
            • 2021-10-20
            • 1970-01-01
            • 2017-11-22
            • 1970-01-01
            • 1970-01-01
            • 2018-02-06
            • 1970-01-01
            • 2023-03-28
            相关资源
            最近更新 更多