为什么unity3d地形贴图下载画地形没有反应

Unity3D教程:设置地形(Terrain) | Unity3D教程手册
当前位置 :
>> Unity3D教程:设置地形(Terrain)
Unity3D教程:设置地形(Terrain)
新建地形:
在菜单中新建一个地形。
Unity3D教程:设置地形(Terrain)
会看到Terrain对象。如果要修改地形参数,可以在Terrain菜单下的SetResolution中设置。
Unity3D教程:设置地形(Terrain)
如上图所示。地形的参数设置:
TerrainWidth:全局地形总宽度。其单位为Unity统一单位-米。
TerrainHeight:全局地形允许的最大高度,单位为Unity统一单位。
TerrainLength:全局地形总长度,单位为Unity统一单位。
Heightmap Resolution:全局地形生成的高度图的分辨率。
Detail Resolution:全局地形所生成的细节贴图的分辨率,所以数字越小性能越好。但是质量也要考虑。
ControlTestureResoulution:全局把地形贴图绘制到地形上时所使用的贴图分辨率。
BaseTextureResoution:全局用于远处地形贴图的分辨率。
Unity定制地形:如果有美术人员制作好的高度图。那么可以直接导入,但是Unity仅支持.RAW格式。图像大小要求是2的幂。导入方法:Terrain-〉Import Heightmap-Raw。选中需要的资源后。会弹出如下属性设置框:
Unity3D教程:设置地形(Terrain)
Depth:由文件格式来设置,8位或者16位。
Width:高度图的宽度,根据图像本身大小获得。
Height:高度图的高。
ByteOrder:根据文件格式来设置。Mac或者Wndows。使用这个文件编码时所用的顺序。
TerrainSize:这里是TerrainSet Resoulution的选项。如果觉得高度图和地形大小差别太大。可以由此调整。
Unity绘制地形:
在Hierarchy面板中选中地形。在Inspector中查看信息,以下7个横排按钮就是绘制地形工具。
Unity3D教程:设置地形(Terrain)
PaintTexture功能从左往右依次是:提高和降低高度[此功能配合Shift可以是地形瞬间平整],绘制目标高度,平滑高度,绘制地形,绘制树木,绘制花草,设置。
Brushes区下包含各种样式的笔刷,可以用来控制贴图,地形风格。
Details区下表示笔刷设置,可以通过Edit Details添加笔刷材质。BrushSize:用来控制笔刷大小,Opacity用来控制贴图使用的纹理的透明度,或者说浓度。TargetStrength用来调整目标强度。强度越小,那么贴图纹理所产生的影响越小。
使用系统自带的材质为地形贴图:
1.Create& Terrain后,在Project面板右键ImportPackage-〉TerrainAssets[该包含有树木绿草资源],在Hierarchy面板中选中Terrain。
2.在Inspector面板中的Terrain下选择笔刷。点击EditTexture。选中Add Texture。
3.弹出框中选择Splat后边的圆圈。
Unity3D教程:设置地形(Terrain)
4.弹出材质列表,选择其中之一。再看地形,就贴上材质了。第一次是完全覆盖,以后的导入的材质不再覆盖首次的材质,根据画笔控制进行材质覆盖。
添加树木:
选择树木按钮。点击Edit Tress。和添加地形贴图一样选择树木。再次在地形上点击。你的蓝色覆盖区域都将种上树木。
关于Tree的Settings参数详解:
BushSize:笔刷的半径。以地形单位米计算。
TreeDensity:树木密度。值越大树木越多。
ColorVariation:每棵树的颜色所能够使用的随机变量值。
TreeHeight:树的基准高度。
Variation:树高的随机变量。
TreeWidth:树的基准宽度。
Variation:输的宽度随机变量。
添加绿草:
以下3项都是地形基本渲染设置。
PixelError:像素误差,较高的之可能渲染较快,但是贴图可能不是非常精确。
BaseMapDist:贴图到摄像机的距离超过这个值,就会让地形贴图以低分辨率显示。
Castshadows:让地形产生阴影。比如山峰产生的阴影。
以下6个参数为树木或者细节对象渲染参数设置。
Draw选项表示是否渲染除地形以外的对象。当你在也做好各种物体的地形上需要调整地形时候,这个非常有用。
DetailDistance:当到摄像机超过这一距离,细节玩个停止显示。
DetailDenstiy:详细密度。更细小的渲染粒度。
TreeDistance:当到摄像机的距离超过该值,树木停止显示。
BillboardStart:当到摄像机的距离超过该值,树木以广告牌形式开始显示。
FadeLength:树木从网格过渡到广告牌的距离。
MaxMeshTrees使用网格形式进行渲染的树木最大数量。
以下4项为风力设置为主。
Speed:风吹过草地的速度。
Size:同一时间收到风影响的草的数量。
Bending:草跟随风进行弯曲的强度。
GrassTint:对于地形上使用的所有草和细节网格的总体渲染颜色。
【上一篇】
【下一篇】
您可能还会对这些文章感兴趣!我刚学unity3d,unity3d能定量化做地形吗
是指在Max中做好然后导入Unity么?
不是,在unity里输入确定数值,得到一定高度的地形。想做虚拟现实,手头有测绘得到的数据,觉得能定量输入的话,可能会方便些。谢谢。
可以用高度图生成地形的,如果不方便将测绘数据转成高度图,可以自己写脚本将数据导入进去生成地形。
为您推荐:
其他类似问题
扫描下载二维码Unity3D地形Shader
高度细分shader
Shader "QQ/TerrainTessEdge" {
Properties{
_Color("Color", Color) = (1,1,1,1)
_HeightMap("高度图",2D) = "black"{}
_HeightAmount("高度比例",Range(0.0,5.0)) = 0.5
_EdgaLength("细分程度",Range(0.1,100)) = 50
_MainTex("底层图",2D) = "white"{}
_RTex("红色贴图", 2D) = "white" {}
_GTex("绿色贴图", 2D) = "white" {}
_BTex("蓝色贴图", 2D) = "white" {}
_ATex("Alpha贴图", 2D) = "white" {}
_RGBATex("通道图", 2D) = "white" {}
SubShader{
Tags { "RenderType" = "Opaque" }
#pragma surface surf BlinnPhong addshadow vertex:disp tessellate:tessEdge//定义了点方法和细分方法
#include "Tessellation.cginc"//unity的细分API
#pragma target 4.0//3.0的贴图有限
struct appdata {
float4 vertex : POSITION
float4 tangent : TANGENT
float3 normal : NORMAL
float2 texcoord : TEXCOORD0
float _HeightAmount
float _EdgaLength
float4 tessEdge(appdata v0, appdata v1,appdata v2)
return UnityEdgeLengthBasedTessCull(v0.vertex, v1.vertex, v2.vertex, _EdgaLength, _HeightAmount * 1.5f)
sampler2D _HeightMap
void disp(inout appdata v)//绘制顶点
float d = tex2Dlod(_HeightMap, float4(v.texcoord.xy, 0, 0)).a * _HeightAmount
v.vertex.xyz += v.normal*d
sampler2D _MainTex
sampler2D _RGBATex
sampler2D _RTex
sampler2D _GTex
sampler2D _BTex
sampler2D _ATex
struct Input {
float2 uv_MainTex
float2 uv_RGBATex
float2 uv_RTex
float2 uv_GTex
float2 uv_BTex
float2 uv_ATex
fixed4 _Color
void surf(Input IN, inout SurfaceOutput o) {//贴图融合
fixed4 main = tex2D(_MainTex,IN.uv_MainTex)
fixed4 blend = tex2D(_RGBATex, IN.uv_RGBATex)
fixed4 final = main
final = lerp(final, tex2D(_RTex, IN.uv_RTex), blend.r)
final = lerp(final, tex2D(_GTex, IN.uv_GTex), blend.g)
final = lerp(final, tex2D(_BTex, IN.uv_BTex), blend.b)
final = lerp(final, tex2D(_ATex, IN.uv_ATex), blend.a)
o.Albedo = final.rgb*_Color
o.Alpha = final.a
FallBack "Diffuse"
高度置换shader
Shader "QQ/TerrainShaderDisplace" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_HeightMap("高度图",2D) = "black"{}
_HeightAmount("高度比例",Range(0.0,5.0)) = 0.5
_MainTex("底层图",2D) = "white"{}
_RTex("红色贴图", 2D) = "white" {}
_GTex("绿色贴图", 2D) = "white" {}
_BTex("蓝色贴图", 2D) = "white" {}
_ATex("Alpha贴图", 2D) = "white" {}
_RGBATex("通道图", 2D) = "white" {}
SubShader {
Tags { "RenderType"="Opaque" }
#pragma surface surf BlinnPhong addshadow vertex:disp nolightmap
//#include "Tessellation.cginc"
#pragma target 4.0
struct appdata {
float4 vertex : POSITION
float4 tangent : TANGENT
float3 normal : NORMAL
float2 texcoord : TEXCOORD0
sampler2D _HeightMap
float _HeightAmount
void disp(inout appdata v)
float d = tex2Dlod(_HeightMap, float4(v.texcoord.xy, 0, 0)).a * _HeightAmount
v.vertex.xyz += v.normal*d
sampler2D _MainTex
sampler2D _RGBATex
sampler2D _RTex
sampler2D _GTex
sampler2D _BTex
sampler2D _ATex
struct Input {
float2 uv_MainTex
float2 uv_RGBATex
float2 uv_RTex
float2 uv_GTex
float2 uv_BTex
float2 uv_ATex
fixed4 _Color
void surf (Input IN, inout SurfaceOutput o) {
fixed4 main = tex2D(_MainTex,IN.uv_MainTex)
fixed4 blend = tex2D(_RGBATex, IN.uv_RGBATex)
fixed4 a = tex2D(_ATex, IN.uv_ATex)
fixed4 final= main
final = lerp(final, tex2D(_RTex, IN.uv_RTex), blend.r)
final = lerp(final, tex2D(_GTex, IN.uv_GTex), blend.g)
final = lerp(final, tex2D(_BTex, IN.uv_BTex), blend.b)
final = lerp(final, tex2D(_ATex, IN.uv_ATex), blend.a)
o.Albedo = final.rgb*_Color
o.Alpha = final.a
FallBack "Diffuse"
没什么太难的,参考官方的例子和网上的例子 合成的shader,
看过本文的人也看了:
我要留言技术领域:
你已经自动关注本知识库了哦!
确定要取消收藏吗?

我要回帖

更多关于 unity3d真实地形制作 的文章

 

随机推荐