我正在尝试实现一个OpenGL程序来生成由中心球体组成的场景的动画,其中场景中的每个对象(减去中心球体)围绕其质心和中心球体执行旋转运动。这个球是由抛光的不锈钢制成的,它的表面像一面镜子,反射着场景中其他物体的反射。对于场景中的每个对象(减去球体),我需要使用不同的纹理进行纹理映射。使用“环境贴图”方法在中心球体上产生镜像效果。我研究了与这个过程相关的问题,我绝对不能理解的是如何让场景中的其他对象反映在动画中。我在这里看到的一个主题(这是我必须做的最接近的事情),可以帮助我,但没有得到回答的是链接OpenGL Environment mapping Reflection。
如果有人能给我任何建议,我将不胜感激。这是一项大学工作,其中对象构造和旋转的部分以前已经完成。非常残酷的问题是如何实现这些运动物体在这个中心球体中的反射。
发布于 2017-07-05 06:32:14
通常的解决方案是创建一个动态立方体映射。在每一帧上,从中心球体的视点(具有平截体: fov=90,aspect ratio=1,near plane=radius+epsilon)渲染场景6次(每个方向一次),并将结果放入立方体贴图。
然后为中心球体编写像素着色器,该着色器从立方体贴图中采样。
它不会是完美的,但很接近。
这个问题还有其他解决方案,但我认为这是在OpenGL中最容易开发的。
如果需要一个更正确的解决方案,我担心你必须求助于其他技术。就像光线追踪一样。如果你只有简单的几何体(平面,球体),那么你可以在像素着色器或计算着色器中编写一个小小的光线跟踪引擎。
https://stackoverflow.com/questions/44912912
复制相似问题