我从Google Poly(https://poly.google.com/view/0gW8WUfqJnN)向我提供的模型中具有以下材料:
newmtl mat0
Kd 0.73 0.41 0.78
根据我的理解,这仅涉及一种漫射色,这意味着它需要点亮一个光源。我很难正确设置颜色,我认为这是对如何使用这些颜色的误解。
说我有一个环境光,颜色为vec3(1, 1, 1)
,强度为0.5。然后,方向为vec3(-0.1, -1.0, -1.0)
的白色定向光也为0.2,强度为X(X指向右,Y指向上,Z指向屏幕向外,朝向用户)。根据我的理解,我通常会做类似vec3 ambient = ambient_color * Ka * ambient_intensity;
的事情,然后我将基于定向光和Kd
来计算漫反射颜色(我将不包括此计算)。然后,我将根据相机和Ks
计算镜面反射光。最后将所有这些加在一起。如果未提供Ka,则此方法无效。没有默认值似乎没有任何意义。
在这种情况下我该怎么办?我想出的最好的方法是,当Ka和Ks缺少复制Kd时。这似乎给了我与Google Poly网站上的渲染器相似的结果,但是我找不到任何支持该决定的文档?正确的做法是什么?
奖金:我不想为此提出一个全新的问题,但是如果结果比我想象的要复杂,我会说。对于Donut模型(https://poly.google.com/view/6LSB0OZK8I7),所有材料都指定d 0.00000
,我认为这意味着完全透明。为什么渲染看起来很立体?