勇哥注:
由于unity只能导入fbx格式的3d模型 ,但是solidwoks不能导出为fbx格式,
我们只能让solickworks先导出为中间的格式,再弄到3dsmax中去导出为fbx格式。
这样搞来搞去,事件就变复杂了。
首先就是批量导入导出模形的问题,再就是材质与灯光的问题。
还有一个简单些的问题,就是unity中单位是米,而solidwoks中单位是毫米,你怎么让两者统一。
(一)导入一个设备模型试验一下
下面是solidworks中的显示效果,实际上因为有默认的材质与光照,因此设备看上去非常清晰可见。
下面是通过中间文件格式stl,最终导出到unity中的效果。
可以看到几个问题:
三色灯变成一个整体对象,而在solidworks中是由几部分构成的。
没材质、灯光怎么调都效果不好,设备完全没有辩识度。
单位不统一,实际上这个设备在unity中的长宽有上千米。
灯光材质问题没处理好会造成导入到unity中的模形全灰,因为没有材质和光照。
你得自己一个个部件指定材质、以及处理光照,这个工作量就比较可怕了。
(二)让导入的模型单位统一
在solidworks这边,工具-->属性-->文档属性-->单位。
设置如下,导出step格式模型。
导入3dsmax后,自定义--> 单位设置,改毫米
3dsmax的fbx导出时,有个设置面板。
其中高级选项中的--》单位中,去掉“自动”的勾选。场景单位转化为毫米。
在unity中,在资源中右键菜单选择“导入新资产”,选择那个fbx,这个时候会出现设置面板。
把转换单位的那个勾选去掉。
点击应用。
你现在移动一个零件试下,可以看到单位就是毫米了。
比原来的单位为米的时候,要方便得多了。
用一段脚本测量那块大板的长宽高:
void Start() { Bounds bounds = GetComponent<Renderer>().bounds; //获取长度、宽度和高度: float length = bounds.size.x; float width = bounds.size.y; float height = bounds.size.z; Debug.Log("Length: " + length); Debug.Log("Width: " + width); Debug.Log("Height: " + height); }
可以看到长宽都是1200mm,这个是跟实际相符的。

