2019年2月24日 星期日

程式不想收到的美術圖(下)

 其實現在手上的專案以2D為主,3D的部分接觸較少
 雖然也有收到幾個有問題的3D圖檔,但更大部分會講「美術和企劃們不要把Unity想得太萬能」這件事——沒裝插件的Unity可是很多事情都做不到的
 但在探討這個之前,show一下手上不太想面對的FBX www

 首先,不要把四個攝影機包在物件裡(親身經歷)
 每次收到一些個別要更換的model時,裡面總會出現4個攝影機和4個攝影機Target,然後就要選取全部再刪掉
 幾秒鐘的動作,但很煩
 #超級煩

 void PleaseGiveMeACorrectModel(){
  print("在這地方消磨掉程式的耐性,就別怪他功能寫不好了")
 }

 接著要說的是:希望能把model歸位
 甚麼意思?

 這個意思
 (上面只是模擬一下當時情況ww)
 明明外層的空物件座標在(0, 0, 0),但裡面的model位置就各種神奇各種怪
 基本上我收到model的全部都是這樣子(遠目
 如果model只有一個的話就算了,假如包住的是結構較複雜的多重物件,那我還要再調正確位置……
 PleaseGiveMeACorrectModel();

—————
 手上能說的問題圖檔就這些,接下來就是「別把Unity當繪圖軟體!」的部分
 在開始之前先說一下,我是以原本Unity的功能,意則沒有使用插件為基準來說的
 畢竟有時請款買插件也可能不會過(咦#

 先來第一點:Unity沒法調model的頂點
 (插件ProBuilder好像可以,但現在主力做2D,所以還沒有空研究)
 事源是某天,美術丟了個FBX給我,那是一個平行四邊體
 然後想說讓我在Unity裡自行縮放做些效果
 但想當然,一拉長的話,最左右兩側的頂點也會拉寬,導致整個變形
Like This

 把這情況告訴美術之後,他問我:
 「不能調點的嗎?」
 「對,不能調點。」
 我誠懇地點頭。

 所以,最後他拆了個三角形和長方形給我,讓長方形在伸縮的同時,三角形跟著移動
 這種做法不是問題,問題是他長方形的軸心沒調好#
 要解釋這個,先來個gif一下

 這是Unity生成的四方體,軸心在正中間,縮放的話會上下一起拉長(美術給我的就是這種)
 然後,假如把軸心放在模型底部的話,縮放起來像這樣:


 要動態伸縮做效果,軸心在底部時程式們才好處理
 但如果美術不想改時,除了暴走和離職之外有甚麼辦法呢?
 那就土法煉鋼:改Scale時,同時改Position
 又或者,自行生成一個空物件,強制改變模型的軸心

 把空物件放在模型底部,再把模型拖進去,成為空物件的子物件
 至於空物件的位置要怎樣調好——嗯,考你眼力w ((喂#
 所以,美術呀……PleaseGiveMeACorrectModel();


 第二點:Unity不能拆UV (同樣地ProBuilder好像可以#)
 事源,企劃問:「你能不能把貼圖只貼在四方體的其中一面?」
 我:「那要美術拆UV,又或者給我一星期來研究Shader。」
 企:「Oh……所以是不行哦……」
 然後走掉了。
 所以就真的不能給我一星期來研究Shader嗎qwq

 總之,沒有任何外力幫助的情況下,Unity裡生成的3D物件,材質貼起來時都是一個整體


 第三點:沒辦法調個別材質的對比度啦!
 某天在試貼圖,因為對比不太明顯,企劃試著問:
 「有沒有辦法調一下對比,讓陰影更明顯……」
 「NO!」
 除非你給時間我來研究Shader
 ……嗯,第三點就這樣XD
 真的不要把Unity當繪圖軟體啦((吶喊


 第四點:
 「有沒有辦法在Unity內,直接做出物件彎曲的動畫?」
 「有,Shader。不然就美術出圖。」
  所以企劃就跑去騷擾美術了。所以我說Shader呢?
 (其實也可以用C#來讀取模型的Mesh,獲得頂點後再自行調整……但這操作太高端我不會#)
 然後,美術出了一個動畫,但丟到Unity時卻沒有彎曲……那是因為,Unity不支援調整頂點的動畫,只會吃物件本身的Transform以及骨架動畫
 (當然,這世界上沒有插件解決不了的事情。有不少插件就是讓你能夠調頂點w)
 Unity不吃頂點動畫……稍為算是個注意事項吧?
 如果辛苦調出來的頂點動畫不能用,要不重做,要不研究插件,那真的會崩潰www

 理論上,較簡單的物件扭曲(比如在架上飄的衣服),我是推薦用插件,或是寫Shader
 但如果趕時間,那就直接上骨架吧w
 畢竟畢製時,優化這種事是在有充足時間,又或是等你效能爆炸時才會做的#


 最後,再來一點點心得(?)
 假如程式拿到不好的美術圖時,不要立即爆氣,儘量和美術講解一下「圖不能用」的理由。知道原理的話,說不定下次出圖會好一點
 (但美術能不能理解程式們的解說,那就另一個故事w)
 然後美術聽到圖不能用時,也不要覺得「一定是程式的問題」
 很多時候,圖不是真的「絕對不能用」,而是要用的話,會消耗更多效能和時間和耐心
 為了整個專案著想,圖片修正後才能加快開發進度

 總而言之……就算美術和程式互看不順眼,但表面上還是得來個良好溝通。出圖的規範儘量統一好
 不然遊戲進度一直卡死,最後爆炸的話就真的GG了
 如果你有心專案爆掉那例外

 就這樣,以上owo/

2019年2月23日 星期六

程式不想收到的美術圖(上)

 在畢製時期,因為身兼美術和程式,自己出圖自己用,一些基本的注意事項也都清楚,所以美術上沒出現甚麼大問題
 (真正有問題的是我程式能力太弱功能寫不出來XD)

 然後現在出社會,當個超菜鳥工程師,才發現原來美術不熟Unity的話,很多時會出了一些工程師們不太想收到的圖(´・ω・`)
 所以就著步入社會半週年,想來講一下至今收到的「不太好的」美術圖
 但……因為我還太菜,無法講得太深入,而且專業人士應該都知道這些東西,所以整篇文就會以「畢製注意事項」的形式來編寫

 ——————

 首先是不論2D還是3D,兩者皆通用的一點,就是:
 不要用中文命名
 我真的不想看到圖檔是用中文命名 

 雖然理論上,就算用中文Unity也能找到圖檔,但——
 先不說會不會有Bug,單是看到檔案裡有中文就會不爽啊(゚皿゚メ)
 收到中文圖檔時第一件做的事情就是要煩惱把它改回英文名
 如果一件兩件就算了,一堆東西要改名字的話不單花時間,更會耗掉耐心呀(苦笑

 雖然美術也可能會說「我又不知道工程師要怎樣命名,交給他們自己處理不是更好嗎?」之類的,顯然美術人也不想煩命名((X
 那這時候,這種比較偏向文字類型的工作,就落在企劃身上了
 企劃開出「美術需求」的同時,就要開出圖檔應有的命名
 統一命名之後不單方便溝通和作業,在圖檔出問題時也較容易追縱——只要說出名字就能立即搜尋到,不用再每個檔案慢慢找
 而更重要的一點是:
 #可以避免工程師收到中文圖檔
 #會生氣

 ——————

 接下來先說2D的部分
 不過因為現時在開發博奕遊戲,沒收到2D動作圖或場景之類的,所以能說的只有UI:

 首先,同一系列的圖請用上同樣的尺寸大小
 那甚麼是「同一系列」呢?
 比方說「數字圖」和「按鈕圖」等等

 這類圖通常都會經常切換圖示,或通用性甚高
 所以,能夠做到「換圖示」後就不用再設定些有的沒的,才是最順心的做法
 「設定些有的沒的」指的是RectTransform裡的大小
 如果同系列圖的大小都不一,那切換圖示後圖片會被壓縮或位長
「1」的圖示尺寸比「0」小,被強行拉寬

按鈕按下去後,因兩張圖尺寸不一導致位移

 雖然,程式其實也能在換數字時在行碼中更改圖片大小,也可以在按下按鈕時命令按鈕移高
 但……這樣寫意味著只要每切換一次圖示就要更改一次,這樣真的不優w
 #請先讓美術切好圖
 #把效能用在更有意義的地方上
切圖正確的按鈕

 通常建議同系列圖,取最大那張圖的尺寸為標準,這樣切下去後程式就能直接換圖,方便快捷(灑花

 不過也有稍為不通常(?)的情況,就是圖的尺寸中心並不是視覺上的中心(公三小
 像上面左圖,花紋佔了不少比例,導致「0」字偏右
 儘管這種情況也可以成為美術特式(吧
 但如果要追求「工整」,就要在右邊也加開一點空白像素,這樣丟Unity後就相對較為置中

 由此延伸,其實「空白像素」有時也可以玩些花樣,至於要怎樣玩就要看創意了~
 

 接下來第二點,UI 圖請不要過大
 曾經收到過一系列圖(大概26張),每張都用A4 Size (300 dpi)來出圖
 等於我收到26張(3508 * 2480)的UI 圖,而遊戲的解析度是(1280 * 800),我要把圖片都縮小200倍才能用……
 更別說匯入Unity就花掉三、四分鐘,然後為了調好比例,一直在那邊調數值弄了好一陣子……
 #真的會生氣
 基本上,在不違反「同系列同尺寸」這點上,圖都是能小則小(應該……XD
 過多的調整往往會消磨掉耐心和時間,而且日後要修改圖片亦變得困難
 所以,美術出圖時請考慮一下程式,不要太自由奔放,每次都開A4 Size www

 3D的部分下篇待續>

2019年1月1日 星期二

用CSP畫動畫後的心得

最近用CSP畫了個動畫,順手分享個使用心得w
#其實從開始畫到結束共畫了兩個月,所以也不太算「最近」XD
#在畫的途中CSP有改版,但為免檔案發生問題,所以沒更新
#新版的動畫功能有機會再分享個030

話說,我在做畢製的時候,雖然CSP已經有動畫功能
但畢製繁忙期沒心情研究新東西,所以那時是在CSP畫完後,再轉到Flash看動畫效果XDD
現在看來覺得自己還真白目((扶額

Anyway,總之來看看CSP怎麼做動畫吧:
.首先Ctrl + N 開個動畫檔案
(Blogger插入圖片有點難調大小……調成這樣已經是極限了
    圖裡的文字有點難看到抱歉QwQ) 
右邊能調各種參數
可以調幀率和時間長度
現在沒設定好,也可以在裡面調整ouo

至於左邊的畫布大小,是指藍色方框內的大小
方框外的是出血區,匯出動畫後只會顯示方框「內」的內容
至於進去後要改大小的話,可以按「編輯」>「變更畫布基本設定」裡更改
因為忘了截圖,找不到的話按快捷「Alt」>「E」>「V」
 *不是同時按喔,是要順序「Alt」>「E」>「V」才能正確顯示

.接著開完檔案,會看到這樣的畫面:
理論上系統會自動幫你建個時間軸
沒有的話就「Alt」>「W」>「X」
或在「視窗」那裡找「時間軸」按下去(`・ω・´)

時間軸裡面,預設只有8個幀,當然這東西可以調整
左右兩方的【藍色方框】可以來拖曳調整時間長度(可以調成負的)
然後,聽說Pro版的最多只能有24幀的長度
我因為是升上Ex後才接觸動畫功能的,Pro長怎樣我不太清楚(つд⊂)
只有24幀(一秒)的話肯定沒法畫完整動畫
但如果是畫遊戲的動作圖的話還能用就是
 (至少比匯出到Flash好XD)

【藍色方框】拉長後,資料夾的長度也要拉長(一樣是拖曳)
 不然播放到後段會沒有畫面

時間軸左上方按下去後有相關設定
第二欄的「新建動畫資料夾」,就是For動畫的一個資料夾,建立「動畫檔案」時就會自行建立一個
至於第三欄的「新建動畫膠片」,其實就是新建圖層,像平時一樣按新圖層就可以了

然後「時間軸」的設定,亦可以在「時間軸」裡點選相關的功能來調整(就是第一張圖裡沒調整好的東西)
接著,你會發現這裡也有個「新建時間軸」
沒有時間軸的話動畫不會跑,所以開「動畫檔案」時也順手幫你建立好了
所以,這東西可以自己建立,換言之你開「插圖檔案」時,也可以透過「新建動畫資料夾」和「新建時間軸」來畫動畫
但出血區怎麼自行設定我就不知道了XD


有了時間軸和資料夾和圖層後,總之先畫點東西……
你會發現畫不到(/‵Д′)/~ ╧╧
因為這時圖層沒有正確地顯示
在「時間軸」的其中一格按右鍵,會讓你選擇圖層(名字和你圖層的命名一樣,但順序是反過來的)
點下你想要畫的圖層,它才能正確地顯示,這時才可以在上面亂畫
(比方說我就在「1」圖層畫了個長方)

畫完第一張,要畫第二張時,同樣要先在時間軸裡設定好
然而點去第二張的圖層時,第一張的內容就不見了(*´・д・)
因為它是一張全新的白紙蓋在上面,和一般畫圖時圖層開爽爽一直疊上去不一樣
要知道第一張畫了甚麼的話,就要開透光桌
按下「Alt」>「W」>「A」>「A」,會選取到「動畫膠片」視窗,再按「Enter」
視窗出現後,點選「現在繪畫中的圖層」,並把「想要透寫的圖層」拖到視窗下方框位

就會把你拖曳的圖層半透明顯示啦d(`・∀・)b
視窗最上方可以調整透明的程度
而不想透寫時,可以按下「左下角燈泡的上一行的按鈕」,那是「使透光桌有效」(有圖層透寫時,會自動幫你按下)
或者更直接的,把透光圖層刪掉
如果想有多個圖層的透光,就選取其他圖層再拉上去就好

在畫動畫時,有時想讓特效蓋在角色上
那只要在「角色」的動畫資料夾上,開一個「特效」的動畫資料夾就好

最後,在動畫資料夾上也可以開一個圖層,用「色彩增值」之類的來做點效果
它會是資料夾內「所有圖層」都會有效果
如上圖三個長方都有漸層
至於這種效果可以怎樣玩,就看各位的創意了XD

總結:
一開始用動畫功能時有點「卡卡的」
主要因為開圖層後它是一張全新的圖,沒辦法像畫插圖那樣直覺性地修改
所以我是在「動畫資料夾」裡畫好草圖,調好時間,再把草圖複製到「資料夾外」再來描線上色
.有一點要提一下的就是:
時間軸的圖層設定好後,他是依照「動畫資料夾」內的圖層名字來讀取圖層內容的
換言之,把資料夾的其中一個圖層刪掉後,再用相同命名的圖層貼上,就會自動把圖層取代掉
所以把上色都完成後,改好相應的名字再貼回「動畫資料夾」內,就能對準時間
嘛不過……我覺得應該有更方便的做法就是(但我暫時找不到wwww)
第一次畫動畫還有點生疏,看看之後能不能有更好的做法分享給各位030~

以上owo/