日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3dContactPointAnnotationTool开发日志(二二)

發布時間:2025/7/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3dContactPointAnnotationTool开发日志(二二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??昨天是實現了顯示GameObject子GameObject的選項卡功能,今天就是要讓statusPanel可以控制它們的位置、旋轉和縮放了。
??沒什么難的,對應選項卡綁定上對應的物體或子物體即可。
??刪除操作的話只需要在刪除當前選項卡之前遞歸地刪除它的子孫選項卡和對應的模型即可,隱藏的話也是遞歸地將他們的active設置為false。
??由于smpl模型只有一個skinnedMeshRenderer,然而網格的各個部分是綁定在它的子對象中的,如何獲得各種變換后對應網格的頂點坐標呢?
??使用BakeMesh方法即可,用法是先new一個mesh作為容器,然后調用該方法就能把經過各種亂七八糟變換后的mesh的snapshot(快照,就是網格渲染的樣子,也是Mesh類型)存入括號里的mesh。
??比如我的OnClick方法是這么寫的,就是點擊按鈕后會在網格的每個頂點坐標生成一個半徑為0.1的球:

public void OnClick() {Mesh mesh= new Mesh();smr.BakeMesh(mesh);foreach(var item in mesh.vertices){var a=GameObject.CreatePrimitive(PrimitiveType.Sphere);a.transform.position = item;a.transform.localScale = new Vector3(0.1f,0.1f,0.1f);} }

??變換前:

??只旋轉子對象:

??點擊按鈕:

??不過對最外層的變換貌似只響應scale變換,position和rotation的變換卻沒反應,但是對于直接導入的obj模型是這三類屬性都不響應的,真奇怪。
??沒辦法,只能禁用最外層的scale編輯了...
??smpl模型也不能增加三角形數量,于是也把smpl模型三角形數量編輯給禁了。
??關節點的話只能編輯旋轉,編輯position的話會產生很鬼畜的結果,所以把關節點的position和scale也禁了??傊睦锊粚睦?。

??也相應地把計算接觸點那里改成適應skinnedMeshRenderer的版本,來看看效果吧:
??先調好人的姿勢以及和椅子的位置:


??然后計算接觸點:


??看上去還挺正常的。不過接觸點貌似太黑了點,要是紅紅的就好看一些,應該是陰影的問題。
??于是加了這兩行代碼:

//不產生陰影也不接收陰影 mr.receiveShadows = false; mr.shadowCastingMode =UnityEngine.Rendering.ShadowCastingMode.Off;

??然而還是有些接觸點是黑色的,這些都是卡在另一個模型里沒有光線照射到的球:

??應該能夠用設置layer的方式來解決這個問題,給接觸點設置為單獨的層,然后新建light再設置light的culling mask,只照射接觸點所在層就行了:

??最后用一個哲♂學場景測一下效果:





??可以發現所有接觸點在光線的照射下熠熠生輝,我成功地驅逐了黑暗!

轉載于:https://www.cnblogs.com/yaoling1997/p/10158614.html

總結

以上是生活随笔為你收集整理的3dContactPointAnnotationTool开发日志(二二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。