3dContactPointAnnotationTool开发日志(二二)
??昨天是實(shí)現(xiàn)了顯示GameObject子GameObject的選項(xiàng)卡功能,今天就是要讓statusPanel可以控制它們的位置、旋轉(zhuǎn)和縮放了。
??沒什么難的,對應(yīng)選項(xiàng)卡綁定上對應(yīng)的物體或子物體即可。
??刪除操作的話只需要在刪除當(dāng)前選項(xiàng)卡之前遞歸地刪除它的子孫選項(xiàng)卡和對應(yīng)的模型即可,隱藏的話也是遞歸地將他們的active設(shè)置為false。
??由于smpl模型只有一個(gè)skinnedMeshRenderer,然而網(wǎng)格的各個(gè)部分是綁定在它的子對象中的,如何獲得各種變換后對應(yīng)網(wǎng)格的頂點(diǎn)坐標(biāo)呢?
??使用BakeMesh方法即可,用法是先new一個(gè)mesh作為容器,然后調(diào)用該方法就能把經(jīng)過各種亂七八糟變換后的mesh的snapshot(快照,就是網(wǎng)格渲染的樣子,也是Mesh類型)存入括號里的mesh。
??比如我的OnClick方法是這么寫的,就是點(diǎn)擊按鈕后會(huì)在網(wǎng)格的每個(gè)頂點(diǎn)坐標(biāo)生成一個(gè)半徑為0.1的球:
??變換前:
??只旋轉(zhuǎn)子對象:
??點(diǎn)擊按鈕:
??不過對最外層的變換貌似只響應(yīng)scale變換,position和rotation的變換卻沒反應(yīng),但是對于直接導(dǎo)入的obj模型是這三類屬性都不響應(yīng)的,真奇怪。
??沒辦法,只能禁用最外層的scale編輯了...
??smpl模型也不能增加三角形數(shù)量,于是也把smpl模型三角形數(shù)量編輯給禁了。
??關(guān)節(jié)點(diǎn)的話只能編輯旋轉(zhuǎn),編輯position的話會(huì)產(chǎn)生很鬼畜的結(jié)果,所以把關(guān)節(jié)點(diǎn)的position和scale也禁了??傊睦锊粚睦?。
??也相應(yīng)地把計(jì)算接觸點(diǎn)那里改成適應(yīng)skinnedMeshRenderer的版本,來看看效果吧:
??先調(diào)好人的姿勢以及和椅子的位置:
??然后計(jì)算接觸點(diǎn):
??看上去還挺正常的。不過接觸點(diǎn)貌似太黑了點(diǎn),要是紅紅的就好看一些,應(yīng)該是陰影的問題。
??于是加了這兩行代碼:
??然而還是有些接觸點(diǎn)是黑色的,這些都是卡在另一個(gè)模型里沒有光線照射到的球:
??應(yīng)該能夠用設(shè)置layer的方式來解決這個(gè)問題,給接觸點(diǎn)設(shè)置為單獨(dú)的層,然后新建light再設(shè)置light的culling mask,只照射接觸點(diǎn)所在層就行了:
??最后用一個(gè)哲♂學(xué)場景測一下效果:
??可以發(fā)現(xiàn)所有接觸點(diǎn)在光線的照射下熠熠生輝,我成功地驅(qū)逐了黑暗!
轉(zhuǎn)載于:https://www.cnblogs.com/yaoling1997/p/10158614.html
總結(jié)
以上是生活随笔為你收集整理的3dContactPointAnnotationTool开发日志(二二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 远程桌面与本地桌面实现文件传输
- 下一篇: LNMP安装目录及配置文件位置