C#+VTK三维开发:贴图颜色太暗怎么办?场景灯光的几种设置方法

在C#中通过引用vtk的.net版本,也就是ActiViz.net,可以实现桌面三维应用程序开发,比如下面这个博主开发的类似谷歌地球的小应用。在此开发过程中,遇到了各种各样的问题,现在分享给大家。

X3DDemo

后面的博客里,博主会上传源代码,请持续关注本人的博客!!

有很多朋友在使用vtk绘制三维场景时,从来不去管灯光,也没添加过任何灯光,觉得还过得去。但有时加上灯光,会产生不一样的效果,比如下面这张图是没有添加任何灯光效果的虚拟地球

感觉有些太暗淡了,于是我在球体actor上面可以对材质的光泽设置如下:

            actor.GetProperty().SetDiffuse(0.7);  //设置漫反射的值
            actor.GetProperty().SetAmbient(0.3); //设置环境光的值

设置后的效果如下,稍微亮了一点

变化不大,再调一下,把环境光和漫反射都调大一点

            actor.GetProperty().SetDiffuse(0.9);  //设置漫反射的值
            actor.GetProperty().SetAmbient(0.5); //设置环境光的值

这次明显亮了不少

其实可以尝试不同的取值组合,得到希望达到的效果。

至此,我们还没有把光加上,为了体现光的效果,我们把环境光和漫反射都先去掉。我们在遥远的地球之外,添加一个光源,代码如下

            // 创建灯光并设置属性
            light = vtkLight.New();
            light.SetColor(1.0, 1.0, 1.0); // 设置为白色灯光
            light.SetPosition(X3DGIS.EarthRadius * 10, X3DGIS.EarthRadius * 10, X3DGIS.EarthRadius * 10); // 设置灯光位置
            light.SetFocalPoint(0, 0, 0); // 设置焦点为地球中心
            renderer.AddLight(light);

我们看到地球的一半都黑了!像真实的地球一样!

如果我们修改灯光的颜色 

            light.SetColor(1.0, 0.0, 0.0); // 设置为红色灯光

 这是我们看到的地球就太恐怖了,变成了红色的地球!

vtkLight是有方向的,有很多不同的设置,也可以设置环境光颜色,漫反射颜色,镜面反射颜色等。各种组合非常多,可以多多尝试,找到最佳效果!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值