Unity3D 您所在的位置:网站首页 unity3D画图为什么会散 Unity3D

Unity3D

2024-07-14 19:49| 来源: 网络整理| 查看: 265

Github源码

效果

动态创建长度固定的可调节弧度的面,效果如图:

这里写图片描述

需求

需要一个可以调节弧度的且长度固定的面(最多可调节至半圆型)。

从官方手册中可以知道,想要使用代码来创建Mesh需要至少四个步骤:

设置顶点数组(想要创建的面一共有多少个顶点)设置三角形信息(每三个顶点确定一个三角形,要顺时针的设置)设置法线信息(可以通过mesh的方法直接计算)设置UV信息(决定了图像信息如何在此Mesh上显示,其设置顺序和顶点数组的设置顺序相同) 顶点数组

先讨论如何计算得到弧面上的顶点信息

由于需求的弧面是可以调节的(0°~180°),那么就分为两种情况讨论:

0°的弧面(也就是平面)非0°的弧面

0°的弧面

要知道在模型中任何一个面都是由诸多三角形组成的,平面也不例外,一个平面至少由两个三角形组成。例如下图,该平面由2段四个三角形组成:

这里写图片描述

假设我们想要的平面宽高都为1,且平面位于XY轴平面上,那么其6个顶点分别为:

左上 (-0.5, 0.5) 左下 (-0.5, -0.5) 正上 (0, 0.5) 正下 (0, -0.5) 右上 (0.5, 0.5) 右下 (0.5, -0.5)

其计算公式也很简单,拿到左上点,再计算出每段的分量,就可得到顶点数组了,可以看到下面这段代码是以列为单位为数组赋值,每次循环赋值上下两个顶点。

// 该平面由几段构成 int segments_count = 2; // 平面宽度 int planeWidth = 1; // 平面高度 int planeHeight = 1; // 平面每段的宽度值 float widthSetup = planeWidth * 1.0f / segments_count; // 该平面需要的顶点数 int vertex_count = (segments_count + 1) * 2; // 平面顶点数组 Vector3[] vertices = new Vector3[vertex_count]; for (int si = 0; si


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

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