[unity]三角形顶点顺序

这篇具有很好参考价值的文章主要介绍了[unity]三角形顶点顺序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

详见官方文档:Unity - Manual: Mesh data (unity3d.com)

Topology:拓扑结构

[unity]三角形顶点顺序,unity,游戏引擎

翻译:

拓扑描述网格具有的面类型。
网格的拓扑定义了索引缓冲区的结构,索引缓冲区又描述了顶点位置如何组合成面。每种类型的拓扑都使用索引数组中不同数量的元素来定义单个面。
Unity支持以下网格拓扑:
三角形
Quad
线
LineStrip
积分 

index data:索引数据

[unity]三角形顶点顺序,unity,游戏引擎

翻译:

索引数组包含引用顶点位置数组中元素的整数。这些整数称为索引。
Unity使用索引将顶点位置连接到面中。组成每个面的索引数量取决于网格的拓扑结构。
在Mesh类中,您可以使用Mesh.GetIndices获取此数据,并使用Mesh.SetIndices进行设置。Unity也将此数据存储在Mesh.triangles中,但此旧属性的效率和用户友好性较差。
注意:“点”拓扑不会创建面;相反,Unity在每个位置渲染一个点。所有其他网格拓扑都使用多个索引来创建面或边。
例如,对于具有包含以下值的索引数组的网格:
0,1,2,3,4,5
如果网格具有三角形拓扑,则前三个元素(0,1,2)标识一个三角形,随后的三个单元(3,4,5)标识另一个三角形。顶点可以参与的面数没有限制。这意味着同一个顶点可以多次出现在索引数组中。例如,索引数组可以包含以下值:
0,1,2,1,2,3
如果网格具有三角形拓扑,则前三个元素(0,1,2)标识一个三角形,随后的三个元件(1,2,3)标识与第一个共享顶点的另一个三角形。

winding order:绕序

[unity]三角形顶点顺序,unity,游戏引擎

翻译:

索引数组中每组顶点的顺序称为缠绕顺序。Unity使用缠绕顺序来确定面是面向前还是面向后,进而确定是应该渲染面还是剔除面(将其从渲染中排除)。默认情况下,Unity渲染正面多边形并剔除背面多边形。Unity使用顺时针缠绕顺序,这意味着Unity认为索引沿顺时针方向连接的任何面都是正面的。

[unity]三角形顶点顺序,unity,游戏引擎
顺时针排列可见,逆时针排列就不可见

上图展示了Unity如何使用缠绕顺序。每个面的顶点顺序决定了该面的法线方向【左手坐标系下,叉乘的方向用左手判断】,Unity将其与当前摄影机透视的正向进行比较。如果法线指向远离当前摄影机的前进方向,则它是向后的。较近的三角形顶点顺序为(1,2,3),从当前的角度来看,这是顺时针方向,因此三角形是面向摄像机的,保留。另一个三角形的顶点顺序是(4,5,6),从当前角度来看,这是逆时针方向,所以这个三角形是背向摄像机的,剔除。

关于forward direction

Unity - Scripting API: Vector3.forward (unity3d.com)

实践

前期准备 

添加一个空物体:

[unity]三角形顶点顺序,unity,游戏引擎

给这个空物体添加mesh filter,mesh render组件;mesh render组件的materials项选择default-material。然后新建一个脚本拖给它。 

[unity]三角形顶点顺序,unity,游戏引擎

脚本里的代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Draw : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        List<Vector3> verts = new List<Vector3>(); // 顶点坐标
        List<int> indices = new List<int>(); // 顶点索引

        // 设置绘制一个三角形需要的相关数据

        // 从世界坐标系的z轴负无穷处向z轴正无穷处看,这3个顶点是顺时针排列的
        // 反过来,从世界坐标系的z轴正无穷处向z轴负无穷处看,这3个顶点是逆时针排列的
        verts.Add(new Vector3(0, 0, 0)); 
        verts.Add(new Vector3(0, 1, 0));
        verts.Add(new Vector3(1, 0, 0));

        indices.Add(0);
        indices.Add(1);
        indices.Add(2);

        // 把数据赋给mesh
        Mesh mesh= GetComponent<MeshFilter>().mesh;
        mesh.vertices = verts.ToArray();
        mesh.triangles = indices.ToArray();
        mesh.RecalculateNormals();
    }
}

运行

随着视角的变化,顶点的排列顺序也不同。

当顶点顺时针排列时,三角形可见。

当顶点逆时针排列时,三角形不可见,被剔除。 

[unity]三角形顶点顺序,unity,游戏引擎文章来源地址https://www.toymoban.com/news/detail-729697.html

到了这里,关于[unity]三角形顶点顺序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • css实现圆角三角形,圆角三角形的实现

    css实现圆角三角形,圆角三角形的实现

    今天给大家带来一个如何实现圆角三角形的方案,这个方案虽然可以实现,但是也是借助拼凑等方式来实现的,假如想一个div来实现圆角三角形,还是比较困难的。之前文章讲了如何实现对话框,里面介绍了三角形的实现方式。今天讲讲如何实现圆角三角形。 想要生成一个带

    2024年02月09日
    浏览(8)
  • 用python写九九乘法表(左上三角、左下三角、右上三角、右下三角、正三角形、倒三角形格式)

    用python写九九乘法表(左上三角、左下三角、右上三角、右下三角、正三角形、倒三角形格式)

    1.左上三角格式:   2.左下三角格式:   3.右上三角格式:     4.右下角格式:     5.倒三角格式:      

    2024年02月11日
    浏览(10)
  • C语言程序设计:输入一个三角形的三条边长,求出三角形的面积。

    C语言程序设计:输入一个三角形的三条边长,求出三角形的面积。

    已知三角形的三边长a,b,c,则该三角形的面积公式为:           area=  其中s = (a+b+c)/2

    2024年02月06日
    浏览(18)
  • OpenCV项目开发实战-- 将一个三角形变形为另一个三角形 ( C++ / Python )代码实现

    OpenCV项目开发实战-- 将一个三角形变形为另一个三角形 ( C++ / Python )代码实现

     文末附基于Python和C++两种方式实现的测试代码下载链接 图 1:左图中蓝色三角形内的所有像素都已转换为右图中的蓝色三角形。 在本教程中,我们将看到如何将图像中的单个三角形变形为不同图像中的另一个三角形。 在计算机图形学中,人们一直在处理扭曲三角形,因为任

    2024年02月09日
    浏览(17)
  • 【数字三角形】

    【数字三角形】

    题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走

    2024年02月05日
    浏览(10)
  • CSS 画三角形

    CSS 画三角形

    1、transform: rotate + overflow: hidden 就是利用BFC的特性,在封闭的盒子里面,以图形的左下角(left bottom)作为旋转中心,进行旋转,把超出部分隐藏、 2、clip-path 剪切 clip-path 可以将一个容器裁剪成任何我们想要的样子 3、border + transparent 设置一个宽高为0的盒子,用边框大小来控

    2024年01月25日
    浏览(11)
  • css实现三角形

    css实现三角形

       1. Border 2. transform 3.  :before 和 :after 伪元素 4. clip-path

    2024年02月09日
    浏览(11)
  • stl格式-3D三角形

    stl格式-3D三角形

    https://www.youtube.com/watch?v=u5-Df1YlxCI 注 : vtk9.1在github上有 首先说一下,这个stl不是cpp中的stl库. 指的是以.stl结尾的文件( S T ereo L ithography) STL(Standard Tessellation Language):STL是一种用于 表示三角网格的一种文件格式 ,它将模型表示为一系列连接的 三角形 。STL文件通常分为两种类

    2024年02月08日
    浏览(9)
  • 【数字三角形】(C++版)

    【数字三角形】(C++版)

    题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走

    2024年02月16日
    浏览(16)
  • python求三角形面积

    python求三角形面积

     运用Python求三角形面积,代码如下 在运行后,可得   输入三边长后通过三角形面积公式,可求得三角形的面积,其中需要得知三角形如何运用周长求面积,周长公式为s = (a + b + c) / 2,后用面积公式area = (s*(s-a)*(s-b)*(s-c)) ** 0.5最后输出求得三角形的面积公式。  

    2024年02月11日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包