unity 编辑mesh顶点位置

在某些特殊情况下,不得不对模型进行一些简单的修改,所以写了个简单的编辑脚本。

思路就是获取mesh上的所有顶点,然后在每个顶点位置创建一个控制点,控制点可以是任意你喜欢的物体,通过判断控制点的位置信息来修改mesh的顶点位置。

在unity中,mesh上的顶点与几个面相交,就会有几个坐标点,估计是把点为每一个三角形面复制了一份,所以这里在生成控制点时要注意剔除重复的点,不要重复生成。

这里我是把每个顶点的坐标转为字符串,使用该坐标的字符串作为key来把控制点与顶点数据联系起来。

下面给出完整代码

首先是控制点的脚本:

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

public class MeshEditorPoint : MonoBehaviour {

    //顶点id,(顶点初始位置转字符串)
    [HideInInspector] public string pointid;

    //记录坐标点上一次移动的位置,用于判断控制点是否移动
    [HideInInspector] private Vector3 lastPosition;


    public delegate void MoveDelegate(string pid,Vector3 pos);

    //控制点移动时的回调
    public MoveDelegate onMove = null;

	// Use this for initialization
	void Start () {
        lastPosition = transform.position;
	}
	
	// Update is called once per frame
	void
Unity 是一种流行的游戏开发引擎,它提供了许多强大的功能,其中之一就是使用Mesh来绘制和操作顶点MeshUnity中用来表示3D对象网格的组件,它由一系列的顶点和面构成。通过在Mesh上添加、修改和删除顶点,我们可以创建各种形状和模型。 在Unity中,绘制Mesh顶点有几个步骤。首先,我们需要创建一个空的GameObject,并在其上添加一个MeshFilter组件。MeshFilter用于存储和管理Mesh的数据。 接下来,我们可以使用代码或者Unity编辑器工具来添加和编辑Mesh顶点。通过修改Mesh的vertices属性,我们可以指定顶点位置。例如,我们可以通过创建一个Vector3数组来定义几个顶点,并将其赋值给Mesh的vertices属性。 完成顶点编辑后,我们还可以为Mesh指定面的连接方式。在Unity中,面通常是由三个顶点组成的三角形。我们可以通过指定三角形的顶点索引来定义各个面。例如,我们可以将一个有序的整数数组赋值给Mesh的triangles属性,其中每三个整数表示一个三角形的三个顶点。 最后,我们需要为Mesh创建一个材质,并将其赋值给GameObject上的MeshRenderer组件。材质用于定义对象的外观和着色方式。 在绘制Mesh顶点后,我们可以使用Unity的摄像机和光源来渲染和显示对象。通过调整摄像机的位置、旋转和投影方式,我们可以在屏幕上看到Mesh顶点的绘制结果。 绘制Mesh顶点Unity中创建3D物体和场景的重要步骤之一。通过熟练使用Mesh组件和顶点操作技巧,我们可以实现各种复杂的模型和效果。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值