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



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
本帖最后由 勇哥,很想停止 于 2024-11-07 17:28:02 编辑

发表评论:

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

会员中心
搜索
«    2025年3月    »
12
3456789
10111213141516
17181920212223
24252627282930
31
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864