【厚積薄發】如何更深入地掌握研發項目的物理性能?

2021-03-02 侑虎科技

這是第104篇UWA技術知識分享的推送。今天我們繼續為大家精選了若干和開發、優化相關的問題,建議閱讀時間15分鐘,認真讀完必有收穫。文末,我們的互動話題是:Mono和IL2CPP,哪個更受你的青睞,我們期待你的灼見!


UWA 問答社區:answer.uwa4d.com

UWA QQ群:465082844(僅限技術交流)

Q:如何提高Unity物理引擎Physx的性能?我在場景中加入100個具有物理剛體的小人,並充分碰撞,發現低端機的幀率只能跑到10幀以下。


UWA:如果需要充分進行物理計算,這些擁擠在一起的小人很可能會造成大量的物理碰撞,進而造成很高的物理耗時。

在優化之前,題主需要先了解一些基礎物理數值推薦,並不是所有設備都能流暢跑起100個自由製作的蒙皮模型的。所以,建議先看這篇文章:https://blog.uwa4d.com/archives/Simple_PA_Physics.html

另外,題主還需要看一下真機上的具體耗時瓶頸是否真正耗時在物理上,100個角色,如果Mesh量很大,渲染耗時也是不可忽視的,所以建議通過Unity Profiler來先確定一下真機上性能瓶頸。

最後,是否每個小人都需要精確的物理計算,是否可以通過一些射線求交、範圍判斷等性價比高的判斷方法來代替純物理碰撞?這需要題主從設計的角度上來進行權衡。

A:你並沒有什麼辦法直接調用PhysX的API,所以所謂優化物理引擎的性能,倒不如說優化相關組件的性能。首先優先使用CharacterController而非RigidBody。然後儘量避免使用MeshCollider,用BoxCollider、SphereCollider和CapsuleCollider代替,如果不可避免,那麼鉤上Convex。當然,最好的優化就是不要用物理碰撞。射線能解決很多問題,但是射線也不是免費的,它的消耗跟場景裡的面數正相關,當然設置射線的maxDistance和LayerMask能節省掉不必要的消耗。最好就是用簡單的物理模型來描述問題,自己寫代碼實現。

感謝凱奧斯提供了回答


迎大家轉至社區進行進一步交流:

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

Q:有什麼方法可以禁止Unity自動編譯腳本呢?

UWA:可以把Preferences > General > Auto Refresh的勾去掉,不過如果這樣,如果資源在外部被修改,也不會自動重新導入了,會有些影響。

另外,也可以試試這兩個函數EditorApplication.LockReloadAssemblies/ UnlockReloadAssemblies,參考文檔:https://docs.unity3d.com/ScriptReference/EditorApplication.LockReloadAssemblies.html

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

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


Q:我使用Texture2DArray的時候發現沒有Mipmap效果,想問下怎麼讓Mipmap生效?原始的紋理都是開啟Mipmap的。

UWA:在創建Texture2DArray時需要注意倒數第二個參數,設為true就表示開啟Mipmap,參考文檔:

https://docs.unity3d.com/ScriptReference/Texture2DArray-ctor.html

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

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


Q:現在有一張外部生成的Texture可以作為mainTex渲染,但希望獲取它的內容保存下來,但是GetPixels是Texture2D的函數,所以想問問這樣的Texture的內容該如何獲取?

UWA:可以先通過Graphics.Blit把內容畫到Render Texture裡面,然後通過ReadPixels從RenderTexture生成一張Texture2D,假設sourceTex是原始的Texture,tex2D是最終生成的Texture2D,則代碼如下:


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

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

Q:我正在嘗試自定義Terrain的Shader,發現內置Shader的末尾有這樣兩行,想問問其中的「Dependency」是做什麼用的,後面指定的Shader起什麼作用?
Dependency 「AddPassShader」 = 「Hidden/TerrainEngine/Splatmap/Diffuse-AddPass」
Dependency 「BaseMapShader」 = 「Diffuse」

UWA:Unity的文檔中應該是沒有描述過這個的作用, 不過在這篇博客裡分析的比較清楚,https://alastaira.wordpress.com/2013/12/07/custom-unity-terrain-material-shaders

這是當Terrain使用的紋理超過4張時,Unity會用其中的AddPassShader來進行第二次渲染,並且blend上去。而BaseMapShader是用在低端顯卡上的,只用一張紋理來顯示的Shader。

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

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

 近年來,隨著Unity官方對IL2CPP的大力支持和改進,越來越多的開發者在立項初期在Mono和IL2CPP之間猶豫徘徊。到底是Unity ILCPP編譯好還是Mono的編譯更好?IL2CPP的性能是否真有顯著的變化?用過的朋友不妨來交流下你的心得!

本文封面圖來源:http://international.download.nvidia.com


近期精彩回顧

【虛幻引擎學習之路】渲染模塊之光照系統

【萬象更新】看完性能簡報,想不優化好都難!

【厚積薄發】50次遊戲性能的深度優化,得出了這五條「毒雞湯」

  UWA問答:用心解決「你」的每一個問題!


相關焦點

  • ...研發迎來新時代——訪中科院長春光學精密機械與物理研究所...
    為了更深入的了解我國光柵及光譜儀器的研究現狀及未來發展態勢,儀器信息網編輯特別邀請到中科院長春光學精密機械與物理研究所李曉天副研究員給大家分享其在光柵及光譜儀器研發過程中的經驗。自2006年參加工作,主要從事光電檢測、衍射光柵及其在光譜技術領域應用研究等科研工作,作為項目負責人獲批空間外差拉曼方面的國內第一個自然科學基金青年基金和第一個面上項目,以及吉林省技術攻關項目等;作為分系統或子課題負責人承擔國家973課題、國家重大科研裝備研製項目等,曾獲「航天科技四院傑出青年」、「吉林省科技進步一等獎」、「吉林省青年文明號」等榮譽。
  • 測試工程師必學:測試人員如何深入了解項目
    作者關註上方「測試開發技術」,選擇星標,乾貨技術,第一時間送達!
  • 物理學習方法分享-物理考點要做到深入理解
    物理學習方法分享-物理考點要做到深入如何學好高中物理,王尚物理教研梯隊認為,要對知識點理解非常深入,且帶著問題來學習,不斷反思問題解決問題。(1)高中物理考點要做到深入理解,特別是課本上物理公式、定理定律的成立的前提條件。一道物理題用錯了公式,基本上就是「全軍覆沒」了。在考場上為何物理學霸們作答卷子很快且沒什麼小失誤,這絕不是什麼天分,而是他們平時做了很多功課,對知識點的理解更加深入,且積累了一系列的解題思路。
  • 【厚積薄發】Instruments如何看Mono內存分配
    A1:對於大型項目來說,這確實是大家經常遇到的情況。知道了Unity編輯器的腳本編譯特性後,我們則建議研發團隊可以將一些長時間不需要改動的腳本代碼(比如各種插件代碼)放入到Standard Assets、Pro Standard Assets或Plugins文件夾中,這樣這些代碼只需要編譯一次,後續的時間就都能節省下來。有朋友做過測試,在他們的項目中經過上面的改動,原來項目每次的編譯時間從23s下降到7s。
  • 【厚積薄發】Terrain方案比較
    在以前,Unity Terrain最為詬病的還是用戶編輯過多後會產生大量的Draw Call和Terrain Data,從而讓其在行動裝置上渲染也耗時、內存也大、加載也耗時等等,所以,其在目前移動項目中的使用上並不多。
  • 【厚積薄發】AssetBundle如何計算可靠的Hash值
    UWA 問答社區:answer.uwa4d.comUWA QQ群2:793972859(原群已滿員)本期目錄:AssetBundle如何計算可靠的Hash值升級後的物理開銷問題UWA GOT支持iOS後無法出包問題如何釋放Live2D new的Mesh
  • 大數據:材料基因組計劃,機器學習方法預測材料性能!
    智能網絡搜索、語音識別,乃至無人超市、無人駕駛汽車等,依託於機器學習方法的新事物正迅速地在生活中普及。Alpha Go的橫空出世更讓世界驚嘆於人工智慧的潛在價值。在科研領域,大數據的理念正在改變著科研人員對未知世界的探索方式。
  • 劉可 等:高效有機硫脫除溶劑研發及性能考察
    高效有機硫脫除溶劑研發及性能考察[J]. 石油與天然氣化工, 2020, 49(2): 1-7.國家能源高含硫氣藏開採研發中心摘要:針對GB17820-2018《天然氣》對商品氣中總硫含量的嚴格要求, 通過室內實驗, 對多種類型的有機硫脫除溶劑配方進行評價, 篩選出一種具有較高有機硫脫除性能和一定脫硫選擇性的物理-化學溶劑。
  • 項目管理:智能硬體項目研發流程
    筆者結合自己的項目管經歷,向我們介紹了如何管理智能硬體項目的研發流程。作為項目經理,不太需要進行深入的了解,當然能夠深入更好,但作為產品經理還是更深入一點較好。網際網路平臺,這個包含雲服務、後臺、App、小程序等。常見的是前三個。跟進對應的工程師就好。總體流程圖如下:
  • 深入理解 Java 虛擬機-如何利用 VisualVM 對高並發項目進行性能分析
    前面在學習JVM的知識的時候,一般都需要利用相關參數進行分析,而分析一般都需要用到一些分析的工具,因為一般使用IDEA,而VisualVM對於IDEA也不錯,所以就選擇VisualVM來分析JVM性能,這篇文章就介紹一下如何利用VisualVM進行性能分析,以及在分析之前需要知道一些GC優化的原則,GC
  • 【厚積薄發】技術分享連載(七十八)| UI元素重建 |BlendTree採樣原理 |LoadSubs(Async)加載性能...
    所以,一般建議研發團隊嘗試通過依賴關係進行打包,將資源和Prefab進行分離,這樣可以將加載資源和加載Prefab分開,從而可以通過「顯式」地方式加載資源並將其進行儲存,這樣當你想精準釋放資源時,則可以直接通過Resources.UnloadAsset來進行卸載。該問題來自UWA問答社區,如您對該問題仍有疑問,可以轉至社區進行進一步交流。
  • 物理教學應遵循從生活走向物理,從物理向社會,促進物理深入開展
    新課程標準中提出,物理教學應當遵循「從生活走向物理,從物理走向社會」的教學理念,促進物理教學改革的深入開展。物理知識都是生活和實驗的總結,所以高中物理教學中,教師一定要和生活相聯繫,從生活中來,再回到生活中去。
  • 為什麼木質積木更能使兒童掌握平衡等物理規律?
    我們是家長,所以我們更該關注什麼樣的積木更適合我的孩子。對於學齡前兒童來說,原木木質積木無疑是更適合的,這是由木質積木本身的特點決定的(詳見《大陸博士觀點:學前兒童為什麼不適合玩樂高》,回復0528可查看):1、積木建構的基本方式:連接、壘高、橋接等方法更容易被學前兒童掌握,並且組件之間的連接不需要大力按壓,更符合學前兒童尤其是4歲之前的幼兒
  • 如何準確、高效地解答一道高中物理題?
    回歸現實,如何完美地解答好一道高中物理題?第一:見題,一眼望穿題目。快速捕捉題境歸屬高中物理哪一塊?也就是此題涉及的環境是什麼?重力場(引力場),彈力,電磁場,光學,熱學,原子物理學,還是原子核?還是兼而有之,複合場。第二:審題。明確環境後,要深入分析。
  • 如何快速掌握Java的性能調優技巧
    如何快速掌握Java的性能調優技巧 zhisheng的blog 發表於 2020-02-22 15:44:35 大多數開發者認為性能優化是一個複雜的話題,它需要大量的工作經驗和相關知識理論
  • 【厚積薄發】Texture Streaming Mipmap使用疑問
    我們也在測試過程中發現了這個問題,當時重新建立項目、重新導入後才在真機上顯示正確的。關於你第二問題,這個很難回答,目前還沒有在已經上線的項目中看到使用。share_medium=web中間有一段說了各種效果對性能影響大的選項。
  • 【厚積薄發】技術分享連載(六十八)| 如何確定美術規範 | DrawCall數量的控制 | CPU中高佔用函數分析...
    就目前我們優化過的項目而言,絕大部分均為UGUI在子線程的開銷所致。更多的參考資料建議研發團隊參考UWA問答之前的記錄:https://answer.uwa4d.com/question/search?
  • 吉大大四學生何崇崇:興趣為師,厚積薄發
    2月26日,何崇崇關於天體物理的論文被刊登在《天文物理期刊》(這本期刊由英國物理學會出版社發行、在天文學及天體物理各類期刊中H指數(H-index)排名第一)。而他僅僅是吉林大學物理學院的一位大四學生。走近何崇崇,初見只覺笑容靦腆溫厚,言談間謙虛有禮。深入了解後便不難發現,他能取得如此矚目的成績絕不是偶然。把興趣當做最大的動力,堅持不懈,方能厚積薄發,這是何崇崇的最深感受。
  • 一鍵聚焦 | 自主研發噪聲仿真軟體ProNas如何解決中高頻噪聲難題
    導讀:如何有效解決中高頻噪聲問題目前仍是學術界和工程應用領域的難題之一。
  • 【厚積薄發】DrawInstance和完全不做合批情況下的性能差異
    UWA 問答社區:answer.uwa4d.comUWA QQ群2:793972859(原群已滿員)本期目錄:DrawInstance和完全不做合批情況下的性能差異UWA報告中檢測出工程沒有的資源精靈設置九宮後,如何不在界面中顯示出來關於AssetBundle資源的卸載問題Total Mono