【小沐学Unity3d】Unity3d导入3D模型 您所在的位置:网站首页 unity模型导入设置方法 【小沐学Unity3d】Unity3d导入3D模型

【小沐学Unity3d】Unity3d导入3D模型

2024-07-07 01:19| 来源: 网络整理| 查看: 265

文章目录 1、简介1.1 标准文件格式1.2 专有文件格式1.3 从 Autodesk® 3ds Max® 导入对象1.4 从 Blender 导入对象 2、测试2.1 新建项目2.2 导入fbx2.2 手动调整相机2.3 脚本控制相机 结语 在这里插入图片描述

1、简介

Unity 支持多种标准和专有模型文件格式。 Unity 内部使用 .fbx 文件格式作为其导入链。最佳做法尽可能使用 .fbx 文件格式,并且不应在生产中使用专有文件格式。 在这里插入图片描述

1.1 标准文件格式

Unity 可读取以下标准 3D 文件格式:

.fbx.dae (Collada).dxf.obj. 1.2 专有文件格式

您不应在生产中使用这些文件格式,应尽可能导出为 .fbx 文件格式。但是,有时您可能需要将这些文件作为项目的一部分包含在内。

Unity 可以从以下 3D 建模软件中导入专有文件,然后将其转换为 .fbx 文件:

Autodesk MayaBlenderModoCheetah3D

以下应用程序不使用 .fbx 作为中间格式。Unity 必须先将其转换为 .fbx 文件之后再导入编辑器:

SketchUpSpeedTreeAutodesk® 3ds Max® 1.3 从 Autodesk® 3ds Max® 导入对象

Unity 通过 FBX 格式导入 Autodesk® 3ds Max® 文件 (.max),支持以下内容:

所有节点以及位置、旋转和缩放;轴心点和名称也会导入网格以及顶点颜色、法线和一个或多个 UV 集材质以及漫射纹理和颜色。每个网格多种材质动画基于骨骼的动画变形目标(混合形状)可见性 在这里插入图片描述 1.4 从 Blender 导入对象

Unity 通过 FBX 格式导入 Blender (.blend) 文件,支持以下内容:

所有节点以及位置、旋转和缩放;轴心点和名称也会导入网格以及顶点、多边形、三角形、UV 和法线骨骼蒙皮网格动画 在这里插入图片描述 2、测试 2.1 新建项目

在这里插入图片描述 进入u3d的项目的场景显示: 在这里插入图片描述

2.2 导入fbx

导入模型资源到u3d里。 在这里插入图片描述 将外面文件夹的模型文件拖拽到assets的根目录里面,如下: 在这里插入图片描述 将assets里的duck模型拖拽到u3d左侧的层次树上。 在这里插入图片描述 此时在中间的三维场景中出现了一只小黄鸭。 在这里插入图片描述 此时是编辑界面,在编辑界面观察模型的鼠标操作如下: (1) 旋转:按住鼠标右键移动 (2) 平移:按住鼠标中键移动 (3) 缩放:滚动鼠标中键

2.2 手动调整相机

编辑状态下: 在这里插入图片描述 鼠标双击左边的层级树上的主相机对象节点后: 在这里插入图片描述 我们把主相机的位置移动,让它离鸭子近一点。 在这里插入图片描述 点击运行按钮之后: 在这里插入图片描述 比较主相机的画面和运行后的画面,会发现我们看到的鸭子的角度和距离不同,肯定是相机不同。但是我们没有修改相机呀,为啥呢?

原来模型自带了一个固定相机。无论场景的主相机怎么变化,场景运行状态下的视角都不变。

资源界面可以看见这个模型自带相机对象: 在这里插入图片描述 对象层级树上也可以看见这个相机对象: 在这里插入图片描述 我们尝试删掉鸭子模型自带的相机, 在这里插入图片描述 或者取消鸭子自带相机的选择。都可以。 在这里插入图片描述 然后点击运行按钮。 在这里插入图片描述 现在和主相机的画面一样了。 在这里插入图片描述

2.3 脚本控制相机

现在我们回顾上面的内容: (1)新建项目。 (2)导入模型资源到u3d里。 (3)将外面文件夹的模型文件拖拽到assets的根目录里面 (4)将assets里的duck模型拖拽到u3d左侧的层次树上。 (5)删除鸭子自带的相机对象。

现在我们开始脚本控制相机的相关学习。小沐同学加油。 鼠标左键点击层次树上的主相机节点。 在这里插入图片描述 右边的属性窗口出现主相机的相关参数。 在这里插入图片描述 鼠标点击Add Component按钮,出现下拉框,在里面找到New Script。 鼠标再点击New Script, 出现脚本新建的界面。 添加一个脚本对象名字:MouseOperationCameraRotationFovMove 然后点击下面的按钮“Create And Add” 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 然后属性框上出现了一个脚本组件。Asset资源框也出现了一个脚本文件。 在这里插入图片描述 鼠标双击脚本文件,弹出visual studio的代码编辑界面。 在这里插入图片描述 visual studio的代码编辑界面,会自动生成一部分默认代码,如下: 在这里插入图片描述 将任务文件夹内的相同脚本文件的内容复制进去。 在这里插入图片描述 代码如下:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class MouseOperationCameraRotationFovMove : MonoBehaviour { public enum MouseState { None, MidMouseBtn, LeftMouseBtn } private MouseState mMouseState = MouseState.None; private Camera mCamera; private void Awake() { mCamera = GetComponent(); if (mCamera==null) { Debug.LogError(GetType()+"camera Get Error ……"); } GetDefaultFov(); } private void LateUpdate() { CameraRotate(); CameraFOV(); CameraMove(); } //旋转最大角度 public int yRotationMinLimit = -20; public int yRotationMaxLimit = 80; //旋转速度 public float xRotationSpeed = 250.0f; public float yRotationSpeed = 120.0f; //旋转角度 private float xRotation = 0.0f; private float yRotation = 0.0f; /// /// 鼠标移动进行旋转 /// void CameraRotate() { if (mMouseState == MouseState.None) { //Input.GetAxis("MouseX")获取鼠标移动的X轴的距离 xRotation -= Input.GetAxis("Mouse X") * xRotationSpeed * 0.02f; yRotation += Input.GetAxis("Mouse Y") * yRotationSpeed * 0.02f; yRotation = ClampValue(yRotation, yRotationMinLimit, yRotationMaxLimit);//这个函数在结尾 //欧拉角转化为四元数 Quaternion rotation = Quaternion.Euler(-yRotation, -xRotation, 0); transform.rotation = rotation; } } //fov 最大最小角度 public int fovMinLimit = 25; public int fovMaxLimit = 75; //fov 变化速度 public float fovSpeed = 50.0f; //fov 角度 private float fov = 0.0f; void GetDefaultFov() { fov = mCamera.fieldOfView; } /// /// 滚轮控制相机视角缩放 /// public void CameraFOV() { //获取鼠标滚轮的滑动量 fov += Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * 100 * fovSpeed; // fov 限制修正 fov = ClampValue(fov,fovMinLimit, fovMaxLimit); //改变相机的 fov mCamera.fieldOfView = (fov); } float _mouseX = 0; float _mouseY = 0; public float moveSpeed = 1; /// /// 中键控制拖动 /// public void CameraMove() { if (Input.GetMouseButton(2)) { _mouseX = Input.GetAxis("Mouse X"); _mouseY = Input.GetAxis("Mouse Y"); //相机位置的偏移量(Vector3类型,实现原理是:向量的加法) Vector3 moveDir = (_mouseX * - transform.right + _mouseY * - transform.forward); //限制y轴的偏移量 moveDir.y = 0; transform.position += moveDir * 0.5f * moveSpeed; } else if (Input.GetMouseButtonDown(2)) { mMouseState = MouseState.MidMouseBtn; Debug.Log(GetType() + "mMouseState = " + mMouseState.ToString()); } else if (Input.GetMouseButtonUp(2)) { mMouseState = MouseState.None; Debug.Log(GetType() + "mMouseState = " + mMouseState.ToString()); } } //值范围值限定 float ClampValue(float value, float min, float max)//控制旋转的角度 { if (value 360) value -= 360; return Mathf.Clamp(value, min, max); } }

然后切换到unity3d界面,u3d自动编译刚才的脚本。 鼠标点击unity最上面的运行按钮。 在这里插入图片描述 此时会发现鼠标可以控制相机变化,观察鸭子的不同角度了。 小沐同学的任务学习结束。

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭ 如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O??? 如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡) 感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有