Unity3D 绘制扇形/环形
using UnityEngine;
using System.Collections;
using System.Collections.Generic; public class Cone : MonoBehaviour { public float anglefov = ;
public int quality = ;
public int[] triangles;
public Vector2[] uvs;
public Vector3[] vertices;
public Vector3[] normals; public float dist_min = 0.0f;
public float dist_max = 1f; public MeshFilter meshFilter; // Use this for initialization
void Awake () {
triangles = new int[quality * * ];
vertices = new Vector3[quality * + ];
uvs = new Vector2[vertices.Length];
normals = new Vector3[vertices.Length]; meshFilter = GetComponent<MeshFilter>();
} // Update is called once per frame
void Update () { meshFilter.mesh.Clear(); Vector3 pos = Vector3.zero;//transform.position;
float angle_lookat = transform.eulerAngles.y;
float angle_fov = anglefov; float angle_start = angle_lookat - angle_fov;
float angle_end = angle_lookat + angle_fov;
float angle_delta = (angle_end - angle_start) / quality; float angle_curr = angle_end; for (int i = ; i < quality + ; i++)
{
Vector3 sphere_curr = new Vector3();
sphere_curr.z = Mathf.Cos(Mathf.Deg2Rad * angle_curr);
sphere_curr.x = Mathf.Sin(Mathf.Deg2Rad * angle_curr); Vector3 pos_curr_min = pos + sphere_curr * dist_min;
Vector3 pos_curr_max = pos + sphere_curr * dist_max; vertices[ * i + ] = pos_curr_min;
vertices[ * i + ] = pos_curr_max; uvs[ * i + ] = new Vector2((float)(quality-i) / quality, );
uvs[ * i + ] = new Vector2((float)(quality-i) / quality, ); normals[ * i + ] = Vector3.up;
normals[ * i + ] = Vector3.up; angle_curr -= angle_delta;
} for (int i = ; i < quality; i++)
{
// 5---3---1
// | /| /|
// | / | / |
// |/ |/ |
// 4---2---0 int index_min_cur = i * + ;
int index_max_cur = i * + ;
int index_min_next = i * + ;
int index_max_next = i * + ; triangles[ * i + ] = index_min_cur;
triangles[ * i + ] = index_min_next;
triangles[ * i + ] = index_max_cur;
triangles[ * i + ] = index_min_next;
triangles[ * i + ] = index_max_next;
triangles[ * i + ] = index_max_cur; } meshFilter.sharedMesh.vertices = vertices;
meshFilter.sharedMesh.triangles = triangles;
meshFilter.sharedMesh.uv = uvs;
}
}
Unity3D 绘制扇形/环形的更多相关文章
- Unity3D之Mesh(六)绘制扇形、扇面、环形
前言: 绘制了圆,就想到绘制与之相关的几何图形,以便更灵活的掌握Mesh动态创建模型的机制与方法. 一.分析: 首先,结合绘制圆的过程绘制环形: 圆形是由segments个等腰三角形组成的(上一篇中, ...
- 绘制扇形效果线条小Bug解决
绘制线条基本代码: 变量: CPoint m_ptOrigin;//起点坐标 bool m_bTrue;//检查鼠标左键是否按下 CPoint m_ptOldOrigin;//记录上一次绘制终点坐标, ...
- [ActionScript 3.0] 动态绘制扇形实例(拖拽绘制)
package { import flash.display.Shape; import flash.display.Sprite; import flash.events.MouseEvent; / ...
- [ActionScript 3.0] 绘制扇形方法
/** * 绘制扇形 * @param mc 承载扇形的对象 * @param x 圆心角x * @param y 圆心角y * @param r 半径 * @param angle 绘制角度 * @ ...
- IOS-使用CAShapLayer绘制扇形
IOS-使用CAShapLayer绘制扇形 为了增加应用体验感,我们动态绘制扇形或者饼状图效果. 这里我们使用CAShapeLayer,这样就不必再-(void)draw函数内绘制图形 参考代码 -( ...
- html5--5-9 绘制扇形
html5--5-9 绘制扇形 学习要点 综合运用已经学过的知识绘制一个扇形 矩形的绘制方法 rect(x,y,w,h)创建一个矩形 strokeRect(x,y,w,hx,y,w,h) 绘制矩形(无 ...
- Sliverlight实例之 绘制扇形和环形图
一,1道几何题 已知两点坐标确定一条直线,直线上存在一个未知点,起始点与未知点的距离已知 求:未知点坐标 思路,如下: 求AB长度,可以根据两点距离公式 二,写个C#类 定义一个Point类,代表坐标 ...
- AS3绘制扇形算法解析
网上有很多使用AS3画一个扇形的方法,但是却一个都没有解释这个函数是如何运作来画出扇形的,下面浅谈下我对这个函数的理解. 首先上代码,代码来自http://blog.csdn.net/weiming8 ...
- html5 css3 如何绘制扇形任意角度
扇形制作原理,底部一个纯色原形,里面2个相同颜色的半圆,可以是白色,内部半圆按一定角度变化,就可以产生出扇形效果 <html> <head> <meta charset= ...
随机推荐
- 理解MVC 框架
前言:很多前端开发者面临着这样的问题,在项目开发中承担的工作越来越多,后端要做的越来越少,需要的技术棧越来越多,经常有人问你个技术是你完全不会的,对自己的职业生涯越来越怀疑.从前认为HTML+CSS+ ...
- 19课 Vue第二节
事件修饰符 stop 禁止冒泡once 单次事件prevent 阻止默认事件native 原生事件(组件)keycode|name 筛选按键 组合键 : @keydown.ctrl.enter s ...
- Linux 命令大全提供 500 多个 Linux 命令搜索
Linux Command 在这里维持一个持续更新的地方 516 个 Linux 命令大全,内容包含 Linux 命令手册.详解.学习,值得收藏的 Linux 命令速查手册.请原谅我写了个爬虫,爬了他 ...
- VS Code 用户自定义代码片段(React)
VS Code 用户自定义代码片段(React) .jsxReact组件模板:javascriptreact.json { "Import React": { "pref ...
- [NOI2007]货币兑换Cash
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 6353 Solved: 2563[Submit][Status][Discuss] Descriptio ...
- 16.2--Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署
分类: Linux服务篇,Linux架构篇 一.环境需求 本帖针对的是Linux环境,Windows或其他系统也可借鉴.具体只讲述Jenkins配置以及整个流程的实现. 1.JDK(或JRE)及J ...
- 数据结构-模式匹配串算法(KMP)
#include<cstdio> #include<iostream> #include<string> #include<cstring> #incl ...
- unix gcc编译过程
gcc编译过程 现代编译器常见的编译过程: 源文件-->预处理-->编译/优化-->汇编-->链接-->可执行文件 对于gcc而言: 第一步 预处理 命令: ...
- Python入职面试,可能会被企业HR问到的问题,你准备好了吗
整理了一下这两次面试问的问题先说简单的: 1.是否了解互联网协议七层模型 2.简单说一下TCP协议 3.你写的项目里用户数据安全如何保证?(比如用户密码加密处理一下)开放式问题,回 ...
- nginx 同一 iP 多域名配置方法(多文件)
一.Nginx 配置文件(nginx version: nginx/1.12.2) 路径:/usr/local/nginx/conf/nginx.conf 操作:在 http 模块增加(子配置文件的路 ...