Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenGalaxy:史雪涛(待定) #432

Open
Tracked by #429
will-ww opened this issue Oct 8, 2024 · 6 comments
Open
Tracked by #429

OpenGalaxy:史雪涛(待定) #432

will-ww opened this issue Oct 8, 2024 · 6 comments

Comments

@will-ww
Copy link
Contributor

will-ww commented Oct 8, 2024

No description provided.

@YaoYao-Pig
Copy link

在这里基于Demo的演示视频总结一下目前项目的进度:

这里贴出目前的仓库地址,相关的更新日志和代码都会在这里,更新日志在Log.md下:https://github.com/YaoYao-Pig/open-homeland

2024-10-08.16-51-43.mp4
  • 初步完成了从星球整体视图到详细视图的基本框架的重构搭建
  • 目前已经可以根据星球的具体信息来进行的星球形态、颜色的程序自动化生成(这里展示Demo使用的是三个参数:repo的OpenRank值的Sigmod,参与Developer的平均OpenRank值以及top贡献者的OpenRank值)
  • UI部分的初步设计(包括HUD以及图表框架的搭建,之后新的图表展示可以直接填充即可)
  • 在详细视图下星球形态生成部分,搭建了一个可视化的生成工具,方便之后对于美术效果、地形细节的进一步调整(如下图)
    image

之后还需要做的部分:

整体视图下:

  • 对于整体视图到详细视图切换的加载过程优化(添加过场效果来改善加载等待)
  • 对于更大量节点的初始化加载以及性能优化
  • 对于整体视图的节点排布算法
  • 星球Shader优化

详细视图下:

  • 对于详细视图的卫星的进一步效果实现
  • 对于图表美术效果的展示优化
  • 星球美术效果优化

之后还希望加入的:

  • 详细视图下的交互性实现

@tyn1998
Copy link
Member

tyn1998 commented Oct 8, 2024

强👍🏻

@YaoYao-Pig
Copy link

YaoYao-Pig commented Oct 8, 2024

强👍🏻

都是在学长的项目基础上的工作~之后还有一些关于openGalaxy的问题想要请教一下学长! @tyn1998

@YaoYao-Pig
Copy link

YaoYao-Pig commented Oct 16, 2024

2024.10.16总结

前段时间完成了以下工作:

2024-10-16.18-12-49.mp4
  1. 首先是完成了场景进入退出的渐进渐出的效果。现在,加载过程中的一些IO等待时间可以变得更顺滑
  2. 重构了节点载入节点初始化的思路,之前是通过读节点的DeveloperNetWork.Json来进行处理。有大量的文件读取以及IO运算的压力。现在,把更多的初始化工作放在的离线。通过离线的方式提前对节点的位置和元信息进行处理。这样只需要两个csv文件就可以完成效果。场景的初始化的性能有了明显的提升。目前场景中的节点总数有10k+,初始化效率比之前1k个节点还要快。
  3. 一个不太成功的尝试,我尝试让用户可以操控“飞船”前往repoDetails视图下的星球上一探究竟。这里我已经解决了地图的分块加载以及LOD处理。并且解决了主要的由于地块三角形过多而导致的性能问题,同时完成了星球的重力模拟。因此可以顺滑的顺利登陆。但是由于星球体积还是太大,这应该是Uniyt-MeshCollider的Bug,无法正常碰撞,幽灵碰撞和闪烁的问题很严重,没法正常探索。因此这部分暂时搁置,先完成其他部分的工作。
  4. 新的图表

@YaoYao-Pig
Copy link

YaoYao-Pig commented Oct 23, 2024

2024.10.23总结

最近做了一个技术储备:基于对象池+八叉树的空间划分和节点管理
背景是这样的,现在的整体视图下的节点,还是用简单的球体节点表示,Shader选择的是简单的Billing-Phong 光照模型和直接着色的效果,在此基础上,选择的是直接将所有节点全部一次性实例化加入内存的方式来处理,这个处理是合理且效果不错的(根据我的实测,渲染帧率不受一次性加载影响,只受一次渲染下,视锥体内部的图形数量影响,Unity自己已经做了视锥体剔除)。这时候,性能瓶颈在Render上。
但是这里有两个问题:

  1. 存储问题,如果节点的Shader再复杂一点,加载的内容再多点,虽然帧率不受初始化载入内存的数量影响,但是内存是切切实实的被占用了。(大量的节点暂时访问不到)(我实测下来,如果是十万级的“素节点”,差不多占用4GB内存,而使用优化之后,大概只有3GB。并且,内存节省随着节点数量的增加而增加(因为内存中,最多只会有一定数量级的节点)
  2. 性能问题。性能问题出于对于未来的考量:如果我们选择让整体视图下的节点拥有更复杂的物理效果,那么无论是视锥体内外的节点都会参与到物理运算,这时候,性能问题的瓶颈就显然在CPU的物理运算上了。
    现在的实例化方法限制了对于更复杂效果的探索,所以我做了一个空间管理的可行性验证。通过八叉树模拟视锥体剔除,将不在视锥体范围内的,拥有复杂物理效果的节点剔除。并且用对象池管理提高重用的方法。方法在大量节点都拥有物理效果的条件下取得了很好的帧率提升。
2024-10-23.20-21-40.mp4

Root2是默认的构造方法,Root1是新的构造方法。2帧->30帧,效果还是很好的,但是如果节点效果并不复杂,那就是负优化了(除非存储作为瓶颈,可能要视最后部署的环境了)
这个方法目前作为可行性验证,作为储备方法,之后如果要加入更多节点效果,就会启用该方法替代现在一次性全部载入的方法。

@YaoYao-Pig
Copy link

2024.11.26总结

  1. 搜索系统:
    完成了一个基本的搜索系统,通过搜索快速访问想要查看的节点
    image

  2. 视觉优化:
    完成了一个后处理系统,通过屏幕后处理的方式,提升视觉效果,具体的对比如下:
    前:
    image
    后:
    image
    提高暗色调的视觉效果,提高对比度,强化星空的感觉;
    增加景深,让节点的远近关系更明显。
    增加暗角,提高影片感

  3. repo视角下的developer环绕行星。
    丰富了环绕星体的效果:
    image
    不再是简单的球体,而是类似于月球,拥有陨石坑。制作使用Computer Shader并行计算技术。
    下一步会完成通过不同的数值控制其在不同项目当中的形态的功能

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants