Unity 如何正确的proe怎么缩放模型型

分享==进步
Unity3D导入3DMax模型缩放单位问题深入分析
“Unity3D导入3DMax制作的模型存在100倍缩放比例”,各Unity3D开发者基本都听过吧。
怎么保证3DMax中制作的1m导入Unity3D后还是1m?
为什么会存在100倍缩放问题?
怎么保证3DMax中制作的1m导入Unity3D后还是1m?
3DMax单位设置
按如上单位设置后,每个格子是0.1m的大小。要制作一个1m的模型得占10个格子,如下为一个边长1m的盒子:
通过以上设置后,3DMax里制作的1m导入Unity3D也是1m,继续分析原因
为什么会存在100倍缩放问题?
解释这个问题前,先明白几个概念
3DMax“显示单位”和“系统单位”有什么关系
显示单位:决定3DMax主面板显示时使用的尺寸单位,下面是分别设置为“厘米”和“米”时的情况数值暂不用关心,看数值后面的单位cm和m,这就是显示单位的设置
系统单位:与“显示单位”一起决定,最终存储时记录的单位值(暂且叫“存储单位”吧)。存储单位=显示单位/系统单位做个1m的box:显示单位设置为1m时,系统单位为1m 存储单位为1,系统单位为1cm 存储单位为100
做个1cm的box:显示单位设置为1cm时,系统单位为1cm 存储单位为1,系统单位为0.1mm 存储单位为100
做个1m的box:显示单位设置为1cm时,系统单位为1cm 存储单位为100,系统单位为0.1mm 存储单位为10000
“显示单位”和“系统单位”对Unity3D的导入有何影响?
上面所说“存储单位”最终会记录到模型文件,Unity3D导入时将按“1存储单位=1m”的比例显示模型,举两组数据:
显示单位1m,系统单位1m,存储单位1,Unity3D中显示0.01m显示单位1m,系统单位1cm,存储单位100,Unity3D中显示1m
不是说“1存储单位=1m”吗,怎么缩小了100倍?
看下Unity3D导入模型的默认设置
缩放因子为0.01,导入Unity3D的模型默认情况下会被缩小100倍。
要使3DMax导出的模型在导入Unity3D时默认1m=1m,关键得让模型中记录的“存储单位”=100。
比如这几种方式都能得到存储单位为100的模型:
显示单位1m,系统单位1cm,制作一个1m的模型
显示单位1cm,系统单位0.1mm,制作一个1cm的模型
显示单位1cm,系统单位1cm,制作一个1m的模型
只要符合以下公式(模型尺寸/显示单位)*(显示单位/系统单位)=100,化简一下为
模型尺寸/系统单位=100但要达到“3DMax中创建一个1m的模型导入Unity3D也是1m”的要求,那么模型尺寸=1m 已经固定,代入公式得 系统单位=1cm。所以3DMax里系统单位要设置为cm,显示单位怎么设置都无所谓。
要保证“3DMax中创建一个1m的模型导入Unity3D也是1m”,只需要把3DMax中系统单位设置为cm
真不明白为什么Unity3D要把模型导入默认缩放因子设置为0.01。
不过有以上公式这些都不是问题,如果Scale Factor = 1只需要保证模型记录的存储单位为1,即“模型尺寸/系统单位=1”-&“1m/系统单位=1”-&系统单位=m
其实unity中没有所谓的单位,也没有显示单位名称,所以,如果把里面的unity中的1m换成为unity中的一个最小单位方格可能更好。
另外unity5.0版本帮我们解决了关于max单位和unity单位的问题。以后只要在max中输入的单位为通用的(如cm、m、mm、km)的,只要显示的长度是1m,那么你导入后,默认显示的效果就是1个方格大小。当然,场景中模型的scale细数可能会有不同而已。
出自:http://blog.dou.li/unity3d-import-3dmax-model-scale.html
没有更多推荐了,在Unity中通过触摸屏幕实现模型的旋转和缩放
在项目中,我们有时要通过触摸屏幕来实现模型的放大缩小以及旋转。这个在AR的制作中是非常常见的,所以下面我们来实现这样的功能。
using UnityE
using System.C
public class ScaleAndRotate : MonoBehaviour {
private Touch oldTouch1;
//上次触摸点1(手指1)
private Touch oldTouch2;
//上次触摸点2(手指2)
void Update()
//没有触摸,就是触摸点为0
if (Input.touchCount &= 0)
//单点触摸, 水平上下旋转
if (1 == Input.touchCount)
Touch touch = Input.GetTouch(0);
Vector2 deltaPos = touch.deltaP
transform.Rotate(Vector3.down * deltaPos.x, Space.World);//绕Y轴进行旋转
//transform.Rotate(Vector3.right * deltaPos.y, Space.World);//绕X轴进行旋转,下面我们还可以写绕Z轴进行旋转
//多点触摸, 放大缩小
Touch newTouch1 = Input.GetTouch(0);
Touch newTouch2 = Input.GetTouch(1);
//第2点刚开始接触屏幕, 只记录,不做处理
if (newTouch2.phase == TouchPhase.Began)
oldTouch2 = newTouch2;
oldTouch1 = newTouch1;
//计算老的两点距离和新的两点间距离,变大要放大模型,变小要缩放模型
float oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position);
float newDistance = Vector2.Distance(newTouch1.position, newTouch2.position);
//两个距离之差,为正表示放大手势, 为负表示缩小手势
float offset = newDistance - oldD
//放大因子, 一个像素按 0.01倍来算(100可调整)
float scaleFactor = offset / 100f;
Vector3 localScale = transform.localS
Vector3 scale = new Vector3(localScale.x + scaleFactor,
localScale.y + scaleFactor,
localScale.z + scaleFactor);
//在什么情况下进行缩放
if (scale.x &= 0.05f && scale.y &=0.05f && scale.z &= 0.05f)
transform.localScale =
//记住最新的触摸点,下次使用
oldTouch1 = newTouch1;
oldTouch2 = newTouch2;
好了,这样我们就可以通过单指来进行旋转,双指来进行模型的缩放,如果我们在手势判断上有改变的话。可以依据以上的进行修改。
原文地址:http://blog.csdn.net/caojianhua1993/article/details/
没有更多推荐了,模型只往一边放大缩小怎么解决【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:87,596贴子:
模型只往一边放大缩小怎么解决收藏
想用一个圆柱模拟激光射出来时的情形,也就是一个圆柱体从激光器口沿着轴线放大,看起来就像是发射出来,可是我现在的脚本只能让它沿着圆柱轴线两边都在伸长,怎么修改脚本可以只让一边伸长啊?
将轴心放一端 不要居中。
登录百度帐号2添加评论分享收藏感谢收起写回答unity5怎样正确导入FBX,模型大小为什么会发生变化? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。35被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答2添加评论分享收藏感谢收起}

我要回帖

更多关于 solidworks模型缩放 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信