ASCII新玩法!不仅能实现光线追踪,模拟星系碰撞和流体力学也不在话下

简介: ASCII码的上限到底在何方?国外小哥不仅用ASCII实现光线追踪效果,现在还有了模拟流体动力学!

微信图片_20220112150841.png


还记得上次那个用ASCII码实现光线追踪效果的国外小哥吗?


QQ图片20220112151422.png


当时这个项目一经发出,在Reddit上的热度就达到了2.1K,演示视频在Youtube上的观看量也达到了3万多次。


不过我们可以看到,这个效果还是比较粗糙的,纹理也不够细致。


光线跟踪(Ray Tracing)是一个在二维(2D)屏幕上呈现三维(3D)图像的方法。它可以实现更为逼真的阴影和反射效果,同时还可以大大改善半透明度和散射,带来相似于人眼所看到的更为真实场景效果。


微信图片_20220112150846.png


光线追踪原理


最近,这位小哥再次发布了改进版的光追效果!


本次的改进主要在于阴影部分的处理和并行计算的方面:


QQ图片20220112151505.png


‍可以看出,改进后的阴影层次更加分明,甚至球体表面反射的影像也更加的清晰。


完整版光追效果的视频如下:


QQ图片20220112150719.png

点击查看原视频链接

项目地址:

https://github.com/DinoZ1729/Ray-2


ASCII码实现其他效果


从小哥的Github中可以看到,他不仅仅使用ASCII码实现了光线追踪,甚至还有星系、地球等其他效果。


微信图片_20220112150850.png


比如,模拟两个星系之间的碰撞:


QQ图片20220112151541.png


如果想在自己的电脑上运行,整个过程也非常的方便,只需要在控制台中将字体改为8,就可以实现在Windows上的运行;如果想在Linux或者其他操作系统上运行,那么只需要加上修改几行代码的步骤就可以了。


实现流体动力学效果


除了这位外国小哥,我们还在Youtube上看到了一些其他用ASCII码实现的效果,都十分的有创意。


比如这个用ASCII码实现流体力学(Fluid Dynamics)效果的展示:


微信图片_20220112150853.gif


波浪


微信图片_20220112150855.gif


倾倒


甚至还有彩色的效果:


微信图片_20220112150856.gif


未来这位小哥可能会推出教程,感兴趣的同学敬请期待!


参考链接:

https://www.youtube.com/watch?v=QMYfkOtYYlg&feature=emb_logo

相关文章
|
6月前
|
API C++
甩开卡顿!HarmonyOS丢帧问题超详细拆解手册
这是一本针对HarmonyOS丢帧问题的超详细调优指南,从渲染流水线原理到实战优化全面解析。文章拆解了应用侧、Render Service和屏幕显示三大核心模块,结合60Hz/90Hz/120Hz帧率要求,深入分析卡顿原因。通过四步法(识别、录制、定位、优化),提供核弹级性能优化方案,涵盖列表卡顿、动画掉帧、布局臃肿等常见问题,并总结避坑圣经,助你轻松甩开卡顿,打造丝滑体验!
604 1
|
5月前
|
人工智能 搜索推荐 大数据
2025年电商API发展趋势:智能化与个性化
2025年,电商API在人工智能与大数据推动下加速智能化、个性化发展。从智能库存预警到情境感知推荐,技术驱动效率跃升与体验升级。预计个性化API调用占比达75%,智能决策渗透率超90%,开发成本下降60%。电商API正从“功能连接器”进化为“智能服务中枢”,重构用户体验与商业生态。
205 0
|
数据采集 JSON API
淘宝商品数据采集API技术分享
在电商领域,数据采集和分析对提升业务效率、优化用户体验至关重要。淘宝作为国内最大电商平台之一,提供了丰富的商品数据。通过淘宝商品采集API,开发者可高效获取这些数据,支持决策。本文详细介绍了如何注册、申请权限、构建请求、处理响应及注意事项,助力商家和开发者利用API进行商品数据采集。
|
自然语言处理 前端开发 数据可视化
Quarto ppt模板制作与Rstudio git连接
本文介绍了当前PPT演示中流行的Quarto文档使用情况,以及如何在Rstudio中连接Git进行版本控制。重点讲解了Quarto的ppt模板制作流程,包括安装、创建演示文稿及自定义样式等步骤,并提供了相关资源链接。
385 0
Quarto ppt模板制作与Rstudio git连接
|
9月前
|
安全 Java API
Nacos 3.0 Alpha 发布,在安全、泛用、云原生更进一步
Nacos 3.0 Alpha 发布,在安全、泛用、云原生更进一步
270 0
|
Java 测试技术
SpringBoot单元测试快速写法问题之区分链路环节是否应该被Mock如何解决
SpringBoot单元测试快速写法问题之区分链路环节是否应该被Mock如何解决
|
存储 Java Linux
【Java项目】Minio的安装部署以及SpringBoot整合Minio
【Java项目】Minio的安装部署以及SpringBoot整合Minio
1405 0
|
Linux
Linux系统应用编程 --- 信号处理函数(sigprocmask、sigpending函数)
Linux系统应用编程 --- 信号处理函数(sigprocmask、sigpending函数)
345 0
|
Linux C++
ARM嵌入式学习笔记——《设备驱动基础》(二)
ARM嵌入式学习笔记——《设备驱动基础》
179 0