[{"data":1,"prerenderedAt":1665},["ShallowReactive",2],{"blog-page-6":3,"blog-count":1664},[4,435,1000,1183,1428],{"id":5,"title":6,"body":7,"date":411,"description":13,"extension":412,"meta":413,"navigation":416,"path":428,"seo":429,"stem":430,"tags":431,"__hash__":434},"blogs\u002F_legacy\u002F2021\u002F2021-01-23-cedec-idol-master-notes-art.md","CEDEC IdolMaster笔记-制作事例美术篇",{"type":8,"value":9,"toc":398},"minimark",[10,14,23,26,30,33,45,56,73,76,79,82,89,92,97,100,103,155,163,166,169,172,178,181,188,195,198,201,204,210,213,216,223,226,232,235,238,241,262,265,268,274,277,283,286,289,292,295,298,301,304,310,314,321,324,327,330,336,339,342,348,351,357,360,363,374,377,389,392,395],[11,12,13],"p",{},"Art篇分为了模型篇和UI\u002FUX篇两个部分，在这里进行了合并。",[11,15,16,17],{},"模型篇参考的这里：",[18,19,20],"a",{"href":20,"rel":21},"https:\u002F\u002Fgamebiz.jp\u002F?p=167929",[22],"nofollow",[11,24,25],{},"CGSS的最大特征之一，是将页游时代使用插画来表现的偶像，转为使用3D来表现并进行演唱会的表演。所以最重视的部分，就是希望尽可能的再现出插画的感觉。",[27,28,29],"h2",{"id":29},"模型规格",[11,31,32],{},"制作时，手机的性能已经有相当于PS3的运算能力了。根据手机的运算能力，对模型的资源上限进行了设置：",[34,35,36,39,42],"blockquote",{},[11,37,38],{},"Polygon Count",[11,40,41],{},"头部：大约4000",[11,43,44],{},"身体：大约7000(C位)，大约4000(其他)",[34,46,47,50,53],{},[11,48,49],{},"Texture",[11,51,52],{},"头部：1024x1024",[11,54,55],{},"身体：1024x1024",[34,57,58,61,64,67,70],{},[11,59,60],{},"Bone Count",[11,62,63],{},"头部：大约40（包含表情用）",[11,65,66],{},"头发：大约20",[11,68,69],{},"身体：56",[11,71,72],{},"装饰物：大约20",[27,74,75],{"id":75},"轮廓线",[11,77,78],{},"为了再现插画的效果，首先是添加轮廓线。",[11,80,81],{},"CGSS使用的是将法线方向反转这种传统的方法来实现轮廓线的，为了给轮廓线添加颜色，在反转了的模型上也会使用角色对应的贴图。通过将贴图的色彩的亮度下降，这样皮肤就会有茶色的轮廓线、白色的手套就会有灰色的轮廓线、宝石的部分会有较深的青色，更加接近于插画的轮廓线效果。",[11,83,84],{},[85,86],"img",{"alt":87,"src":88},"","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Foutline.jpg",[11,90,91],{},"另外，不仅是颜色，对于头发以及衣服的末端，也会相应的让轮廓线变细。",[34,93,94],{},[11,95,96],{},"这里前面技术篇提到是使用VertexColor的",[27,98,99],{"id":99},"模型通用化",[11,101,102],{},"要将总共60人的偶像的各自的个性通过3D模型表现出来并不简单，因为每个偶像不仅在身高不同，皮肤的颜色、头发的长度、发色、发型以及胸的大小等等各种特征都是不同的。虽然为每一个角色都制作一个模型在表现上是最理想的，但是考虑到数据容量的问题，最终采用了将身体的各个部分按照体型进行共通化，然后互相组合起来的形式。",[104,105,106,119],"table",{},[107,108,109],"thead",{},[110,111,112,116],"tr",{},[113,114,115],"th",{},"身体",[113,117,118],{},"类型",[120,121,122,131,139,147],"tbody",{},[110,123,124,128],{},[125,126,127],"td",{},"身高",[125,129,130],{},"S\u002FM\u002FL\u002FLL",[110,132,133,136],{},[125,134,135],{},"胸围",[125,137,138],{},"S\u002FM\u002FL",[110,140,141,144],{},[125,142,143],{},"体重",[125,145,146],{},"低体重\u002F标准体重",[110,148,149,152],{},[125,150,151],{},"肤色",[125,153,154],{},"偏白\u002F通常\u002F褐色",[11,156,157,158,162],{},"另外，身高的LL只有",[159,160,161],"em",{},"諸星きらり","。",[27,164,165],{"id":165},"表情",[11,167,168],{},"对于偶像而言，“表情”是很重要的。CGSS为了追求高质量的模型表现，会让插画师对3D模型进行监修，对模型效果进行详细的指导。",[11,170,171],{},"表情制作上，通常、笑容、悲伤、严肃、害羞每个情感状态有两个表情，以及wink和特殊表情各有一个。",[11,173,174],{},[85,175],{"alt":176,"src":177},"image-20210114084101001","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210114084101001_thumb.png",[11,179,180],{},"表情的播放，会使用后面将会提到的时间轴工具。",[11,182,183,184,187],{},"特殊表情指的是什么呢？",[159,185,186],{},"城ヶ崎莉嘉","在「DOKIDOKIリズム」的演出中，眼睛中会出现星星的表情就是特殊表情。每一个偶像在自己的角色歌中都会有专属的特殊表情。",[11,189,190,191,194],{},"另外，",[159,192,193],{},"森久保乃々","在设定上，会有在演唱会中不与摄像机和观众的视线交汇的设定。在制作过程中，会引入特殊的机能，让她的视线不与玩家摄像交汇。",[27,196,197],{"id":197},"口型",[11,199,200],{},"要让歌唱的表演变得真实，需要在口型动画上下功夫。",[11,202,203],{},"作为LipSync的目标动画，「あ」「い」「う」「え」「お」「ん」「スマイル」各有两个模式。会分出大和小两个模式，是因为对于一个单独的音节，只是播放特定的口型无法表现出唱歌的感觉。将这些口型动画进行组合后，就可以做出表情丰富的歌唱表演了。",[11,205,206],{},[85,207],{"alt":208,"src":209},"image-20210114085230616","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210114085230616_thumb.png",[27,211,212],{"id":212},"舞蹈",[11,214,215],{},"CGSS的舞蹈采用MotionCapture捕捉的动作作为基础数据。",[11,217,218,219,222],{},"流程上，首先",[159,220,221],{},"振付師","根据乐曲进行动作设计，然后由动捕演员根据舞蹈动作进行表演。手指的动作会经过动作设计师的手工调整，让动作变得更加自然。",[11,224,225],{},"光是如此并没有完成舞蹈演出的全部工作。CGSS的演出部分，是5人一组的在舞台上进行表演的。虽然分别制作5个人的演出数据是最理想的，但是从数据容量和制作成本上考虑，还是采用了使用同一个动作数据的形式。这样产生的问题，就是所有人采用一模一样的动作导致表演看起来特别的机械。于是就刻意的让每个人的动作之间产生一个偏差，如图所示，在一个单一的时刻，每个人的手腕的角度会有微妙的不同。通过这样的方法，让五人演出有了真实感。",[11,227,228],{},[85,229],{"alt":230,"src":231},"image-20210114090942710","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210114090942710_thumb.png",[11,233,234],{},"口型动画使用的LipSync工具是自主开发的，可以将歌词数据导入到工具中，根据母音数据自动进行生成。根据生成的数据进行一定的手工调整后，就可以很好的表现出歌唱的动画了 。",[11,236,237],{},"整个时间轴系统，是基于内部开发的「Cygames Unity Timeline Tool」的。可以在Unity上对表情、视线、LipSync、灯光颜色和背后的屏幕上的动画素材等进行调整。通过使用这个工具，可以大幅度的缩短Live的制作流程，一个月可以添加3~4个Live歌曲。",[11,239,240],{},"这个时间轴工具可以对以下的内容进行控制：",[242,243,244,248,251,254,256,259],"ul",{},[245,246,247],"li",{},"摄像角度",[245,249,250],{},"视线",[245,252,253],{},"光照",[245,255,165],{},[245,257,258],{},"屏幕素材（舞台背后的屏幕）",[245,260,261],{},"DOF",[27,263,264],{"id":264},"模型制作流程",[11,266,267],{},"在添加新的偶像角色时，从一开始的建模阶段开始，就会以还原插画效果为目标。会将摄像移动到插画的视角，同时以插画为参考进行建模。",[11,269,270],{},[85,271],{"alt":272,"src":273},"image-20210114092129302_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210114092129302_thumb.png",[11,275,276],{},"3D模型的制作流程中，会由插画师进行效果的检查。这个检查的流程并不只是单纯的对渲染效果进行一个粗略的检查，而是从插画的角度对细节进行检查。例如，有时会要求不改变头部大小的情况下对眼睛的大小进行调整。通过这样的流程，来保证模型能够尽可能的接近插画。",[11,278,279],{},[85,280],{"alt":281,"src":282},"image-20210114092524440","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210114092524440_thumb.png",[27,284,285],{"id":285},"制作流程迭代",[11,287,288],{},"为了加强角色的偶像感和可爱程度，不断的对制作规范进行改进是义不容辞的工作。",[11,290,291],{},"以「依田芳乃」为例，人设和画师都强烈的想要让芳乃穿上振袖。在游戏发布时，并没有实装角色的特殊衣服功能。由于有着体现偶像的个性的强烈的需求，所以就与开发共同进行了功能的研讨，对衣服模拟系统进行了优化。经过优化之后，衣服模拟系统的CPU占用下降了，可以使用的衣服控制骨骼数量得到提升，对于特殊形状的衣服也能支持了。",[11,293,294],{},"另一个例子，是「太田優」这个角色，她的特征之一是身上的痔。在角色制作时，由于判断难以在现有的流程中实现，只能含泪放弃。但是，角色登场之后，广大的P都纷纷抱怨\"没有痔\"的问题。于是又重新进行研讨，对制作流程进行了功能追加。在「色白・通常・褐色」的基础上，又添加了「ほくろ差分」来对痔的展现进行支持。",[11,296,297],{},"如此这般，通过对制作流程的不断迭代，让偶像比游戏发布时更加的可爱和接近插画设定。",[11,299,300],{},"在各个偶像的SSR角色登场时，大部分角色的模型又进行了一轮的质量打磨。有的模型在发布时可能认为已经做到最好了，但是在有了新的流程优化的功能的基础上，就会产生\"想要进行改造\"的声音。“虽然和销量没有直接关系，但是对于开发者的热情想要回应。同时，这样也能让广大的P感到高兴，所以就尽量的执行了”。",[11,302,303],{},"随着建模和监修画师的不断磨合，与发布时相比，大家对整个流程都有了更深入的理解，技术也得到了提升。于是画师这边也能给出一些更加具体的调整意见。从头发的流向到下颚的剪影，更加精细的意见能够让建模更加接近插画的效果，有效的提升模型的质量。",[11,305,306],{},[85,307],{"alt":308,"src":309},"image-20210115082042418","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210115082042418_thumb.png",[27,311,313],{"id":312},"arts-uiux","Arts-UI\u002FUX",[11,315,316,317],{},"UI\u002FUX篇参考的这里：",[18,318,319],{"href":319,"rel":320},"https:\u002F\u002Fgamebiz.jp\u002F?p=168065",[22],[11,322,323],{},"这边是专业外，只记录了一些感兴趣的内容。",[11,325,326],{},"与主机游戏相比，手机游戏在同一个画面中的信息量会大很多。因为在手机游戏上，需要将功能按钮和辅助说明的文字都放到画面内。这些信息对于建立游戏的世界观而言是非常重要的。",[11,328,329],{},"Cygames内部，UI设计师的主要业务范围，是企划阶段UI的画面设计。以及UI的轮廓、部件以及部分物体的制作。这篇演讲将主要集中在画面设计、轮廓和部件的制作上。",[11,331,332],{},[85,333],{"alt":334,"src":335},"image-20210115082846242_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210115082846242_thumb.png",[11,337,338],{},"CGSS的UI设计师其实只有一个人，运营阶段的活动时期的UI变更也基本上是一个人在进行。当然根据工作量，会有其他人过来辅助一下。",[11,340,341],{},"在部件制作上，角色卡片和物品的图标，按照大小有xs\u002Fs\u002Fm三种规格。",[11,343,344],{},[85,345],{"alt":346,"src":347},"image-20210115083136731_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210115083136731_thumb.png",[11,349,350],{},"按钮是使用的最多的部件，采用以下的颜色规则：对于当前最需要处理的按钮以紫色来表示，对于多选的按钮则加上星星的纹样，取消按钮则为默认的空白状态。主按钮有4种大小，而辅助按钮分为三种。",[11,352,353],{},[85,354],{"alt":355,"src":356},"image-20210115083534939_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210115083534939_thumb.png",[11,358,359],{},"其他还有对各个部件的规范的说明，这里就跳过了……",[11,361,362],{},"在设计上，会采用下面的方针：",[242,364,365,368,371],{},[245,366,367],{},"尽可能的引入与《偶像大师》系列相关的要素",[245,369,370],{},"UI不能影响游戏体验，尽可能的保持简洁",[245,372,373],{},"按钮要考虑让男性用户也能轻松点击",[11,375,376],{},"对部件组合的原则是：",[378,379,380,383,386],"ol",{},[245,381,382],{},"按照按钮和卡片的大小进行布局",[245,384,385],{},"空间较小时对按钮进行一定缩放",[245,387,388],{},"按钮的排序规则为(确定，其他选项，取消)",[11,390,391],{},"后面讲了一些制作过程中修改的案例和原因。",[11,393,394],{},"还有就是一些制作内幕，游戏发布时的50个偶像的建模是在2个月内完成的……",[11,396,397],{},"另外就是，很多玩家吐槽wink的时候眼睛的左右各有不同，那个不是bug，是特性~",{"title":87,"searchDepth":399,"depth":400,"links":401},2,3,[402,403,404,405,406,407,408,409,410],{"id":29,"depth":399,"text":29},{"id":75,"depth":399,"text":75},{"id":99,"depth":399,"text":99},{"id":165,"depth":399,"text":165},{"id":197,"depth":399,"text":197},{"id":212,"depth":399,"text":212},{"id":264,"depth":399,"text":264},{"id":285,"depth":399,"text":285},{"id":312,"depth":399,"text":313},"2021-01-23","md",{"layout":414,"status":415,"published":416,"author":417,"author_login":419,"author_email":420,"wordpress_id":421,"wordpress_url":422,"date_gmt":423,"excerpt":424},"post","publish",true,{"display_name":418,"login":419,"email":420,"url":87},"风铃","flinkor","flinkor@foxmail.com",3179,"\u002F?p=3179","2021-01-23 06:35:58 +0000",{"type":8,"value":425},[426],[11,427,13],{},"\u002F2021-01-23-cedec-idol-master-notes-art",{"title":6,"description":13},"_legacy\u002F2021\u002F2021-01-23-cedec-idol-master-notes-art",[432,433],"Idolmaster","CEDEC","Zr130K7b9hYY95CfnrJLylsXLfeSfkCcCT4R7xGAwP0",{"id":436,"title":437,"body":438,"date":411,"description":442,"extension":412,"meta":983,"navigation":416,"path":995,"seo":996,"stem":997,"tags":998,"__hash__":999},"blogs\u002F_legacy\u002F2021\u002F2021-01-23-cedec-idol-master-notes-iteration.md","CEDEC IdolMaster笔记-制作事例長期運用篇",{"type":8,"value":439,"toc":949},[440,443,446,454,457,460,463,466,474,477,480,491,494,497,500,508,511,517,520,523,534,536,539,545,548,551,554,557,560,563,566,569,572,575,578,581,587,590,593,596,599,603,606,609,615,618,624,628,631,634,637,642,645,648,651,654,657,660,663,666,672,675,678,681,684,692,695,703,706,709,712,718,721,724,727,733,736,742,745,748,751,754,757,763,766,769,772,775,778,784,787,793,796,799,802,808,811,814,817,821,824,830,833,836,839,842,845,848,851,854,857,860,869,872,880,883,886,900,903,907,910,913,916,920,923,926,929,932,935,938],[11,441,442],{},"CEDEC2020上Cygames关于CGSS的分享。",[11,444,445],{},"CGSS于2015年9月发布，登场角色数190人。运营到2020年，已经有了很多的迭代经验和功能进步。当前的版本中，资源数量也已经非常丰富：",[242,447,448,451],{},[245,449,450],{},"SSR服装模型数400以上",[245,452,453],{},"3D MV收录曲数200以上",[11,455,456],{},"演讲的内容主要是发布后版本迭代中的一些开发经验。",[27,458,459],{"id":459},"增加演唱会的真实感",[11,461,462],{},"示例：「お願い！シンデレラ (GRAND VERSION)」",[11,464,465],{},"演唱会的真实感是什么？",[378,467,468,471],{},[245,469,470],{},"应援声",[245,472,473],{},"舞蹈之外的动作",[11,475,476],{},"应援声直接社内解决……在公司内招募志愿者的P进行收录。",[11,478,479],{},"舞蹈之外的动作，包括",[242,481,482,485,488],{},[245,483,484],{},"舞台间移动",[245,486,487],{},"向P打招呼",[245,489,490],{},"角色间交互",[11,492,493],{},"为了达到提高真实感的目标，舞台移动以及招呼动作追加了60种以上的动作。",[495,496,473],"h3",{"id":473},[11,498,499],{},"一般的MV制作流程：",[242,501,502,505],{},[245,503,504],{},"以歌曲为单位进行舞蹈摄影",[245,506,507],{},"舞蹈动作有1~5种(+a)，依据动作和表演等会有所增加",[11,509,510],{},"这里没玩过CGSS可能会有点费解，参考图片比较简单。",[11,512,513],{},[85,514],{"alt":515,"src":516},"image-20210117113700856_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117113700856_thumb.png",[11,518,519],{},"有的歌曲是所有人的动作一样的，有的则每个人都不一样。而CGSS通常是5人一组的，所以是1~5种舞动动作。",[11,521,522],{},"「お願い！シンデレラ (GRAND VERSION)」：",[242,524,525,528,531],{},[245,526,527],{},"在必要的地方进行分割摄影",[245,529,530],{},"为了突出动作的差别，即便是相似的动作也会改变表演动作多次摄影",[245,532,533],{},"舞蹈动作有3种(+60)",[495,535,490],{"id":490},[11,537,538],{},"让偶像之间进行拍手动作，但是由于身高差可能会够不到……",[11,540,541],{},[85,542],{"alt":543,"src":544},"image-20210117113816721_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117113816721_thumb.png",[11,546,547],{},"于是引入了IK。引入IK之后就可以解决很多交互问题：",[11,549,550],{},"对于存在身高差的角色，可以在不破坏动作的情况下进行交互。例如拍手、牵手等。",[11,552,553],{},"对于与场景固定物体交互，可以让角色在同一个位置进行。例如开门、看书、上下阶梯等。",[27,555,556],{"id":556},"演奏乐器",[11,558,559],{},"示例：「Unlock Starbeat」",[495,561,562],{"id":562},"体型差别",[11,564,565],{},"为了应对身高差的问题，根据身高的比例也有对应比例的乐器。",[11,567,568],{},"由于胸围大小有SS\u002FS\u002FM\u002FL\u002FLL的五种类型，让吉他和贝斯的背带位置可以对应的调节。",[495,570,571],{"id":571},"惯用手",[11,573,574],{},"提供左撇子用的乐器版本，以及让动作在加载的时候可以反过来。",[11,576,577],{},"动作反转加载时，角色的位置会有偏差，通过对摄像的位置也添加分歧来实现。",[11,579,580],{},"针对场上角色惯用手的区别，总共有4种摄像分歧：",[11,582,583],{},[85,584],{"alt":585,"src":586},"image-20210117115550081_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117115550081_thumb.png",[495,588,589],{"id":589},"动捕方法",[11,591,592],{},"邀请参与演唱会的乐队成员进行动作捕捉。",[11,594,595],{},"手指的动作部分会由动画师手工编辑，所以手部的动作会另外的进行捕捉。",[27,597,598],{"id":598},"其他改进",[495,600,602],{"id":601},"multi-camera","Multi Camera",[11,604,605],{},"通过多个摄像进行渲染，并使用mask进行切分。",[11,607,608],{},"大大的提高了演出效果。",[11,610,611],{},[85,612],{"alt":613,"src":614},"image-20210117120404268_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117120404268_thumb.png",[11,616,617],{},"为了减少渲染负担，每个摄像只会渲染自己需要的那个部分。",[11,619,620],{},[85,621],{"alt":622,"src":623},"image-20210117120519515_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117120519515_thumb.png",[495,625,627],{"id":626},"chara-motion-overwrite","Chara Motion Overwrite",[11,629,630],{},"在舞蹈的过程中，将角色的动画替换为别的动作。",[11,632,633],{},"这个其实主要是流程上的改进，原本的流程上，想要替换动作的话，就必须直接调整舞蹈数据，替换起来会很麻烦。负责摄像的人必须频繁的和负责动作的人进行交流确认，导致开发效率低下。",[11,635,636],{},"新的流程上，将动画切分成了Clip的形式，所以负责最终摄像的人就可以自由的进行调整，无需多余的交流成本。",[11,638,639],{},[85,640],{"alt":87,"src":641},"\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fims-character-motion-300x75.png",[11,643,644],{},"由于这里用的示例也是「お願い！シンデレラ GRAND VERSION」，所以应当就是前面摄影优化里面提到的分割摄影。",[495,646,647],{"id":647},"风模拟",[11,649,650],{},"有风的话会增加很多真实感。",[11,652,653],{},"模拟方式并不是基于物理的，而是以发束等为单元，分开时机周期性的添加力。这样的方法可以避免头发和衣服的模拟结果出现混乱，看起来也有随机的感觉。",[11,655,656],{},"这里说是担心バラバラ，感觉对于这种动画风的物理模拟，最怕的就是穿模了……",[495,658,659],{"id":659},"时间轴分歧",[11,661,662],{},"在特定的条件下，对摄像和动作进行分歧。",[11,664,665],{},"用于实现角色固有或者特定组合才会作的特别演出。",[11,667,668],{},[85,669],{"alt":670,"src":671},"image-20210117121645737_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117121645737_thumb.png",[27,673,674],{"id":674},"服装",[11,676,677],{},"服装对于CGSS的角色魅力表现是非常重要的。有很多服装是为了配合角色的个性而制作出来的，其中也有自带特效的衣服。",[11,679,680],{},"服装制作时有两条规则需要遵守：",[11,682,683],{},"一、模型面数和贴图数量必须在规定范围内",[242,685,686,689],{},[245,687,688],{},"基础颜色贴图一张，光照用贴图两张",[245,690,691],{},"如何在这个限制中达到表现目标就看各人的本领发挥了",[11,693,694],{},"二、必须能够对应所有的分镜、舞蹈动作",[242,696,697,700],{},[245,698,699],{},"不能在MV中出现不自然的表现",[245,701,702],{},"行走、跑步、蹲下、靠近等动作时不能穿模",[495,704,705],{"id":705},"想要带子上的彩虹和星星动起来",[11,707,708],{},"示例：CGSS４周年纪念服装",[11,710,711],{},"这里面能看到之前说到的三张贴图的作用：",[11,713,714],{},[85,715],{"alt":716,"src":717},"image-20210117123623250_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117123623250_thumb.png",[11,719,720],{},"由于只有三张贴图所以需要将彩虹和星星的控制用信息放进去。",[11,722,723],{},"彩虹的颜色变化写到了Color贴图上",[11,725,726],{},"星星的颜色变化信息则分成RPG通道写到了Spec贴图上。",[11,728,729],{},[85,730],{"alt":731,"src":732},"image-20210117124654022_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117124654022_thumb.png",[11,734,735],{},"最后将控制参数暴露到shader外面，就可以了",[11,737,738],{},[85,739],{"alt":740,"src":741},"image-20210117124255198_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117124255198_thumb.png",[11,743,744],{},"还有一些其他的特殊追加处理",[11,746,747],{},"长裙：在角色的下面添加了额外的碰撞用地板",[11,749,750],{},"翅膀：在角色身上添加了碰撞球，让翅膀自动回避",[27,752,753],{"id":753},"ドレスコーデ",[11,755,756],{},"可以让玩家对服装的部件颜色进行自定义。",[11,758,759],{},[85,760],{"alt":761,"src":762},"image-20210117130416518_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117130416518_thumb.png",[11,764,765],{},"可以调整颜色提升了表现力。",[11,767,768],{},"同时还添加了可以让所有人穿的上下可分开定制的通用服装。对于这种可拆分的通用服装，会根据体型差分制作不同的模型。",[495,770,771],{"id":771},"选色板",[11,773,774],{},"CGSS的服装贴图上包含了很多光照和阴影细节，用于体现立体感和质感，以及物体之间的投影和接触阴影，服装上的折痕阴影等。",[11,776,777],{},"对于用户自定义颜色，并不是单纯的调整一个颜色",[11,779,780],{},[85,781],{"alt":782,"src":783},"image-20210117131345087_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117131345087_thumb.png",[11,785,786],{},"而是需要对于一个可选颜色，对应一组Diffuse(BaseColor)、Specular(光沢色)、Shadow(影色)。",[11,788,789],{},[85,790],{"alt":791,"src":792},"image-20210117131458919_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117131458919_thumb.png",[11,794,795],{},"这样可以防止颜色出现破绽。",[495,797,798],{"id":798},"可分离通用服装",[11,800,801],{},"采用上下分离式的设计，所有角色可着装，可以添加更多的自由度",[11,803,804],{},[85,805],{"alt":806,"src":807},"image-20210117131656334_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117131656334_thumb.png",[11,809,810],{},"采用分离式设计的主要原因是，对于同一套衣服，需要对应不同的体型准备模型。",[11,812,813],{},"当前【身長×体格×胸サイズ】共有17种，而T-Shirt就要作17x4个模型，考虑之后的服装添加的话，成本太高了。",[11,815,816],{},"分离的设计可以增加模型的通用性，同时也可以方便之后单独的添加新的部件。",[27,818,820],{"id":819},"_3dコミュ","3Dコミュ",[11,822,823],{},"アイドルマスター シンデレラガールズ スターライトスポット，应该是这个：",[11,825,826],{},[18,827,828],{"href":828,"rel":829},"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.bandainamcoent.cgstarlightspot",[22],[11,831,832],{},"最长10分钟以上的场景，12个角色登场。有VR View和GYRO View两种模式。",[495,834,835],{"id":835},"偶像之间自然的交流",[11,837,838],{},"根据场景和其中的物品，让偶像之间做出复杂的交流。",[11,840,841],{},"在动捕摄影之前，事先对需要作的表演和移动路线进行预演。",[11,843,844],{},"预演可以有效的发现剧本和背景中不合理的部分，减少重新拍摄的次数，降低表演人员的负担。",[11,846,847],{},"角色和道具之间的位置的正确性，可以有效的提高表演的自然感。",[495,849,850],{"id":850},"让人感觉到偶像的真实存在",[11,852,853],{},"角色身上的音效发生点，在脸部\u002F腰\u002F右手\u002F左手\u002F脚上最大有五个。",[11,855,856],{},"使用Foley的手法，对动作音、道具音进行录制",[11,858,859],{},"引入ResonanceAudio SDK",[11,861,862,863,868],{},"添加对",[18,864,867],{"href":865,"rel":866},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAmbisonics",[22],"Ambisonics","格式环境音的支持",[11,870,871],{},"对于BGM，会根据场景采用不同的设置方式。",[242,873,874,877],{},[245,875,876],{},"像是乐屋这种的，就采用从扬声器中释放的场景内音效",[245,878,879],{},"设定上是电脑空间的话则采用场景外音效",[495,881,882],{"id":882},"表现偶像所在的世界",[11,884,885],{},"在设计预期上",[242,887,888,891,894,897],{},[245,889,890],{},"希望在场景内有很多偶像登场",[245,892,893],{},"乐屋中应当会有很多的镜子",[245,895,896],{},"特殊的世界观也希望能够体现出来",[245,898,899],{},"在较长的交流中也能够一直看下去而不需要返回现实",[11,901,902],{},"当然，为了表现出世界观，想要作的事情总是会有很多。但是必须考虑各种实现的成本。",[904,905,906],"h4",{"id":906},"内存消耗",[11,908,909],{},"10分钟的长度以及12个模型，使用到的对话数量和动作数据都很多。",[11,911,912],{},"例如3D交流第二话，总共有330个对话，470种SE。",[11,914,915],{},"对于声音，将非常驻的声音按块区分，由时间轴来触发加载，在播放完后自动卸载，减少内存消耗。",[904,917,919],{"id":918},"fps控制","FPS控制",[11,921,922],{},"希望保持在60帧",[11,924,925],{},"3D交流模式中物体太多导致FPS下降，12个模型同时渲染的负荷很重，VR模式则有额外1倍的消耗。",[11,927,928],{},"镜子：3D交流中玩家是不能移动的，对镜子内需要反射的物体进行限定，减少没有必要的绘制成本。",[495,930,931],{"id":931},"迭代效率提升",[11,933,934],{},"每一轮迭代的时间将会决定可以试错的回数，减少要素是最后的手段。",[11,936,937],{},"以MV的压力测试为例，通过Jenkins对以下的步骤进行自动化：",[242,939,940,943,946],{},[245,941,942],{},"apk\u002Fipa的资源构建",[245,944,945],{},"连结到的设备上的自动执行",[245,947,948],{},"收集执行结果到Kibana进行分析",{"title":87,"searchDepth":399,"depth":400,"links":950},[951,955,960,966,969,973],{"id":459,"depth":399,"text":459,"children":952},[953,954],{"id":473,"depth":400,"text":473},{"id":490,"depth":400,"text":490},{"id":556,"depth":399,"text":556,"children":956},[957,958,959],{"id":562,"depth":400,"text":562},{"id":571,"depth":400,"text":571},{"id":589,"depth":400,"text":589},{"id":598,"depth":399,"text":598,"children":961},[962,963,964,965],{"id":601,"depth":400,"text":602},{"id":626,"depth":400,"text":627},{"id":647,"depth":400,"text":647},{"id":659,"depth":400,"text":659},{"id":674,"depth":399,"text":674,"children":967},[968],{"id":705,"depth":400,"text":705},{"id":753,"depth":399,"text":753,"children":970},[971,972],{"id":771,"depth":400,"text":771},{"id":798,"depth":400,"text":798},{"id":819,"depth":399,"text":820,"children":974},[975,976,977,982],{"id":835,"depth":400,"text":835},{"id":850,"depth":400,"text":850},{"id":882,"depth":400,"text":882,"children":978},[979,981],{"id":906,"depth":980,"text":906},4,{"id":918,"depth":980,"text":919},{"id":931,"depth":400,"text":931},{"layout":414,"status":415,"published":416,"author":984,"author_login":985,"author_email":986,"author_url":987,"wordpress_id":988,"wordpress_url":989,"date_gmt":990,"excerpt":991},{"display_name":985,"login":985,"email":986,"url":987},"chaoshikari","chaoshikari@gmail.com","\u002F",3220,"\u002F?p=3220","2021-01-23 07:36:18 +0000",{"type":8,"value":992},[993],[11,994,442],{},"\u002F2021-01-23-cedec-idol-master-notes-iteration",{"title":437,"description":442},"_legacy\u002F2021\u002F2021-01-23-cedec-idol-master-notes-iteration",[432,433],"jm5Dc1sK0GeeF9r-d9LB7WxqvxqeKgBabdHPK7vo23M",{"id":1001,"title":1002,"body":1003,"date":411,"description":1007,"extension":412,"meta":1169,"navigation":416,"path":1178,"seo":1179,"stem":1180,"tags":1181,"__hash__":1182},"blogs\u002F_legacy\u002F2021\u002F2021-01-23-cedec-idol-master-notes-platinum-stars.md","CEDEC IdolMaster笔记-白金星光篇",{"type":8,"value":1004,"toc":1165},[1005,1008,1015,1018,1021,1027,1030,1034,1037,1040,1049,1052,1066,1069,1072,1075,1078,1081,1088,1091,1097,1100,1103,1106,1114,1117,1120,1126,1129,1132,1135,1138,1141,1144,1150,1153,1159,1162],[11,1006,1007],{},"原始的演讲标题是：『目指せトップアイドル！』　PS4アイドルマスタープラチナスターズで目指したこと。",[11,1009,1010,1011],{},"同样没有PPT，参考的：",[18,1012,1013],{"href":1013,"rel":1014},"https:\u002F\u002Fgame.watch.impress.co.jp\u002Fdocs\u002Fnews\u002F1016369.html",[22],[11,1016,1017],{},"因为是PS4，所以画面要比CGSS好一些，不过这边是765。",[11,1019,1020],{},"开发上，这边也不是Cygames而是万代南宫梦。",[11,1022,1023],{},[85,1024],{"alt":1025,"src":1026},"image-20210115092727212_thumb","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210115092727212_thumb.png",[11,1028,1029],{},"这边没什么太详细的内容。",[27,1031,1033],{"id":1032},"variable-toon","Variable toon",[11,1035,1036],{},"在ToonShader的技术基础上作了很多改进，技术命名是Variable toon。分享中没有透露具体的技术内容，只是一些概要性的说明。",[11,1038,1039],{},"由于默认的ToonShader会丢失掉很多信息，Variable toon的主要做法是，将这些信息重新补充到ToonShader上去。当然并不是单纯的作叠加，而是在Shader中的计算处理，所以有的地方也会作阴影的减弱。",[11,1041,1042,1043,1048],{},"示例给出的都是对比图片，由于没有什么美术素养，很多图片放到图片浏览器里面前后切换才看出差别。对比的图片可以参考原始的文章，为了防止有人访问不了，在DropBox上也上传了一份，可以到[",[18,1044,1047],{"href":1045,"rel":1046},"https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fcm5bd6b1hcerzg1\u002FIms-%E7%99%BD%E9%87%91%E6%98%9F%E5%85%89.7z?dl=0",[22],"这里","]取。",[11,1050,1051],{},"VariableToon的构成要素有",[242,1053,1054,1057,1060,1063],{},[245,1055,1056],{},"颜色不会有种褪色感",[245,1058,1059],{},"阴影计算不会出现预期外的颜色",[245,1061,1062],{},"根据角色动作计算出可叠加的详细阴影",[245,1064,1065],{},"头发、眼睛、脸颊、舌头、眼瞳各个部分添加不同的特殊处理",[11,1067,1068],{},"让角色无论从哪个角度看都很可爱。",[11,1070,1071],{},"关于详细的计算方式，虽然有作简单的说明，不过不是很确定是否是转述的问题，有点搞不明白。似乎是说，在通常的光照计算中，当3D模型受到光照时，在远离光照的那一侧将会产生阴影。而VaribleToon并不是对所有的物体都作一样的处理，而是针对离光源的远近采用不同的公式。",[11,1073,1074],{},"由于没有PPT，报道的文章也没有详细的记述，只能按照拍照来猜测：",[11,1076,1077],{},"皮肤表现上看，应当是添加了一些颜色的细节，应该是某种阴影实现。",[11,1079,1080],{},"根据角色动作的详细阴影，有可能是作了某种动态的接触阴影计算。",[11,1082,1083,1084,1087],{},"防止白色溢出，",[159,1085,1086],{},"白飛び","应该是过度曝光的意思，例子中是手臂的白色计算溢出过度了。",[11,1089,1090],{},"各个部件的特殊处理：",[11,1092,1093],{},[85,1094],{"alt":1095,"src":1096},"image-20210117154151523","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117154151523_thumb.png",[11,1098,1099],{},"从对比上看，嘴唇鼻子脸颊这些应该是在削减阴影，头发应该是对高光作了处理。同时头发到脸颊有类似接触阴影或者投影的效果，不知道光是哪里来的，无法确定。",[11,1101,1102],{},"VariableToon的效果是受动态光照影响的，至少可以反映周围光照颜色的变化。",[11,1104,1105],{},"动画风格渲染方面，有两个元素非常重要：",[378,1107,1108,1111],{},[245,1109,1110],{},"轮廓线(outline)",[245,1112,1113],{},"简略化的上色(通过shading进行2~3阶调的上色)",[11,1115,1116],{},"不是很了解上色，这里应该是灰阶上色，不然运算成本会高一些，不确定……",[11,1118,1119],{},"轮廓线处理上会对太过密集的轮廓线进行移除，同时让轮廓线受到周围的颜色的渗透，变得更加自然。",[11,1121,1122],{},[85,1123],{"alt":1124,"src":1125},"image-20210117161655763","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117161655763_thumb.png",[11,1127,1128],{},"这个图就是在密集处移除轮廓线的处理对比",[11,1130,1131],{},"另外，轮廓线带上周围的颜色目前应该算是比较常规的操作了。",[11,1133,1134],{},"表情方面，前作的表情是作用于脸部全体的。本作表情则分为上下两个部分，将两个部分组合以提供更高的灵活性，同时减少资源占用。",[27,1136,1137],{"id":1137},"演出要素",[11,1139,1140],{},"与前作相比，白金星光的舞台特效主要添加的要素有：接近角色的长光束和观众席上的荧光棒的演出。荧光棒对表现力的提升很大，尤其是对于可以在其中行走的伸展式舞台场景更是想要尽可能的多加一些。",[11,1142,1143],{},"在演出制作上，由于具有很多舞台，所以演出就有了舞台和乐曲两个变量。为了减少制作成本，灯光的配置在各个舞台都采用了基本相同的配置。这样各个灯光和大型显示器的变化则可以和动作表演一样按照歌曲来进行设定，对于一个歌曲的演出表就只需要使用一个配置就可以了。",[11,1145,1146],{},[85,1147],{"alt":1148,"src":1149},"image-20210117173907301","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117173907301_thumb.png",[11,1151,1152],{},"特别需要提到的是灯光方面，例如LightHouse、武道馆、Arena三个舞台的灯光组的位置都基本是相同的，不过光的朝向、强度则各有不同，所以即便使用相同的演出表也能产生不同的效果。",[11,1154,1155],{},[85,1156],{"alt":1157,"src":1158},"image-20210117174828697","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210117174828697_thumb.png",[11,1160,1161],{},"左边是LightHouse，右边是武道馆。",[11,1163,1164],{},"采用这样的设计之后，添加一个舞台或者添加一首歌曲也不会产生很大的工作量。",{"title":87,"searchDepth":399,"depth":400,"links":1166},[1167,1168],{"id":1032,"depth":399,"text":1033},{"id":1137,"depth":399,"text":1137},{"layout":414,"status":415,"published":416,"author":1170,"author_login":419,"author_email":420,"wordpress_id":1171,"wordpress_url":1172,"date_gmt":1173,"excerpt":1174},{"display_name":418,"login":419,"email":420,"url":87},3217,"\u002F?p=3217","2021-01-23 06:08:30 +0000",{"type":8,"value":1175},[1176],[11,1177,1007],{},"\u002F2021-01-23-cedec-idol-master-notes-platinum-stars",{"title":1002,"description":1007},"_legacy\u002F2021\u002F2021-01-23-cedec-idol-master-notes-platinum-stars",[432,433],"rKHDsZFO8-VFoZBDXS2KmcC0e_RxRbafXFHwGSk9w1E",{"id":1184,"title":1185,"body":1186,"date":1413,"description":1190,"extension":412,"meta":1414,"navigation":416,"path":1423,"seo":1424,"stem":1425,"tags":1426,"__hash__":1427},"blogs\u002F_legacy\u002F2021\u002F2021-01-21-cedec-idol-master-notes-technic.md","CEDEC IdolMaster笔记-制作事例技术篇",{"type":8,"value":1187,"toc":1405},[1188,1191,1194,1201,1208,1215,1218,1221,1228,1236,1239,1262,1269,1272,1275,1278,1281,1284,1287,1290,1293,1296,1299,1310,1313,1321,1324,1327,1330,1333,1339,1342,1345,1348,1350,1353,1356,1359,1365,1368,1371,1374,1377,1380,1383,1393,1396,1399,1402],[11,1189,1190],{},"CEDEC看到的IdolMaster相关的分享，严格上来说并不是系列。",[11,1192,1193],{},"主要的构成是，CEDEC2016的三篇：",[11,1195,1196],{},[18,1197,1200],{"href":1198,"rel":1199},"https:\u002F\u002Fcedec.cesa.or.jp\u002F2016\u002Fsession\u002FENG\u002F3515.html",[22],"アイドルマスターシンデレラガールズ スターライトステージ 制作事例・テクニカル編",[11,1202,1203],{},[18,1204,1207],{"href":1205,"rel":1206},"https:\u002F\u002Fcedec.cesa.or.jp\u002F2016\u002Fsession\u002FVA\u002F4787.html",[22],"アイドルマスターシンデレラガールズ スターライトステージ 制作事例・アート編",[11,1209,1210],{},[18,1211,1214],{"href":1212,"rel":1213},"https:\u002F\u002Fcedec.cesa.or.jp\u002F2016\u002Fsession\u002FVA\u002F3727.html",[22],"『目指せトップアイドル！』　PS4アイドルマスタープラチナスターズで目指したこと",[11,1216,1217],{},"这三篇都没有公开PPT，所以是以其他地方的引用为基础的。",[11,1219,1220],{},"以及CEDEC2020的：",[11,1222,1223],{},[18,1224,1227],{"href":1225,"rel":1226},"https:\u002F\u002Fcedil.cesa.or.jp\u002Fcedil_sessions\u002Fview\u002F2315",[22],"「アイドルマスター シンデレラガールズ スターライトステージ」制作事例",[34,1229,1230,1233],{},[11,1231,1232],{},"由于部分参考的是二手资料，会将几篇文章相互对照，采用个人认为合理的解释。",[11,1234,1235],{},"所以可能会出现与原文意思有出入的情况~",[11,1237,1238],{},"由于放在一起实在是太长了，所以按照篇章进行了拆分：",[242,1240,1241,1244,1250,1256],{},[245,1242,1243],{},"技术篇(就是这篇)",[245,1245,1246],{},[18,1247,1249],{"href":1248},"\u002F2021-01-23-cedec-idol-master-notes-art\u002F","美术篇",[245,1251,1252],{},[18,1253,1255],{"href":1254},"\u002F2021-01-23-cedec-idol-master-notes-platinum-stars\u002F","白金星光篇",[245,1257,1258],{},[18,1259,1261],{"href":1260},"\u002F2021-01-23-cedec-idol-master-notes-iteration\u002F","長期運用篇",[11,1263,1264,1265],{},"这里是技术篇，参照的这里：",[18,1266,1267],{"href":1267,"rel":1268},"https:\u002F\u002Fwww.4gamer.net\u002Fgames\u002F307\u002FG030796\u002F20160829088\u002F",[22],[27,1270,1271],{"id":1271},"引擎选择",[11,1273,1274],{},"候补引擎有Unity和Cocos2d-x两个，花费一个月的时间对两个引擎进行了考察验证。分成两组分别使用对应的引擎进行功能实现。",[11,1276,1277],{},"最核心的要求是：一定要保证帧率维持在60帧。",[11,1279,1280],{},"目标上，要能够让偶像的演出更加接近插画的风格。对于高性能的手机，则要能够提供对应的高品质输出。",[11,1282,1283],{},"在验证时，分别对2D旋律游戏和3D演出这两个部分进行。",[11,1285,1286],{},"3D部分的主要考察点是顶点数、贴图分辨率、骨骼数量等基本性能。在进行性能分析时，除了使用引擎本身提供的工具之外，还使用了硬件开发商提供的性能优化工具对Shader的性能进行分析。",[11,1288,1289],{},"除了基本的性能验证，对图像特效这些可以动态调整的要素也进行了验证。图像效果上，考虑到为了表现出插画的风格，必须要能够支持Bloom和DOF特效的实现。",[11,1291,1292],{},"经过了一个月的验证后，最终选择了Unity。虽然Cocos2d-x具有开源的优势，但是Unity的开发效率更高，同时公司内部也已经有了相应的开发经验。最重要的是，在1个月的验证期间Unity产出的成果的品质起了关键作用。",[27,1294,1295],{"id":1295},"性能优化",[11,1297,1298],{},"在引擎验证阶段就遇到了Thermal Throttling的问题，手机在高负荷运作导致温度上升后，会对CPU和GPU的运行效率进行下调。这个问题只能通过优化来解决。",[11,1300,1301,1302,1305,1306,1309],{},"为了在所有的设备上都达到60帧，CGSS提供了",[159,1303,1304],{},"3D轻量","和",[159,1307,1308],{},"3D标准","两个级别的画质级别，对于2D部分也相应的有两个选项。这方面，苹果手机由于机种和性能比较明确，对于IPhone 5之前的手机使用的是3D轻量，包括IPhone 6之后的手机，则使用3D标准。",[11,1311,1312],{},"对于Android手机，由于存在很多碎片化的问题，则是通过获取手机的硬件信息，根据其性能参数来动态的决定使用哪一个性能等级。",[34,1314,1315,1318],{},[11,1316,1317],{},"IOS使用UnityEngine.iOS.Device.generation",[11,1319,1320],{},"Android基于SystemInfo.graphicsDeviceName进行判定",[11,1322,1323],{},"对于MV视频播放这种用户无法操作的3D部分，由于性能负担较低，全部都使用的3D标准级别进行。",[27,1325,1326],{"id":1326},"图像效果",[11,1328,1329],{},"两个性能等级在渲染上的差别之一在于部分图像效果的启用与否。",[11,1331,1332],{},"CGSS使用了一个混合的方法来达到Bloom和DOF的效果：",[11,1334,1335],{},[85,1336],{"alt":1337,"src":1338},"image-20210112075819248","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210112075819248_thumb.png",[11,1340,1341],{},"在进行效果计算时，使用四分之一大小的渲染结果作为基础，上面的路径使用深度贴图进行模糊处理，下面的路径使用基于亮度的像素抽出。",[11,1343,1344],{},"由于深度贴图会额外的消耗一个DrawCall，对于低端设备而言难以承担，所以在3D轻量中没有启用。",[11,1346,1347],{},"四分之一大小的渲染贴图除了在这里使用之外，也会被用于场景中显示器上的图像输出。",[27,1349,253],{"id":253},[11,1351,1352],{},"CGSS没有使用动态光照，角色、背景的光照都是通过Ambient Light来实现的。环境光照通过时间轴来控制，SpotLight的效果则使用面片来实现。",[11,1354,1355],{},"OutLine(轮廓线)使用的是反转Culling这种古典的方法来实现的，轮廓线的宽度和颜色，则通过Vertex Color来控制。",[11,1357,1358],{},"角色下方的阴影，使用的也是假的阴影。主要原因有两个，首先，要生成阴影必须使用深度贴图，无法在没有深度贴图的3D轻量上实现；另一方面，舞台上有非常多的光源，即便使用光照计算也无法很好的再现。",[11,1360,1361],{},[85,1362],{"alt":1363,"src":1364},"image-20210112083029487","\u002Fwp-content\u002Fuploads\u002F2021\u002F01\u002Fimage-20210112083029487_thumb.png",[11,1366,1367],{},"通过对DrawCall进行限制可以很好的减轻CPU的负担，Unity提供的Draw call Batching功能提供了很大的帮助。",[27,1369,1370],{"id":1370},"角色动画",[11,1372,1373],{},"对于CGSS而言，角色的动画是相当重要的部分，所有的动画都是采用动态捕捉制作的。",[11,1375,1376],{},"从MotionCapture数据到角色动画，全部使用同一个Generic的Rig，不使用IK而是使用旋转传递的方式来映射动画。同时基础骨骼全部都是等倍率，不会进行缩放。",[11,1378,1379],{},"在进行动画播放时，会给每一个角色添加一个随机的时间偏差，让动作产生差别。这样即便玩家在MV中进行暂停，也会看到全员的动作微妙的有一些不同。这样是为了模拟出人在舞蹈的真实感，而不是所有的模型都在作一模一样的动作。",[11,1381,1382],{},"旋转处理方面有一个问题，就是旋转的误差会随着骨骼累计到末端，尤其是当手上拿着什么东西的时候会特别的明显。这里一般会使用Motion Reduction来处理。",[34,1384,1385],{},[11,1386,1387,1388,1392],{},"The ",[1389,1390,1391],"strong",{},"Motion Reduction"," property settings enable you to reduce the amount of motion transferred between the chest, neck, head, and shoulder body parts of your source Actor or Character to the corresponding object of your target character.",[11,1394,1395],{},"对于一些无法消除的抖动，会让动画表现中的一部分直接使用相对身体的Transform，而不是使用骨骼传递。例如利用手上拿着的麦克风，即便手的末端有一些传递过来的抖动，由于有麦克风遮挡住，可以有效的减少穿帮。",[27,1397,1398],{"id":1398},"衣服模拟",[11,1400,1401],{},"衣服的物理模拟主要就是单纯的sprint计算，以及添加尽可能少的碰撞形态来作简单的碰撞判定。碰撞判定用的形态上，只有Sphere与Sphere以及Sphere与Capsule两种。由于运算在C#上消耗比较大，在完成之后转移到了原生代码上，获得了10%~20%的性能提升。",[11,1403,1404],{},"总体而言，在技术上很大程度使用了上一个世代的主机的很多优化技术。现代(指2015年)的手机已经具有能够匹敌上一个世代的主机的运算能力了，所以技术方面也能有很大的沿用。",{"title":87,"searchDepth":399,"depth":400,"links":1406},[1407,1408,1409,1410,1411,1412],{"id":1271,"depth":399,"text":1271},{"id":1295,"depth":399,"text":1295},{"id":1326,"depth":399,"text":1326},{"id":253,"depth":399,"text":253},{"id":1370,"depth":399,"text":1370},{"id":1398,"depth":399,"text":1398},"2021-01-21",{"layout":414,"status":415,"published":416,"author":1415,"author_login":419,"author_email":420,"wordpress_id":1416,"wordpress_url":1417,"date_gmt":1418,"excerpt":1419},{"display_name":418,"login":419,"email":420,"url":87},3159,"\u002F?p=3159","2021-01-21 15:10:00 +0000",{"type":8,"value":1420},[1421],[11,1422,1190],{},"\u002F2021-01-21-cedec-idol-master-notes-technic",{"title":1185,"description":1190},"_legacy\u002F2021\u002F2021-01-21-cedec-idol-master-notes-technic",[432,433],"Krvf8F4cDU1TX1sAE1mjPeIcd5tO6Pxn6Yg_T226ffM",{"id":1429,"title":1430,"body":1431,"date":1649,"description":1435,"extension":412,"meta":1650,"navigation":416,"path":1659,"seo":1660,"stem":1661,"tags":1662,"__hash__":1663},"blogs\u002F_legacy\u002F2020\u002F2020-11-29-jenkins-start-up.md","Jenkins初步使用记录",{"type":8,"value":1432,"toc":1638},[1433,1436,1439,1447,1450,1453,1457,1460,1463,1468,1471,1476,1479,1490,1493,1498,1501,1504,1515,1518,1521,1532,1545,1548,1551,1554,1561,1564,1570,1573,1577,1580,1584,1593,1596,1599,1605,1608,1614,1617,1623,1626,1629,1632,1635],[11,1434,1435],{},"Jenkins这个工具似乎在流程中使用的还挺多的，于是就找了些时间试用了下。",[11,1437,1438],{},"使用的Jenkins版本是2.266。",[11,1440,1441,1446],{},[18,1442,1445],{"href":1443,"rel":1444},"https:\u002F\u002Fwww.jenkins.io\u002F",[22],"Jenkins","的官方网站，初看还是有点上个世代的感觉的。至少和其他的CI工具相比，不是那么的重视界面。",[11,1448,1449],{},"不过Jenkins的主要优势是开源免费，对于只是需要自动化流程的小规模工作室而言还是有不少优势的。毕竟流程跑起来最重要的是功能，界面只要能表达清晰、流畅使用就足够了。",[11,1451,1452],{},"下面主要记录一些遇到的问题，安装过程这些可以参考官方网站。",[27,1454,1456],{"id":1455},"root权限运行","Root权限运行",[11,1458,1459],{},"一开始没搞明白Jenkins的使用方式，其实如果流程依赖于svn或者git的话，是不需要root权限的。",[11,1461,1462],{},"Jenkins的运行用户可以在配置中修改：",[34,1464,1465],{},[11,1466,1467],{},"vi \u002Fetc\u002Fsysconfig\u002Fjenkins",[11,1469,1470],{},"修改",[34,1472,1473],{},[11,1474,1475],{},"$JENKINS_USER=\"root\"",[11,1477,1478],{},"出于保守起见，同时修改目录权限：",[34,1480,1481,1484,1487],{},[11,1482,1483],{},"chown -R root:root \u002Fvar\u002Flib\u002Fjenkins",[11,1485,1486],{},"chown -R root:root \u002Fvar\u002Fcache\u002Fjenkins",[11,1488,1489],{},"chown -R root:root \u002Fvar\u002Flog\u002Fjenkins",[11,1491,1492],{},"然后重启Jenkins",[34,1494,1495],{},[11,1496,1497],{},"\u002Fetc\u002Finit.d\u002Fjenkins restart ps -ef | grep jenkins",[11,1499,1500],{},"这样之后就能正常的对有权限的目录进行访问了。",[11,1502,1503],{},"由于后面发现不需要Root权限，把配置改回去之后，把目录权限直接全部开放：",[34,1505,1506,1509,1512],{},[11,1507,1508],{},"chmod -R 777 \u002Fvar\u002Flib\u002Fjenkins",[11,1510,1511],{},"chmod -R 777 \u002Fvar\u002Fcache\u002Fjenkins",[11,1513,1514],{},"chmod -R 777 \u002Fvar\u002Flog\u002Fjenkins",[27,1516,1517],{"id":1517},"错误捕捉",[11,1519,1520],{},"Jenkins在运行脚本时，遇到了明明脚本报错却将job视为成功的情况。",[11,1522,1523,1524,1528,1529,1531],{},"主要原因是，在脚本头部具有 ",[1525,1526,1527],"code",{},"#!\u002Fbin\u002Fbash"," 。由于jenkins会将脚本放在一个临时sh文件里面执行，导致这样无法捕获到错误，移除",[1525,1530,1527],{},"即可，无需指定命令解释器。",[11,1533,1534,1535,1537,1538,1541,1542,162],{},"或者，在脚本头部（ ",[1525,1536,1527],{},"后面）加入命令：",[1525,1539,1540],{},"set -o errexit"," 或者 ",[1525,1543,1544],{},"set -e",[27,1546,1547],{"id":1547},"编译错误",[11,1549,1550],{},"这个问题的表现有点奇怪：直接在命令行中执行指定的脚本，编译过程可以正常通过。但是Jenkins使用同样的脚本却无法正确的完成编译。",[11,1552,1553],{},"最后发现是CMake自动选择的编译器不同造成的，Jenkins在运行时获取的环境变量与在命令行中的环境变量不同。",[11,1555,1556,1557,1560],{},"分别执行",[1525,1558,1559],{},"echo $PATH","会发现输出的内容不一致。",[11,1562,1563],{},"虽然CMake本身支持强制指定编译器路径，不过考虑到通用性，可以直接在Jenkins中设定环境变量参数。",[11,1565,1566],{},[85,1567],{"alt":1568,"src":1569},"jenkins-path","\u002Fwp-content\u002Fuploads\u002F2020\u002F11\u002Fimage.png",[11,1571,1572],{},"这样就能正常通过编译了。",[27,1574,1576],{"id":1575},"bash记录","Bash记录",[11,1578,1579],{},"由于之前对bash不是很熟悉，过程中找到一些有帮助的bash命令记录在这里记录一下",[495,1581,1583],{"id":1582},"读取svn信息","读取Svn信息",[1585,1586,1591],"pre",{"className":1587,"code":1589,"language":1590},[1588],"language-text","REVISION=`svn info | grep 'Last Changed Rev' | tr -d 'Last Changed Rev: '`\necho $REVISION\n","text",[1525,1592,1589],{"__ignoreMap":87},[495,1594,1595],{"id":1595},"写入到文件",[11,1597,1598],{},"直接写入：",[1585,1600,1603],{"className":1601,"code":1602,"language":1590},[1588],"echo \"hello\" > logfile.txt\n",[1525,1604,1602],{"__ignoreMap":87},[11,1606,1607],{},"附带输出：",[1585,1609,1612],{"className":1610,"code":1611,"language":1590},[1588],"echo \"hello\" | tee logfile.txt printf \"hello\" | tee logfile.txt\n",[1525,1613,1611],{"__ignoreMap":87},[495,1615,1616],{"id":1616},"读取文件第一行",[1585,1618,1621],{"className":1619,"code":1620,"language":1590},[1588],"line=\"$(head -1 logfile.txt)\"\n",[1525,1622,1620],{"__ignoreMap":87},[27,1624,1625],{"id":1625},"插件安装",[11,1627,1628],{},"插件安装遇到了很多奇怪的问题，无论使用官方的发布版本还是docker版本都无法正确的安装。",[11,1630,1631],{},"搜索了下，找到的建议里面，无论是设置proxy参数还是修改镜像地址都无法完成安装。",[11,1633,1634],{},"表现上看，网络测试是通的，但是下载对应的插件包就是失败。可是使用wget去下载对应的路径又能成功，由于报错语焉不详，无法进一步寻找原因，最后只能使用手工下载安装包并直接在后台手动安装的方式。",[11,1636,1637],{},"由于需要按照依赖来按顺序安装，所以需要一个一个的去自己找。应该是可以写成脚本的形式来自动进行的，只是由于只是稍微试用，就没有仔细纠结了。而且正常的话，就算手工安装也花不了多少时间。不如说搜索如何解决自动安装失败问题的过程反而花了更多时间……",{"title":87,"searchDepth":399,"depth":400,"links":1639},[1640,1641,1642,1643,1648],{"id":1455,"depth":399,"text":1456},{"id":1517,"depth":399,"text":1517},{"id":1547,"depth":399,"text":1547},{"id":1575,"depth":399,"text":1576,"children":1644},[1645,1646,1647],{"id":1582,"depth":400,"text":1583},{"id":1595,"depth":400,"text":1595},{"id":1616,"depth":400,"text":1616},{"id":1625,"depth":399,"text":1625},"2020-11-29",{"layout":414,"status":415,"published":416,"author":1651,"author_login":985,"author_email":986,"author_url":987,"wordpress_id":1652,"wordpress_url":1653,"date_gmt":1654,"excerpt":1655},{"display_name":985,"login":985,"email":986,"url":987},3105,"\u002F?p=3105","2020-11-29 03:10:44 +0000",{"type":8,"value":1656},[1657],[11,1658,1435],{},"\u002F2020-11-29-jenkins-start-up",{"title":1430,"description":1435},"_legacy\u002F2020\u002F2020-11-29-jenkins-start-up",[1445],"8AVPbbok7KLt85eHMjpFQ26ljPlbvyAGE-jLve80kCo",222,1788763177307]