自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

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

有很多朋友在使用vtk绘制三维场景时,从来不去管灯光,也没添加过任何灯光,觉得还过得去。但有时加上灯光,会产生不一样的效果,比如下面这张图是没有添加任何灯光效果的虚拟地球。vtkLight是有方向,有很多不同的设置,也可以设置环境光颜色,漫反射颜色,镜面反射颜色等。至此,我们还没有把光加上,为了体现光的效果,我们把环境光和漫反射都先去掉。我们在遥远的地球之外,添加一个光源,代码如下。这是我们看到的地球就太恐怖了,变成了红色的地球!其实可以尝试不同的取值组合,得到希望达到的效果。我们看到地球的一半都黑了!

2025-02-18 22:48:45 259

原创 C#+VTK三维开发:在3D场景中固定位置添加和更新2D文字信息的切实可行的方法

这里有两个点要注意,其中XVertex就是一个二维的位置,自定义的,不重要,但是它的值是一个归一化的坐标,代表在窗口中的相对位置,窗口纵横坐标范围都被想象成0~1,左下角为(0,0),所以例子中给出的例子就是,大概在接近左下角的地方放文字。逐行都有注释,相信大家很容易理解,这里的核心是建立一个类型为vtkActor2D的对象实例,其绑定一个vtkTextMapper的实例,然后这个mapper可以设置字体形式和显示内容。字体形式还是可以设置很多内容的。修改完了,一定要调用Render函数完成重绘。

2025-02-18 09:03:05 699

原创 C#+VTK三维开发:给几何体附上颜色的两种方法

这里面关键的对象就是vtkUnsignedCharArray类的这个colorArray变量,它其实就是给每个点一个有三个char构成的标量,然后用polyData.GetPointData().SetScalars(colorArray);上述方法有个小问题,就是所有对象都变成一样颜色了。一个最简单的方法就是在vtkActor这个层次,一次性给这个actor里所有对象(包括顶点、线和面)附上颜色。其中color就是C#的Color对象,它的RGB都是0~255的数字,需要除以255转成0~1的数字。

2025-02-16 21:04:21 315

原创 C#+VTK三维开发:快速生成大量球体Sphere的三种方法(之三)

在之二方法中,我们用了vtkAppendPolyData来生成单个vtkActor,在有些情况下,其实我们只是想生成大量的点,很小的点,无尺度的点,比如说三维点云中的点而已。或者说就是一个像素,那么就完全没有必要使用SphereSource这种球了,直接上像素点云!对了,这里的BuildActor实际就是一个自定义的函数,大概是这样的。用这种方法可以生成上千万个点,都没问题,浏览起来很smooth!后面的博客里,博主会上传源代码,请持续关注本人的博客!

2025-02-14 23:28:26 232

原创 C#+VTK三维开发:快速生成大量球体Sphere的三种方法(之二)

现在介绍第二种方法,就是不管要生成多少个球体,都只生成一个vtkActor,而把所有的球体的vtkPolyData都集成为一个,这个思路非常棒!看到了,这里面的关键对象是vtkAppendPolyData,它不断的Append polydata,最后赋给一个mapper和actor!用这种方法,可以非常快速的生成大量的球,但也有一点,就是大概只能生成几万个,再多的可能也就不太行了,当然,毕竟在实际应用中几万个也差不多了!对了,这里面的X3DVertex是个自定义的对象,就是三维坐标而已!

2025-02-14 23:15:51 583

原创 C#+VTK三维开发:快速生成大量球体Sphere的三种方法(之一)

我们知道,通过在场景中增加vtkActor,可以添加各种三维几何体,但如何实现高效的生成vtkActor,并实现快速场景绘制和浏览,则需要很多技巧,我们以球体(点)生成为例,给大家介绍几种生成方法,以下为第一种,直接基于单个位置,生成一个独立的vtkActor。先建立一个全局唯一的SphereSource,大家都可以用,像孙悟空72变一样,其它球都从它变出来,这样就省内存了。要是按照这个方法,生成100个球,那生成速度和浏览速度都非常慢,非常卡。后面的博客里,博主会上传源代码,请持续关注本人的博客!

2025-02-14 22:54:31 284

原创 C#+VTK三维开发:如何关闭vtk自动弹出的错误窗口

在C#中通过引用vtk的.net版本,也就是ActiViz.net,可以实现桌面三维应用程序开发,比如下面这个博主开发的类似谷歌地球的小应用。在此开发过程中,遇到了各种各样的问题,现在分享给大家。用于.net版的vtk内核还是C++的,很多东西超出控制,比如说,当vtk遇到错误时,就会额外弹出一个小窗口,而且这个窗口的内容和出现方式,是我们无法控制的。当然,这其实是一种掩耳盗铃的做法,出了这种错误,不是隐藏这个报错窗口就完事大吉了,应该由我们自己的程序来接管,这就是第二步要做的事情了。

2025-02-14 22:31:39 175

原创 C#+VTK三维开发:实现事件响应回调函数切实可行的方法!千万不要使用vtkCommand或者它的子类!!

利用vtk(ActiViz.Net)+C#开发了一个虚拟地球,在开发过程中,踩坑不断,而网上的解决方案基本上都是抄来抄去,大部分不管用,读起来令人恼火!!我会在今后的文章中不断分享经实践成功的方法。

2025-02-14 00:09:22 1772

vtkCommand的EventIDs的枚举值

请参考“利用vtk(ActiViz.Net)+C#开发事件响应机制回调函数切实可行的方法!千万不要使用vtkCommand或者它的子类!!”这篇文章,其中说明了可以通过事件回调函数处理的事件类型,而其中很重要的就是需要知道有哪些事件类型,此次上传的资源就是EventIDs的枚举值。

2025-02-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除