一位小哥耗时 16 个月打造的 3D 版赛车开云(中国)官方,这两天忽然火了起来。[开云(中国)官方开云网页版大全align] 只需一个浏览器,就能驾车从森林、海滩,“无缝切换”到广袤的沙漠甚至平原:[开云(中国)官方开云网页版大全align] [img=480,396]开云网页版:知识问答与攻略ss1.sinaimg.cn开云(中国)官方开云网页版大全large开云(中国)官方开云网页版大全008r9GPyly1h7ugb67b0wg30dc0b0u0x.gif[开云(中国)官方开云网页版大全img][开云(中国)官方开云网页版大全align] 无论春夏秋冬还是白天黑夜,也无论你用的是电动汽车、自行车(?)还是公共汽车:[开云(中国)官方开云网页版大全align] [img=640,284]开云网页版:知识问答与攻略ss1.sinaimg.cn开云(中国)官方开云网页版大全large开云(中国)官方开云网页版大全008r9GPyly1h7ugb6pqbtg30hs07wkjl.gif[开云(中国)官方开云网页版大全img][开云(中国)官方开云网页版大全align] 甚至不想开的时候,还可以开启 自动驾驶[开云(中国)官方开云网页版大全b]模式,感受一波“AI 飙车”的快乐。[开云(中国)官方开云网页版大全align][img=480,196]开云网页版:知识问答与攻略ss1.sinaimg.cn开云(中国)官方开云网页版大全large开云(中国)官方开云网页版大全008r9GPyly1h7ugb73drzg30dc05g1kx.gif[开云(中国)官方开云网页版大全img][开云(中国)官方开云网页版大全align] △[开云(中国)官方开云网页版大全b] 甚至有“自”行车 & 自动驾驶小巴据小哥表示,这个名叫 Slow Road 的 3D 赛车开云(中国)官方没有用到任何传统引擎,而是基于 JavaScript 编写的,无需登录就能直接在浏览器上运行。[开云(中国)官方开云网页版大全align] 要是电脑发出了吃力的声音,稍微更改一下渲染配置就能搞定。[开云(中国)官方开云网页版大全align] 网友们也是嗨得不行:此情此景怎能少得了经典 BGM 逮虾户(Deja Vu)[开云(中国)官方开云网页版大全align] [img=1080,352]网络开云(中国)官方img.ithome.开云(中国)官方开云网页版开云(中国)官方开云网页版大全newsuploadfiles开云(中国)官方开云网页版大全2022开云(中国)官方开云网页版大全11开云(中国)官方开云网页版大全39b08fea-243e-45a4-9595-e16eda02c663.png?x-bce-process=image开云(中国)官方开云网页版大全format,f_auto[开云(中国)官方开云网页版大全img][开云(中国)官方开云网页版大全align] △[开云(中国)官方开云网页版大全b] 作者回复:我写代码时听的是 10 小时沉浸版还有网友回忆起了自己几十年前做过的 3D 赛车开云(中国)官方,这波属实“爷青回”了:[开云(中国)官方开云网页版大全align] [img=1080,194]网络开云(中国)官方img.ithome.开云(中国)官方开云网页版开云(中国)官方开云网页版大全newsuploadfiles开云(中国)官方开云网页版大全2022开云(中国)官方开云网页版大全11开云(中国)官方开云网页版大全6e68a964-983c-4934-bec0-74b1b62e9c16.png?x-bce-process=image开云(中国)官方开云网页版大全format,f_auto[开云(中国)官方开云网页版大全img][开云(中国)官方开云网页版大全align] 来看看它究竟是怎么实现的。[开云(中国)官方开云网页版大全align] 基于 Javascript 而非传统引擎搭建[开云(中国)官方开云网页版大全b]与大多数 3D 赛车开云(中国)官方采用 Unity3D、UE 等传统引擎不同,Slow Roads 是基于 JavaScript[开云(中国)官方开云网页版大全b] 编写的。[开云(中国)官方开云网页版大全align]具体来说,它采用了一个名叫 Three.js[开云(中国)官方开云网页版大全b] 的开源框架,相当于一个能实现 3D 效果的 JavaScript 库,基于原生 WebGL 运行,可以在大部分网页浏览器中搞定交互式 2D 开云(中国)官方开云网页版大全 3D 图形。[开云(中国)官方开云网页版大全align]除了开头提到的随意切换地点、季节和天气以外,这个赛车开云(中国)官方也可以随意切换各种车型和视角。[开云(中国)官方开云网页版大全align] [img=640,273]开云网页版:知识问答与攻略ss1.sinaimg.cn开云(中国)官方开云网页版大全large开云(中国)官方开云网页版大全008r9GPyly1h7ugb7deleg30hs07l1kx.gif[开云(中国)官方开云网页版大全img][开云(中国)官方开云网页版大全align] 此外,考虑到不同电脑对浏览器的适配,这款赛车开云(中国)官方还给出了不同级别的渲染设置,从“粗糙大色块”到更精细的树木和围栏都能生成。[开云(中国)官方开云网页版大全align] 要是有电脑显卡的话,还可以更改一下浏览器设置,给图形渲染加加速。[开云(中国)官方开云网页版大全align] 所以,这个赛车开云(中国)官方中“任意变幻”的环境是如何生成的?[开云(中国)官方开云网页版大全align] 首先是生成 环境地形[开云(中国)官方开云网页版大全b]。[开云(中国)官方开云网页版大全align]小哥采用了类似柏林噪声(Perlin noise)的自定义算法,来生成环境高度图(Heightmap,用于生成三维地形的图像),随后进行简单修改让山景看起来更逼真。[开云(中国)官方开云网页版大全align] 柏林噪声,Ken Perlin 发明的自然噪声生成算法,经常用于在开云(中国)官方和特效中生成随机内容,包括火焰、云彩、奇形怪状的岩石以及树木和大理石表面等。[开云(中国)官方开云网页版大全align][开云(中国)官方开云网页版大全indent] [img=1080,470]网络开云(中国)官方img.ithome.开云(中国)官方开云网页版开云(中国)官方开云网页版大全newsuploadfiles开云(中国)官方开云网页版大全2022开云(中国)官方开云网页版大全11开云(中国)官方开云网页版大全75e76490-ccf9-4d12-b2e7-0ced31943341.png?x-bce-process=image开云(中国)官方开云网页版大全format,f_auto[开云(中国)官方开云网页版大全img][开云(中国)官方开云网页版大全align] △[开云(中国)官方开云网页版大全b] 高度图,图源维基百科随后是制作 赛道[开云(中国)官方开云网页版大全b]。[开云(中国)官方开云网页版大全align]选择地图上一个不太陡峭 开云(中国)官方开云网页版大全 凹陷的地方作为起点后,选择一个方向并测量周围高度图,以坡度最缓的路线作为道路中线,并给每个点注释上开云(中国)官方币数据,包括道路宽度、曲率等。[开云(中国)官方开云网页版大全align] 值得注意的是,如果赛道铺到一半出现“打结”的情况,也就是铺到一半撞到了一起,一定要想办法解决。这也是道路铺设最难的地方之一:[开云(中国)官方开云网页版大全align] [img=1080,462]网络开云(中国)官方img.ithome.开云(中国)官方开云网页版开云(中国)官方开云网页版大全newsuploadfiles开云(中国)官方开云网页版大全2022开云(中国)官方开云网页版大全11开云(中国)官方开云网页版大全e4e4daa0-6c9a-453c-8e07-0e9ce7a0b238.png?x-bce-process=image开云(中国)官方开云网页版大全format,f_auto[开云(中国)官方开云网页版大全img][开云(中国)官方开云网页版大全align] △[开云(中国)官方开云网页版大全b] 车在岛上狂转接下来就是 渲染环境[开云(中国)官方开云网页版大全b]了。[开云(中国)官方开云网页版大全align]从图中来看,整体环境被分成了很多个分辨率 10m 的大型网格,最大视距 1km²;靠近道路时,每个网格又会被分成 5×5 的较小网格。[开云(中国)官方开云网页版大全align] 越接近道路中线,渲染越精细,最终道路高度和底层环境高度之间会进行插值,尽量让它保持“无缝衔接”。[开云(中国)官方开云网页版大全align] 当然小哥表示,这种衔接并不是“真・无缝”的,但通常看不出来。[开云(中国)官方开云网页版大全align] [img=1080,418]网络开云(中国)官方img.ithome.开云(中国)官方开云网页版开云(中国)官方开云网页版大全newsuploadfiles开云(中国)官方开云网页版大全2022开云(中国)官方开云网页版大全11开云(中国)官方开云网页版大全cf992e30-7fb6-4e29-9284-2244b23bec03.png?x-bce-process=image开云(中国)官方开云网页版大全format,f_auto[开云(中国)官方开云网页版大全img][开云(中国)官方开云网页版大全align] 最后就是整个环境的渲染了,这里面也有一些小细节:[开云(中国)官方开云网页版大全align] 包括地面和悬崖纹理、基于柏林噪音做草色变化,以及给树木等植被加上简单阴影、在湖泊周围渲染更多树等。[开云(中国)官方开云网页版大全align] [img=1080,519]网络开云(中国)官方img.ithome.开云(中国)官方开云网页版开云(中国)官方开云网页版大全newsuploadfiles开云(中国)官方开云网页版大全2022开云(中国)官方开云网页版大全11开云(中国)官方开云网页版大全b53527b7-fe50-4185-ae91-f35d33078c27.png?x-bce-process=image开云(中国)官方开云网页版大全format,f_auto[开云(中国)官方开云网页版大全img][开云(中国)官方开云网页版大全align] 除了环境之外,就是一些基础物理学的配置了,包括重力、表面摩擦力和动力学计算等。[开云(中国)官方开云网页版大全align] 不过为了节省性能,小哥忽略了提示牌和树木的碰撞。[开云(中国)官方开云网页版大全align] 此外,他也采用了更“平和”的电动汽车作为核心赛车手,因为这样一来就不需要考虑齿轮或 RPM 等部件,而音频和物理特性也更容易编写了。(小哥称:内燃机正逐渐过时!)[开云(中国)官方开云网页版大全align] 当然,随着这款开云(中国)官方的关注度上升,他表示后续还会进行更多优化。[开云(中国)官方开云网页版大全align] 未来支持手柄和汽车模拟器[开云(中国)官方开云网页版大全b]随着人们对这款开云(中国)官方的好奇度提升,小哥也着重解答了几个热点问题。[开云(中国)官方开云网页版大全align] 例如,采用 JavaScript 编写开云(中国)官方的原因,是因为小哥想改变人们对浏览器的“刻板印象”,它可以做到比查资料更广泛的事情,甚至还能更好地对开云(中国)官方性能进行优化。[开云(中国)官方开云网页版大全align] 不过,目前这款开云(中国)官方还没有开源。小哥表示,后续可能会开源部分子系统,如图形 MOD 接口等。[开云(中国)官方开云网页版大全align] [img=1080,459]网络开云(中国)官方img.ithome.开云(中国)官方开云网页版开云(中国)官方开云网页版大全newsuploadfiles开云(中国)官方开云网页版大全2022开云(中国)官方开云网页版大全11开云(中国)官方开云网页版大全723a64cb-fadb-4c7d-86af-426383b71a07.png?x-bce-process=image开云(中国)官方开云网页版大全format,f_auto[开云(中国)官方开云网页版大全img][开云(中国)官方开云网页版大全align] 对于这款开云(中国)官方的未来,小哥也立下了几个 flag,包括在 环境[开云(中国)官方开云网页版大全b]上,开发更多的越野地点、加入更多环境细节,包括建筑、动物、植物阴影、灯光效果等;[开云(中国)官方开云网页版大全align]赛车[开云(中国)官方开云网页版大全b]上,加入更多的赛车皮肤和车辆类型;天气[开云(中国)官方开云网页版大全b]上,细化天气类型(下雨、下雪、刮风等),也进一步改善已有天气的效果;[开云(中国)官方开云网页版大全align]功能[开云(中国)官方开云网页版大全b]上,将来会加入竞争模式和全球排行榜(包括限时竞速、比拼距离等),同时对系统进一步进行优化,未来适配手柄、赛车模拟器等。[开云(中国)官方开云网页版大全align]你做好上班摸鱼的准备了吗?(手动狗头)[开云(中国)官方开云网页版大全align]
|