【发布时间】:2014-02-13 07:03:27
【问题描述】:
这是在Viewport3D 元素中显示的管的Model3D:
管子很长,所以我将纹理分段显示,以节省内存。
为了隐藏有限模型管末端的小黑圈,我添加了PointLight。
但是,无论我选择ConstantAttenuation、LinearAttenuation和QuadraticAttenuation的哪个值,光衰太快,模型太暗。
我尝试添加AmbientLight,但这会立即使隧道的尽头可见并破坏真实感(用户永远不应注意到模型是有限的 - 它会移动纹理或相机并在相机周围保持相同的光线) .
如何仅使用PointLight 来增加光线?
我知道衰减因子公式是:
ConstantAttenuation + LinearAttenuation * D + QuadraticAttenuation * D^2
其中 D 是与光源的距离。
然后将光强度除以计算出的因子。但是,当我使用ConstantAttenuation 值1 并设置其他0 时,根本不应该有衰减(所有点的因子都是1,距离不起作用)。然而模型仍然显示出光线衰减......
代码:
this.pointLight = new PointLight
{
Position = new Point3D(0.0, 0.0, 0.0),
Color = Colors.White,
ConstantAttenuation = 1.0,
LinearAttenuation = 0.0,
QuadraticAttenuation = 0.0
};
【问题讨论】: