网站大量收购闲置独家精品文档,联系QQ:2885784924

Unity3D动态创建地形网格一.docxVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Unity3D动态创建地形网格(一)? ?? ?? ?? ?? ?? ?最近一直都在搞flash3D,好像有点对不起Unity3D的朋友们了。这次简单的写一个动态创建地形网格的脚本给大家分享一下。? ?? ???这次是第一部分,仅仅实现了通过高度图动态生成地形的部分。假如以后有心情和时间,再来慢慢的补充多通道刷地形材质、动态刷地形和保存高度图等的功能吧。以前我都不喜欢公开脚本源码,都是一个个部分的单独讲解然后让朋友们自己去组合起来的,但最近时间实在是不多,所以还是直接提供源码,然后在源码上面写注释,大家自行的观看吧。源码在最下面。更多内容,请访问狗刨学习网? ?? ???? ?? ???首先直接把脚本拖到某物体上面,运行,就会出现了上图所示的一个面片。这是因为为了方便大家测试,我在start里面调用了下面的SetTerrain方法。这个方法会创建一个默认的地形面板。长宽是100*100,段数是50*50,高度是-10米到10米的。? ?? ???当然了,我们真正用的时候,是使用重载的SetTerrain方法自己制定长宽高和段数这些数值的,把start里面的方法注释掉就行了。现在由于没有指定默认的地面材质和高度图,所以我写了个警告提示。这两个变量就是材质和高度图了,大家可以自行想办法去赋值。我现在写成public只是为了方便赋值测试,最好还是写get/set方法赋值。还有一点,现在没有做地面的多通道材质,所以只是用了一个默认的shader。以后假如需要混合通道材质,改这个shader。好,先不管以后了,把一个有草地纹理的材质球付给脚本。出来了一个草地我随便的用黑白图刷了一个高度图,然后扔进脚本。注意的是,作为高度图的图片,是需要设置读写权限的,不然获取不到像素的颜色出现了一个小小的山坡了。其实我这个脚本并不是必须针对黑白图的,我随便拿了一张木箱子贴图,一样可以做高度图的,这是因为我是做了灰度处理的,最后获取的是该图片像素点上的灰度值。看,地形出来了。实际效果? ?? ???功能是简单了点,这里提供了一点点的思路,有需要或者有兴趣的朋友可以参考一下做法,自行的扩展吧。源码:TerrainManager.csusing UnityEngine;using System.Collections;public class TerrainManager : MonoBehaviour {? ? //材质和高度图? ? public Material diffuseMap;? ? public Texture2D heightMap;? ? //顶点、uv、索引信息? ? private Vector3[] vertives;? ? private Vector2[] uvs;? ? private int[] triangles;? ? //生成信息? ? private Vector2 size;//长宽? ? private float minHeight = -10;? ? private float maxHeight = 10;? ? ? ? private Vector2 segment;? ? private float unitH;? ? //面片mesh? ? private GameObject terrain;// Use this for initializationvoid Start () {? ?? ???//默认生成一个地形,如果不喜欢,注销掉然后用参数生成? ?? ???SetTerrain();? ?? ???}? ? /// ? ? /// 生成默认地形? ? /// ? ? public void SetTerrain()? ? {? ?? ???? ?? ???SetTerrain(100, 100, 50, 50,-10,10);? ? }? ? /// ? ? /// 通过参数生成地形? ? /// ? ? /// 地形宽度? ? /// 地形长度? ? /// 宽度的段数? ? /// 长度的段数? ? /// 最低高度? ? /// 最高高度? ? public void SetTerrain(float width, float height, uintsegmentX, uintsegmentY,intmin,int max)? ? {? ?? ???Init(width, height, segmentX, segmentY,min,max);? ?? ???GetVertives();? ?? ???DrawMesh();? ? }? ? /// ? ? /// 初始化计算某些值? ? /// ? ? /// ? ? /// ? ? /// ? ? /// ? ? /// ? ?

文档评论(0)

0520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档