簡體   English   中英

程序行星球形網格變形C#Unity 5

[英]Procedural Planet Spherical Mesh Deformation C# Unity 5

我一直陪伴着許多有問題的人,並發布了大家給出的所有答案,並遵循了一些教程,並且由於我在Google搜索上的所有鏈接都被標記為“已訪問”,所以我決定拋開驕傲並發表問題為了你。

這是我的第一篇文章,所以我不知道即時通訊是否做對了,如果沒有,抱歉,問題是這樣的:

我正在使用單位5的C#行星探索游戲,我已經按照此處提到的一些教程從八邊形構建了一個球體,並且還可以使用它們構建perlin紋理和高度圖,問題出在應用上它們到球體上並在網格上產生地形,我知道我必須映射球體的頂點和UV才能做到這一點,但是問題是我真的很喜歡數學,無法一步一步地找到它。接下來,我聽說了鑲嵌細分着色器,LOD,voronoi噪聲,perlin噪聲,並迷失了該過程。 為了簡化:

我有的:

  1. 我有球形網

  2. 我有高度圖

  3. 我已經將它們與適當的法線貼圖一起分配給了材質

我以為我 (老實說,我不知道這是否是正確的路徑)需要以下方面的幫助:

  1. 基於高度圖產生球形網格變形的代碼

  2. 如何使用那些基於Tessellation LOD的着色器等來制作實際尺寸的程序化星球

非常感謝您的關注,如果對我無禮或要求太多,我們深表歉意,但是您可以提供的任何幫助對我來說都是巨大的幫助。

我真的不認為我有能力為您提供代碼特定的信息,但是這里有一些清單補充/建議。

  • 如果要設置LOD網格和紋理系統,那么我唯一知道的方法是准系統方法,在此方法中,您可以實際創建網格和紋理的較低多邊形版本,然后在Unity中編寫一個腳本,距離數組,一旦玩家到達物體或物體之間一定距離,就切換到適合該距離的網格物體和紋理。 我想您可以通過編寫可以完成相同操作的着色器來完成相同的工作,但是基本思想仍然相同。 以下是一些偽代碼作為示例(我不太了解Unity庫):

     int distances[] = {10,100,1000} Mesh mesh[] = {hi_res_mesh, mid_res_mesh, low_res_mesh} Texture texture[] = {hi_res_texture, mid_res_texture, low_res_texture} void Update() { if(player.distance < distances[0]) { gameobject.Mesh = mesh[0] gameobject.Texture = texture[0] else { for(int i = 1; i < distances.length(); i++) { if (player.distance <= distances[i] && player.distance >= distances[i-1]): { gameobject.Texture = texture[i] gameobject.Mesh = mesh[i] } } } } 

如果您想要真正的基於Tesselation的LOD東西,而這更難編寫代碼:以下是一些鏈接:

https://developer.nvidia.com/content/opengl-sdk-simple-tessellation-shader

http://docs.unity3d.com/Manual/SL-SurfaceShaderTessellation.html

本質上,相同的概念適用。 但是,您無需物理地更改正在使用的網格和紋理,而是使用相同的想法來程序化地更改網格和紋理,該想法是在着色器代碼內部設置距離以更改網格和紋理的分辨率。

  • 至於球形網格變形的問題。 您可以通過導入網格並應用網格變形修改器,然后將紋理用作變形紋理,然后根據自己的喜好更改變形級別,在3dsMax,Maya或Blender等3d編輯軟件中完成此操作。 但是,如果您想實時執行更多程序操作,則必須使用頂點數組物理更改網格的頂點,然后重新划分網格或類似內容。 抱歉,我對該主題的幫助較少,因為我對此知識的了解較少。 以下是與您的問題相關的鏈接:

http://answers.unity3d.com/questions/274269/mesh-deformation.html

http://forum.unity3d.com/threads/deform-ground-mesh-terrain-with-dynamically-modified-displacement-map.284612/

http://blog.almostlogical.com/2010/06/10/real-time-terrain-deformation-in-unity3d/

無論如何,祝您好運,如果我不清楚某件事,或者您需要更多說明,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM