這裏點光源衰減是管的Model3D
Viewport3D
元件內顯示:混淆在WPF 3D
管很長,所以我切成段顯示紋理只是一個段,以節省存儲器。
爲了隱藏有限模型管末端的小黑圈,我添加了一個PointLight
。
但是,無論我選擇哪一個ConstantAttenuation
,LinearAttenuation
和QuadraticAttenuation
的值,光線過快掉落,模型太暗。
我嘗試添加一個AmbientLight
,但這會立即使隧道的末端變得可見並破壞真實感(用戶永遠不應該注意到模型是有限的 - 它會移動紋理或相機並保持相機周圍的sime光)。
如何使用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
};
您是否嘗試過玩法?正如我在最大可能的情況下用你的設置PointLight強度寫的,所以改變法線似乎只是如何增加管內可見度的方法。如果你找到其他選擇,請讓我們知道... – het2cz
謝謝。相機必須平穩移動,因此實時更新所有法線會很乏味。不過謝謝你的回答,它解決了這個問題。 我終於添加了更多的點光源,以儘可能少地更新模型。 – Libor