Unity自定义mesh绘制

Wesley13
• 阅读 485

有些时候需要自定义mesh来绘制目标模型图形什么的,可以代码控制,也可以通过shader去控制,这里介绍代码控制的方法:

基本思路是修改mesh的定点,三角 达到自定义的目的,和上上篇垂直UI.Text 显示异曲同工之处。

由于一个mesh是有顶点信息,和对应三角形组合而成。

Unity自定义mesh绘制

如图中的一个Quad比如4个顶点,0,1,2,3  可以组合为2个三角形信息,三角形1由顶点0,1,2 三角形2由定点2,3,0组成 , 组成了一个面

Unity自定义mesh绘制

4个顶点 和一个三角形,组合为了一个面

Unity自定义mesh绘制

又比如如图的4个顶点,2个三角形生成这样的图形,组成了2个面

Unity自定义mesh绘制

又比如4个顶点3个三角形生成这样的图形,组成了3个面。三角顺序 顺时针 才会是你想看的面的绘制 逆时针就是反面了

  void OnDrawGizmos()
    {
        MeshFilter filter = this.GetComponent<MeshFilter>();
        MeshRenderer render = this.GetComponent<MeshRenderer>();
        var mesh = filter.mesh;

        var ts = this.GetComponentsInChildren<Transform>();

        Vector3[] vers = new Vector3[ts.Length];

        for (int i = 0; i < ts.Length; i++)
        {
            vers[i] = ts[i].position;
        }

         var tris = new int[] { 0, 1, 2, 0,1,3,1,2,3 };
    
        //   mesh.Clear();
        mesh.vertices = vers;
        mesh.triangles = tris;
        mesh.RecalculateNormals();
        mesh.RecalculateBounds();
        this.GetComponent<MeshCollider>().sharedMesh = mesh;
        filter.mesh = mesh;

    }

和Lite2D engine中的顶点有点相似,建模也是只做这些东西,之所以可以这样玩是有些模型网格什么的需要代码去生成,比如地形破坏,比如下图

Unity自定义mesh绘制 该游戏是异星探险家,

又或者流体计算等等

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
Unity实现瓦片地图tile map
Unity自定义mesh绘制(https://my.oschina.net/kkkkkkkkkkkkk/blog/1545422) 基于上篇的mesh修改,实现tilemap第一步,修改mesh顶点和三角片信息,生成方格!(https://static.oschina.net/uploads/space/2017/1002/230643
Wesley13 Wesley13
2年前
Unity 凹多边形三角剖分
游戏中需要实现一个小功能,显示一个玩家的能力图,这个图是一个有6个顶点任意摆放组合的多边形。而绘制多边形主要用到的知识就是Mesh构建,mesh的构建主要需要顶点列表,三角形列表,法线列表、uv列表等等等等,在这里我们只考虑顶点列表和三角形列表。那么我们需要做的就是给定一组顶点之后,如何用三角形进行划分,以便绘制。以下讨论的多边形:1.三角形顶点列表为顺
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这