在光线追踪中为对象着色
Posted
技术标签:
【中文标题】在光线追踪中为对象着色【英文标题】:Coloring objects in ray tracing 【发布时间】:2018-10-31 07:50:55 【问题描述】:我正在尝试渲染屏幕。到目前为止,我已经将我的光线与场景中的对象相交,如果有交叉点,我会为该交叉点设置一个随机颜色。
接下来我需要根据像素值对像素进行着色。我看过 10 多个教程,阅读了几个关于像素着色的网站。但是,我正在阅读的文件没有对象的颜色。相反,它具有以下内容:
RGB 颜色的环境光 点光源,具有 rgb 颜色和位置 对象具有环境、漫反射、镜面反射、镜面反射(以 rgb 为单位)和 phong 指数(一个值)。另外,我知道发出的光的强度与距离的平方成正比(距离越大,物体上的光越少)。
如果我有对象的颜色,我可以使用下面的算法:
Color3 trace(..)
...
Color3 ambient = object.color * 0.3;
Color3 phong = phongModel(..) or object.color;
Color3 reflection = trace(..);
return ambient + phong + reflection;
如中所述:How to compute reflected color?
我没有对象的颜色,只有反射值。如何计算物体的颜色?
【问题讨论】:
为什么不直接假设对象的默认颜色(例如:白色)? 好吧,很好的假设。可能是这个,我要试试这个。我觉得自己像个白痴,没想到这一点 最好是灰色而不是白色,这样你可以看到“反射” 【参考方案1】:但是,我正在阅读的文件没有对象的颜色。 相反,它具有以下内容:
...
对象具有环境、漫反射、镜面反射、镜面反射(以 rgb 为单位)和 phong 指数(一个值)。
如果你有RGB所有这些,那就是对象的颜色。
将入射光与物体以给定角度反射它的方式相乘,结果就是感知它的颜色。
【讨论】:
以上是关于在光线追踪中为对象着色的主要内容,如果未能解决你的问题,请参考以下文章