是否可以在WebGL中导入/处理高级光属性(IES) ?



IES (Illuminating Engineering Society)是一种用于增强动画工具中的灯光的文件格式(. IES)。它增加了精确的衰减,色散,色温,空间发射,亮度和类似的东西。这是一个展示照明产品真实样子的工业标准。许多动画工具(Maya, Cinema4D, Blender等)都可以使用这种格式。

然而,我仍然在寻找一种在WebGL框架中导入/使用IES的方法。对我来说,使用动画工具(在我的例子中是Blender)导入和处理。ies文件,并最终将项目导出为webgl格式似乎是最有前途的方法。我尝试了几个webgl框架(three.js, x3dom, coppercube)和更多的导出格式/导入/转换脚本,但没有一个产生令人满意的结果。处理后的结果显示没有灯光,默认灯光或最多相同数量的灯光,没有进一步的属性。

有没有人碰巧知道动画工具->导出函数-> WebGL-framework或webgl -ie -format-import的工作组合可以做到这一点?

是否有人有同样的问题并渴望解决?

你也许可以从.ies文件中转移一些属性(颜色,强度等),但是Three.js渲染器根本不支持.ies所要描述的复杂的光属性(如光的形状)。所以,即使你能够导入/导出这些属性,默认的Three.js灯光系统也无法正确渲染它们。

即使你实现自己的着色器和灯光(你可以在Three.js中这样做),它可能仍然会非常缓慢和/或不准确,因为你可能需要一些基于光线追踪/路径追踪的方法来获得足够好的结果。一般来说,WebGL的渲染方法,无论你使用什么库或框架,都不太适合复杂、精确的光影模拟。

话虽如此,我对任何解决方案都非常感兴趣,即使是粗略的近似支持也会很有用。

Three.js现在有一个区域灯的例子。这是一个非常粗糙的近似(经过一些认真的简化后的面积积分的解析计算)。Insomniac Games在GPU Pro 5上有一篇文章提供了更准确的解决方案。

这只能帮助你确定光的面积和形状;其他属性你可以自己处理。

注:从你的问题中很难判断,但如果你的光格式包含光谱,最近有一些关于实时光谱照明的好文章:

http://www.numb3r23.net/2013/03/26/spectral-rendering-on-the-gpu-now-with-bumps/

最新更新