【游戏资源】获取免费开源的人物模型,为obj fbx人物模型绑定人形骨骼和人形动画,并导入到unity中使用——mixamo的使用介绍

前言

其实前面我已经推荐了几种获取人物模型的方法:
1、【unity小技巧】下载原神模型,在Blender中PMX模型转FBX模型,导入到Unity中实现基于光照模型的内置和URP卡通渲染
2、免费简单的制作3D卡通建模——Fuse软件和Readyplayer的使用介绍
3、【推荐100个unity插件之25】Vroid二次元建模,unity使用VRM模型,VRM模型转FBX模型,Blender导出FBX模型贴图丢失解决,模型优化删除多余骨骼,URPUniVrm插件的使用

那么如何为人物绑定动画呢?这里就推荐一个网站——mixamo。其实我很久之前就已经在用mixamo了,最近才打算整理出来。mixamo的功能非常强大,它也免费提供了一些人物模型,还可以为你的人物模型添加动画,甚至用于绑定修复人物骨骼,也可以用于将obj模型转换为fbx模型。

一、地址

网址:https://www.mixamo.com/

打开Mixamo后进入如下界面,这里有一些3D角色和动画可供免费使用。
在这里插入图片描述

在这里插入图片描述

二、自动为3D人物模型绑定骨骼

1、注意事项

1.1 注意上传的模型仅支持FBX、OBJ两种格式

在这里插入图片描述

1.2 导入的模型不带骨骼,或者是带mixamo配置的标准人形骨骼

比如我导入一个有骨骼的模型
在这里插入图片描述
会报错:Sorry,unable to map your existing skeleton.
在这里插入图片描述

2、上传没有骨骼的3D角色

点击这里即可上传
在这里插入图片描述
选择我们的3D模型即可
在这里插入图片描述
点击下一步
在这里插入图片描述
按介绍示意图,配置人物不同位置的关节
在这里插入图片描述
点击下一步
在这里插入图片描述
导出模型
在这里插入图片描述
比如我导出到unity中,一般就按下面的参数配置,点击导出即可(其他参数下面会具体介绍)
在这里插入图片描述

三、下载单动画

选择一个动画,可以在右边对参数进行调整。我们可以尝试调整这里的参数,比如姿态要不要挺拔一点,要不要有呼吸动作,点击rest就可以把这些数值重置到默认值
在这里插入图片描述
我们调整好了以后,可以点击这里的download
在这里插入图片描述
这里有四个选项:

  • 第一个Format是格式,我们选择FBX for Unity,FBX是非常好用的一种3D文件格式,通常我们只选择这个
    在这里插入图片描述

  • 第二个skin,表示你要下载的FBX文件中,选择With Skin(有皮肤)包含你这个模型的外观,如果想仅仅导出动画就选择Without Skin(没有皮肤)
    在这里插入图片描述

  • 第三个Frames per Second帧率,不用担心写十帧的动画在六十帧或一百二十帧的游戏里会显得卡顿
    在这里插入图片描述
    unity会使用一些插值算法自动补全另外的几十帧,当然使用差值算法计算出的动画肯定没有原动画精准度高,所以如果你对动画的精确度有要求的话可以选择六十帧,通常这里我们都选择三十帧,因为这样动画文件会比较小

    我们在制作游戏时常常要做这样的取舍,你需要让动画精准还是要让游戏的内存占用率小,你是想让游戏更加流畅还是想让画面更加酷炫

  • 第四个Keyframe Reduction是帧压缩,意思就是设置一个阈值,如果两帧之间的变化小手这个阈值的话,就把其中一帧删除掉,我们通常不需要所以选择none
    在这里插入图片描述

四、下载动作包

我们就找一个动画包,右边这里会给我们播放动作包里的所有动画
在这里插入图片描述
我们点击下载
在这里插入图片描述

  • 如果我们需要角色的话,可以在这里选择模型姿态,比如T-pose或者这个FBX被上传时的姿态,如果不需要角色,就可以选择no character
    在这里插入图片描述

五、mixamo下载的动画导入到unity中最佳实战

我们知道,人形动画在unity中可以复用,但是这远没有说的这么简单。如果你对unity模型的知识还不是很熟悉,可以先去看看我写的这篇专栏:【unity游戏开发——模型篇】

比如我们直接随便从mixamo下载一个不带模型的人形动画
在这里插入图片描述

在这里插入图片描述
导入到unity中,并设置动画为人形
在这里插入图片描述
在unity中预览动画看看效果,可以看到角色的脚歪了
在这里插入图片描述
我们查看骨骼,看看原因
在这里插入图片描述
可以看到模型的骨骼是歪的,那怎么办呢?
在这里插入图片描述
其实我们只需要在导出mixamo动画时,至少需要导出一份带人物骨骼的模型资源,它作用仅仅是让我们的其他mixamo动画Copy From Other Avatar它的Avatar骨骼

比如我再从mixamo随便导入一个带模型的动画,将他设置为人形,并创建出Avatar骨骼
在这里插入图片描述
这时我们可以复制出它创建的Avatar骨骼,然后就可以删除这个模型了
在这里插入图片描述
然后其他的mixamo动画,全部复用这个Avatar骨骼
在这里插入图片描述
预览动画,再看看效果,可以看到前面的动画问题被修复了
在这里插入图片描述

当然,我们也可以选择,直接手动修复动画骨骼的方式来解决这个问题,但是对比这种方式肯定会比较麻烦,具体可以参考:【unity小技巧】修复unity导入人形动画骨骼不配的问题——如何操作和修正人物骨骼


专栏推荐

地址
【unity游戏开发入门到精通——C#篇】
【unity游戏开发入门到精通——unity通用篇】
【unity游戏开发入门到精通——unity3D篇】
【unity游戏开发入门到精通——unity2D篇】
【unity实战】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】
【unity游戏开发——模型篇】
【unity游戏开发——InputSystem】
【unity游戏开发——Animator动画】
【unity游戏开发——UGUI】
【unity游戏开发——联网篇】
【unity游戏开发——优化篇】
【unity游戏开发——shader篇】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述

### 解决Unity中导入Mixamo模型后显示为白模的问题 当遇到从Mixamo下载的模型Unity中呈现白色的情况时,通常是因为材质丢失或纹理路径错误所引起[^1]。 #### 材质丢失的原因分析 一种常见原因是,在下载过程中未正确选择带有材质选项的文件格式。例如,虽然选择了`FBX for Unity`作为导出格式,但如果忽略了勾选包含贴图资源的相关设置,则可能导致最终得到的模型缺少必要的视觉属性定义[^2]。 #### 纹理路径配置不当的影响 另一种可能性在于,即使成功获取到了完整的素材包(包括网格、骨架以及对应的材质),但在实际工程环境中未能妥善处理外部依赖关系——特别是对于那些位于不同目录下的图片文件而言。一旦链接断裂或是相对位置发生改变,都会使得Shader无法正常采样到预期的颜色信息而呈现出纯白色的外观效果[^3]。 #### 实际解决方案 为了有效应对上述情况带来的挑战,可以采取如下措施: - **重新下载带材质量高的版本** 访问Mixamo平台再次尝试获取目标对象,特别留意确保已激活所有可用的附加项,尤其是涉及表面细节描述的部分。这一步骤有助于从根本上规避因数据不全引发的一系列后续麻烦。 - **手动修复Material Assignments** 若现有资产确实存在缺陷,则需进入Inspector面板逐一审查各个Mesh Renderer组件的状态。通过指定恰当的标准Surface Shader实例关联正确的Texture字段值来重建原有的美术风格表现力。 - **检查Import Settings一致性** 验证当前项目的Asset Importer设定是否遵循官方推荐的最佳实践指南。具体来说就是确认Model Tab下各项参数均处于合理范围内;同时也要关注Materials标签页里关于Generate Colliders、Swap UVs等开关状态的选择是否合适。 ```csharp // 示例代码用于批量更新场景内所有GameObjects上的Renderer Materials using UnityEngine; public class FixWhiteModels : MonoBehaviour { void Start() { GameObject[] allObjs = FindObjectsOfType<GameObject>(); foreach (GameObject obj in allObjs) { Renderer rendererComponent = obj.GetComponent<Renderer>(); if (rendererComponent != null && !rendererComponent.material.mainTexture) { // Apply a default material or load specific textures here as needed. Debug.Log($"Applying new materials to {obj.name}"); Material fixedMat = Resources.Load<Material>("Path_To_Your_Material"); rendererComponent.sharedMaterial = fixedMat; } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向宇it

创作不易,感谢你的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值