求问一下end and end forthe end of world游戏这游戏有资源么。

扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
帮忙看一下这篇文章有没有语法错误,要参加比赛的.非常感谢!在线等.The Expo was held on the first of May and end on the thirtieth of October. There over 184 days to go for World Expo.Many people said ,"There is so beautiful." I think so . We also can go to Japan Pavilion ,Korea Pavilion and Canada Pavilion.We can see many people from the other countries. We can speak English with them. And we must be polite.We should get a good influence to them. We should be friendly to them . We should bring some drinks,because things are expensive in there. I saw some volunteer in the Expo ,they were same clothes.They told us how to go where we wanted to go.Eveybody thanks to them.I want to be a volunteer.Better life, it is human eternal ideaBetter life, it is the symbol of civilization.Better life,it is a dream of all around the world.I believe we will have a better life in the future.求求大家了!我给分的,说到做到!明天就要交了!
红玫瑰mq405
扫二维码下载作业帮
3亿+用户的选择
写文章最好不要用缩写.还有,世博都过了你还这样写?以下是我尽量修改后的,希望可以帮助你.The World Exposition in Shanghai began to hold on May,1st and it ended on October,13th.There were 184 days for people to go to it.Many people said that it was so wonderful.I do think so.There were hundreds of pavilions,such as Japanese pavilion,Korean pavilion,and Canada pavilion.Many people were from other countries,and some people talked with them in English.We tried to make a nice impression to our friendly foreign friends.This was a successful banquet of different culture.I saw some volunteers in the exposition.They all wore uniforms,and they friendly helped me.They showed me the way to where we wanted to go.I really wanted to be a volunteer like them!
为您推荐:
其他类似问题
楼主真的写的很好,没语法错误
扫描下载二维码游戏开发启示录游戏开发启示录关注专栏更多最新文章{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&title&:&记第一次Game Jam&,&author&:&silangquan&,&content&:&这个周末参加了在广州举行的48 小时极限创作的 Game Jam,收获良多。\u003Cp\u003E记一下流水账。\u003C\u002Fp\u003E\u003Cp\u003E6月初在网上进行了报名,本想找几个小伙伴,结果大家兴致都不是很高,所以就只是一个人进行了报名。\u003C\u002Fp\u003E\u003Cp\u003E比赛前一天在比赛的QQ群里找到了几个广州本地的小伙伴,简单的聊了几句决定加入,人员配置:策划一名(队长),3D场景Kelvin,打杂Fair,加上我做程序,一共四个人,其中有一名成员有global game jam的比赛经验。\u003C\u002Fp\u003E\u003Cp\u003E周五下午5点多已经开题,题目是这样的:\u003C\u002Fp\u003E\u003Cimg src=\&fb92f3cbfba02eab84d6714a.png\& data-rawwidth=\&880\& data-rawheight=\&515\&\u003E\u003Cp\u003E\u003Ci\u003Egame jam 题目\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E晚上\u003C\u002Fb\u003E下班直接做大巴赶到广州,路况很差,几经折腾,到9点多才到达会场。和成员简单沟通之后,直接进入开发状态。游戏创意用的是策划之前想的一个案子,是一个跳台滑雪的体育游戏。当天晚上已经搭建出了一个简单的游戏原型:\u003C\u002Fp\u003E\u003Cimg src=\&6cb8f642e67a4a0c813cc.png\& data-rawwidth=\&789\& data-rawheight=\&462\&\u003E\u003Cp\u003E\u003Ci\u003E做的第一个原型\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E这个原型已经有了完整的物理,重力感应输入。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E晚上入住附近的酒店。\u003C\u002Fp\u003E\u003Cp\u003E赛场8点开门,原计划9点到赛场的(我觉得已经很晚了),队长又决定早上10点之前到,理由是大家要好好休息。早起对我来说其实是非常痛苦的,但我觉得如果只是早起两天应该还好吧,而且前一夜也没有搞到很晚,我甚至有点怀疑是不是第一次参加有点过于兴奋了。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E第二天\u003C\u002Fb\u003E早上8:30起床,到达会场是早上9点,开始撸代码。合场景,写UI,写角色控制器,写Camera...\u003C\u002Fp\u003E\u003Cp\u003E\u003Cimg src=\&d4e5bc6d83b9532482cc.jpg\& data-rawwidth=\&1921\& data-rawheight=\&1920\&\u003E\u003Ci\u003E去赛场的一个路口\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E上午Kelvin给了我4个赛道的模型,分别是30m,40m,70m,80m,分别加碰撞体,分别测试。\u003C\u002Fp\u003E\u003Cp\u003E到中午的时候,进度严重滞后的是角色的动作,我去简单了解之后,发现昨天组长请的外援做的是一个3k面的高模,然后Fair在对模型进行skinning了一个上午还没有搞定,当下决定重新制作Low poly风格的角色。\u003C\u002Fp\u003E\u003Cp\u003E我从Youtube上截取了一些参考扔给了Kelvin,他在1个小时内疚搞定了模型,然后又花了点时间展UV,最后扔给Fair做绑定,到晚上的时候,已经能够将动画导入场景。\u003C\u002Fp\u003E\u003Cp\u003E到晚上收工,还是有很多原先计划的东西没有开始做,角色动画控制,录像系统,剧情系统等。但还是发出了一个可以体验的prealpha版本,\u003C\u002Fp\u003E\u003Cimg src=\&db2f0e941c4f54385cdd3acbc569cc77.png\& data-rawwidth=\&874\& data-rawheight=\&491\&\u003E\u003Cp\u003E\u003Ci\u003Eprealpha版本\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E第三天\u003C\u002Fb\u003E,还是8:30起床,全家的包子味道不错。\u003C\u002Fp\u003E\u003Cp\u003E任务比较多,而且提交时间提前到下午三点,时间越发紧张。我还是计划优先新的场景和角色动画,地形和山脉改用Unity自带的Terrain,植被用的AssetStore上的一个免费包。\u003C\u002Fp\u003E\u003Cimg src=\&eb3b5d4ea59f84aebe0a08.png\& data-rawwidth=\&888\& data-rawheight=\&543\&\u003E\u003Cp\u003E\u003Ci\u003E地形截图\u003Cbr\u003E\u003C\u002Fi\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E这里由于Unity版本不同的问题,造成了在传prefab的时候出现了一些问题,耽误了时间。原计划中午12点的版本推迟了一个小时才发出来,alpha版。\u003C\u002Fp\u003E\u003Cimg src=\&22a1e6f451b8a15f1572fac2f1738ee1.png\& data-rawwidth=\&1033\& data-rawheight=\&547\&\u003E\u003Ci\u003Ealpha版\u003C\u002Fi\u003E\u003Cbr\u003E\u003Cp\u003E在调整玩法和手感,调整动画,添加UI和部分音效,beta版。\u003C\u002Fp\u003E\u003Cimg src=\&2bd250f7ad6e4bda5dbca.png\& data-rawwidth=\&728\& data-rawheight=\&397\&\u003E\u003Cp\u003E\u003Ci\u003Ebeta版本\u003C\u002Fi\u003E\u003Cbr\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E最后完善UI,添加bgm,添加游戏开始的画面,添加icon,splashscreen,3点50分,提交了release版本。\u003C\u002Fp\u003E\u003Cimg src=\&323d4fe58f8bb7efb7a6.png\& data-rawwidth=\&993\& data-rawheight=\&556\&\u003E\u003Ci\u003Erelease版本截图\u003C\u002Fi\u003E\u003Cp\u003E游戏完整的玩法如下:\u003C\u002Fp\u003E\u003Cp\u003E最后发出的版本是Android移动版,游戏完整的玩法如下:\u003C\u002Fp\u003E\u003Cp\u003E玩家可以选择从不同高度的赛道下路,在下落过程中玩家需要点击屏幕进行蓄力,然后要在就要到跳台的地方松手起跳(地上有红色的标记,越挨近起飞的力量越大);\u003C\u002Fp\u003E\u003Cp\u003E在空中飞行阶段,需要通过重力感应来控制角色空中的姿态,当玩家的姿态非常标准的时候,会产生一个向上的升力,让玩家飞得更远;\u003C\u002Fp\u003E\u003Cp\u003E落地时跳跃的距离越远,得分越高。\u003C\u002Fp\u003E\u003Cp\u003E4点到6点游戏体验环节,很多的参赛者都来试玩我们的游戏,甚至为了打破最远的记录不断的replay,replay,replay....我在旁边解说也很开心。\u003C\u002Fp\u003E\u003Cimg src=\&060d1ecde1e434b4ece43b0.jpg\& data-rawwidth=\&1921\& data-rawheight=\&1920\&\u003E\u003Cp\u003E\u003Ci\u003E人们在争相试玩我们的游戏!\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E玩了一下其他组的游戏,感觉质量都蛮不错的,特别是几个像素风格的游戏,都蛮眼前一亮的。\u003C\u002Fp\u003E\u003Cimg src=\&33ad123c97bf9ceaef4e68b.jpg\& data-rawwidth=\&1921\& data-rawheight=\&1920\&\u003E\u003Cp\u003E\u003Ci\u003E旁边参赛组的像素游戏\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E6点开始游戏展示。\u003C\u002Fp\u003E\u003Cp\u003E我们是第6组,很快就到我们了,我们由组长去展示。\u003C\u002Fp\u003E\u003Cp\u003E每组的展示时间是五分钟,然而我们的组长的只用了两分钟就搞定了,没有强调玩法,没有扣主题,只强调了三点:\u003C\u002Fp\u003E\u003Cp\u003E1.我们是第一次参赛,没有什么比赛经验(明明就有 一个老司机好么!)\u003C\u002Fp\u003E\u003Cp\u003E2.由于时间原因,我们很多东西都没有完成。\u003C\u002Fp\u003E\u003Cp\u003E3.参考以上两点。\u003C\u002Fp\u003E\u003Cp\u003E然后我就拎包走人了。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cbr\u003E\u003Cp\u003E这局dota是这样的:\u003C\u002Fp\u003E\u003Cp\u003E队长手选小火枪,出门之前在队友频道说:“大家不要送,等我起来。”\u003C\u002Fp\u003E\u003Cp\u003E我中单毒龙,碾压对面,三路支援。\u003C\u002Fp\u003E\u003Cp\u003E冰女各种买鸡变鸟,插眼辅助。\u003C\u002Fp\u003E\u003Cp\u003Eswen关键时候也能甩个锤子,上来抡几棍,\u003C\u002Fp\u003E\u003Cp\u003E20分钟,火枪装备,假腿,一系带,\u003C\u002Fp\u003E\u003Cp\u003E30分钟,火枪装备,假腿,天鹰戒,\u003C\u002Fp\u003E\u003Cp\u003E35分钟,对面骷髅王带盾一波推了大本。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E其实他在比赛第一天的下午就已经放弃了比赛。\u003C\u002Fp\u003E\u003Cp\u003E之后就没有为游戏做过任何贡献,甚至在赛场玩起了皇室战争。\u003C\u002Fp\u003E\u003Cp\u003E对,他不想赢。\u003C\u002Fp\u003E\u003Cp\u003E最怕的就是这样的队友。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E非常感谢一起参赛的另外两位同学,Fair,和Kevin,谢谢你们。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E附一个下载地址:\u003Ca href=\&http:\u002F\\u002Fs\u002F1bplzgXD\& data-editable=\&true\& data-title=\&点我下载\&\u003E点我下载\u003C\u002Fa\u003E\u003C\u002Fp\u003E&,&updated&:new Date(&T16:35:05.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:3,&likeCount&:12,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T00:35:05+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002F2b73c629ea16_r.png&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:3,&likesCount&:12},&&:{&title&:&记第一次Global Game Jam&,&author&:&silangquan&,&content&:&local network game where two players throw nuclear bombs to each others. Instructions: \u003Cp\u003E1. Click to let your character move to nuke launcher which is near a city. \u003C\u002Fp\u003E\u003Cp\u003E2. Select a target city to nuke on your opponent's side. \u003C\u002Fp\u003E\u003Cp\u003E3. Go through a series of launch procedural: Enter nuke password, Insert keys, Hit the red button. A little bit of strategy. A little bit of reaction requires. There are some political figures in the game. Please do not be too serious, just for fun. No political ideas! No commercial purpose! If you want to test this game alone, please start two games. \u003C\u002Fp\u003E\u003Cp\u003EOne hit [Host] button and one hit [Client] button.\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E\u003Cbr\u003EJam Site: \u003Cbr\u003E\u003Ca href=\&http:\u002F\u002Fglobalgamejam.org\u002FFjam-sites\u002Fggj-x-ciga-shenzhen\& data-editable=\&true\& data-title=\&GGJ X CiGA Shenzhen\& class=\&\&\u003EGGJ X CiGA Shenzhen\u003C\u002Fa\u003E\u003Cbr\u003EJam Year: \u003Cbr\u003E\u003Ca href=\&http:\u002F\u002Fglobalgamejam.org\u002FFjam-sites\& data-editable=\&true\& data-title=\&2017\&\u003EC\u002Fa\u003E\u003Cbr\u003EPlatforms: \u003Cbr\u003EMS Windows\u003Cbr\u003ETools And Technologies: \u003Cbr\u003EUnity (any product)\u003Cbr\u003ECredits: \u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003EGuan Yang\u003C\u002Fp\u003E\u003Cp\u003ERiver Shen\u003C\u002Fp\u003E\u003Cp\u003ESiyuan Cheng\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cimg src=\&v2-b9c46113d34cacc2d11b0e54b30626c4.png\& data-rawwidth=\&767\& data-rawheight=\&545\&\u003E&,&updated&:new Date(&T14:55:50.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:0,&likeCount&:2,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T22:55:50+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-acfa381aaacf46b48bd6af0a86f7c286_r.png&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:0,&likesCount&:2},&&:{&title&:&全面认识Depth - 这里有关于Depth的一切&,&author&:&silangquan&,&content&:&\u003Ch2\u003E\u003Cb\u003EDepth\u003C\u002Fb\u003E\u003Cb\u003E的由来\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003E从PerspectiveProjection 说起\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E所谓的PerspectiveProjection 其实就是将顶点从view 坐标系下,转换到NDC下\u003C\u002Fp\u003E\u003Cimg src=\&v2-1fccb5eb5db0e5dfbc8c409a.png\& data-rawwidth=\&470\& data-rawheight=\&261\&\u003E\u003Cp\u003E这里面包含了两个步骤,将view 坐标系下的顶点乘以透视矩阵,转换到Clip 坐标系,得到Clip坐标,\u003C\u002Fp\u003E\u003Cimg src=\&v2-4b505e052df600b9bbe4bb.png\& data-rawwidth=\&293\& data-rawheight=\&102\&\u003E\u003Cbr\u003E\u003Cp\u003E然后统一除以w,得到NDC 坐标。\u003C\u002Fp\u003E\u003Cimg src=\&v2-b51ae3fcd58b27b8d7ba53.png\& data-rawwidth=\&232\& data-rawheight=\&84\&\u003E\u003Cbr\u003E\u003Cp\u003E透视矩阵就不推导了,\u003C\u002Fp\u003E\u003Cimg src=\&v2-9b266d6e56df5f6de999f5.png\& data-rawwidth=\&243\& data-rawheight=\&182\&\u003E\u003Cp\u003E这里再看下Zn和Ze之间的关系\u003C\u002Fp\u003E\u003Cimg src=\&v2-5585cedda86c14670fb44abfc4e4408b.png\& data-rawwidth=\&324\& data-rawheight=\&170\&\u003E\u003Cp\u003E其中n是近裁面,f是远裁面,r是0.5 *width, t = .5 * height。其中\u003C\u002Fp\u003E\u003Cimg src=\&v2-c4f078a7ecd.png\& data-rawwidth=\&78\& data-rawheight=\&26\&\u003E\u003Cp\u003E可以得出\u003C\u002Fp\u003E\u003Cimg src=\&v2-b7ee43ff576991.png\& data-rawwidth=\&112\& data-rawheight=\&43\&\u003E\u003Cp\u003E其中A = -(f+n)\u002F(f-n) , B = -2fn\u002F(f-n).两者的关系可以用下图来表示\u003C\u002Fp\u003E\u003Cimg src=\&v2-c6fc5565c86.jpg\& data-rawwidth=\&554\& data-rawheight=\&165\&\u003E\u003Cp\u003E可以看出有下面几点\u003C\u002Fp\u003E\u003Col\u003E\u003Cli\u003E两者是非线性的关系。曲线是倒数的关系。(y=1\u002Fx)\u003Cbr\u003E\u003C\u002Fli\u003E\u003Cli\u003E根据曲线的特点可以知道在近裁面附近的Depth变化非常的明显,越接近远裁面,Depth变化越小,精度变差,这时候就会出现恼人的Z-Fighting\u003Cbr\u003E\u003C\u002Fli\u003E\u003Cli\u003E要避免Z-Fighting,n和f之间的距离就要尽量小,尽量将n大一些。\u003Cbr\u003E\u003C\u002Fli\u003E\u003Cli\u003E这样的好处虽然远的地方可能会有Z-fighting,但是近处的地方有了更好的深度精度\u003Cbr\u003E\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003Cbr\u003E\u003Cp\u003E可能这还不是很清楚,后面还有更精确的数学推导。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003Eviewport\ntransformation \u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003Eviewport transformation都知道,就是将ndc坐标map到屏幕空间,那么深度呢?从[-1,1]映射到[0,1],(OpenGL中)。0是最近,1是最远. 默认Dw的值在[0,1]就是可以渲的,当然,也可以用 glDepthRange可以用来指定Zw的取值范围。\u003C\u002Fp\u003E\u003Cp\u003Eviewport transformation 的计算过程如下\u003C\u002Fp\u003E\u003Cimg src=\&v2-dac0b5deaa04b61e8c6e.png\& data-rawwidth=\&452\& data-rawheight=\&584\&\u003E\u003Cbr\u003E\u003Cp\u003E将之前计算的Zndc的式子代进来,得到\u003C\u002Fp\u003E\u003Cp\u003EZdepth = (We \u002F Ze) * f*n\u002F(f-n) + 0.5 *\n(f+n)\u002F(f-n) + 0.5\u003C\u002Fp\u003E\u003Cp\u003E在存储到depth buffder 的时候,需要将Zw乘以一个系数s = (2^n -1) ,其中n是Depth buffer的位数。\u003C\u002Fp\u003E\u003Cp\u003E所以最终Depthbuff中存储的是\u003C\u002Fp\u003E\u003Cp\u003EZw = s * [ (we \u002F ze) *\nf*n\u002F(f-n) + 0.5 * (f+n)\u002F(f-n) + 0.5 ]\u003C\u002Fp\u003E\u003Cp\u003E下面推导一下关于Depth精度的问题。\u003C\u002Fp\u003E\u003Cp\u003E将上面的式子进行变换,吧Ze放到左边\u003C\u002Fp\u003E\u003Cp\u003EZe \u002F we = f*n\u002F(f-n) \u002F ((zw \u002F s) - 0.5 * (f+n)\u002F(f-n) - 0.5)\u003C\u002Fp\u003E\u003Cp\u003E= f * n \u002F\n((Zw \u002F s) * (f-n) -\n0.5 * (f+n) - 0.5 * (f-n))\u003C\u002Fp\u003E\u003Cp\u003E= f * n \u002F\n((Zw \u002F s) * (f-n) - f)\n\u003C\u002Fp\u003E\u003Cp\u003E假设是一个16位的深度缓冲,n = 0.01,\nf = 1000,\n那么s = 6C\u002Fp\u003E\u003Cp\u003E对于从Depth Buff采出来的值\u003C\u002Fp\u003E\u003Cp\u003EZw = 0 ,则 Ze\u002FWe = -n\n= -0.01\u003C\u002Fp\u003E\u003Cp\u003EZw = s = 65535,则Ze\u002FWe= -f =\n-C\u002Fp\u003E\u003Cp\u003E接下来去Zw = 1和s-1看看\u003C\u002Fp\u003E\u003Cp\u003EZw = 1 =& Ze \u002F\nWe = -0.3C\u002Fp\u003E\u003Cp\u003EZw = s-1 =&Ze\n\u002F We = -395.9C\u002Fp\u003E\u003Cp\u003E仔细观察上面的数据,发现了一个惊天秘密 –\neye坐标系下的深度Ze,从-395.9到-1000在Depth buffder中所对应的范围是[6],这是相当恐怖的,导致的结果就是Z-Fighting,下面就是在Fighting。\u003C\u002Fp\u003E\u003Cimg src=\&v2-ab4c6e47dca8.png\& data-rawwidth=\&686\& data-rawheight=\&525\&\u003E\u003Cp\u003E对于深度造成的误差,还可以参考这一篇Learning\nto Love your Z中的例子。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E由深度缓冲重建view pos\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E知道一个点的深度还有相机的一些参数,重新算出物体的坐标(不管是世界坐标还是view坐标系下的坐标),微软的kinect利用的就是这个原理,进行三维重建的。\u003C\u002Fp\u003E\u003Cimg src=\&v2-705eb8ac56d9fbfac30535.jpg\& data-rawwidth=\&387\& data-rawheight=\&308\&\u003E\u003Cbr\u003E\u003Cp\u003E在Deferred shading还有很多后期效果中,我们都需要一个像素点精确的位置来给这个像素着色。\u003C\u002Fp\u003E\u003Cimg src=\&v2-aca0ff782a87b11bc1deb1.jpg\& data-rawwidth=\&554\& data-rawheight=\&427\&\u003E\u003Cbr\u003E\u003Cp\u003E如上图所示,已知Camera的pos,view Dir,只需要知道surface上的点到Camera的直线距离t就可以求出了: Peye\n= Pcam + t*Dview。\u003C\u002Fp\u003E\u003Cp\u003E现在问题是t怎么来。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E一种处理方法是将在GBuffer Pass中将t存放在一个rt里,具体的流程如下\u003C\u002Fp\u003E\u003Cp\u003E1.
\n在GBuffer pass,计算camera到surface的距离,存到rt里面。\u003C\u002Fp\u003E\u003Cp\u003E2.
\n在Light Pass的VS中,计算vertex到camera位置的View Ray向量。\u003C\u002Fp\u003E\u003Cp\u003E3.
\n在PS中,将View Ray 单位化,得到Dview。\u003C\u002Fp\u003E\u003Cp\u003E4.
\n采样rt获取Camera到Surface Pos的距离t\u003C\u002Fp\u003E\u003Cp\u003E5.
\nPeye = Pcam + t*Dview。\u003C\u002Fp\u003E\u003Cp\u003E简化的Shader如下\u003C\u002Fp\u003E\u003Ccode lang=\&glsl\&\u003E\u002F\u002F G-Buffer vertex shader\n\n\u002F\u002F Calculate view space position of the vertex and pass it to the pixel shader\n\noutput.PositionVS = mul(input.PositionOS, WorldViewMatrix).\n\u003C\u002Fcode\u003E\u003Cbr\u003E\u003Ccode lang=\&glsl\&\u003E\u002F\u002F G-Buffer pixel shader\n\n\u002F\u002F Calculate the length of the view space position to get the distance from camera-&surface\n\noutput.Distance.x = length(input.PositionVS);\n\u003C\u002Fcode\u003E\u003Cbr\u003E\u003Ccode lang=\&glsl\&\u003E\u002F\u002F Light vertex shader\n\n#if PointLight || SpotLight\n\n\u002F\u002F Calculate the world space position for a light volume\n\nfloat3 positionWS = mul(input.PositionOS, WorldMatrix);\n\n#elif DirectionalLight\n\n\u002F\u002F Calculate the world space position for a full-screen quad (assume input vertex coordinates are in [-1,1] post-projection space)\n\nfloat3 positionWS = mul(input.PositionOS, InvViewProjMatrix);\n\n#endif\n\n\u002F\u002F Calculate the view ray\n\noutput.ViewRay = positionWS - CameraPositionWS;\n\u003C\u002Fcode\u003E\u003Cbr\u003E\u003Ccode lang=\&glsl\&\u003E\u002F\u002F Light Pixel shader\n\n\u002F\u002F Normalize the view ray, and apply the original distance to reconstruct position\n\nfloat3 viewRay = normalize(input.ViewRay);\n\nfloat viewDistance = DistanceTexture.Sample(PointSampler, texCoord);\n\nfloat3 positionWS = CameraPositionWS + viewRay * viewD\n\u003C\u002Fcode\u003E\u003Cbr\u003E\u003Cp\u003E但是还有优化的空间,上面提到的这种做法的缺点是浪费了显存和带宽,而Depth 就在BackBuffer,如果能够从Depth中得到view pos的话,优化又进了一步。\u003C\u002Fp\u003E\u003Cp\u003E由于硬件中的Depth Buffer是除以过w的,所以\u003C\u002Fp\u003E\u003Cp\u003E第一步要做的就是将Depth buffer中的值恢复到view 坐标系下的Depth,就叫Ze,\u003C\u002Fp\u003E\u003Cp\u003E由上面推导的结果\u003C\u002Fp\u003E\u003Ccode lang=\&text\&\u003EZdepth = (We \u002F Ze) * f*n\u002F(f-n) + 0.5 * (f+n)\u002F(f-n) + 0.5\n\u003C\u002Fcode\u003E\u003Cbr\u003E\u003Cp\u003E通过f和n就可以推算出Ze了。\u003C\u002Fp\u003E\u003Cp\u003E另一种方法是利用透视矩阵M,根据透视变换\u003C\u002Fp\u003E\u003Cimg src=\&v2-90e8ded84c026e450558cfd.png\& data-rawwidth=\&223\& data-rawheight=\&71\&\u003E\u003Cbr\u003E\u003Cp\u003E其中Zndc =2 * depth – 1.原理是一样的。\u003C\u002Fp\u003E\u003Cp\u003E没线性化之后的深度渲染出来是这样的(狮子的鼻子),稍微远一些的地方深度值都很接近1了,所以很白,只有很近的地方才有灰色的部分。\u003C\u002Fp\u003E\u003Cimg src=\&v2-8a8cb0837d1ccc6b39ed994.jpg\& data-rawwidth=\&553\& data-rawheight=\&310\&\u003E\u003Cbr\u003E\u003Cp\u003E将线性化之后的depth渲染出来\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cimg src=\&v2-35a0dd28790d.jpg\& data-rawwidth=\&554\& data-rawheight=\&312\&\u003E\u003Cbr\u003E\u003Cp\u003E不是一片白了。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E知道深度之后,通过相似三角形就可以求出\u003C\u002Fp\u003E\u003Cimg src=\&v2-dbf3f740ca379138debd7.jpg\& data-rawwidth=\&553\& data-rawheight=\&462\&\u003E\u003Cbr\u003E\u003Cp\u003E接下来就是求View ray,这个放在ps中做,\u003C\u002Fp\u003E\u003Ccode lang=\&text\&\u003EViewRay = float3(positionVS.xy \u002F positionVS.z, 1.0f);\u003C\u002Fcode\u003E\u003Cp\u003E如果要将view坐标系的坐标转换到世界坐标系,\u003C\u002Fp\u003E\u003Cimg src=\&v2-4a9fcb13c0ed15d4a084.png\& data-rawwidth=\&324\& data-rawheight=\&30\&\u003E\u003Cbr\u003E\u003Cp\u003E还有一种简单暴力的处理方法\u003C\u002Fp\u003E\u003Ccode lang=\&text\&\u003Evec3 DepthToPos(float depth, vec2 texCoord)\n\n{\n\nvec4 ndcspace = vec4(texCoord.x * 2.0 - 1.0, texCoord.y * 2.0 - 1.0, depth * 2.0 - 1.0, 1.0);\n\nvec4 temp = inverse(MatView) * inverse(MatProj) *\n\nreturn temp.xyz \u002F temp.w;\n\n}\n\u003C\u002Fcode\u003E\u003Cbr\u003E\u003Cp\u003E直接用矩阵来处理,性能稍微会差一些(待考究)。\u003C\u002Fp\u003E\u003Ch2\u003E参考\u003C\u002Fh2\u003E\u003Cp\u003E\u003Ca href=\&https:\u002F\u002Fwww.opengl.org\u002Farchives\u002Fresources\u002Ffaq\u002Ftechnical\u002Fdepthbuffer.htm#0040\& data-editable=\&true\& data-title=\&12 The Depth Buffer\& class=\&\&\u003E12 The Depth Buffer\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&https:\u002F\u002Fwww.sjbaker.org\u002Fsteve\u002Fomniv\u002Flove_your_z_buffer.html\& data-editable=\&true\& data-title=\&Learning to Love your Z-buffer.\& class=\&\&\u003ELearning to Love your Z-buffer.\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&http:\u002F\\u002Fopengl-es\u002Fopengl-viewport-matrix\u002F\& data-editable=\&true\& data-title=\&OpenGL viewport transformation matrix - The Code Crate\& class=\&\&\u003EOpenGL viewport transformation matrix - The Code Crate\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&http:\u002F\u002Fblog.csdn.net\u002Fsilangquan\u002Farticle\u002Fdetails\u002F\& data-editable=\&true\& data-title=\&详解MVP矩阵之齐次坐标和ModelMatrix\&\u003E详解MVP矩阵之齐次坐标和ModelMatrix\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&http:\u002F\u002Fblog.csdn.net\u002Fsilangquan\u002Farticle\u002Fdetails\u002F\& data-editable=\&true\& data-title=\&详解MVP矩阵之齐次坐标和ViewMatrix\&\u003E详解MVP矩阵之齐次坐标和ViewMatrix\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&http:\u002F\u002Fblog.csdn.net\u002Fsilangquan\u002Farticle\u002Fdetails\u002F\& data-editable=\&true\& data-title=\&详解MVP矩阵之齐次坐标和ProjectionMatrix\&\u003E详解MVP矩阵之齐次坐标和ProjectionMatrix\u003C\u002Fa\u003E\u003C\u002Fp\u003E&,&updated&:new Date(&T14:54:06.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:0,&likeCount&:23,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T22:54:06+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-380f66239decddc9d68afc_r.png&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:0,&likesCount&:23},&&:{&title&:&(译)GDC13 Summary Animation Bootcamp Part 1\u002F6&,&author&:&silangquan&,&content&:&\u003Cp\u003E在下面一系列的文章中,我将给大家带来一些我在GDC2013中学到的一些课程,特别是对于那些没法来现场参与的人。下面的内容都是重我的笔记和记忆中重建出来的,可能会与当时的课程会有一些出入。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Ch2\u003E让观众深信不疑\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cem\u003EJalil Sadool, Senior Animator,\nDreamworks\u003C\u002Fem\u003E\u003C\u002Fp\u003E\u003Cp\u003EJail在动画和视觉效果方面做了很长的工作,他最近de工作包括了在WETA做动画师,还有在Dreamworks的动画Rise of\nthe Guardians中给主角制作动画。\u003C\u002Fp\u003E\u003Cp\u003E他一开始就指出了,动画最最重要的原则就是吸引人。这个表现足够好么?它是否引起了玩家的共鸣?他指出了两条学习的道路:\u003C\u002Fp\u003E\u003Cp\u003EA. 学习一些伟大演员的精彩的表演。他们是怎么移动的? 他们是怎么表达思考和感受的?他们的表现不仅仅是让人可信的,甚至是让人感觉在交流,是吸引人的。他给出了一个电影《教父》的例子,例子里面展示了Marlon Brando 饰演的角色是如果去拒绝一个请求的。我们可以发现他花了很久的时间来决定。他还给出了电影Tinker Tailor Soldier Spy 中的例子,展现了眼神接触和眼神躲避,身体姿态,思考的神情,鼓起勇气去表达的重要性。最后的一个例子来自Anatomy of a Murder ,展现了如果要表达自信,舒适,力量等,身体和面部表情往往会比语言更快一步,就像闪电会快于打雷。\u003C\u002Fp\u003E\u003Cimg src=\&v2-a32b96ceaa85a874cd1a.jpg\& data-rawwidth=\&520\& data-rawheight=\&293\&\u003E\u003Cp\u003EB.学习人们在现实生活中是怎么活动的。就把他们当作是在拍电影,但是不想将这件令人毛骨悚然。他展示了一些他捕捉到的一些有趣的东西。比如一个说话的女人在说话中做了20多个不同的手势,还有在长椅上睡觉的男人,正在仔细思考一些重要的事情,然后他做了一个决定,然后脱掉裤子,站起来欢快的跑掉了。通过观察日常人的行为,你可以积累一系列从没见过的有意思的动作。\u003C\u002Fp\u003E\u003Cp\u003E做动画的第一步一定是在你的脑子里把场景都预言一遍,使用那些片段来作为关键帧。为什么不上动作捕捉?Dreamworks 有一个动捕的平台用来搭建基本场景和相机运动,但是因为动补太过于费时费力,它实际上是归结为题材决定的。在WETA中他们使用很多的动捕,但是在Dreamworks他们更喜欢关键帧。\u003C\u002Fp\u003E\u003Cimg src=\&v2-f1a1e880ecf2b178bcdab4.jpg\& data-rawwidth=\&520\& data-rawheight=\&179\&\u003E\u003Cp\u003E他强调了在一个场景中,身体和面部的表现能力是最重要的,语言是乏力的。实际上他在制作动画的时候倾向于不播放背景对话,因为这会让人更加倾向去听声音而不是主动的去揣摩角色的意愿。他还尝试过将摄像机放在最终拍摄的位置,因为舞台的条件太过于严苛,好的表现如果不是从观众的角度出发就没有任何意义了。\u003C\u002Fp\u003E\u003Cp\u003E通过这种方法积累了许许多多的这样的镜头,他就能够运用他们来匹配最好的情况,甚至是一个挥动着的手和一颗思考的脑袋,他不断去修改和优化,直到他满意为止(有足够时间的话)。关键帧\u002F引用的方式同样更能够方便地从导演那得到反馈——他展示了通过不断迭代完成的一些影片的片段,比如Jack Frosr在空中翻跟斗的片段,它强调它是由一个在小盒子上保持平衡并且晃动手臂的动画组合而成。\u003C\u002Fp\u003E\u003Cimg src=\&v2-13bb9babde30e35b6265d.jpg\& data-rawwidth=\&520\& data-rawheight=\&281\&\u003E\u003Cbr\u003E\u003Ch2\u003E\u003Cb\u003E提问\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003E问\u003C\u002Fb\u003E:你咋去获得一些比如耍杂技的或者功夫的片段呢?\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E答\u003C\u002Fb\u003E:Youtube,其中在上面找打一个镜头是一个人在一个很庞大的场景中挥舞剑,他们就基于这个把动作做进了Batman Begins的预告片里。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E问\u003C\u002Fb\u003E:当同一个场景中有两个角色被不同的动画师操作,你是怎样处理的。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E答\u003C\u002Fb\u003E:另一个动画师不要出现在场景中,但是两个人要不断发给对方完成的片段,通力合作。每个角色由不同的动画师来调是挺好的,这样动画就相对独立了。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E问\u003C\u002Fb\u003E:你是怎么处理口型的?\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E答\u003C\u002Fb\u003E:从两个角度去记录,一个是正面,一个是相机的角度,正面对于获取基础的动作非常有用,相机的视角来保证观众看到的是正确的。\u003C\u002Fp\u003E\u003Cp\u003ESource - \u003Ca href=\&http:\u002F\\u002F\u002FGDC13-Summary-Animation-Bootcamp-Part-1-6\& data-editable=\&true\& data-title=\&GDC13 Summary: Animation Bootcamp Part 1\u002F6\& class=\&\&\u003EGDC13 Summary: Animation Bootcamp Part 1\u002F6\u003C\u002Fa\u003E\u003C\u002Fp\u003E&,&updated&:new Date(&T17:48:48.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:1,&likeCount&:1,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T01:48:48+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-efbd3de6ba379f5bbc5529_r.jpg&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:1,&likesCount&:1},&&:{&title&:&(译)GDC13 Summary Animation Bootcamp Part 2&,&author&:&silangquan&,&content&:&\u003Ch2\u003E创作动物\u002F生物的运动\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cem\u003EAmy Drobeck, Senior Animator, WB\nSeattle\u003C\u002Fem\u003E\u003C\u002Fp\u003E\u003Cp\u003EAmy在生物动画的方向研究了很多年,包括在迪士尼的9年,在Snowblind工作室的6年。她喜欢动物并且热爱动画,所以这简直就是她梦想的工作!下面就是她关于制作生物动画方面的建议。\u003C\u002Fp\u003E\u003Cp\u003E首先,通过在动物园或者野生动物救助站观察真正的动物,把它们画下来,让他们动起来,试着去靠近他们,用心去感受,然后你就可以将这种感受融入到工作中去。将它们用素描的分当时绘制下来,简化出最重要的部分,捕捉它们的运动,神态和神态。\u003C\u002Fp\u003E\u003Cimg src=\&v2-f0eea07fa24f7a349c5d7be1c9da4034.jpg\& data-rawwidth=\&520\& data-rawheight=\&230\&\u003E\u003Cp\u003E如果你花了很多时间与人类饲养的动物相处,比如狗,猫,马,你可以尝试去理解他们的身体语言,然后就知道他们在不同情况下的反应。你也可以通过去到动物的世界去理解动物,比如玩滑翔伞和潜水。\u003C\u002Fp\u003E\u003Cp\u003E形态上的解剖也是重要的---需要去理解他们和人体有什么相同和不同。大部分的哺乳动物的身体结构都差不多,人们会人们狗的腿是向后弯的,但他们只是用脚趾在走路拔了。狒狒也是差不多,他们实际上是一些融合的脚趾。但也是有一些重要的区别:四足动物有更多竖着的肋骨,而人类有更多横着的,大多数的动物没有锁骨,她展示了一段马的视频,里面和绘制出了马的骨骼来显示马的肢体结构:\u003C\u002Fp\u003E\u003Cp\u003ELink - \u003Ca href=\&https:\u002F\\u002Fwatch?v=5MAw61kegd8\& data-editable=\&true\& data-title=\& 的页面\& class=\&\&\u003Ehttps:\u002F\\u002Fwatch?v=5MAw61kegd8\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-29ad9e796ccddfc9a458a0.png\& data-rawwidth=\&515\& data-rawheight=\&308\&\u003E\u003Cimg src=\&v2-e5c2eb600.png\& data-rawwidth=\&515\& data-rawheight=\&291\&\u003E\u003Cp\u003E在实际工作中,你总是想去尝试用更加简单的绑定,这样性能更好,也更容易使用。比如马的躯干通常是非常刚性的 --- 使用一条骨来驱动胸腔,另一条骨来驱动臀部,而不是用一条弯曲的脊柱。通常把这些资源放在颈部来使用,这样更有价值。\u003C\u002Fp\u003E\u003Cp\u003E她最近的工作是在LOTR游戏中给一只巨大的老鹰做动画,这又是一个特别的挑战。在游戏中,翅膀收起的时候看起来很怪,所以他们在”肩胛骨“添加了很多羽毛来掩盖翅膀的瑕疵,于此同时有可以用来展示每次飞翔的状态。她还找到了如何在有刚性的嘴的脸上表现面部表情,通过面颊,眼睛,嘴角。\u003C\u002Fp\u003E\u003Cimg src=\&v2-3c14d85006eef4be86bd.jpg\& data-rawwidth=\&520\& data-rawheight=\&313\&\u003E\u003Cbr\u003E\u003Cp\u003E当然,常规的角色动画规则同样适用。在很多情况下你能够直接参考人的姿势和轮廓,然后映射到动物的轮廓上去获得同样的效果。他们没有明确指出,但是展示了一些关于Disney电影\nSword in the Stone 的手稿,在许多场景中主角Merlin和Arthur都只是把人的行为通过动物的形式去演绎,比如鱼和松鼠:\u003C\u002Fp\u003E\u003Cp\u003ELink - \u003Ca href=\&https:\u002F\\u002Fwatch?v=oDWnuddCf0E\& data-editable=\&true\& data-title=\& 的页面\&\u003Ehttps:\u002F\\u002Fwatch?v=oDWnuddCf0E\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-95e3ffa1746f8fafad483b21c3ee8c4b.png\& data-rawwidth=\&519\& data-rawheight=\&301\&\u003E\u003Cimg src=\&v2-74afb0fcacbe26c6679b62.png\& data-rawwidth=\&518\& data-rawheight=\&281\&\u003E\u003Cbr\u003E\u003Cp\u003E对于面板表情,你也可以尝试去效仿人的表情,可能它们会有一些特殊的结果比如喙或者鼻子。她指出对动物进行动画制作是有很大余地的,不会很容易就跌如”恐怖谷”,特别是面部表情和口型同步方面。我们不常去看说话的动物,所以即使并不太正确我们也不会很敏感。\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E注: 恐怖谷理论是一个关于人类对机器人和非人类物体的感觉的假设。它在1969年由日本机器人专家\u003Ca href=\&http:\u002F\\u002Fview\u002F4221170.htm\& data-editable=\&true\& data-title=\&森昌弘\&\u003E森昌弘\u003C\u002Fa\u003E提出假设,当机器人与人类相像超过95%的时候。由于机器人与人类在外表﹑动作上都相当相似,所以人类亦会对机器人产生正面的情感。直至到了一个特定程度,他们的反应便会突然变得极之反感。哪怕机器人与人类有一点点的差别,都会显得非常显眼刺目,让整个机器人显得非常僵硬恐怖,让人有面对行尸走肉的感觉。人形玩具或机器人的仿真度越高人们越有好感,但当超过一个\u003Ca href=\&http:\u002F\\u002Fsubview\u002F2F.htm\& data-editable=\&true\& data-title=\&临界点\&\u003E临界点\u003C\u002Fa\u003E时,这种好感度会突然降低,越像人越反感恐惧,直至谷底,称之为恐怖谷。\u003C\u002Fi\u003E\u003C\u002Fp\u003E&,&updated&:new Date(&T16:48:53.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:0,&likeCount&:1,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T00:48:53+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-efbd3de6ba379f5bbc5529_r.jpg&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:0,&likesCount&:1},&&:{&title&:&(译)GDC13 Summary Animation Bootcamp Part 3&,&author&:&silangquan&,&content&:&\u003Cp\u003E原文链接 - \u003Ca href=\&http:\u002F\\u002F\u002FGDC13-Summary-Animation-Bootcamp-Part-3-6\& data-editable=\&true\& data-title=\& 的页面\& class=\&\&\u003Ehttp:\u002F\\u002F\u002FGDC13-Summary-Animation-Bootcamp-Part-3-6\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Ch2\u003EHow to Get the Most Out of Your Mocap\u003C\u002Fh2\u003E\u003Cp\u003E\u003Ci\u003ESimon Unger, Animation Director,\nHitman:Absolution\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003ESimon是最新的Hitman系列游戏的动作指导,这个游戏获得过非常多的著名的动作类的奖项。在这之前,他曾在EA做了9年各种各样游戏动画,包括MVP Baseball 2005。\u003C\u002Fp\u003E\u003Cp\u003E他首先指出了动作步骤很可能被认为是全部自动的一个过程,这个观念还被一些公众人物不断放大,比如James Cameron 和 Andy Serkis ,他们强调了演员的表现,然后将动作捕捉描述成一种数字技术。这是完全错误的!动作捕捉只是一个动画师工作的一个开始。阿凡达需要的动画师的数量是Troy Story的两倍,所以是有很多东西要去做的。\u003C\u002Fp\u003E\u003Cimg src=\&v2-03b6ded7dfaa6dd595ec34.jpg\& data-rawwidth=\&520\& data-rawheight=\&212\&\u003E\u003Cp\u003E动作捕捉在动画制作方面有着很长远的历史\n—— 它被认为是一种转化技术,通过将物理电影帧转换为真实的角色,比如说Disney 1937年的Snow White。动画师对这种方法有着原始的抵触情绪,他们会认为这会让动画看起来廉价而没有吸引力。它缺少帧动画那样的力道和意图性,也缺少真实动作的微妙之处,所以这其实很糟糕。在2D的情况下,也会出现“uncanny valley” 问题,越是相似,只要有一点问题就会让人觉得奇怪。\u003C\u002Fp\u003E\u003Cp\u003E动画其实的主要目的是让人觉得真,这和真实世界的表演不同。一些动画比如《Wreck-it Ralph 》和《 Finding Nemo》\n,其中包含了很多比动作捕捉很多的让人可信的片段,甚至很多真人电影都这么干。\u003C\u002Fp\u003E\u003Cimg src=\&v2-de800dc7b8b3cae.jpg\& data-rawwidth=\&387\& data-rawheight=\&219\&\u003E\u003Cbr\u003E\u003Cp\u003E那么,为什么使用动捕会有这么多的问题还是要用?因为他是一个生产力很高的工具!如果不是把它作为最终的工具而是将其作为起始步骤,那么它的效率是制作关键帧动画的两倍。如果不适用这么有价值的工具,那么那些包含有很多动画的游戏就不可能做出来了。他还指出了一些使用动捕的最佳实践和常犯错误。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E1. \u003C\u002Fb\u003E\u003Cb\u003E准备\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E你需要在之前就准备好一个非常详细的捕捉列表,里面包含了输出的文件名,动作的详细描述,角色的数量,近似的长度,动作的方向等等。这个要做的非常详细,理论上即使导演不在场凭借这个也能去进行采集。故事版和分镜头也很有用,这样角色就知道相机的位置了,也指明了场景的上下文。与此同时,事先处理好所有可能会碰到的细节,比如服装,餐饮等等。舞台上的时间是非常宝贵的,不要浪费啊!\u003C\u002Fp\u003E\u003Cimg src=\&v2-1aafbb1e3e1.jpg\& data-rawwidth=\&520\& data-rawheight=\&255\&\u003E\u003Cp\u003E\u003Cb\u003E2. \u003C\u002Fb\u003E\u003Cb\u003E拆解脚本\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E将一个脚本拆解为单独的片段可能会有一些困难,特别是演员没法在所有的片段同时表演出来的时候。在这种情况,找1-2个替身就非常有用了,当有人不在的时候就上去替代一下,这样对方就有对手了。使用这个技巧,你就可以对同一个场景拍摄多次,然后合成最终的样子。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E3. \u003C\u002Fb\u003E\u003Cb\u003E有一个老司机导演\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E很多工作室会随意用一些团队成员来做导演,他可能并没有什么经验。不要这么做!动捕的工作室通常会有提供导演的服务,或者你甚至可以用一个不太懂的导演\n—— 只要他曾经和演员合作过并且知道如果让演员表现出最佳的状态。\u003C\u002Fp\u003E\u003Cimg src=\&v2-67172dabdf54f3a3b201a.jpg\& data-rawwidth=\&520\& data-rawheight=\&237\&\u003E\u003Cp\u003E\u003Cb\u003E4. \u003C\u002Fb\u003E\u003Cb\u003E搏斗和特技\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E雇佣专业的特技演员和舞蹈者,制定好一个详细的动作列表和索引,你就可以很清楚地进行沟通。这是动捕,不是电影或者TV,所以避免一些在这类媒体的拍摄中的一些不好的习惯。打斗的时候不要作假,穿上护具,或者打在板子上\n—— 接触面在后面好处理,你需要的是真正的动作和打击感。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E5. \u003C\u002Fb\u003E\u003Cb\u003E角色分配\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E不要仅仅使用几个人的开发团队!你可以从表演工会雇佣演员,语音演员也可以有很惊人的表现。你甚至可以从当地的剧院或者舞蹈队去选人。他们在某些情况下会做的比电影演员或电视演员做的更好: 他们没有那些对动捕有害而对真人演出有好处的习惯。名人都比较贵,如果你想使用他们的形象的话将会更贵。\u003C\u002Fp\u003E\u003Cimg src=\&v2-39ac7afb04fda1886d44fbf7f363e2fc.jpg\& data-rawwidth=\&520\& data-rawheight=\&210\&\u003E\u003Cp\u003E\u003Cb\u003E6.
\u003C\u002Fb\u003E\u003Cb\u003E排练\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E排练!这可能很明显,但是实际上去做的人很少,你花了很多钱去借用动捕的平台,不要浪费时间浪费金钱去舞台上排练。所以体验排练好!提前熟悉剧本,培养演员之间的默契,帮助理解角色,这将大大的提升表演的质量。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E7.
\u003C\u002Fb\u003E\u003Cb\u003E上下文\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E提前做一些标记,使用胶带标记出不同的游戏空间,将演员需要接触的部分,比如壁炉,楼梯或者墙标记出来。让演员知道他在一个什么样的环境中,所以他们才知道怎么去做出对应的动作,并使用对应的音量来说话等等。如果需要的话制作一些道具,比如枪,注意要精确重量\n—— 这个在后期调整起来也很简单,但是如果演员只是拿着一个硬纸管,很难让他们做出拿着剑或者枪的感觉吧,\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E8.3P\u003C\u002Fb\u003E\u003Cb\u003E原则– \u003C\u002Fb\u003E\u003Cb\u003E准时,积极,专业 (\u003C\u002Fb\u003E\u003Cb\u003EPunctuality,\nPositivity, Professionalism)\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E这些原则在拍摄任何影片的时候都适用。一定不要迟到!如果关键人物不出现,那么就是在浪费大家的时间,金钱,打击士气。维持一个和谐的舞台氛围,不要让他们觉得自己演砸了,要让他们觉得你只是在寻找让他们更好的演出的方式。让他们觉得你在用尽全力,以至于影响到他们也很认真地去做。\u003C\u002Fp\u003E\u003Cp\u003E最后他再次强调了动捕食一个提高效率的工具,不是一个终端。你捕获的片段刚开始通常看起来很没有力量也没有吸引力\n ——\n你需要另一套规则来处理这些动画,需要注意轮廓,弧度,速度等等。动捕也倾向于损失动作的细节,比如锁骨的抬起和降下,所以你就可能得手动去加上了。有时候你可能要求更高,这时候你就可能要重做整个手臂的运动甚至是整个动画。\u003C\u002Fp\u003E\u003Cimg src=\&v2-00c206bed67adc3b890dc22cf43416a1.png\& data-rawwidth=\&523\& data-rawheight=\&252\&\u003E\u003Cp\u003E如果你按照这些最佳时间去做的话,你可以翻倍你的工作效率。这是一个巨大的胜利!只要你不把它当成一个魔法子弹!\u003C\u002Fp\u003E\u003Cp\u003E一些人问关于外包动画的问题,回答是完全可以外包电影,但是没法外包游戏动画,因为这是一个不断迭代的过程。如果是外包的话,沟通和反馈的周期是相当漫长的,所以更好的是自己来做。\u003C\u002Fp\u003E&,&updated&:new Date(&T17:23:50.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:0,&likeCount&:6,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T01:23:50+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-efbd3de6ba379f5bbc5529_r.jpg&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:0,&likesCount&:6},&&:{&title&:&(译)GDC13 Summary Animation Bootcamp Part 4&,&author&:&silangquan&,&content&:&\u003Cp\u003E原文 - \u003Ca href=\&http:\u002F\\u002F\u002FGDC13-Summary-Animation-Bootcamp-Part-4-6\& data-editable=\&true\& data-title=\& 的页面\&\u003Ehttp:\u002F\\u002F\u002FGDC13-Summary-Animation-Bootcamp-Part-4-6\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E给第三代刺客做动画\u003C\u002Fp\u003E\u003Cp\u003E\u003Cem\u003EJonathan Cooper, Animation Director,\nUbisoft Montreal\u003C\u002Fem\u003E\u003C\u002Fp\u003E\u003Cp\u003EJonathan做了动画师已经有13个年头了,包括Mass Effect\n1&2的主角,Deus Ex: Human Revolution还有 Assassin’s Creed 3,最近他还拿了DICE的奖”动画杰出成就奖”。\u003C\u002Fp\u003E\u003Cp\u003E什么是刺客信条?它本来是想做成另一个波斯王子的游戏,但最终却打造成了自己的IP,它关注于真实世界中顺畅的跑酷般的移动,而不是解开谜题瞬间的自由移动。刺客的运动要自然而流畅,不能被后空翻之类的技巧打断。\u003C\u002Fp\u003E\u003Cimg src=\&v2-e072c992fe2884ceb2b75a.jpg\& data-rawwidth=\&520\& data-rawheight=\&261\&\u003E\u003Cp\u003E每一个Ubisoft出的游戏都会有一个7分钟的演示版本拿给大佬们看,然后他们将 Assassin’s Creed 3
中的关键特性都集中在这个视频中了——爬树,滑绳,厚厚的雪。最终结果是通过,但是大佬们说刺客在游戏中太亮太轻快了,他们想让他更加壮硕强硬,这就是这次动画方面最大的挑战了。\u003C\u002Fp\u003E\u003Cp\u003E他们制作了很多角色设定和缩略图来表示一个强壮的刺客看起来是怎样的。他们决定移除老刺客身上很多的盔甲和多余的布料,换成身体上的肌肉块,给他一种更宽大但更具有线条的外观。它还添加了很多来表现这个特性的动画\n—— 在实际中,刺客,每次奔跑的开始都会有一个冲刺推进的动作,用来表现他为了克服惯性而做出的努力。\u003C\u002Fp\u003E\u003Cimg src=\&v2-0aef95b45fadca250e98e058.jpg\& data-rawwidth=\&520\& data-rawheight=\&260\&\u003E\u003Cp\u003E他的攻击和暗杀动作有了一些后摇动作,用来表现力量感,在起先看起来是有一些迟钝的。团队用了一种很暴力的方法来解决,把每种可能的转换都做预处理。比如,有一种暗杀是从箱子上跳下,然后往右边逃走,另一种是从背后接近然后往左边跑,这些都会被加到动作库里,就是为了灵活的操作。在一个描述矩阵中列出了所有的开始状态和结束状态。\u003C\u002Fp\u003E\u003Cimg src=\&v2-5b1fa6f37cac02fc2c30.jpg\& data-rawwidth=\&520\& data-rawheight=\&259\&\u003E\u003Cp\u003E很多动画的上的问题都是用类似的参数矩阵来处理了,这样就可以在成百上千的动画之间融合。例如,对于跳跃动画,不同的高度和距离都对应着不同的动画,那么动画系统就应该找一个最接近的动画进行插值,他们甚至给特技演员装上一个喷气装置来进行不同高度和距离的跳跃,然后通过动捕系统将动作捕捉下来,这些就作为跳跃动画的基础。\u003C\u002Fp\u003E\u003Cp\u003E技术团队尝试了很多不同的基于物理的很程序生成的动画技术,但是大部分都被否掉了——他们尝试了在角色和环境的交互方面会用到这种技术,不使用任何预处理。最终只使用了一些程序生成动画。有两个例子:第一,有一个依靠物体和脚步系统,用来处理跑步的同时进行转向,这都是由程序生成的,然后和真实的由动捕获取的数据比较之后还是换成真实数据了。第二,刺客信条系列的游戏都是用IK系统来处理攀爬中手和脚的位置的,但是现在使用一个额外的程序生成层来处理整个身体的移动,用于处理跳跃和落地的反馈。\u003C\u002Fp\u003E\u003Cimg src=\&v2-33137eeb2f99cf34dac5.jpg\& data-rawwidth=\&520\& data-rawheight=\&299\&\u003E\u003Cp\u003E刺客信条的动画的一个重大的秘密可能是第二级的动画\n—— 比如披肩上的布料模拟,还有用于装备在角色身上的弹簧物理系统。因为这些物品是由物理系统而不是帧动画来驱动的,这些物理系统让动画更加平滑,让游戏动画更加真实,这就是为什么动画在刺客的关卡中看起来比Desmond的关卡更加平滑。\u003C\u002Fp\u003E\u003Cp\u003E刺客攻击的力量感和相机也是有关联的:每一个收招动作都关联了一个相机动画,这个动画在打败一群中最后的一个人的时候就会播放。这个动画会在敌人死的时候会靠近他的脸,在相机的运动下效果会更加强烈。战斗时候的相机会距离玩家更近,动态地拉近拉远,同时避免把重要的敌人放到了画面外面。\u003C\u002Fp\u003E\u003Cimg src=\&v2-fd6a17aa386ba00d305719.jpg\& data-rawwidth=\&520\& data-rawheight=\&240\&\u003E\u003Cbr\u003E\u003Cp\u003E他详细地描述了战斗动画的处理,它展示了动捕中演员的一些基础的移动,但是动画的曲线是完全错误的,因为他们并不像互相碰到,也不想用危险的速度奔跑。动捕数据接着被手动处理来强调打击感,确保与地面接触,然后慢慢地增加速度和力道。\u003C\u002Fp\u003E\u003Cp\u003E对于没有交互的过场片段就完全使用动捕了——模拟眼睛,身体和声音。如Simon提到的,动捕仅仅是动作团队的起点,但是同步的记录对于从演员身上获取自然表演将是非常宝贵的。通过面部的摄像机,演员将会对于自己的面部表情更加自信,肢体的语言也可以很好的表现出来,所以他们觉得不需要夸大,或者使用卡通声音音调变化。\u003C\u002Fp\u003E\u003Cimg src=\&v2-f16b49ffc860b.jpg\& data-rawwidth=\&520\& data-rawheight=\&270\&\u003E\u003Cp\u003E课程以一份Assassin’s Creed 3的动作demo结束。各种类型的动作还有对应的问题描述。刺客有330+中跳跃的动画,220+个基本的移动动画,280+个攀爬动画,210+个新的暗杀动画,3200+个战斗动画,3400+个拥挤的动画,还有3000个动物的动画!每个动物都有着自己的一套跑酷动画,这样它就能在环境中跟随玩家,包括熊,狼,狐狸,鹿等等。项目里一共有50多个动画师和动画工程师。\u003C\u002Fp\u003E&,&updated&:new Date(&T14:34:33.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:0,&likeCount&:1,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T22:34:33+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-efbd3de6ba379f5bbc5529_r.jpg&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:0,&likesCount&:1},&&:{&title&:&(译)GDC13 Summary Animation Bootcamp Part 5&,&author&:&silangquan&,&content&:&\u003Ch2\u003E给第一人称动画一个理由\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cem\u003ERyan Duffin, Senior Animator,\nEA\u002FDanger Close\u003C\u002Fem\u003E\u003C\u002Fp\u003E\u003Cp\u003ERyan从2001年就开始给游戏制作动画,包括给Battlefield 3, Killzone 2, and Medal of Honor: Warfighter第一人称的动画。\u003C\u002Fp\u003E\u003Cp\u003E他首先展示了从第三人称看第一人称动画是怎样的,播放了一些游戏的画面,比如 Mirror’s Edge 和Dead Island ,这看起来非常奇怪,没有质量,很卡通,胳膊的动画就像蜘蛛一样。但是这都是可接受的,因为这在第一人称的时候看起来就会非常棒,玩家所看到的也正是如此!从第三人称看到的挺好的动作,从第一人称看并不会太好,因为透视的关系会变形的很厉害,缺少细节,也没有很好的分层。对于第一人称,我们几乎需要一套完全不同于第三人称的动画。\u003C\u002Fp\u003E\u003Cp\u003E视频地址- \u003Ca href=\&https:\u002F\\u002Fwatch?v=zcz-3paQ26k\& data-editable=\&true\& data-title=\& 的页面\&\u003Ehttps:\u002F\\u002Fwatch?v=zcz-3paQ26k\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-cbb316b35c0d2fc94bbd2f.png\& data-rawwidth=\&521\& data-rawheight=\&293\&\u003E\u003Cimg src=\&v2-98d36f8b7ecf9aa253df.png\& data-rawwidth=\&519\& data-rawheight=\&294\&\u003E\u003Cimg src=\&v2-1fff412cef8cc9e470b4724f.png\& data-rawwidth=\&522\& data-rawheight=\&289\&\u003E\u003Cbr\u003E\u003Cp\u003E第一人称视角的作用完全是为了给玩家反馈——告诉玩家正在使用的是什么武器,哪个武器更加有力,你正在用它来干啥,它们是否准备好开火。就像其他的HUD一样,第一人称动作就是玩家观察世界的窗口。它必须是畅通无阻地,同时在视觉上也是令人愉悦的。你可以将不同的第一人称元素作为舞台上的演员,然后指出如何放置可以使得视觉遮蔽更少,和玩家的沟通更多。\u003C\u002Fp\u003E\u003Cp\u003E在Medal of Honor: Warfighter对枪的放置位置做测试,还有在其他同类的游戏中,我们发现最好的放置位置和屏幕的黄金分割点是完全符合的,通过这个法则将游戏中所有的武器进行放置,它获得了一个看起来很好效果,而不是随意地摆在屏幕上。\u003C\u002Fp\u003E\u003Cimg src=\&v2-37e2dc11c149a8270237c.png\& data-rawwidth=\&518\& data-rawheight=\&288\&\u003E\u003Cp\u003E第一人称视角还可以用来表达一种感受,比如受伤,紧张,呼吸困难还有负重。举个例子,在Bioshock中,玩家第一次遇见质体通产格斗士通过第一人称的动画。类似的,Far Cry2和FarCry3中用于强调了玩家收到的伤害,劝阻玩家不要受伤。在Wolfenstein 和 Doom 中同样也使用了这个的手法。\u003C\u002Fp\u003E\u003Cp\u003E现在射击游戏通常通过调解第一人称动画来表达使用不同的武器之间由于重量和操作性方面一些微妙的变化。他们有着不同的瞄准时间,装弹夹时间,换武器时间,对速度的影响也不同。不同武器的品质也可以影响时间,所以一把生锈的枪填充子弹的时间可能比一把新的调试好的枪填充子弹的时间要长。一个高端的海军陆战队队员做这个可以很流畅地完成,而一个没有训练过的市民可能会很笨拙,会花费更长的时间。\u003C\u002Fp\u003E\u003Cimg src=\&v2-d28e12fa431ec.jpg\& data-rawwidth=\&520\& data-rawheight=\&246\&\u003E\u003Cbr\u003E\u003Cp\u003E参考资料是可信度和精准度的关键\n– 永远不要不小心做出不真实的事。知道所有的规则然后去利用它们。一把枪是怎么工作的?跟踪一下子弹装进了枪膛的时机,你的玩家是否按照规则扣动扳机,弹夹从哪里来。在Battlefield3中,他们在玩家装上弹夹的时候添加了非常多的音效来添加真实感。\u003C\u002Fp\u003E\u003Cp\u003E有时候你不得不去打破原来的规则。将所发生的事情展现给玩家拥有最高的优先级,所以所有的事情都应该发生在相机的前面,没有人会真正的装弹的时候把枪方面脸前面你,第一人称的相机也不应该能够看到腰间的武器,但是我们必须在真实感和将重要的信息在屏幕中呈现中折衷。\u003C\u002Fp\u003E\u003Cimg src=\&v2-a1aa6ebcf71b45c2db4192.jpg\& data-rawwidth=\&520\& data-rawheight=\&223\&\u003E\u003Cbr\u003E\u003Cp\u003E当我们在给第一人称动画做rig的时候遇到了一些特殊的技术挑战,因为对象在不同的空间不断切换。物体总是平凡的从玩家的手里,枪上,角色的身上脱离和附加上。在蒙皮时候一定要注意这些点,让这些操作可以平滑和自由的发生,做到这样之后,比如一个手雷上的拉扣,最开始是在手雷上的,拉开的时候放到了左手上,最后作为一个刚体扔到了世界空间中,同样的世界空间中的物体必须可以和第一人称的视角有交互,比如一直突然跳出的狗咬住了你胳膊,这时候可能需要经历一段QTE,或者一个地方玩家通过一个刺杀动作刺伤你的脸。\u003C\u002Fp\u003E\u003Cp\u003E将摄像机作为第一人动画的一部分也是可以的。你必须很小心地处理这些效果,以至于不让人觉得头晕,但是它作为力量感十足的一个动作的一个表现会非常有用,你可以在装弹夹的时候将屏幕往旁边轻微地移动一下或者是通过震动和摇晃来表现步枪的后坐力。相机的运动会妨碍瞄准,所以最好在玩家不能瞄准的时候播放这些动画,比如装弹,近战攻击和冲刺。\u003C\u002Fp\u003E\u003Cimg src=\&v2-cd9feddc996a400aef65ac.jpg\& data-rawwidth=\&520\& data-rawheight=\&275\&\u003E\u003Cbr\u003E\u003Cp\u003E关于第一人称身体显示呢? 就像你低头就能看到你的腿。有很多种处理的方式,通常你需要一个类似于第三人称的角色动画系统,而且动作都是做了第一人称适配的。如果只显示腿的话就会简单一些,就像是Duke Nukem 3D 中的kick,或者是Quake4中的异性部队。有些东西需要去特殊处理一下,比如阴影。你不会希望使用第一人称的模型来做阴影的,看起来会非常怪,你还需要将第一人称的腿和影子连接起来。\u003C\u002Fp\u003E&,&updated&:new Date(&T14:31:20.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:0,&likeCount&:1,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T22:31:20+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-efbd3de6ba379f5bbc5529_r.jpg&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:0,&likesCount&:1},&&:{&title&:&(译)GDC13 Summary Animation Bootcamp Part 6&,&author&:&silangquan&,&content&:&\u003Cp\u003E这次的演讲有点意识流,主题是讨论动画的上下文和讲故事,而不是动作机制本身。我没有记太多笔记,因为我的手机没什么电了,所以下面的内容大部分是回忆来的,如果有什么差错的话,希望大家谅解。\u003C\u002Fp\u003E\u003Ch2\u003E设计一种表现\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cem\u003EEd Hooks, Acting for Animators\u003C\u002Fem\u003E\u003Cem\u003EMike\nJungbluth, Senior Animator, Zenimax Online\u003C\u002Fem\u003E\u003C\u002Fp\u003E\u003Cp\u003EED Hooks做过超过100种的屏幕角色,也是一位有名的老师,源自于它的work shop 《Acting for Animators》和同名书。
Mike Jungbluth 是Zenimax Online 的资深动画师,整个animation\nbootcamp是他组织的。他参与开发过很多的游戏,包括Elder Scrolls: Online 和Call of Duty:\nBlack Ops ,也做客过一些动画师的节目。\u003C\u002Fp\u003E\u003Cp\u003E动画的关键是什么?一个最重要的目的就是激发观众对于角色的同理心。首先当然是对于现实生活的描述,但是这只是高效表演的第一个层次,第二个层次是距离。\u003C\u002Fp\u003E\u003Cimg src=\&v2-fcb141c478cdc4eab6767.jpg\& data-rawwidth=\&520\& data-rawheight=\&233\&\u003E\u003Cbr\u003E\u003Cp\u003E为了唤起同理心,玩家必须和角色保持一定的距离-——\n你没法靠你自己去唤醒玩家的同理心!演讲者给出了一张 Wall-E 电影中的一个场景,当Wall-E看到两个恋人在一起非常开心并紧握着双手的时候,他也想要这样快乐的感受,他想找到某个人来乾他的手,但是并没有人,所以他尝试自己去签自己的手,这很悲情,因为这并没有luan用,他没有让自己对自己产生同理心,然而对于我们,对于观众,这是奏效的,因为我们有建立起这种连接的距离。另外,他是被他所看到的人类感染,同时他也感染了我们。\u003C\u002Fp\u003E\u003Cp\u003E游戏有着更加特殊的挑战,因为我们通常控制着游戏制作者想要我们去理解的那个角色,就像Wall-E拉着他自己额度手一样,这是没办法奏效的。因为没有距离,所有他们的解决办法是通过过场动画,但是这通常很蛋疼,而且不是那么有效 -——\n我们需要更多的实时的游戏道具来激起这种同理心。\u003C\u002Fp\u003E\u003Cimg src=\&v2-89cf8b874c.jpg\& data-rawwidth=\&520\& data-rawheight=\&214\&\u003E\u003Cbr\u003E\u003Cp\u003E所以我们怎样去创建一个让人感染的NPC? 我们需要他们有目标有个性并且他们所有人都是实际的角色额,不管有多简单。在Skyward Sword 中,有一个售货员会在当你靠近的时候各种兴奋和鼓掌,非常希望卖出一些东西。如果你走开了,他就会很失落,并且慢慢地走回他的长凳。仅仅是两个动画,一个状态切换,就比绝大部分的游戏多了一个感染人的NPC.\u003C\u002Fp\u003E\u003Cp\u003E同理,Bioshock 中的Big Daddies通常是很和平的,但是当你和小妹妹们乱搞的时候他们会变得很愤怒,作为一个合格的能够感染人的NPC,这就够了。一种普遍的错误就是我们必须了解一种情绪才能去传达它,这并不相关!是情绪本身去回应,然后他们之间去变化。如果某个人非常开心然后接到一个电话,突然就沮丧地哭起来-——\n我们能够理解。语言的内同并不重要。角色,情绪,变化,这些是感染人心的关键,而不是情节的细节。\u003C\u002Fp\u003E\u003Cimg src=\&v2-a48ae2f317d5a6abd80a85.jpg\& data-rawwidth=\&520\& data-rawheight=\&192\&\u003E\u003Cp\u003E我们应该关注于展示角色的转变,而不是关注于各种情节点。如果一个角色要从A到B,重要的地方是他怎么移动的-——\n他要去哪,他从哪里来都并不重要。他走的是直线么?是匀速么?他是不断迂回然后迷路了么?他在每个点上会停下来看风景么?\u003C\u002Fp\u003E\u003Cp\u003E我们讨论了NPC,那玩家的角色呢?如何去达到传递情绪的距离呢?一种技巧就是约束玩家的选择,让玩家去适应角色。在Metal Gear Solid 4 中,有很多关键的时刻Snake并没有太多的选择,比如在某个场景中他必须穿过辐射走廊,与此同时会被慢慢地烤熟。情节本身可能有一些荒诞(怎么会有人去建一个辐射走廊让别人去走),但是我们可以感受到角色的内心,他为了一个伟大的事业而牺牲。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cimg src=\&v2-0db6f51dd7ae8db209d614a.png\& data-rawwidth=\&517\& data-rawheight=\&293\&\u003E\u003Cimg src=\&v2-d8ef02b0b5580fd94edd1.png\& data-rawwidth=\&522\& data-rawheight=\&275\&\u003E\u003Cbr\u003E\u003Cp\u003E太多的文字在游戏中也不是太好,在游戏中,人们常常通过交谈来获取事实。在好的故事\u003Cu\u003E里\u003C\u002Fu\u003E,对话是很少的,更多的是谈判:交流实力。问题本身其实很乏力,对话通常是多余的且不必要的。再看Wall-E,其中塑造的角色和场景就没有用任何文字。巨人的影子通过时间和合作创造了一种和玩家和他的马之间的一种强大的关系,也没有用任何文字。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E游戏很依赖电影的技术,然后会忽略他们本身的特质。比如肾上腺时刻:将玩家扔到一个场景中,在这里做的决定将会影响到后面剧情的发展。很难在游戏中去制造这样的时刻,因为体验不是唯一的,而结果是唯一的。但是游戏机制和游戏系统可以给每个玩家带来不同的肾上腺时刻,比如你在Minecraft中建造的房子中发现了一只creeper,又或者是在DayZ中发现了一只僵尸。如果我们想要达到一个很有意义,很容易感染人的效果,我们需要开始为游戏打造一些更好的,更适应游戏的场景 -——如果不去注重游戏内容,不管多么认真地区搭建动画都是没什么太大用处的。\u003C\u002Fp\u003E\u003Cimg src=\&v2-ebe6edd2ee0c3b7b098fa.jpg\& data-rawwidth=\&520\& data-rawheight=\&257\&\u003E&,&updated&:new Date(&T05:29:55.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:0,&likeCount&:2,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T13:29:55+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-efbd3de6ba379f5bbc5529_r.jpg&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:0,&likesCount&:2},&&:{&title&:&用Unity3D打造Firewatch的开放世界&,&author&:&silangquan&,&content&:&\u003Ch2\u003EMaking the World of Firewatch\u003C\u002Fh2\u003E\u003Cp\u003E今天要分享的是GDC2015的一篇演讲,关于Firewatch的。\u003C\u002Fp\u003E\u003Cimg src=\&v2-b95d8a8daca9c7.jpg\& data-rawwidth=\&554\& data-rawheight=\&311\&\u003E\u003Cp\u003E首先是关于团队合作。\u003C\u002Fp\u003E\u003Cp\u003E10+人的团队如何用Unity打造一个完美的开放世界。\u003C\u002Fp\u003E\u003Cp\u003E分工如下\u003C\u002Fp\u003E\u003Cimg src=\&v2-fad153e7fbafc830ce7d288.jpg\& data-rawwidth=\&554\& data-rawheight=\&302\&\u003E\u003Cp\u003E一共有11-12人\u003C\u002Fp\u003E\u003Cp\u003E8个人在San Francisco 3个在海外,3个人全职美术\u003C\u002Fp\u003E\u003Cimg src=\&v2-d31a24a976bca15f426da8bab2eab834.jpg\& data-rawwidth=\&554\& data-rawheight=\&311\&\u003E\u003Cp\u003E演讲者是团队中的一个3D美术。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cbr\u003E\u003Cp\u003E故事的简介\u003C\u002Fp\u003E\u003Cimg src=\&v2-dad876440.jpg\& data-rawwidth=\&554\& data-rawheight=\&314\&\u003E\u003Cimg src=\&v2-d41edc69ab2c349c8a1e0dbc33ab41ff.jpg\& data-rawwidth=\&554\& data-rawheight=\&303\&\u003E\u003Cbr\u003E\u003Cp\u003E遇到的一些挑战\u003C\u002Fp\u003E\u003Cimg src=\&v2-fed776d9df4eae2906cd.jpg\& data-rawwidth=\&554\& data-rawheight=\&266\&\u003E\u003Cp\u003E如果有多个Level,每个人负责不同的level,那么合作就不会有问题\u003C\u002Fp\u003E\u003Cimg src=\&v2-72e0c1bf745dfbc5ac18e117bbb4b6fe.png\& data-rawwidth=\&565\& data-rawheight=\&222\&\u003E\u003Cbr\u003E\u003Cp\u003E在Fire Watch 中,一共有11个人一起工作在一个大场景中\u003C\u002Fp\u003E\u003Cimg src=\&v2-e9d5a123fb56aa51c51a.png\& data-rawwidth=\&577\& data-rawheight=\&314\&\u003E\u003Cp\u003E场景的合并会变得非常的复杂。\u003C\u002Fp\u003E\u003Cp\u003E解决方法如下\u003C\u002Fp\u003E\u003Cp\u003E首先是利用Prefab,把能做成prefab的地方尽量做成prefab,再由scene去load对应的prefab,减少工作的耦合度。\u003C\u002Fp\u003E\u003Cp\u003E其次是同一时刻,只有一个人去改变scene.这个人要告知其他人,他正在修改。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-e8aeaabbf446d013fecee3db45b57842.png\& data-rawwidth=\&580\& data-rawheight=\&329\&\u003E\u003Cp\u003E\u003Cbr\u003E版本管理工具用的是perforce。(unity配合perforce确实非常好用)\u003C\u002Fp\u003E\u003Cimg src=\&v2-69d40bfe27f2f197c87c.png\& data-rawwidth=\&505\& data-rawheight=\&179\&\u003E\u003Cbr\u003E\u003Cp\u003E将一个场景内的对象进行分类,这样对应的人就可以只负责对应的部分。\u003C\u002Fp\u003E\u003Cimg src=\&v2-deeb8af4ebcf58608ae25.png\& data-rawwidth=\&569\& data-rawheight=\&277\&\u003E\u003Cbr\u003E\u003Cp\u003E为了实现这种效果,我们用了一个Unity的工具,Sector\u003C\u002Fp\u003E\u003Cimg src=\&v2-d6d2a157ae2f63ab9c3f.png\& data-rawwidth=\&486\& data-rawheight=\&332\&\u003E\u003Cbr\u003E\u003Cp\u003E作用就是将数据分为一个一个的sector。每个sector都可以独自工作,又能动态地加载到main level里\u003C\u002Fp\u003E\u003Cimg src=\&v2-fa9ffbdea6bfed57a97db2d1.jpg\& data-rawwidth=\&554\& data-rawheight=\&289\&\u003E\u003Cbr\u003E\u003Cp\u003E在Unity中通过不同的天数来作为不同的对话逻辑SubSector。\u003C\u002Fp\u003E\u003Cimg src=\&v2-c07adbbcd88f.jpg\& data-rawwidth=\&554\& data-rawheight=\&322\&\u003E\u003Cbr\u003E\u003Cp\u003E对于不同的天数,加载不同的subsector。\u003C\u002Fp\u003E\u003Cp\u003E对于游戏场景则是通过空间的划分来处理。\u003C\u002Fp\u003E\u003Cimg src=\&v2-b70dd984ce82edd1678de5cdf1a05e68.jpg\& data-rawwidth=\&554\& data-rawheight=\&285\&\u003E\u003Cbr\u003E\u003Cp\u003E下面是\u003Cb\u003E第一条超级建议\u003C\u002Fb\u003E!\u003C\u002Fp\u003E\u003Cimg src=\&v2-164cd25eedc4b10a4fff.png\& data-rawwidth=\&509\& data-rawheight=\&274\&\u003E\u003Cp\u003E不管你用的是什么引擎,努力去做到让团队里的每个人都能并行地工作。\u003C\u002Fp\u003E\u003Cp\u003E接下来的内容是\u003C\u002Fp\u003E\u003Cimg src=\&v2-7edaf4a59efdd05b2777.jpg\& data-rawwidth=\&554\& data-rawheight=\&271\&\u003E\u003Cp\u003E关于世界的加载与卸载。\u003C\u002Fp\u003E\u003Cp\u003E最开始是尝试根据玩家的位置来加载玩家附近的内容,称为Nearby Loading\u003C\u002Fp\u003E\u003Cimg src=\&v2-b9f9a143a3fcfc02cf7c.png\& data-rawwidth=\&529\& data-rawheight=\&289\&\u003E\u003Cp\u003E但是一个在上面的例子中,如果玩家在Floor2,Floor1也会被加载,这并不是太好。\u003C\u002Fp\u003E\u003Cp\u003E最后的选择是根据门来处理\u003C\u002Fp\u003E\u003Cp\u003E比如角色在Floor2的时候\u003C\u002Fp\u003E\u003Cimg src=\&v2-d96e11e6d75cc1ebdc3b22e9d53a3a6e.png\& data-rawwidth=\&599\& data-rawheight=\&334\&\u003E\u003Cp\u003E角色在Floor1的时候。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E整个游戏场景被划分为下面几个Sector,在不同的Sectr之间都有一些虚拟的门。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-2b2dee8bcf7f9824eaad.png\& data-rawwidth=\&420\& data-rawheight=\&473\&\u003E\u003Cbr\u003E\u003Cimg src=\&v2-66bccdf6fb78c03b8ca3f83.jpg\& data-rawwidth=\&553\& data-rawheight=\&301\&\u003E\u003Cp\u003E当玩家在这些虚拟的门,这些门作为Trigger,当玩家穿过这些门的时候就会加载\u002F卸载对应的Sectr。下面就是那些门\u003C\u002Fp\u003E\u003Cimg src=\&v2-2c797bda4bfbb7f5d2255b.jpg\& data-rawwidth=\&554\& data-rawheight=\&430\&\u003E\u003Cbr\u003E\u003Cp\u003E接下来是在不同的Sectr之间穿梭的一个例子。\u003C\u002Fp\u003E\u003Cimg src=\&v2-c4d699efc5d1afa2a026d1d.png\& data-rawwidth=\&460\& data-rawheight=\&288\&\u003E\u003Cimg src=\&v2-870e0a6fc9.jpg\& data-rawwidth=\&554\& data-rawheight=\&240\&\u003E\u003Cp\u003E每个Sectr还会被分为两个部分加载,上层的树木,下层的地形和低矮灌木,从一个很高的地方往下望的时候,其实只要加载上层的部分就可以了。\u003C\u002Fp\u003E\u003Cimg src=\&v2-012bd513798ebe5462a82ef.jpg\& data-rawwidth=\&553\& data-rawheight=\&244\&\u003E\u003Cp\u003E在两个Sectr之间通过一个山坡进行遮挡。\u003C\u002Fp\u003E\u003Cp\u003E当在贴近地面的时候,我们又会把Sector的上层部分给卸载掉,这些对于玩家是没有用的。\u003C\u002Fp\u003E\u003Cp\u003E在很多地方的地形都会做一些弯弯曲曲的地方,除了显得更加自然,更是防止玩家回头看的时候穿帮。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E第二条超级建议\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-98fdfd6fbb969b675275.png\& data-rawwidth=\&555\& data-rawheight=\&302\&\u003E\u003Cbr\u003E\u003Cp\u003E利用Streaming。\u003C\u002Fp\u003E\u003Cp\u003ESteam可以让你在保证一定性能的情况下添加更多的资源。\u003C\u002Fp\u003E\u003Cimg src=\&v2-ae89bac623.jpg\& data-rawwidth=\&553\& data-rawheight=\&267\&\u003E\u003Cp\u003E下面聊到的是自然环境的处理。\u003C\u002Fp\u003E\u003Cp\u003E 当时用的是4.5版本的Unity,没有Speed Tree,只有UnityTree。\u003C\u002Fp\u003E\u003Cimg src=\&v2-cf4b5e93ec1d.jpg\& data-rawwidth=\&554\& data-rawheight=\&367\&\u003E\u003Cbr\u003E\u003Cp\u003E用这个东西并没法去做一些好看的树,用起来可能很方便,但是太多局限。\u003C\u002Fp\u003E\u003Cp\u003E所以我们自己做了很多树…\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E上面的14种树用的最多。\u003C\u002Fp\u003E\u003Cp\u003E整个场景大概摆了4600多颗树,都是手动摆上去的…\u003C\u002Fp\u003E\u003Cimg src=\&v2-fa79b290db739aed844004.jpg\& data-rawwidth=\&554\& data-rawheight=\&386\&\u003E\u003Cp\u003E左边是树的模型,中间是把树放在Unity里面的样子,右边是贴图。\u003C\u002Fp\u003E\u003Cimg src=\&v2-609bacec728e8e.jpg\& data-rawwidth=\&554\& data-rawheight=\&309\&\u003E\u003Cbr\u003E\u003Cp\u003E一棵树主要由下面几个部分组成\u003C\u002Fp\u003E\u003Cp\u003E树的主干,底部的一些枯枝,和装饰\u003C\u002Fp\u003E\u003Cimg src=\&v2-dad6cf8d9bfbd338a285.png\& data-rawwidth=\&334\& data-rawheight=\&421\&\u003E\u003Cp\u003E还有上面的一些用面片做的树叶。\u003C\u002Fp\u003E\u003Cimg src=\&v2-2f70c83f5ed83f187b4c9b1e191162ca.png\& data-rawwidth=\&254\& data-rawheight=\&433\&\u003E\u003Cbr\u003E\u003Cp\u003E为何底部有这么多的细节?因为相对于角色,树非常的高大。\u003C\u002Fp\u003E\u003Cimg src=\&v2-7febdedeacb5.png\& data-rawwidth=\&317\& data-rawheight=\&456\&\u003E\u003Cp\u003E一共做了4级的LOD\u003C\u002Fp\u003E\u003Cimg src=\&v2-75cb394fa2e4da7579be6.jpg\& data-rawwidth=\&554\& data-rawheight=\&274\&\u003E\u003Cbr\u003E\u003Cbr\u003E\u003Cp\u003E注意Lod1和Lod2不仅仅是面数上的变化,还有投影上的变化。\u003C\u002Fp\u003E\u003Cp\u003E这些Lod都是手动去制作的。\u003C\u002Fp\u003E\u003Cp\u003E在Lod的切换上并没有使用Lod Cross fading,因为在Cross fading 的时候,需要同时去draw两个lod,这会带来draw call上的负担,特别是对于我们这种树特别多的场景。\u003C\u002Fp\u003E\u003Cp\u003E下面聊一下树的shader\u003C\u002Fp\u003E\u003Cp\u003E首先是通过alpha通道来cutoff,(其实就}

我要回帖

更多关于 our end of the world 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信