[SketchUp奇技淫巧]#006. 相机剪切导致显示问题的全网正解

这是一篇我很早就想分享出来的文章,因为这个问题太常见了!也曾困扰过我很久,寻边网络也很难找到满意的解释。本文以两个实际案例遇到的问题为出发点,分析了当前可查阅到解决方案的可行性,同时提出了一个新的方法并做了一个解析实验,尽可能把问题和解决原理阐述清楚。同时抛砖引玉,希望更多朋友也参与进来,共同分享你的探索与发现!

前段时间【微BIM】学友在交流群提出一个问题,如上图右下角是室内模型,左上角很大的室外贴图模型是外景,它们的间隔的距离很长。

再回到室内,会发现距离视角近的地方好像被“剪切”了一样出现破面,导致无法正常编辑室内模型。

还有上一篇做路牌的文章,也出现了这个问题。


问题分析

这是一个在SketchUp中很常见并且历史悠久的问题,相信大家都遇到过。在互联网中,可以得到的答案大概为以下几点:

  1. 模型远离原点
  2. 有垃圾图形
  3. 模型尺寸太大或者太小
  4. 相机视野(视角)太大
  5. 利用平行投影查看

当然国内一些讲师博客也纷纷转载,时间甚至可追溯到2011年:

(主编:为维护SketchUp圈子的和谐气氛,此处隐去两个博客文章的链接)

这么多年过去了,SketchUp也马上要步入2020版本,按照目前可轻易查到的答案,问题真的能够解决吗? 针对上面提到的答案可分为两类:

  1. 1/2/3其实说的是一回事:距离远点很远的地方还有模型,但SU显示距离似乎有限制导致显示不完全;
  2. 答案4/5讲的都是视角大小的调整。

回到现在遇到的问题,它们有一个共同的特点,就是很远处都有模型,但这两个案例都是有用的模型不可能删除它们;至于视野方面通常也是特意设置好的,也不会随意变动。因此AB两类解决方案此时都行不通。


解决方案

1.在Window菜单中启动Ruby Console(Ruby控制台),输入代码Sketchup.send_action 10624后回车,调出相机参数面板。

面板信息量比较多,包含了相机位置、视野、视口长宽信息、模型距离等。

2.勾选Force,然后把Near的数值改小一点,比如3英寸,这样近处的剪切问题就解决了。


验证和分析

现在针对本文要解决问题所用到的参数做一个实验。

1.我把路牌的案例模型做了设置:

A. 相机原点放到坐标原点处,从1可以看出“眼睛”的位置刚好是0,0,0

B. 每间隔1000英寸放置一个路牌,路牌上的数字表示距离原点相机的距离。

2.现在我把Near的数值就改成和第二块路牌相同的距离1000英寸,看看会发生什么。结果显示1000位置的模型出现了剪切现象

3.我们再试着改成2000英寸,果然在2000英寸的模型也发生了剪切!

4. 既然Near是控制近距离的显示,那么后面还有一个参数Far一定是控制远距离显示的。当把Far改成3000英寸,发现3000英寸之外的模型就会被剪切不见。

5.接着通过修改1 EYE的坐标,把相机向前(Y方向)推进1000英寸之后,4000的路牌显示出来,同时3000的路牌被剪切不见

结论

通过上面的实验我们得到了结论:

  1. SketchUp中模型的显示范围是有限的,并且可以通过参数面板的Near和Far参数获取显示范围。
  2. Near参数表示相机可显示模型的最近距离;Far参数表示相机可显示模型的最远距离。
  3. 显示范围是可以通过手动修改的。
  4. 显示范围是绑定到相机(视角)的。

所谓的相机剪切、破面问题,其实就是模型范围超出了显示范围而已。

SketchUp之所以这样设定,推测是避免显示过多的模型对操作的流畅性产生影响而做的优化方案,同时留出了入口给插件开发者以及高级用户做一些定制化的选择。当然,工作中更多的时候是因为导入的CAD文件不规范,很远处有废线或者不必要的模型,很容易造成这样的问题,懂得原理之后,我们就可以按照规律进行问题的排查,迅速地解决设计实践问题