unity中用mesh画一个圆环(代码片段) 您所在的位置:网站首页 安卓系统修复工具在哪 unity中用mesh画一个圆环(代码片段)

unity中用mesh画一个圆环(代码片段)

#unity中用mesh画一个圆环(代码片段)| 来源: 网络整理| 查看: 265

Probuider

前几天在做一个小项目的时候,用到了Unity自带的一个包ProBuilder其中的Arch生成1/4圆。

挺好玩的,可以在直接Unity中根据需要用Mesh定制生成图形,而不用建模软件。

但是存在一个小问题,就是在使用的时候他的中心点是在生成图形的左下角。

旋转的时候不符合我的需求,我想要的是生成的时候旋转中心在圆心的位置,所以准备自己定制一个。

目标

关于Mesh生成图形的原理可以参考这篇文章,讲得虽然不算很详细,但足够了解基本概念了。

目标是生成下面图中的一个1/4空心圆柱体

我们切换到Wireframe模式下,可以看出它是有一个一个的顶点,并通过一条条的直线连接起来。那么我们如何确定这些顶点和线的位置呢?

小目标-生成一个面

其实很简单的,我们一步一步慢慢来。一次生成一整个会有点麻烦,我们可以一面一面来。只要生成了第一个面,其他的面也是类似的方法生成就好。

在前面我们提到了我们要的是生成一个圆柱体,圆柱体一个的重要性质就是可以由一个圆形叠加产生,也就是只要我们生成一个圆形,就完成了大部分的工作。

我们知道3D建模就是由一个一个的三角形组合成的,所以我们要用三角形来模拟来一个空心的圆。

在Probuilder中生成这样一个空心圆柱体用的是Arch,它有几个参数,分别是 \\(\\color#1E90FFRadius\\) 半径,圆心到最外圈的距离 \\(\\color#1E90FFThickness\\) 厚度,圆心到最外圈的距离-圆心到最内圈的距离 \\(\\color#1E90FFDepth\\) 深度 \\(\\color#1E90FFNumberOfSides\\) 由多少个面组成,面越多越平滑,性能也越差 \\(\\color#1E90FFDrawArchDegrees\\) 总共绘制的角度

\\(\\color#1E90FFNumberOfSides\\)中的面是指由两个三角形一头一尾拼成的梯形,多个头大脚小的梯形拼在一起便成了我们需要的圆形。

原理已经知道了,那下一步只要确定三角形顶点的位置就OK了。至于如何确定三角形顶点的位置,我们可以再看下这张图。 Mesh2.png

是不是瞬间清晰明了,红线的交汇处就是圆心的位置,数字则是每个顶点的编号。

我们假设圆心在原点,数字0-1所在的线为180度线。\\(\\color#1E90FFIncrement\\) = \\(\\color#1E90FFDrawArchDegrees\\)/\\(\\color#1E90FFNumberOfSides\\)就是线与线之间的角度。每条线的角度可以由\\(\\color#1E90FF180-Increment*i\\)得到。i为第几条线。

线上的点可以由\\(\\color#1E90FFy = r* sinθ, y = r* cosθ\\)得到。

//顶点坐标 vertexList.Clear(); float incrementAngle = DrawArchDegrees / NumberOfSides; //小于等于是因为n+1条线才能组成n个面 for (int i = 0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有