Unity查找网格边缘并给边缘绘制线条代码参考

效果参考如下:

代码参考如下:

using System.Collections.Generic;
using UnityEngine;

public class BorderFind : MonoBehaviour
{
	[SerializeField]
	MeshFilter meshFilter;
	[SerializeField]
	Material matLine;

	void Start()
	{
		if (meshFilter == null) return;
		Mesh mesh = OptimizeMesh(meshFilter.sharedMesh, true);
		if (mesh == null) return;
		List<List<Vector3>> borders = GetBorders(mesh);
		foreach (List<Vector3> b in borders)
		{
			GameObject go = new GameObject();
			go.transform.parent = transform;
			LineRenderer lineRenderer = go.AddComponent<LineRenderer>();
			lineRenderer.positionCount = b.Count;
			lineRenderer.SetPositions(b.ToArray());
			lineRenderer.loop = true;
			lineRenderer.material = Instantiate(matLine);
			lineRenderer.material.color = Random.ColorHSV();
		}
	}

	List<List<Vector3>> GetBorders(Mesh meshOriginal)
	{
		List<Edge> listEdgeNoSharedAll = new();
		Mesh mesh = OptimizeMesh(meshOriginal, true);
		Vector3[] vs = mesh.vertices;
		int[] ts = mesh.triangles;

		for (int i = 0; i < ts.Length; i += 3)
		{
			int edge01Start = ts[i];
			int edge01End = ts[i + 1];
			int edge02Start = ts[i + 1];
			int edge0
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值