This page may not work correctly inside the Unity editor. Open in browser

在运行时间编辑地形細節

需要 Nature Renderer 1.1.8 或更高版本

如果您想要为您的地形作永久性修改,可以在运行时间编辑地形细节。

如何编辑地形

    1. 使用TerrainData.SetDetailLayer编辑Unity的地形数据。

  1. 在Nature Renderer 元件呼叫RebuildBuffers 来使用TerrainChangedFlags.RemoveDirtyDetailsImmediately 参数。
  2. Nature Renderer 会自动找出您地形修改的部份,然后重建该范围的内部缓冲。重建过程会会在另外的工作线程进行,而且可能需要几个帧数去完成。这段时间会仍然显示本来的地形数据。

注意: 如果您修改地形的高度图,或者新加的细节之前并不存在的话,Nature Renderer就需要重建整个地形而不只是修改的范围。较大的地形来说需要1到两秒 时间。

Unity公用程式的修改范例

using UnityEngine;
using VisualDesignCafe.Rendering.Nature;

public class ExampleClass : MonoBehaviour { // Set all pixels in a detail map below a certain
// threshold to zero. void DetailMapCutoff(Terrain t, float threshold) { // Get all of layer zero. var map =
t.terrainData.GetDetailLayer(
0,
0,
t.terrainData.detailWidth,
t.terrainData.detailHeight,
0);

// For each pixel in the detail map... for (int y = 0; y < t.terrainData.detailHeight; y++) { for (int x = 0; x < t.terrainData.detailWidth; x++) { // If the pixel value is below the threshold then // set it to zero. if (map[x, y] < threshold) { map[x, y] = 0; } } }

// Assign the modified map back. t.terrainData.SetDetailLayer(0, 0, 0, map);

// Update Nature Renderer's buffers.
t.GetComponent<NatureRenderer>().RebuildBuffers(
TerrainChangedFlags.RemoveDirtyDetailsImmediately ); } }

 

 

这篇文章有帮助吗?
0 人中有 0 人觉得有帮助