0

我已经使用 pbrt 来渲染我的场景。我已经在场景文件中指定了视角,并在使用 pbrt 渲染它时,我从那个特定的视角看到了图像。我想知道是否有一种方法可以使用鼠标实时旋转 pbrt 渲染的场景

4

1 回答 1

1

不。

要看看它是否可能,渲染一个场景并计算它需要多长时间。为了获得实时效果,您需要 pbrt 每秒至少渲染几帧,最好是 60 帧!

我认为这不会在 2016 年发生。

或者,您将需要类似 OpenGL 表示的东西来执行实时交互,然后渲染的场景只能显示在顶部(一旦渲染完成)。截锥体需要匹配才能让您执行此操作,否则用户与之交互的内容将与他们看到的渲染内容不同。

如果您编辑场景文件,听起来您不在编码领域,因此唯一的可能性是编写一些可以显示场景的程序(在 GL 中)并将场景文件信息更新为与当前相机和渲染相同使用 pbrt。这一切都需要很长时间(pbrt 每次都需要解析文件,并重新缓冲所有几何图形),因为提供文件意味着 pbrt 不会从以前的状态保存任何东西,因此必须构建加速结构等以及渲染场景。每一帧!

即使在代码中 pbrt 也不会给您带来出色的性能。它不是为此而设计的,更像是一个物理上准确的路径跟踪器(顾名思义)。为了获得近乎实时的远程任何东西,您需要一些糟糕的加速结构和更好地控制您正在使用的灯光模型。如果您真的感兴趣,您可能需要编写自己的渲染器。研究 Metropolis Light Transport (MLT) 和 Vertex connect merge (VCM),它们是使用 Monte Carlo 方法的更加精细/高效的模型。

加上一些相当不错的硬件,有很多内核,或者如果希望通过 Cuda 或同等产品使用 SIMD,可以使用不错的 gfx 卡。

[编辑] 另请注意,pbrt 渲染器基于“基于物理的渲染(从理论到实现)”一书 ISBN-13:978-0123750792。其中概述了如何实现您自己的 pbrt 版本。

于 2016-06-19T14:27:13.440 回答