unity 中带贴图以及动画的模型文件转为 lowpoly 风格的方法

本篇讲述的是使用代码来修改的方法,其实unity已经给我们提供了设置的方法:Normals选择Calculate,Smoothing Angle调整为0即可。

这里的内容是在这篇文章的基础上进行的修改:https://blog.csdn.net/final5788/article/details/50574055

原文章中主要是没有提到UV以及骨骼与定点的绑定方法。

由于实现lowpoly的风格其实就是将原来的1个点复制为多个点,所以我们只要在复制定点的过程中将相应的顶点属性一同复制即可。

这里直接给出完整代码:

using UnityEngine;
using UnityEditor;

public class LowPolyTool : MonoBehaviour {
    //制作Unity顶部菜单栏
    [MenuItem("LowPolyTool/LowPoly")]
    static void LowPoly()
    {
        Transform[] transforms = Selection.transforms;

        for (int i = 0; i < transforms.Length; i++){
            LowPoly(transforms[i]);
        }

    }

    static void LowPoly(Transform t){

        MeshFilter meshFilter = t.GetComponent<MeshFilter>();  
        Mesh mesh = meshFilter.sharedMesh;  

        Vector3[] oldVerts = mesh.vertices;//保存当前Mesh顶点  
        int[] triangles = mesh.triangles;//三角索引数组  
        Vector2[] olduvs = mesh.uv;
        BoneWeight[] oldBoneWeights = mesh.boneWeights;

        Vector3[] verts = new Vector3[triangles.Length];//用于保存新的顶点信息 
        Vector2[] uvs = new Vector2[triangles.Length];//用于保存新的uv信息 
        BoneWeight[] boneWeights = new BoneWeight[triangles.Length];//用于保存新的骨骼信息 

        for (int i = 0; i < triangles.Length; i++)
        {
            verts[i] = oldVerts[triangles[i]];
            uvs[i] = olduvs[triangles[i]];
            boneWeights[i] = oldBoneWeights[triangles[i]];
            triangles[i] = i;
        }


        mesh.vertices = verts;//更新Mesh顶点  
        mesh.triangles = triangles;//更新索引 
        mesh.uv = uvs;//更新uv信息
        mesh.boneWeights = boneWeights;//更新骨骼信息

        mesh.RecalculateBounds();//重新计算边界  
        mesh.RecalculateNormals();//重新计算法线  
    }

}

将脚本放到任意Editor文件夹中,会在菜单栏看到LowPolyTool/LowPoly选贤,将模型文件拖入场景中并选中,点击LowPoly既可。

注意这里会直接修改原模型文件的数据,所以在修改之前请做好备份。

效果:


这里我只是随便找了一个模型,实际上模型的顶点数越少实现出来的效果会越好,就是所谓的低模。


  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity是一款强大的游戏引擎,可以用于创建各种类型的游戏。其中,人物模型动画Unity中常见的一种开发需求。 首先,我们需要一个人物模型。可以通过购买或者下载免费的人物模型资源,也可以自己进行建模。Unity支持多种3D模型格式,常见的有FBX、OBJ等。将人物模型导入Unity项目中。 接下来,我们需要为人物模型添加动画Unity内置了Animator组件,用于管理和播放动画。在编辑界面中,我们可以创建动画控制器,并将其和人物模型关联起来。动画控制器是一个状态机,可以根据不同的输入切换不同的动画状态。 在动画控制器中,我们可以创建不同的动画状态,并为每个状态指定对应的动画剪辑。动画剪辑是一个包含动画数据的资源,可以使用Unity内置的动画编辑器或第三方工具进行创建。常见的动画剪辑包括行走、跑步、跳跃、攻击等。 除了使用动画剪辑播放动画外,我们还可以通过代码控制人物模型动画。通过Animator组件提供的API,我们可以在脚本中设置动画的各种参数,如播放速度、过渡时间等。这样,我们可以根据游戏逻辑动态地改变人物的动画状态。 最后,在游戏运行时,我们可以通过控制人物模型的移动、跳跃、攻击等操作,来触发对应的动画状态,并播放相应的动画剪辑。这样就实现了Unity人物模型的带动画效果。 总之,Unity提供了丰富的功能来支持人物模型动画开发,包括导入模型、创建动画控制器、编辑动画剪辑、通过脚本控制动画等。开发者可以根据自己的需求和创意,灵活运用这些功能,打造出丰富多样的游戏角色动画

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值