乐于分享
好东西不私藏

我用AI结合Blender做了一款工具,让你“飞进”深空照片里

我用AI结合Blender做了一款工具,让你“飞进”深空照片里
我在2023年和2024年做过两个教程,分别是教程来了~我用了一种新方法,直接通过星空照片创建3D星空穿梭动画和【教程2.0】基于真实的恒星数据实现星空3D视频效果。
在2023年版的教程中,我写了一个星点提取工具,把深空影像中的恒星提取出来,然后根据星点的大小来估算它们的距离,在三维空间中对图像中的星点进行建模,然后在After Effects中导入星点模型,生成星空3D视频。
但我觉得这样还不够,于是在2024年,我利用PixInsight的天文解析插件,把深空图像中的恒星数据导出为一个TXT文档,再与星点解析工具中的数据进行比对修正,从而构建出了一个基于恒星真实距离的3D模型。这样制作的星空3D视频对真实宇宙做了更进一步的还原。
不知不觉间,又是两年过去了。在过去的这两年里,我看到市面上有了很多实现星空3D穿梭效果的工具,例如松果佬写的动态星云生成工具、zed_czegh严佬写的zedastro网站等,包括一些商业软件业也推出了深空影像转3D效果的功能。但是这么多产品和功能,距离我心目中的理想效果还是有一些差距。我希望能够实现真正意义上的星空图像3D化,不仅仅空间中的每颗恒星是真实存在的,它们的图像也是从拍摄的照片中直接复刻的,星云部分也可以基于合理的图像分析实现立体化。
前段时间,我看到了一篇关于AI创业的报道,大体上是说一个人利用Blender的接口,结合AI做了一个项目。具体项目的内容我已经忘了,但是Blender这个关键词进入了我的视野。我在前两版的星点分析工具中都利用到了Blender来生成3D模型,不过在我的整个工作流中,Blender并不是主角,最终的视频还是在After Effects中合成的。之所以这么选择,是因为当时网上关于Blender script的技术文档非常少,也没有什么像样的教程,我在经过多次试错之后,才勉强实现了通过网页生成python脚本,并在Blender中运行这段脚本,把星点数据导出成一个3D模型。至于之后的视频合成环节以及摄像机位置的计算、移动路径设置,我就不知道怎么做了。
不过现在随着AI编程能力的增强,AI大模型可以毫不费力地理解和书写Blender script,原本让我头疼的部分,现在反而成为了整个编程过程中最简单的环节。于是,我终于可以着手开始构建心中那个完美的星空3D工具了。
1、整体设计思路
新版的星空3D工具仍然遵循我几年前的处理思路,但是新增加了一些内容:
1、提前准备好纯星点图像、天文解析文档、纯星云图像;
2、对纯星点图像进行整体分析,找出所有星点,并提取出它们的图像和大小;
3、结合天文解析文档中的恒星视差和亮度数据,计算出每颗恒星的距离,然后按照每光年一像素的比例,分配它们在Z轴上的距离;
4、根据星云的距离数据,把星云图像放置在最终3D场景的合适位置;
5、根据用户设定的摄像机镜头焦距,计算出摄像机的正确位置,确保从摄像机的角度看过去,视觉效果1:1复刻原始图像;
6、用户可以任意移动摄像机,在构建出的3D场景中穿梭;
7、把前面设置好的星空穿梭动画转换成贴图文件、深度图和一段Python脚本,在Blender中导入这段脚本,直接生成视频。
在实际的开发过程中,我发现如果单纯依靠网页来实现,浏览器会因为计算过于复杂而崩溃。所以我制作了两个版本,一个仍然是网页版本,可以实现比较简单的星空3D效果;一个是桌面软件版本,可以完成完整的星空3D制作流程。
2、教程3.0之前期准备
在开始生成星空3D视频之前,我们需要先做一些必要的前期准备。
首先,在PixInsight中打开你要制作星空3D视频的图像。
依次选择SCRIPT-Astrometry-ImageSolver,对图像先做一次天文解析。
一般来说,打开插件以后直接点击OK即可,程序会自动完成天文解析。
完成解析后,再打开SCRIPT-Astrometry-AnnotateImage插件,对图像进行深空天体和恒星标注,这里可以根据需要选择Hipparcos星表、TYCHO-2星表、Gaia DR3/SP星表,这三个星表包含的恒星数量是逐步递增的。在General Properties一栏,记得要勾选Write objects to a text file,把标注数据导出为一个TXT文件。完成设置后点击OK开始执行星点标注,如果勾选了基于Gaia星表进行标注,程序运行的时间会很长,甚至可能要持续一整天。
完成星点标注后,使用SXT插件,把星点图像跟星云主体进行分离。然后分别保存成图片,我一般会把星点存成PNG格式的,星云则存为JPG格式。
至此,我们就完成了所有的前期准备工作。
3、教程3.0之网页版操作指引

访问https://app.tickwhale.com/static/staranalyse,打开网页版星空星点分析工具:

分别点击上传解析文档和纯星点图像:

一般来说保持默认设置即可,直接点击查找,过一小段时间就会完成星点的查找和匹配:

点击右侧弹出小框的“转换为Python代码按钮”,在切换后的界面中填写你计划保存的本地硬盘路径,例如我选择的是M:\star3d\260505,穿梭动画可以按照默认设置,然后上传去星后的纯星云图像,背景深度可以填写星云的实际距离,例如星云距离我们7000光年,就填写-7000,不过一般默认填写-5000也行:

填写完上面的数值后,依次点击下面的下载按钮,把所有渲染所需的文件都下载到前面指定的目录中。

打开Blender:

选中场景中的三个元素,把它们删除:

点击菜单栏中的“脚本”:

点击“打开”按钮,打开刚才生成的.py文件:

点击小三角形开始运行这段脚本,等待一段时间后,程序就完成了场景的构建:

进入到“动画”面板,点击场景右边的摄像机按钮,切换到摄像机视图,然后在右侧素材栏中找到PerspCamera,选中它;最后点击右上角“视图着色方式”,把画面切换到最终的渲染效果:

拖动下面的时间轴,你就可以看到3D穿梭的效果了:

已关注
关注
重播 分享 赞

Blender的时间轴动画设置跟AE、Premiere里差不太多,所以除了程序默认生成的效果,你还可以在Blender中根据自己的喜好来随意调整相机的运动方向和旋转角度。

完成调整后,点击菜单栏中的渲染-渲染动画,就可以把我们设置的动画序列导出,我一般会先导出为图像序列,然后再在Premiere里面把图像序列合成为视频。

导出的视频效果如下:

已关注
关注
重播 分享 赞

4、教程3.0之桌面软件版操作指引

除了网页版,我还制作了一个桌面软件,可以利用电脑本身的显卡算力来进行图像的渲染,从而实现更加丰富的效果。

桌面软件的下载地址是:

https://pan.baidu.com/s/1foMUGBJRDHt8Q6rfaK9-pg

提取码: haqv

下载了桌面程序之后,直接双击运行:

注意观察一下页面底部的python服务是否已经就绪,如果没有就绪,可以在公号私信里向我反馈,告诉我电脑的具体配置,我来对软件进行进一步的优化升级。

打开软件后,首先上传纯星点图像和解析文档:

上传后,程序会自动跳转到第二步——生成星点3D模型,一般来说,无脑点击“计算星点3D模型”按钮就行:

等待一小段时间后,程序会自动跳转到第三步——上传星云图像:

选择去星后的星云图像后,程序会自动跳转到第四步——星云解析与建模,这一步是网页版工具没有的,程序会分析星云的亮度梯度,生成星云分层模型,对于位于星云前端的暗星云,程序也会尝试进行解析,生成专属于暗星云部分的分层模型。

在这里有两个模式可以选择,经典分层和真实3D,经典分层模式下,只是根据星云本身的不同区域的亮度值,生成分层深度图,星云主体的立体感不太明显;在真实3D模式下,则会根据深度位移网络+壳体层对星云进行3D状态的模拟,力图还原星云在真实情况下的3D效果,这个模式现在还只是一个试验功能,我会在后面放出实际渲染的效果。

点击“解析星云并生成分层模型”后,等待一小段时间,就会进入到动画设置:

在动画设置界面,桌面版软件提供了丰富的动画设置工具,可以通过快速预设模块,生成推进、拉远、左移、右移、穿越效果。还可以一键生成“天体巡游”效果,根据前面提供的天文解析文档,识别图像中不同编号的深空天体的位置,按照顺序对图像中的深空天体进行巡游。你也可以自己手动添加关键帧,按照自己的意愿来控制相机在画面中进行复杂的运动。例如我选择天体巡游后,程序就会自动创建一系列关键帧,让摄像机对图像中的不同天体进行巡游查看。不过现在天体巡游功能对于视场的控制还要再做一点优化,生成的关键帧在导入到Blender之后还需要手动做一些调整:

完成动画设置后,点击“设置动画参数”,进入到最后一步——生成Blender脚本:

在生成Blender脚本这一步,要记得先在程序左侧的输出设置中,设定素材导出的目标文件夹。然后点击“生成Blender脚本”:

完成脚本生成后,点击右侧的“保存”按钮,程序就会把创建视频所需的所有脚本文件、贴图、深度图都保存到目标文件夹中。

接下来的操作步骤跟网页版一样,在Blender中导入脚本文件,直接生成最终的动画即可。这里需要注意的是,如果模型中的恒星星点很多,例如超过了2000颗,Blender构建3D场景的速度会比较慢,耗时会在数分钟到数小时不等,需要有足够的耐心。

下面就是我在前文提到的,正在实验中的星云真实3D效果,还有一些细节需要优化一下,但整体效果感觉已经可以接受了:

已关注
关注
重播 分享 赞

最后,再把这个工具的两个版本的地址贴出来,方便大家使用——

网页版:https://app.tickwhale.com/static/staranalyse

桌面版:

https://pan.baidu.com/s/1foMUGBJRDHt8Q6rfaK9-pg

提取码: haqv


我是从前有个T,一个深空摄影爱好者
天气好的时候拍星星,天气不好的时候分享拍摄经验
微信公众号:拍星空的T   小红书/B站:从前有个T

相关学习资料