草庐IT

Unity中用Natrue Renderer做自己的地形Terrain.

行秋 2023-08-14 原文

效果图

一、下载与导入Nature Renderer

Nature Renrderer是个强大的插件,它本身就可以作为地形编辑的工具取代Unity的地形细节和树木的渲染系统。

nature-renderer官网

1.下载链接

推荐(已经购买的许可证,可直接使用):NatureRenderer2021PerpetualLicense2021.1.6已添许可证,可直接使用!

从Unity资产商店下载Nature Renderer:

Nature Renderer・Subscription | Terrain | Unity Asset Store(免费试用版,实测效果不如付费版,主要功能无法使用)

Nature Renderer 2021・Perpetual License | Terrain | Unity Asset Store(付费版,自行购买)

将下载的unity包导入到你的Unity项目中,开始安装过程。

2.导入包

在导入Nature Renderer包到你的项目后,你会被提示导入其他包,这是为了安装Nature Renderer的依赖和演示场景。请确保导入所有这些包。

依次导入以下软件包:

1.初始包 com.vdc.nature-renderer.installer.unitypackage

它包含了我们的包管理器和Nature Renderer的包以及它的依赖项。

2.自然着色器要点 com.vdc.nature-shaders.embedded.unitypackage

一个基本的植被着色器集合,帮助你设置Assets和材料。

3.自然渲染器 com.vdc.nature-renderer.unitypackage

这个包包含Nature Renderer本身。

4.自然渲染器演示 com.vdc.nature-renderer-demo.unitypackage

自然渲染器的演示场景和演示资产。如果你不希望在你的项目中拥有额外的演示资产,可以跳过。

 二、创建和编辑地形

Nature Renderer的工作原理是取代Unity的地形细节和树木的渲染系统。为了能够使用Nature Renderer,你首先需要在你的场景中添加一个地形,或者打开一个已有地形的场景。

1.创建地形

菜单中选择 GameObject > 3D Object > Terrain,即可创建地形。

地形对象默认有三个组件Transform组件、Terrain组件和Terrain Collider组件。其中Terrain组件中的5个横排按钮即为绘制地形工具。分别为创建相邻地形、绘制地形、绘制树、绘制细节、地形设置。其中第二个,绘制地形工具,包含6种绘制状态:升降地形高度、绘制孔洞、绘制纹理贴图、绘制目标高度、平滑高度、stamp地形。

2. 编辑地形

  • Raise or Lower Terrain:使用画笔工具绘制不同高度的地形。使用 Brush Size 滑动条可控制工具的大小以创建从大山到微小细节的不同效果。Opacity 滑动条可确定将画笔应用于地形时的强度。
  • Paint Holes:绘制孔洞,隐藏地形的某些部分。
  • Paint Texture:添加地形表面纹理。第一个纹理图层会自动铺满地形,添加其它图层后,选中图层时可以使用笔刷在地形上绘制选中的地形图层的纹理。
  • Set Height:将地形高度调整为特定值。
  • Smooth Height:平滑地形,以柔化地形特征。
  • Stamp Terrain:在当前高度贴图之上标记画笔形状。

关于地形的更多细节,请参见Unity文档。创建和编辑地形 - Unity 手册

3. 添加地形纹理

Terrain组件中,选择编辑地形,选择选项栏中的Paint Texture(编辑纹理),点击Edit Terrain Layers...,在弹出菜单中选择Add Layers...(添加图层)。注意:添加的第一种纹理,会自动地作用在整片地形上。你要确保你添加的第一种纹理是地形的主要纹理。

可以添加草地贴图,山体岩石贴图,土路贴图。

三、启用Nature Renderer与注册植被

1. 启用Nature Renderer

Nature Renderer是通过添加自然渲染器组件到你的地形来启用的。

1.选择你场景中的地形游戏对象。

  • 点击Inspector底部的添加组件。
  • 输入 "Nature Renderer",找到Nature Renderer组件,并点击将其添加到地形中。

Nature Renderer将在组件被添加到地形后自动设置。

2. 注册植被

植被会自动从地形加载,并在自然渲染器组件的植被部分可见。新的树木和细节对象可以通过植被部分的这个列表添加。

建议通过植被列表添加物体,而不是直接在地形组件中添加,因为Unity不允许用LOD组添加物体。

点击Add,在Prefab栏点击小圆圈,选择植被后,点击Apply。 此时在地形组件中的绘制树与绘制细节中,能看到添加的植被,方便直接使用。

 

四、绘制树和细节 

1. 绘制树

在工具栏选择绘制树,在添加的Trees中,选择一种树,设置Brush Size与Tree Density,即可在Terrain中“涂刷”树。

属性功能
Mass Place Trees创建一批整体覆盖的树,但不绘制在整个地形上。批量放置树后,仍然可以使用绘制功能来添加或移除树,从而创建更密集或更稀疏的区域。
Brush Size控制可添加树的区域的大小。
Tree Density控制 Brush Size 定义的区域中绘制的树平均数量。
Tree Height使用滑动条来控制树的最小高度和最大高度。将滑动条向左拖动绘制矮树,向右拖动绘制高树。如果取消选中 Random,可以将所有新树的确切高度比例指定为 0.01 到 2 的范围内。
Lock Width to Height默认情况下,树宽度与其高度锁定,因此始终会均匀缩放树。然而,可以禁用 Lock Width to Height 选项,然后单独指定宽度。
Tree Width如果树宽度未与其高度锁定,则可以使用滑动条来控制树的最小宽度和最大宽度。将滑动条向左拖动绘制细树,向右拖动绘制粗树。如果取消选中 Random,可以将所有新树的确切宽度比例指定为 0.01 到 2 的范围内。
Random Tree Rotation如果为树配置 LOD 组,请使用 Random Tree Rotation 设置来帮助创建随机自然的森林效果,而不是人工种植的完全相同的树。如果要以相同的固定旋转来放置树,请取消选中此选项。
Color Variation应用于树的随机着色量。仅在着色器读取 _TreeInstanceColor 属性时有效。例如,用 Tree Editor 创建的所有树的着色器将读取 _TreeInstanceColor 属性。
Tree Contribute Global Illumination启用此复选框可向 Unity 指示树影响全局光照计算。

2. 绘制细节

在工具栏选择绘制细节,在添加的Trees中,选择一种“草丛”,设置Brush Size,即可在Terrain中“涂刷”“草丛”。

属性

功能
Detail Texture草的纹理。这里的“草”(Grass) 是一个通用术语;纹理可以表示花朵或人造物体(如铁丝网)。

Min Width

Max Width

指定生成的草丛的宽度上限和下限。

Min Height 

Max Height

指定生成的草丛的高度上限和下限
Noise Spread控制着裸露与草丛斑块的近似大小,值越高表示给定区域内的变化越大。
Billboard启用 Billboard 选项时,草的图像将旋转,草丛始终面向摄像机。

地形设置中,有部分参数可用于调整草丛:Detail Distance:草丛的可视距离   Detail Density:看见草从的密度。

 一些植被对象可能在默认情况下不被支持,因为它们使用的是2D草地纹理或不支持的着色器。对于这些对象,在植被列表中会显示一个错误信息。

草地纹理:Nature Renderer要求细节对象使用预制板,不可能直接使用2D草地纹理。这是因为渲染设置是从预制板中的Mesh Renderer和Nature Renderer Object Settings组件中加载的,而草地纹理不能有组件。你可以为草地纹理自动创建一个新的预制件和材料,或者指定一个现有的预制件。

着色器:自定义着色器需要进行修改,以支持Nature Renderer基于GPU的渲染管道和程序性实例。包括一个自动着色器修补器来为你修改着色器。在植被列表中选择一个对象,然后点击 "修补着色器 "来自动修改着色器和材料,以增加对Nature Renderer的支持。

五、添加风、水和天空盒

1. 风

如果您的植被使用包含的“自然着色器基本”(Nature Shaders Essentials),则可以按照手册中的“风”设置风动画。https://v3.visualdesigncafe.com/nature-shaders/docs/2020/wind

游戏对象并添加一个 "Global Wind "组件。全局风组件控制场景中的风设置。在这个组件中,你可以调整风的强度、方向等等。

属性功能
Wind Strength场景中风的强度。主要影响阵风。
Wind Speed场景中的风速。
Turbulence应用于场景中的植被的湍流量。
Gust Noise用于风的行为的纹理。这个纹理被覆盖在场景上,并按风的方向滚动。纹理的白色部分代表阵风,灰色代表平静的风,而黑色代表无风。

旋转游戏对象来改变风向。

2. 水

导入已经制作好的水的预制件,将其覆盖湖面,即可。

水的预制体下载:https://download.csdn.net/download/weixin_43042683/87234153

把下载好的water文件夹,放在Assets目录下即可。

海水预制件(WaterBasicDaytime.prefab、WateBasicNightime.prefab)

 透明水体预制件(WaterProDaytime.prefab、WaterProNightime.prefab)

3. 天宫盒 

在unity Assets store下载免费的天宫盒。如:Skybox Series Free | 2D Sky | Unity Asset Store

点击 Window->Rendering->Lighting 选择Environment 改变天空盒材质即可。

 

六、运行查看效果

这里可以实现第一人称视角,在场景中漫游,来实现对地形渲染效果的观看。教程如下:

Unity3D中实现Player的第一人称视角_行秋的博客-CSDN博客

最后可以运行查看。

七、问题总结

问题1 Terrain无法凹陷,只能降低已经抬升地形的高度

问题描述

Unity使用Terrain组件时,没办法做到地形凹陷,只能抬高。

问题解决

Unity的Terrain组件在【Set Height】分页下,Height高度为0时,可理解为该地形的海平面高度,此时就不能地Height调到20,点击【Flatten Tile】,然后就能做地形凹陷,深坑的深度最多即可达到20。

问题2 脚本挂载不上,出现error CS0619: 'GUITexture'...

问题描述

我们在使用脚本的时候有时会出现以下错误:

Assets\Standard Assets\Utility\ForcedReset.cs(6,27): error CS0619: ‘GUITexture’ is obsolete: ‘GUITexture has been removed. Use UI.Image instead.’

问题解决

1.修改SimpleActivatorMenu脚本

using System;
using UnityEngine;
using UnityEngine.UI; //在此处添加

namespace UnityStandardAssets.Utility
{
    public class SimpleActivatorMenu : MonoBehaviour
    {
        // An incredibly simple menu which, when given references
        // to gameobjects in the scene
        public Text camSwitchButton; //在此处修改
        public GameObject[] objects;
......

2.修改ForcedReset脚本

using System;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityStandardAssets.CrossPlatformInput;
using UnityEngine.UI; //在此处添加

[RequireComponent(typeof (Image))] //在此处修改
public class ForcedReset : MonoBehaviour
{
    private void Update()
    {
        // if we have forced a reset ...
        if (CrossPlatformInputManager.GetButtonDown("ResetObject"))
        {
            //... reload the scene
            SceneManager.LoadScene(SceneManager.GetSceneAt(0).name);
        }
    }
}

有关Unity中用Natrue Renderer做自己的地形Terrain.的更多相关文章

  1. ruby - 在 Ruby 中用键盘诅咒数组浏览 - 2

    我正在尝试在Ruby中制作一个cli应用程序,它接受一个给定的数组,然后将其显示为一个列表,我可以使用箭头键浏览它。我觉得我已经在Ruby中看到一个库已经这样做了,但我记不起它的名字了。我正在尝试对soundcloud2000中的代码进行逆向工程做类似的事情,但他的代码与SoundcloudAPI的使用紧密耦合。我知道cursesgem,我正在考虑更抽象的东西。广告有没有人见过可以做到这一点的库或一些概念证明的Ruby代码可以做到这一点? 最佳答案 我不知道这是否是您正在寻找的,但也许您可以使用我的想法。由于我没有关于您要完成的工作

  2. 怎样用一台手机做自媒体? - 2

    其实做自媒体的成本并不高,入门只需要一部手机即可!在手机上找视频素材、使用手机剪辑视频、最后使用手机发布视频作品获得收益!方法并不难,今天这期内容就来给粉丝们分享一种小方法,每天稳定收益100-300,抓紧点赞收藏!1、找素材(1)使用手机拍摄自己喜欢的经典段落,使用程序把文案内容提取出来(2)也可以在豆瓣、知乎、微博等网站中找一些自己需要的文案素材(3)把文案进行润色修改,可以加入一些自己的观点(4)视频素材可以使用软件中自带的素材,也可以在素材网站中下载完整版的素材2、文案配音(1)把复制好的文案直接导入小程序中(2)调整音色、音调后一键合成音频即可(3)可以选择自己朗读配音,需要花一点时

  3. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  4. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  5. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

  6. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  7. ruby-on-rails - 如何测试自己对 Ruby/ROR 的了解? - 2

    是否有self验证的问题列表。看着那个,我可以确定我知道。我应该复习一下。在学习的过程中,我列了一个这样的list,但它只包含我在某处听说过的项目。我需要一段时间才能找到新的东西。 最佳答案 以下是针对ruby​​和Rails的一些测试列表。证书名称:RubyonRails谁提供:oDeskIncorporation认证费用:免费网站:https://www.odesk.com/tests/985?pos=0证书名称:RubyonRails提供者:Techgig.com(TimesBusinessSolutionsLimited(T

  8. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板 - 2

    写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c

  9. 三分钟集成 TapTap 防沉迷 SDK(Unity 版) - 2

    三分钟集成Tap防沉迷SDK(Unity版)一、SDK介绍基于国家对上线所有游戏必须增加防沉迷功能的政策下,TapTap推出防沉迷SDK,供游戏开发者进行接入;允许未成年用户在周五、六、日以及法定节假日晚上8:00-9:00进行游戏,防沉谜时间段进入游戏会弹窗进行提示!开发环境要求:Unity2019.4或更高版本iOS10或更高版本Android5.0(APIlevel21)或更高版本🔗Unity集成Demo参考链接🔗UnityTapSDK功能体验APK下载链接二、集成前准备1.创建应用进入开发者后台,按照提示开始创建应用;2.开通服务在使用TDS实名认证和防沉迷服务之前,需要在上面创建的应

  10. 【Unity大气散射】GAMES104:3A中如何实现大气散射 - 2

    写在前面前两天学习并整理的大气散射基础知识:【Unity大气渲染】关于单次大气散射的理论知识,收获了很多,但不得不承认的是,这其实已经是最早的、90年代的非常古老的方法了,后来也出现了一些优化性的计算思路和方法。因此,我打算先不急着跟各种教程在Unity中实现大气散射,而是再花时间来看看最近的游戏是如何去实现大气渲染的:06.游戏中地形大气和云的渲染(下)|GAMES104-现代游戏引擎:从入门到实践接下来就跟着GAMES104讲地形大气和云渲染的部分学习并做简单的记录,涉及到之前没提到的Mie散射也只选择直接截图PPT的方式记录啦!毕竟对于做作品来说,之后实现出来才是重要的~当然,May佬的

随机推荐