3dContactPointAnnotationTool开发日志(六)

  一种可行的思路就是枚举一个模型的三角面片,然后判断三角形是否与另一个物体相交即可。为了让效果更好我想只渲染模型的线框。
  在网上查了半天好像Unity里都没有自带的方便的渲染线框的方式,我又自己玩了玩发现可以将材质换成unity自带的VR/SpatialMapping/Wireframe。不过看上去模型不是镂空的,只是表面显示了三角面片,要是只有线框就更好了。
1.png
  又回过头看了看,发现Unity用shader显示物体线框提到的方法还挺好的,就是下载一个UCLA Wireframe Shader资源然后导入到项目中。
2.png
  将它提供的wireframe材质拖到模型上,效果还挺不错的。
3.png
  颜色也可以轻松改变,超赞。
4.png
  想在代码里调用就这么写:

meshRenderer.material = new Material(Shader.Find("UCLA Game Lab/Wireframe/Single-Sided"));

  路径名和下图Shader中的一致就行。
5.png

  添加了一个toggle,命名为wireframe,实现了模型网格材质与默认材质间的切换。
6.png
  tag必须先定义后使用。不然会报错。
7.png
  这个是压根没有这个组件,然后获取该组件会报错。虽然它讲的不是很明确,但实际上就是这样。

8.png   试着求了求接触点,通过判断一个模型每个三角面片的点是否在另一个模型里,在的话就画一个球。不过这球都画脑袋上去了,不知道是什么bug。 9.png
posted @ 2018-11-14 09:03  菜鸟少侠  阅读(365)  评论(0编辑  收藏  举报