少有人走的路

勇哥的工业自动化技术网站

unity3d学习(二十一)导入solidworks的模型

勇哥注:

由于unity只能导入fbx格式的3d模型 ,但是solidwoks不能导出为fbx格式,

我们只能让solickworks先导出为中间的格式,再弄到3dsmax中去导出为fbx格式。

这样搞来搞去,事件就变复杂了。

首先就是批量导入导出模形的问题,再就是材质与灯光的问题。

还有一个简单些的问题,就是unity中单位是米,而solidwoks中单位是毫米,你怎么让两者统一。



(一)导入一个设备模型试验一下



下面是solidworks中的显示效果,实际上因为有默认的材质与光照,因此设备看上去非常清晰可见。


image.png


下面是通过中间文件格式stl,最终导出到unity中的效果。

可以看到几个问题:

  1.   三色灯变成一个整体对象,而在solidworks中是由几部分构成的。

  2.  没材质、灯光怎么调都效果不好,设备完全没有辩识度。

  3.  单位不统一,实际上这个设备在unity中的长宽有上千米。

image.png

灯光材质问题没处理好会造成导入到unity中的模形全灰,因为没有材质和光照。

你得自己一个个部件指定材质、以及处理光照,这个工作量就比较可怕了。


(二)让导入的模型单位统一


在solidworks这边,工具-->属性-->文档属性-->单位。

设置如下,导出step格式模型。

image.png


导入3dsmax后,自定义--> 单位设置,改毫米

image.png


3dsmax的fbx导出时,有个设置面板。

其中高级选项中的--》单位中,去掉“自动”的勾选。场景单位转化为毫米。

image.png


在unity中,在资源中右键菜单选择“导入新资产”,选择那个fbx,这个时候会出现设置面板。

把转换单位的那个勾选去掉。

点击应用。

image.png


你现在移动一个零件试下,可以看到单位就是毫米了。

比原来的单位为米的时候,要方便得多了。

image.png

用一段脚本测量那块大板的长宽高:

    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,这个是跟实际相符的。

image.png



发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864