繁体   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