簡體   English   中英

使用 python/API 在 Maya 中查找特定半徑內的頂點

[英]Finding vertices within a certain radius in maya using python/API

我試圖在網格上但在半徑內找到最近的頂點。 這是為了避免循環遍歷所有頂點,因為這很耗時。 例如,我有 2 件具有不同頂點數的襯衫,我試圖在網格 1 的右袖上的網格 2 的右袖上找到與頂點 1 最接近的頂點。 我不想遍歷袖子之外的頂點,因為從邏輯上講,沒有頂點足夠接近。 我知道假設可能有其他頂點更近,但對於我正在尋找的用法,我不認為這是一個問題。

我有代碼來循環遍歷頂點並獲得最近的點,但是如果網格的頂點數很高,則即使使用 API 也需要很長時間。

Maya 中是否有一個函數可以讓您根據半徑限制頂點? 或者關於如何編寫可以做到這一點的函數的任何提示?

您可以使用節點nearestPointOnMesh。 在 Maya API 中,您可以查找可以進行光線投射的 MFnMesh::closestIntersection 類( 點的查詢位於網格內Maya python api

vtx = 'shirt1.vtx[0]'
pos = cmds.pointPosition(vtx)
m = 'shirts2'
objShape = cmds.listRelatives(m, ni=True, type='mesh')[0]
node = cmds.createNode('nearestPointOnMesh')
cmds.connectAttr(objShape + ".worldMesh", node + ".inMesh")
cmds.setAttr(node + ".inPosition", type = 'double3', *pos)
target_pos = cmds.getAttr(node + '.position')[0]
face = cmds.getAttr(node + ".nearestFaceIndex")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM