gpt4 book ai didi

c# - 统一: Create a texture from Terrain

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:36 29 4
gpt4 key购买 nike

我有一个程序生成的 Terrain,它基于 Unity 的地形系统

现在我想要一张来自TerrainMap,不是迷你 map 而是完整 map ,保存为2D Texture

首先我想到了一个RenderTexture,但是如果我用一个Camera来捕捉整个Terrain,结果取决于分辨率方面,而且我也有问题,因为 Terrainwidth3.2x length

有没有更好的方法来解决这个问题?

最佳答案

  1. 制作一个新相机并将其放置在地形上。

  2. 确保它处于正交模式

  3. camera.aspect 字段设置为 terrainData.size.x/terrainData.size.z

  4. camera.orthographicSize 字段设置为 terrainData.size.z/2f

  5. 确保相机框的方向与地形轴一致。类似于 cam.transform.LookAt(terrain.GetPosition(), terrain.transform.forward); 的内容将达到目的。

然后,您应该能够创建具有您想要的像素分辨率的 RenderTexture(基于 Rafal Wiliński 的 this answer):

int resHeight = 1000;
int resWidth = Mathf.RoundToInt(resHeight * camera.aspect);

RenderTexture rt = new RenderTexture(resWidth, resHeight, 24);
camera.targetTexture = rt; //Create new renderTexture and assign to camera
Texture2D screenShot = new Texture2D(resWidth, resHeight, TextureFormat.RGB24, false); //Create new texture

camera.Render();

RenderTexture.active = rt;
screenShot.ReadPixels(new Rect(0, 0, resWidth, resHeight), 0, 0); //Apply pixels from camera onto Texture2D

camera.targetTexture = null;
RenderTexture.active = null; //Clean
Destroy(rt); //Free memory

然后,您的地形将在 screenshot

中捕获

关于c# - 统一: Create a texture from Terrain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58896707/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com