本来想等到明年π day再发的,然后质疑自己的能力,就昨晚开始做了,结果今天做完了恼。
想试试的话就百度云下载下来玩罢
通过百度网盘分享的文件:ASCII Renderer game.rar
链接:https://pan.baidu.com/s/13RxLY4XD3u9i6l7lpaMP6Q?pwd=fufu
提取码:fufu
或者直接博客下载液液液液!垃圾百度云!
……
……
……
嗯?怎么还没划走?
难道
是可怜我这个老人家吗?
吼吼吼,那就
听我讲一个故事吧。
从前有个不知天高低厚的小朋友,他日常上网冲浪的时候看到了一个很好玩的东西:
一通搜索之后,小朋友找到了作者的博客:
https://www.a1k0n.net/2011/07/20/donut-math.html
里面详细的介绍了用ascii字符渲染一个甜甜圈的方法。
小朋友笑了笑,很明智地马上把这事忘了。
很久很久以后,小朋友又想起了这个很酷的事,并且,小朋友想到了要是能渲染一个π,在明年的π day发朋友圈,那得多炫酷啊。
某一天的夜晚,小朋友做了他这辈子最 *插入“坏”的同义词* 的决定:
他在桌面新建了个叫pi.c的文件夹……
* 窗外电闪雷鸣 * 喜感觉可以是kakosci的万圣节特辑
发挥了互联网精神,把donut.c复制到自己电脑上之后,小朋友开始了思考……
首先,π是什么样子的?
小朋友想了想,一定要简单,不然写程序会写死他的。这么想着,小朋友打开了solidworks

一个圆柱,两个部分圆环,感觉都可以用和甜甜圈一样的算法!毕竟部分甜甜圈也是甜甜圈,圆柱也只是半径无限大的甜甜圈!只要把它们拼起来就好了!
对吧?
小朋友的脑海里现在就像进了几十个花火开party,一顿超级头脑风暴搞定各个形状的坐标系的拼接和表面的点的定义之后,小朋友发现了一个问题……
计算反射光强度的法线怎么办?
两个圆柱相接的地方,应该怎么搞?
小朋友知道肯定有方法,但是他已经累了,开始上网冲浪发挥互联网精神,打算ctrl C+V
然后一通操作,除了遍地都是的donut.c还有donut.py,就只找到一个画球体的。恼哦。
小朋友已经气急败坏了,直接想着把渲染扔给unity算了,先混一个程序出来玩玩。
小朋友开心的打开了unity hub,新建了一个项目。这就是小朋友犯得第二宗罪。
此时的小朋友还不知道,他已经变成典型的白领小年轻了。
既然用了unity做渲染,小年轻想着,那我用多复杂的模型都行吧。不过,小年轻知道自己电脑上能导入进unity最合适的工具就是blender了。How hard can it be?
好吧,虽然想说难,但是小年轻查了个3d字体的教程,一下就操作完导出π的模型了,喜。
虽然之前在unity里想用text mesh pro做3d字体没鬼用,查了google发现做不了,然后又发现有人github写了个做得了的,下下来试了不仅巨慢而且效果巨烂。
这段就按下不表,因为相比其他折磨这段简直是情趣。
小年轻开心地打开youtube找视频,找到一个讲ascii渲染的,欣喜若狂。看完之后打算抄代码才发现,视频里的代码藏着掖着,只给了核心定义,各种引用和调用都没展示出来。
小年轻大吃一惊,急忙去评论区找答案,然后不出所料,置顶评论就是作者的patron。
恼,小年轻想,然后开始了漫长的代码补全之路。
然后不出所料查unity手册半天也没补出来。
小年轻气急败坏,又打开了google。要是小年轻会关闭一下电脑屏幕照照镜子,就会发现他已经变成中年油腻大叔了,可惜我们的主人公除了结束这段痛苦的经历以外其他什么都已经不能思考了。
大叔翻了一堆google,看到了一堆零几年的老古董,抄了一堆代码,叹出来的气足以供应脑子里花火的派对气球(恼怎么花火还在)
终于!大叔做出了明智的决定!
放弃了。
可惜,让人保持理智是一种奢望。
忍一时越想越气,退一步越想越亏。大叔又上头了,在一顿天翻地覆地搜索之后,他想起来还有unity的assets store这种东西。他不知道的是,他旁边的黑色手机屏幕上赫然倒映着一个退休老人家的脸。
老人家看了一眼assets store,大喜过望,居然有大牛直接发免费的ascii渲染包,而且还是最近几个月更新过。虽然只有两个评论让老人家有点担心,但是能抄代码抄素材,爽死啦!
虽然要把用的unity版本从21年版变成22年版,但是简简单单啦~
当然,风暴总在晴天之后。导入素材,发现居然要用unity的universal reader pipeline(URP)来做,是个后期渲染。
捣鼓了半天屏幕上的图案还是半点没动。气急败坏之下老人家直接把整个项目删掉,然后下载了unity的URP示例模版项目,导入了ascii渲染包,然后!
还是没半点动静。
又被折磨了一个小时的老人家剧烈咳嗽了两声,锤了锤他的老腰板,仰天长叹。
变成了老朽我现在的样子,满头银发。
行吧,老朽想着,大不了再学个unity后期渲染,没逝的。
在后期渲染配置好URP之后,给URP的配置的配置配置配置的时候,好吧先解释下,URP的配置的配置的配置叫Volume,然后URP的配置的配置接收到Volume之后再交给URP的配置处理,最后再告诉URP怎么渲染。
啊,说回正题,老朽给URP的配置的配置配置配置的时候,发现显示错误no srp in use。
google一下,发现原来告诉URP怎么渲染这步要在edit→project settings里面选!
我寻思全局也只能有一条渲染管路啊!其他东西像project settings又是整个项目只能有一个,unity会直接读取这个名字的文件来配置,你URP又搞特殊!可恶!
然后,羞愧的把我的URP配置拖进URP里之后,渲染成功了。
冷静,老朽我要冷静,导入ascii渲染包试试。
也成了。
不知道内心心情该如何形容,是折磨终于结束的喜悦,还是本来半小时顶天搞定的东西搞了5个小时的痛苦。
总之,这就是上面的小游戏的来源。
老朽也该仙逝了:

最后:惯例附张天子~(看完我年轻60岁了)

最后的最后,附上π的模型文件(虽然不会有人下吧)
呜哇太有文采了吧(喜
喜顺便封面图片是网易云听歌的某个版本的碎月的封面居然是天子就保存下来了,今天用到了。
喜找到了是这个https://music.163.com/#/song?id=852438