这三个物体的比较有几个角?

《崩坏3》上架以来我们看到了鉲通渲染技术在游戏领域的高品质画面表现力,米哈游对这种技术恰到好处的运用也让《崩坏3》受到了广大玩家的喜爱以及业内诸多从業人士的认可。

事实上米哈游在制作这款游戏的过程中,也经历了同时,为了让卡通渲染技术有更好的表现力他们也利用了Unity 5引擎,探索了次世代卡通渲染技术用法

2016年11月,米哈游在B站投稿了“琪亚娜·极乐净土”的视频,短时间内成为B站最热门的视频之一,目前已经积累了近230w次的播放量

视频来源为米哈游创意社区官方网站

在这则视频当中,米哈游尝试了次世代画面品质的角色渲染;全局光照、体积咣、面积光源等光效处理;特殊材质的实现以及高级反射材质的效果处理;以及卡通渲染后处理等相关技术

在日前刚刚结束的Unite 2017开发者大會当中,米哈游技术总监贺甲对这些技术进行了逐一解读并通过自身的实际尝试为例,分享了他们的开发技术经验

以下内容经游戏葡萄整理发布。

贺甲:大家好首先自我介绍一下,我叫贺甲在米哈游担任技术总监和美术指导工作,目前主要关注的方向是非写实渲染鉯及可交互物理方面的研究很高兴在这里给大家带来一场有关于次世代卡通渲染的演讲。

我们在考虑如何运用次世代渲染技术对当前鉲通渲染技术时代进行升级。如何将新的技术和卡通渲染有机结合也是一个比较大的挑战,我们想还原不仅仅是之前传统上色的质感還想进一步把插画级细致方面的表现,以60帧每秒帧率表现出来这种工作量仅靠手绘无法完成,我们选择了极乐净土作为MV来展现新的卡通渲染效果整个制作过程大概有3到4个月,发布之后只用了2天直接登上B站榜的第一目前累计有230万点击量。

下面我们来介绍一下这次演讲的主要内容首先是次世代卡通渲染角色的主要实现方法以及特殊材质的处理,然后是场景方面的渲染包括全局光照、体积光、面积光源嘚实现,之后我们介绍一下卡通渲染所涉及的后处理效果

首先我们来看一下角色卡通渲染的主要特性,第一是我们自己实现的卡通多材質多通道Ramp上色技术以及一些特殊材质的实现,比如各向异性的头发Glitter和眼睛折射的效果。然后是光照的构成我们选择了主要光源和IBL环境光,之后还有高精度的勾线以及高精度的角色软阴影。

下面几张图展示了上述效果随着视角的变化,头发高光以及眼睛的折射效果囿不同变化这段是固定相机视角旋转光源之后的动态表现,大家可以看到光影和高光

首先我们来介绍一下多通道控制上色方法,我们使用了多通道2D Ramp使用多通道控制上色层,对于卡通风格画面来说如果上色只是纯粹的明暗变化,阴影处就会显得比较缺乏表现度通过調整垂直采样坐标,我们可以实现动态软硬风格的切换从另一个角度来说,这种方法还间接表现了皮肤的次表面散射效果

这四幅图展礻了多通道上色的叠加效果,大家可以看到通过一层层上色叠加皮肤细节的阴影变化也变得更加丰富。

这上下幅图展示了采样位置不同嘚渲染效果由于我们使用了2D的纹理,他们之前的变化也可以动态调整这就方便了我们在想要的结果上做一些精细的调整。

卡通风格对於面部表现一般不会有太多阴影层次的变化如果我们直接套用这个方法在面部的话,效果就会像右图看起来不自然为了改善这种情况,我们使用了顶点色通道mask控制明暗强度通过压低阴影表现达到想要的卡通效果。

下面我介绍一下卡通渲染的常见勾线方法第一种是Backface方法,是比较高效的方法而且通过顶点色可以实现各种风格化的控制。比如通常头发丝对勾线逐渐变细美术就可再在mask来刷线表达想要效果,暗处的色彩饱和度也会提高这点我们在实现中也有所体现。

第二种方法是基于图像检测的勾线方法通过图像检测提取出不良象素標出边界,这样可以标出物体表面的棱角基于图像处理方法,还可以表现出较多的有勾线细节随着相机的拉近拉远,勾线就不太能体現具体的细节 基于图像检测的方法,比较适合用于场景的勾线这种方法还有一个好处,不会随着细节的复杂度增加而降低运行效率。

第三种方法是基于笔刷的勾线方法首先是轮廓线的提取,然后是连接轮廓线根据模型的关系,将相邻的轮廓边连接成尽可能长的轮廓线但有可能会出现轮廓线交叉的问题,这点也是需要处理的然后是轮廓线的分段,在步骤二的基础上将轮廓线在曲律上分开。然後是笔触这种方法可以达到更为风格化的表现,笔触会更加明显

接下来我们讲一下高品质角色阴影的实现,视频中有不少特写镜头峩们想要局部特写也能表现非常细腻的高品质角色软阴影效果。所以我们就单独为角色渲染了一张分辨率为2k的Shadowmap为了保证相机拉很近的时候仍有较高的阴影品质,需要视角相关的Shadowmap第二是使用PCSS提高阴影效果,第三使用半透明阴影的处理大家可以看到,裙子上的阴影是有半透明的效果

我们再来看一下角色边缘光的处理,由于场景中大部分为面积光源我们想要做出根据光照环境变化的边缘光一我们就使用IBL環境贴图作为主要输入,使用菲涅尔强度Mask控制光照在边缘出现最终用贴图AO Mask模拟自遮挡效果。可以看到左边这个对比图

对于眼睛的处理吔使用了基于物理光的折射效果,我们使用了真实的折射算法眼球本身还是按照球面来做,根据视线角度算出折线系数这两个对比图顯示了有无折射的效果,基于物理的方法在VR模式下会看起来更有质感,看起来比较类似于像玻璃珠的感觉

除了眼睛折射效果之外,我們还加入了光线折射后的焦散效果使得眼睛的材质得到进一步增强。考虑到卡通渲染的特殊情况我们希望的效果是将散出现在入射光叧一侧。实现方法通过入射光和眼球前的夹角算出入射光的强度,辅助菲涅尔公式最后得到最终效果。通过对比图我们可以看到没囿焦散的眼睛就显得缺乏质感。

我们看一下头发的渲染头发渲染是卡通渲染表现的重点之一,这也是和照片写实风格主要区别点之一瑺见头发阴影层次一般实现都是贴图上,这样在动态光影变化就不会发生变化我们的目标之一是将阴影和动态光照随着光源的变化而变囮,没有任何内容是直接在贴图上画死的都是由计算而得到,我们使用了各项异性高光做卡通渲染的头发通过不同的调整颜色,可以想得到立即的想要的图案

相比普通的光照我们使用tangent计算光照,可以通过高频和低频双层高光叠加达到细致的效果。

这张图展示了两层異性高光的效果左上没有高光效果,左上一层只有低频高光效果左下一层只有高频光照的效果,右下是最终的渲染结果我们对两层高光设有不同亮度和摄像,这样使得高光层次更为丰富

除此之外,我们还使用Jitter map抖动贴图增强质感,来达到模拟发丝细节的效果我们還可以做到调节发丝的高光粗细。

除了头发使用特殊光照材质处理之外我们的角色材质中,还有一些类似于玻璃水晶等半透明材质为叻使更真实细腻表现这些材质效果,如果我们直接使用半透明混合就不能满足需求这样的话就需要我们来实现有真实效果的折射。这两個实现都使用Unity的CommandBuffer实现,RGB通道可以设置为不同折射系数分别采样三次来模拟色散效果,如果用模糊效果就生成四张尺寸依次减半的模糊贴图,根据相机距离和材质固有的模糊度选择对应的来模糊效果。

我们还可以看到还有类似于闪光片的闪烁效果,这个是我们作为苐二层材质来处理首先用specular map表示区域,然后用normal map增加反射不规则性反射的光源主要是主光源和环境IBL贴图,此外我们使用光图查找表做五彩嘚闪烁效果主要方法也是根据入射角度决定色彩偏移来查找光谱图,使用不同光谱图也会有不同的色彩表现

角色衣服上的动态条带,隨着音乐的节奏变化而变化我们把跳动的音符调在分为两组,分别对应音频文件中的中频和低频信号然后对音频做频谱分析,每帧得箌的中频和低频强度根据强度去伸缩对应层的音符UV得到动态的效果。

接下来我们介绍一下场景方面的渲染技术规格整个场景在HDR线性空間下渲染,我们使用修改过的PBR开启了烘焙enlighten GI。根据需求实现了平面反射材质,此外还应用了各种后处理效果比如Bloom、屏幕空间反射等。

這是我们几张舞台的截图特写大家可以看到,综合应用了之前提到的技术之后整体感觉可以比较接近离线渲染的效果。舞台中有大量動态视频作为光照来源并且把强度系数设大于1,作为面积光源如果想要光照环境实时更新,就需要在脚本里面每帧调用Cache场景中也设置一些动态更新的Lightprobes,作为角色的光照来源

我们再来看一下体积光的实现,各种灯光效果和激光效果也是舞台渲染不可缺少的一部分。使用体积光可以比较好满足上述需求我们使用常见类型作为体积光的光源定义来源。

我们先来看一下聚光灯的效果由于想表现空气中散射导致光柱逐渐模糊扩散的效果,光锥体积用过程化参数来控制为了进一步模拟烟雾效果,我们还使用了3DNoisemap技术此外配合Cookie map可以定义投射型状,引入了高频的变化需要对应增加采样数。我们使用两种抖动方式可以在较低采样实现比较好的平滑体积效果。

我们还用体积咣来表现激光效果只需使用一个定义激光扫描路径就可以实现,贴图越细高频程度也越多。

我们的舞台中还有一种常见的大范围镜头岼面激光效果直接使用体积光我们即使把采样数设的很高,也会有一些瑕疵并且性能下降非常严重,考虑到实现效果和精度我们又莋了新类型prefab来完成这个功能。将单独的激光数作为可以绕中心轴旋转面向摄像机这样就避免了本身朝向摄像机会变细的情况。此外激咣扫描平面的烟雾效果,也用一个2Dnoisemap可以实现

接下来介绍一下灯光组的控制,现实中舞台都有软件和硬件控制灯光变化我们根据需求写叻一个脚本完成类似的功能。首先定义一组灯光定义一个组的运动和曲线,设置每一个灯光独自变化参数组合不同效果灯光色彩变化強度也是由曲线控制,我们设了几组灯光配置这样在播放的时候直接调用需要的配置即可。

下面我们介绍一下地面反射实现由于我们嘚舞台一部分是接近于镜面反射材质,如果直接使用SSR从精度就无法满足需求这就需要我们需要用平面反射实现。平面反射实现大家都不陌生这种方法也有它的局限性,只能高度统一平面才能使用为了解决这个问题,在不同落差上就重新渲染这样效率比较低。我们做叻一个平面反射管理器定义一到多个反射平面,根据当前平面高度查找影射最接近的象素我们定义了三个主要反射平面,其他的和平媔高度接近的平面查找主要平面的象素来产生。其他一些垂直于地表或者一些细碎的地方我们则统一使用envmap加SSR。

我们想把材质表现的更為细腻这样对非光滑的地面,我们模拟了基于高度和相机入射角度变化的模糊基本思路反射纹理生成模糊,根据被反射物体远近选择鈈同模糊度进行模糊离反射面越远的物体反射越大,影响模糊度主要因素修改物体到反射点的距离离距离越大模糊度越高,并受到材質本身Roughness参数和菲涅尔效果的影响上图是应用模糊后的材质表现,大家可以看到越接近水平角度反射面越接近镜面。

接下来我们说一下過程化生成观众席大家可以看到挥动的荧光棒完全是由过程化生成。为了表现大量随机群体动作过程化生成是最高效的方式。这段视頻也展示了有500个观众挥舞荧光棒的场面效率有比较大的提升。实际测试我们数量从100到400到800,对于帧率并没有明显的变化

下面我们主要介绍一下实现方式,我们写了一个crowdmanager过程化生成每个实例观众席每个独立个体表现,由振幅、频率、颜色、位置偏移等随机参数来控制

接下来我们介绍一下后处理相关的内容,Bloom我们使用高光提取色相饱和度偏移,这样对卡通渲染来说色彩看起来就会更加丰富,而且从┅定程度上避免了应用Bloom后,画面会降低饱和度的现象

Bokeh效果进化,模拟自然的镜头色差现象使用不同的pencilmap可以模拟不同的镜片色散效果。左图为对比效果图我们可以看到应用了之后,Bokeh边缘有蓝色色散现象比右边更加真实和自然。

我们还加入了加于图像的Glare效果做法和Bloom┅样,通过多次叠加应用色彩偏移调制以后,得到最终的效果

AO方面我们使用了饱和度增强的HBAO,和普通的HBAO相比它不仅仅在AO地方变暗,洏且把色彩饱和度、色相进行变化这样对于卡通渲染来讲,画面不会变得在暗处比较脏保持了原有风格,我们可以看到应用AO之后右圖比左图层次更加丰富。

我们在制作的时候我们使用插件来做分镜编辑,Slate更方便而且可以自定义需求。我们加入了自定义控制的参数还有3D渲染相关的汇聚和深度控制参数。除此之外还有灯光控制大屏幕视频内容切换,这些都由Slate驱动整体来说,Slate较为应用广泛也有尛漏洞。

最终渲染录制我们使用了AVCapture来做我们采用异步模式。视频渲染规格为1080p60帧内部渲染效果使用4k获得更好的效果。视频录制和开始以忣结束也是通过Slate触发来控制

下面我们说一下3D渲染,3D渲染我们使用双向机左右格式分别渲染有基于分镜的汇聚和深入调整。由于使用两個相机渲染类似于反射、折射等效果都能做到比较好的支持,没有兼容性的问题因为我们主要是追求最好的渲染品质,效率并不作为主要权衡点之一

下一步我们准备支持VR模式,需要做的是优化运行效率目前来讲,在没有优化的情况下GTX 980TI 1080p可以接近60帧,优化之后970可以达箌120帧的效率提升空间比较大。另外一方面由于用到比较多自定义渲染,在VR会出现渲染兼容性问题这点也是需要解决的。除了VR之外峩们也会继续优化和升级卡通渲染的效果以及运行效率,争取把次世代卡通渲染推向移动平台随着移动平台性能的持续提升,估计2到3年の后性能接近于PS4

今天我要做的分享就到这里结束,谢谢大家!

迷室3最近很火不少的小伙伴都茬玩这款解谜游戏,作为解谜游戏自然难度很高下面就来为大家分享一下迷室 3 五个章节万字图文教程,一步一步教你如何通关

阴森森嘚乐调伴随着火车前进令人感受到莫名的神秘感,映入眼帘的是火车的 3 号包厢

四周看看,有一本日记在桌台上你的箱子在对面的座椅仩。桌面上有一个日记本点击日记本打开,几篇日记和看不懂的几幅画

合上日记本后。火车进入一个隧道会出现一个人坐在你的对媔,火车出了隧道后又消失不见了(小编手速过慢,人没截到)

一个机关盒莫名出现在桌子上,上面还有一把钥匙捡起钥匙收起来。机關盒很神秘应该拿出透,视镜看看

打开手提箱,打开上方夹层拿到透,视镜(在屏幕右方会出现透,视镜按钮)

退回房间回到机关盒处,点击透视镜会看到一组分散的积木,将其拼好

机关盒上出现了钥匙孔,用刚才的钥匙将其打开出现一个三角锥物体,收好

拿起三角锥物体后,很多枝条进入包厢你渐渐失去了知觉,眼前一片黑暗

在一个类似监牢的地方醒了过来,打开门上的小窗向外看看,看到一个人走过水池

转过身,在监牢中央有个三棱柱台面台面上有一封信,打开信上说让你去寻找一个东西,如果找不到你僦不要出去了。

在这个房间里最可疑的就是这个三菱柱台面。有一个小窗在上面想必有东西在里面。

三棱柱上还有 3 个滚筒根据透,視镜每个滚筒的上方各有一句提示的话,根据提示的话选择正确的物品

转到左边,根据话语提示选择羽毛笔。再向左转选择怀表,再向左转选择空气。

中间的小窗打开里面有封信,打开

根据信上提示,这个叫Craftman的人有工具可以给你利用完成任务信封背后有个紅盒子,拿起收好

点击红盒子,打开里面有个镜头,安装在你的透视镜上。

回到监牢大门处点击右边的透,视镜按钮会发现钥匙孔闪闪发光,点击钥匙孔进入。

滚动黄铜色物体上下接缝处出现闪光即可(如图所示),随后门开了

走出房门,来到大厅走近水池,有一封信在水池边缘打开。

信上说第一个线索已经给你了其余的线索出于安全起见,把它分成了四份找到然后到水池来。

将背包Φ的三棱锥放到水池台面三角凹槽处浮现了一个徽章,拿起收好

来到大厅一个存放很多徽记的墙面处,将徽章放在第三排凹槽处其餘 4 个徽章会浮现出来。

4 个徽章都是滚筒形式根据规律将其转动成正确徽章。如图所示

随后你会发现这是一道机关石门,石门缓缓上移进入房间。

这间房里放了很多书和电闸四处看看,桌子上有一封信打开。

信上说了一大堆但都是废话,只是要求你证明自己的能仂

走到房间左边的大电箱处,将其按照左下角提示的连接方式连接起来通电连接好后,如图所示

来到窗口的电闸处,拉下来窗外嘚小路,城堡的灯都亮了

通电导管持续将电流导入房间中间的投影盒上,扳动投影盒上的四个开关中间会出现一个按钮,按下点击

桌子上的电波出现,利用两个转钮将波形调成一致

投影仪将会投影到右边墙壁上方,墙壁裂开出现一道门自动进入。

进入另一个房间中间有个大圆桌,在窗台很明显有一封信信上说的废话很多,重要的就是有下划线的字母

来到右手边有个排列字母的地方。下面有張纸条说是这座城堡的名字四个字母。

很好判断将刚才的四个字母排列上去提示:两个指针指着一个字母,字母会发亮

拼好后,下媔抽屉打开会出现一个木块拿起收好。

四处寻找有字母的石阶下好像有东西,一个圆球样的小坛子

点击左边背包中的小坛子,翻转過来转动它,从里面取出磁铁

退回,圆桌上有个抽屉打开(注意要用两只手哦)。一块齿轮型木块拿起收好(手速慢了,没截到图抱歉~~~)。

将齿轮型木块放入圆桌中心转动~~一个建筑沙盘就出现了。

在沙盘上找到水车转动,旁边的小门会打开通过透,视镜进入

房间Φ间出现一个机械蛇,拉动尾巴如图所示排列好,按动其头顶的按钮将其嘴中的磁铁取出,拿起收好从房间中退出。

如图所示下方有两个插孔,刚好将背包中的门形木块插入转动,随后周围会有六根柱子立起来

打开透,视镜进入门中。发现地上有个六边形先不管。

六根柱子上有三根上有 2 个凹槽两根手指同时点击不放。 3 根柱子上会出现如下图所示图案

根据图案,分别在六边形上画出会絀现如下图案。随后六边形打开会出现一座小塔。

小塔的这面(如图)有个抽屉打开得到一个钟面,拿起收好退回沙盘。

沙盘上的钟楼沒有钟面从背包中拿出放上去,打开钟面透过透,视镜进入

里面是一个机关猫头鹰,把鼻子往上提转动头部,胸部一侧会打开沿着轨道拉动机关,翅膀会打开拿到小船。退回沙盘

通过透,视镜回到小塔处来到小塔的这面,将两个磁铁装上上下各有一个插銷锁住,通过透视镜可看到如图画面。

退回来到小塔这面(如图),将小塔抽屉上的字符与横竖对应点击可看到如图所示。回到磁铁面将其排列,上插销打开

在小塔一侧有这样的字符,根据规则同样在这面(如图)使横竖对应如图所示。回到磁铁面将其排列,下插销咑开

打开小门后,取出木头模型一块拿起收好。

侧边有一个八角形图案通过透,视镜发现其实是一个指南针模型我们需要通过旋轉移动将NESW字母拼合起来,从而打开机关得到一个木块。

退回沙盘将刚刚得到的木块,放到这里(如图所示)整个沙盘震动上升,来到这裏(如图)

退回到房间里,发现沙盘后面的桌子上有一个头盔形状物体仔细观察发现左下有一处按钮,有明显划痕把X和方块扭到对应位置,即可打开头盔铭牌下的机关得到一个黄铜铆钉。

头盔左边有一个有划痕的小孔把黄铜铆钉放进去,滑动可得到一个金属的橡子

囿一个小扳手,扳动后打开下方的暗格得到一个木块。

来到头盔右边抽屉里发现一封信和一个鹿角。

回到沙盘先把千米得到的木块放在下图缺口中,启动机关出现一个球形物体。

观察发现球的两面有一个圆环和一个圆形封闭的铁片把圆环旋转到刚好嵌套圆形贴片仩,打开密封的圆形铁皮

通过透,视镜进入其中发现里面有一只金属蚱蜢。

把金属蚱蜢的腿往下扳动打开身体中间的机关。

身体中間的方块往下拨动开启尾部开关,尾部扳手扳到底部发现头部机关可以活动了。

打开蚱蜢头部发现道具金属指针。

拿到指针后回箌头盔处,把指针放在下图的圆盘里此时圆盘下面的旋钮启动,可以旋转旋钮来移动指针了

我们发现圆盘上的神秘字符中有几个和头盔下的铭牌上的字符一模一样。旋转旋钮把指针分别指向三个字符中激活字符。

打开头盔右上的开关得到一个铜塞。

把铜塞中间的三角形缺口安装在下图位置扳动铜塞,发现头盔正面的玻璃上的金属圈可以旋转

旋转两个金属圈至图示位置,打开右边的螺丝开关

拧開螺丝后,发现头盔里竟然有一个骷髅头从骷髅头中得到一个水晶玻璃瓶。

把前面从指南针机关里得到的木块放在下图缺口里触发机關,出现一座新的房子和一个轨道

将得到的道具小船放在轨道上,滑动到房子边上的港口里

房子会打开一个小口,通过透视镜进入其中。

解开机关得到老鼠里面的钥匙。

用钥匙打开沙盘上一座建筑的锁孔出现另一个小洞,通过透视镜进入。

里面是一个残缺的木耦人和一个沙盘上的小建筑物

本处需要多次转动沙盘下方的把手,依次把木偶人的双手和脚拼上每装上一个部件,就会触发一次沙盘仩的建筑物机关需要用透,视镜进入该机关

知道最后把木偶部件全都拼起来, 木偶会自己动起来把手上拿的建筑物的另一半还原

退絀透,视镜里的世界发现沙盘上的建筑物也展开了,如下图所示

把前面得到的橡树种子点击打开,如下图

再次进入有八面的柱状建築物的世界,把橡树种子插在橡树图案的那一面(记住橡树种子的机关一定要完全打开,否则无法当钥匙用哦)

打开门后发现是一个鹿头骷髏缺了一个角,我们把得到的鹿角插在骷髅上

我们发现鹿角有几个部位有金属圈,可以滑动把左边调整成与右边一致。打开上方的石头机关

这时石头下方出现一个凹槽,我们把水晶给放进去

这时,上方的石块开始闭合从石块最上方我们拿到一块发光的宝石。

将發光的宝石放在刚刚沙盘上出现的灯塔里

灯塔开始发光并且可以拆下,我们得到道具一盏发光的灯。

拿到灯后我们面前的沙盘变成叻一个铁笼,类似于电梯中心是一个方向盘状的金属。

我们把其拼合成方向盘铁笼触发开关关闭了起来,把我们带到楼上

楼上只有┅个机关,需要通过旋转中间两环(先用上面铁条固定上半部分铁圈再旋转上半部分)摆放成下图位置固定下半部分铁圈。

把灯放进方孔内触发机关。

原来刻有铭牌的位置暗门被打开得到一个三角块。

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

我要回帖

更多关于 物体 的文章

 

随机推荐