hongfaqiu / cesium-particle

Visualize wind field(NC file) on Cesium

Home Page:https://cesium-particle.opendde.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

奇怪的粒子表现

Amber-372 opened this issue · comments

commented

你好,在查看demo的时候发现有几个奇怪的渲染表现想请教一下

  1. 在地图放大到很大的时候,会出现奇怪的白色片状。
    image
  2. 旋涡的渲染效果似乎有点奇怪
    image

感谢提问,我在调试程序的时候也发现了这些问题,原作者的仓库中也有人询问,但迟迟没有解决这一问题。

  1. 在地图放大到很大的时候,会出现奇怪的白色片状。
  • 是的,我也察觉到了,奇怪的片状会出现在速度为零的区域,我猜测可能是在绘制粒子片元时采用的"miter joint"算法导致的异常。
    原作者在issues中谈到了片元绘制的算法,作者后来使用了新的Drawing Lines with WebGL方法来绘制片元,我查看代码时发现这种绘制方法,在速度为零处以及粒子头部的片元长度会产生异常,具体可能会产生异常的代码在segementDraw.vert第100行。
  1. 关于涡旋
  • 构建涡旋只是为了测试自建json数据加载的可行性,在拟真程度上只是个玩具。
  • 真实涡旋的垂直纵深太小,为了看到明显的可视化效果,我极大地放大了它的垂直高度。
  • 因为我在构造涡旋时,只能采用lon*lat长宽的棋盘格,因此在椭圆以外区域将UVW速度都设置成了零。而速度为零的区域会出现奇怪的多边形,问题又回到了最开始。
  • 在不同机器上的显示效果不一样,在我的笔记本(R5 4600U集显 60hz)上,看不到这些奇怪的多边形;但是在我的台式机上(RTX 2060 144hz)上则和你的截图一样明显。问题待查。。

假如说这是由于区域速度为零造成的,那么我们可以在segmentDraw.frag中不显示速度为零的粒子,但我修改后,证明无效。
此外从涡旋场边缘的奇异多边形的颜色可以发现,这些多边形的速度并不为零。因此我猜测,造成这种现象的原因是原作者RaymanNg采用的RungeKutta插值方式,将速度为零区域也进行了插值,代码在calulateSpeed.frag第117行。
由于我比较懒,长时间没能解决这个问题,颇为惭愧。

commented

@hongfaqiu 感谢你的回复呀。那个白色片状的现象,我有用原作者的代码测试下,一开始,我测试他的代码没有这个问题,后面我发现他在某些viewerContainer长宽比下正常,某些长宽比会出现这种白色片状,这让我觉得很奇怪。但是我没办法定位到真正的原因。

原作者最近的issue中有几位童鞋也提出了这个问题,感谢你的测试,有空的话,我会试着解决这个问题的,因为实在是个很严重的bug
image

hello兄弟,片状雪花的出现确实和Miter Joint算法有关,我将它退化成普通的Web GL画四边形的方法就好了,效果可以看我的demo
但是我偷了懒,只是把顶点着色器中的代码注释了一部分,因为从理论上来讲,Miter Joint算法确实更优,后面有空我再看看能不能改进吧。

片状雪花我这边也发现了这个问题,请问您这边最后怎么解决的?