Unity 耳切法代码实现

本文介绍了在Unity中使用耳切法生成2D道路网格的技术,虽然对于3D地形的起伏处理不够理想,但作为基础的四边形切对角方法仍有其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要根据点位生成道路mesh网格时用到的,2D方面可以满足要求,但3D方面有起伏就不太行,换了个简单的四边形切对角的方法。耳切法先记下,以后也许在别的地方还能用到。

using System.Collections.Generic;
using UnityEngine;

public class Polygon {
    NodeList m_NodeList;
    List<int> m_Triangles = new List<int>();

    public Polygon(List<Vector3> vertices) {
        if (vertices.Count <= 2) {
            throw new System.InvalidOperationException("非多边形");
        }
        m_NodeList = new NodeList(vertices);
    }

    public int[] SimpleTriangulation() {
        SimpleCutPolygon();
        return m_Triangles.ToArray();
    }

    public int[] Triangulation() {
        while (m_NodeList.GetCount >= 3) {
            if (!CutPolygon()) {
                throw new System.InvalidOperationException("点位非逆时针排布或围成图形非简单多边形");
            }
        }
        return m_Triangles.ToArray();
    }

    private void SimpleCutPolygon() {
        int nodeListCount
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值