1. 程式人生 > >3dContactPointAnnotationTool開發日誌(六)

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