【厚積薄發】半透明物體如何實現陰影效果?

2020-12-19 侑虎科技

這是第123篇UWA技術知識分享的推送。今天我們繼續為大家精選了若干和開發、優化相關的問題,建議閱讀時間10分鐘,認真讀完必有收穫。

UWA 問答社區:answer.uwa4d.com

UWA (僅限技術交流)

渲染

Q:當"RenderType" = "Transparent"的時候貌似是沒有辦法接受陰影的。我們需要在場景中做一層半透的地表, 來掩蓋模型和地表之間的接縫,所以需要顯示陰影, 請教各位大佬有什麼好的方法嗎?另外我想了解下為什么半透明物件默認不能接受陰影呢?

A:拋開Unity引擎,從本質上說,半透物體肯定是可以接受陰影的。之前就實現過地表有一塊玻璃材質,會在玻璃上以及下面的物體上都有投射的陰影效果。所以如果自己編寫的Shader,想要接受陰影,只需要採樣Shadowmap,走一下陰影計算的過程就可以了。

對於Unity引擎,我試了一下的確選擇Transparent的RenderType也就沒有了陰影,這個我不是非常清楚是否可以自己在Shader中去強制走一下Shadowmap的處理過程來解決,題主可以試下。

但是題主要注意,半透物體接受陰影的情況下,尤其是題主要解決的這種覆蓋接縫的情況,會導致這部分最後產生的陰影變得比較重的效果,因為半透下面的物體肯定還會有陰影產生,半透的陰影雖然可以受Alpha的影響變淡,但是疊加在一起就會出現變得更暗的問題。當然Transparent的部分不接受陰影,意味著陰影效果經過Alpha Blend之後會變得淡。

感謝賈偉昊@UWA問答社區提供了回答。

UWA:這個問題恰好之前做了些嘗試,正如@賈偉昊所說,內置的Transparent是不接受陰影的,但可以嘗試在自定義shader中強制走Shadowmap的。

參考代碼如下:

但直接用這個Shader也還是沒有效果…因為文檔裡有句話,重點是粗體:

Only opaque objects cast and receive shadows so objects using the built-in Transparent or Particle shaders will neither cast nor receive. Generally, you can use the Transparent Cutout shaders instead for objects with 「gaps」 such as fences, vegetation, etc. Custom Shaders must be pixel-lit and use the Geometry render queue.

所以需要把Render Queue調整到2500:

然後效果就出來了:

該問題來自UWA問答社區,歡迎大家轉至社區交流:

https://answer.uwa4d.com/question/5b67b9851e88b37d34e651da

Lightmap

Q:我使用ShadowMask模式烘焙好了場景,生成了正確的Lightmap,其中包含Lightcolor和ShadowMask。之後將場景的物體和光照圖等信息用自己的格式存儲,啟動遊戲時再重建整個場景。

但是Lightmap正確設置之後,SHADOWS_SHADOWMSK宏沒有被打開,Shader中只找到了Light Color 的Sampler,並沒有找到ShadowMask的Sampler。

1)如何設置才能開啟SHADOWS_SHADOWMSK的keyword,並正確地將貼圖傳入Shader(不能手動在材質上打開keyword,傳入的貼圖是默認的白色)?

2另外之前因為場景物體設置成了靜態,烘焙了光照圖後不產生和接受陰影,但是自己從Prefab中創建出來的物體就會產生和接受陰影,是只能加載後將Renderer上的這兩個選項關閉麼?還是有什麼統一設置?

A:第一個問題,從題主的描述上來看,你們重建整個場景,是否連同當時烘焙混合光照的那盞燈光也是重建出來的?如果是,確實會導致ShadowMask無法使用,我這邊的做法是保留場景中用來烘焙混合光的那盞光源,這樣ShadowMask才會起作用,兩者有某種關係。場景中的物件可以保存為Prefab,加載後手動恢復以下Lightmap Index即可,烘焙光源留在場景中別刪。

第二個問題,題主從Prefab直接拖進場景中的物件,需要手動恢復LightmapIndex和UV數據,否則得到的是實時光照和陰影。

感謝Lujian@UWA問答社區提供回答,歡迎大家轉至社區交流:

https://answer.uwa4d.com/question/5b63ec54339d267d357c6cb8

製作

Q:我們遊戲類似偶像大師,但是穿模比較嚴重,有什麼成熟的方案嗎?嘗試了SpringBone,但是效果不理想。

A:之前做過換裝遊戲,研究過防穿幫做的比較好的競品,說下他們的做法供參考。

1)模型設計上,首先要規劃好每個服飾部位的範圍,這樣玩家自由搭配的時候,服飾本身穿幫的概率就降低了;

2)同一件服飾做多套模型,根據搭配服飾的size進行替換。以長褲為例:搭配運動鞋、涼鞋等短鞋時,使用正常模型;搭配長筒靴時,褲腿縮短,並且底部一定長度內的半徑縮小,產生長靴包在褲子外面的效果。

上面是針對靜止時穿幫的解決方法,效果是非常棒的,不過由於在美術設計上做了限制,服飾的豐富度會受到影響。對於一般性的動作,我們是使用了DynamicBone,參數仔細調的話效果也不錯。

音舞項目很多大幅度的動作,DynamicBone能起到多大效果就不清楚了。

感謝Walker@UWA問答社區提供回答,歡迎大家轉至社區進一步交流:

https://answer.uwa4d.com/question/5b614dc81e88b37d34e651c3

編輯器

Q:如何在自定義Inspector中同時修改多個物體的位置屬性?當我選定多個物體時,如何在Inspector中同時修改這些物體的位置屬性,例如x分量:

我嘗試自定義Editor腳本來實現,腳本如下:

該腳本會調用以下腳本:

將這個腳本掛在多個物體上,當同時選中這些物體,並點擊Inspector中的改變位置時,期望所有物體的x都會發生變化,但實際只有一個物體的x發生了變化,所以這裡會有什麼問題嗎?

UWA:代碼裡使用了target,而對於選定的多個物體,應當使用 targets ,該數組保存了選定的多個物體,如果只選擇一個物體時,則應當使用target。

該回答由UWA提供,歡迎大家轉至社區進一步交流:

https://answer.uwa4d.com/question/5b614dc81e88b37d34e651c3

編輯器

Q:Asset Serialization Mode中不同的序列化方式在運行時會有區別嗎?「Binary」和「Force Text」是只會在Ediotr中有所不同,還是會影響到構建後的APP?或者說,選擇不同的方式是否對APP的大小以及運行時的速度造成影響呢?

UWA:「Force Text」將Prefabs、scenes、meta files以及其他Asset文件用YAML的文本格式存儲,這樣雖然會在Editor中運行造成一定性能的損失,但其有一個最大的好處是,能夠處理Git這類版本管理中的衝突。而在生成APP時,Unity會將這些資源都進行二進位化。分別使用「binary」和「force text」對項目進行構建會發現,生成的APP的大小是一樣的,也就是說,構建過程中」force text」的文件也會轉為二進位。

該回答由UWA提供,歡迎大家轉至社區進一步交流:

https://answer.uwa4d.com/question/5b614dc81e88b37d34e651c3

今天的分享就到這裡。當然,生有涯而知無涯。在漫漫的開發周期中,您看到的這些問題也許都只是冰山一角,我們早已在UWA問答網站上準備了更多的技術話題等你一起來探索和分享。歡迎熱愛進步的你加入,也許你的方法恰能解別人的燃眉之急;而他山之「石」,也能攻你之「玉」。

官方技術博客:blog.uwa4d.com官方問答社區:answer.uwa4d.com官方技術(僅限技術交流)

封面圖片來自網絡

UWA GOT (Online) 內測中

構建高質量的管理流水線,讓每一次測試更有意義!

近期精彩回顧基於屏幕空間渲染的液體模擬 【虛幻引擎學習之路】基於Unreal引擎的大地形加載研究【萬象更新】看完性能簡報,想不優化好都難!UWA問答:用心解決「你」的每一個問題!

相關焦點

  • 如何實現該效果?
    我們又該如何實現該效果?一起來看作者的文章吧。 其中還包含了運用陰影、透明度以及背景模糊手法模仿玻璃形態,構建空間感的新興擬物態風格,本文作者Michal Malewicz 稱之為 Glassmorphism(玻璃擬態),在文章中講述了其發展歷史和風格特徵,通過圖文和視頻結合和形式說明了設計實現的思路和自己對待新風格的態度。
  • unity 半透明渲染技巧(3則)
    更直接的說是2個原因:1 半透明混合的算法 是 srcAlpha oneMinusSrcAlpha 這個公式是 前後不對稱的 所以嚴重依賴渲染順序(這也是特效的翅膀半透明模型為什麼沒深度問題 特效大量用 one one混合 這是前後色對稱的 無關順序的);2 引擎的半透明排序是逐對象的,離線渲染工具是逐像素的所以沒問題;所以接下來針對這2個修改 實現些高性能方案
  • 陰影和模糊效果是如何運用到UI設計中的?
    在功能方面的設計是產品成功的關鍵,視覺美學和細節也同樣重要——尤其是如何提高這些功能元件。 在今天的文章中,解釋一下如何利用視覺效果,諸如陰影和模糊,來改善功能元件的設計。陰影效果在早期的圖形用戶界面採用陰影以便幫助用戶了解如何使用一個接口。彈出的頁面圖形元素和陰影組合,使用戶得知哪些是可以點擊的元件。即使改變文字提示的應用,用戶通常可以依賴於兩個因素:元素呈凸起狀,看起來像是被按下(點擊滑鼠或者輕敲手指)。
  • 哪些材質有半透明屬性?
    如何用C4D製作半透明物體?這就涉及今天講的內容如何應用CINEMA 4D SSS材質的技術。SSS英文為subsurfacescatter翻譯成中文叫次表面散射。有規律的散亂表現就是各向異性;透明是光線進入物體後,發生偏折而射出,折射率越大光偏折就越大;次表面散射是光線進入物體後,在內部的反彈和吸收,再有很少部分光線從表面射出,呈現一種半透明效果。從物理的角度來說,光與材質的交互包括兩個方面:散射(Scattering)和吸收(Absorption)。
  • 用keyshot的實驗室功能排除物體的反射,投影和貼圖
    其實keyshot用實驗室功能也可以排除物體的反射,投影,相機可見,半透明和玻璃單面貼圖等功能。那麼具體怎麼做呢?首先第一步,需要開啟keyshot的實驗室功能,社區搜自己開啟此功能。接下來第二步,我們需要先建一個簡單的場景,比如這樣的:然後第三步添加加不同的材質,平面我添加了地面的材質,圓角矩形給的金屬,球添加了塑料材質,換個環境讓陰影明顯一點。第四步,雙擊藍色的球打開材質圖面板,在實用工具裡添加射線面罩,連在不透明上面,會發現屬性裡面有幾個英文的參數。
  • 【厚積薄發】Shared UI Mesh內存佔用過高
    以下是想實現的陰影方案,但不知道GPU Skinning要如何結合?請問有什麼可以搭配實現陰影的插件嗎?其實原理很簡單,GPU Skinning中,動畫信息是先由Compute Shader或者VS的TFBO之類的東西計算好之後,傳給真正繪製的VS中,通過頂點動畫的方式實現動起來。最開始沒有動起來也許是因為使用的陰影Shader中,沒有拿到Compute Shader或者VS的TFBO之類計算出來的動畫信息,在陰影Shader的VS中進行頂點動畫。
  • 巧用CSS cross-fade(.)實現背景圖像半透明效果
    ,用css怎麼實現呢?可能大部分人想到的是將兩個img用定位的方式疊加在一起,分別設置透明度,當然這個辦法是可行的,其實css還提供了一個cross-fade()方法,講兩張圖片作為背景圖引入,可以實現相同的效果。
  • 基於FPGA的Alpha半透明圖像疊加算法硬體實現
    ,實現了Alpha透明係數可調,半透明圖像疊加的實時顯示,在高清圖像顯示領域具有很大的實用價值。在涉及到高清圖像時由於計算量比較大,PC處理速度較慢,圖像半透明疊加效果無法實時呈現。本文採用了FPGA並行處理的思想,同時對邏輯中設計到的浮點運算進行了移位操作,極大的提高了運算速度,實現了圖像的半透明疊加效果的實時顯示。可以在高清圖像顯示領域中實現視頻和半透明滾動字幕的疊加,以及多路視頻的實時疊加處理。
  • Premiere不傳之秘——立體邊框陰影效果的實現
    (一)立體邊框陰影效果的實現影片周圍出現陰影,將使影片呈現一種立體感。這在許多電視專題中經常出現。在Premiere中沒有現成的手段可以實現陰影,Premiere僅僅對標題文件中的文字提供了陰影設置。
  • 溫州市場現注膠蝦 蝦頭內有明顯的半透明果凍樣的物體
    溫州市場現注膠蝦 蝦頭內有明顯的半透明果凍樣的物體時間:2015-07-15 22:05   來源:中金網   責任編輯:莫小煙 川北在線核心提示:原標題:溫州市場現注膠蝦_注膠蝦是什麼_如何識別注膠蝦(圖) 來源:中金網 注膠蝦是什麼?
  • PPT如何給形狀添加陰影效果?
    PPT如何給形狀添加陰影效果?給形狀添加陰影效果有狠多種方法。,下面小編就給大家講一種常規性的陰影效果吧,一起來看看吧。1.我們通過圖形的合併製作出一個圖形,下面添加陰影。4.這個時候我們只需要移動上方圖形的位置,就可以出現陰影的效果了。
  • 終於找到攝影的秘訣,除了簡潔之外,還要學會利用陰影
    光線是所有攝影的基礎,並且會影響我們的拍攝效果和觀看方式!我們說光線是構成或破壞圖像的要素,而知道如何使用光線將有助於使您拍攝出令人驚嘆的照片。但是,儘管我們將大量精力放在光線上,但陰影卻因缺少光線常常被忽略。這是不幸的,陰影對於攝影同樣重要。不同陰影之間的對比度可能會對構圖產生重大影響,並且知道如何使用這些對比元素可以拍攝出一些真正震撼的圖像。
  • 【厚積薄發】如何在Editor中監聽Prefab修改後Auto Save的事件
    }#endifPS:如果經常要查找一些編輯器私有的欄位方法,建議下載dnSpy直接打開UnityEditor.dll搜索關鍵字進行查找,例如想通過代碼實現界面按鈕的某個功能卻找不到API,這時候就可以查看相關DLL裡的方法嘗試反射調用。
  • 【厚積薄發】如何通過Timeline的形式實現技能編輯器
    UWA 問答社區:answer.uwa4d.comUWA QQ群2:793972859(原群已滿員)本期目錄:Q:項目需要通過Timeline的形式實現做個技能編輯器,時間軸的形式是怎麼實現的?A1:建議學習Timeline的使用方法以及傳統技能編輯器是怎麼做的,然後再想想看如何結合。
  • 【厚積薄發】Texture Streaming Mipmap使用疑問
    在使用上可以對後期效果進行規劃,在後期效果中最重要的是Bloom和ColoeGrading,其中Bloom的性能開銷較大,因此可以在高配畫質下開啟,中配畫質下只使用ColorGraiding,讓畫面有一致性。在低配下可以關閉後期處理。
  • PS如何給圖片添加黑色描邊的陰影效果?
    使用ps可以給圖片添加陰影,是可以通過添加黑色描邊的方法,一起來學習吧。1.首先我們新建一個畫布,畫布設置為banner的大小,拖拽一條輔助線放在中間。(未完待續……)PS通過描邊添加陰影,十分的快速和方便,一般是通過填充顏色,然後使用高斯模糊降低不透明度來實現的,我們接著上一季的操作,繼續給大家演示一下。1.將添加陰影的一側填充黑色之後建立剪切蒙版就給圖片添加一個黑邊。2.下一步添加一個高斯模糊,半徑數值設置為五,點擊確定。
  • word字體效果:如何快速去除字體的陰影
    但當某一天,遇到Word中有「陰影」時,卻被這個問題給難住了……例如,在編輯Word文檔時,常會需要從網上粘貼複製一部分內容到Word中,但往往粘貼過來的文字或段落背後都帶有黑色或灰色的陰影。或者有時候,需要編輯的Word頁面會帶有顏色陰影,看著很累,還十分讓人討厭和無奈。
  • Google Adsense廣告的陰影背景效果
    Google Adsense廣告陰影效果是如何實現的,這其實是一個非常簡單的CSS技巧,本實在不足以專門寫篇文章介紹,但昨天居然有一位網友想要付費購買該效果:) 於是答應該網友,今天專門介紹一下如何實現Google Adsense廣告的陰影背景效果。
  • 【厚積薄發】Terrain方案比較
    A:Unity Terrain的實現原理,這個問題有點大。不過題主可以理解為它是一種基於Heightmap的實現方式,並且會產生不同的LOD細節層,同時根據用戶的不同編輯操作產生不同的地形片,進而在不同的距離時展現不同的細節。
  • 【厚積薄發】Airtest工具在使用時的卡頓問題
    UWA 問答社區:answer.uwa4d.comUWA QQ群2:793972859(原群已滿員)本期目錄:Q:在測試中需要等待戰鬥結束,代碼中是用poco(『UIRoot』).child(『BattleEnd』).wait_for_appearance(100000)實現的,但是我發現開始執行到這段代碼