擅长:python、mysql、java
<p>我希望我能正确地理解你是在测试一个物体的顶点!在</p>
<p>我能想到的一些事情可能会减慢您的代码:</p>
<p><code>xform</code>可能是获取点位置的较慢方法。在</p>
<p><code>distance = math.sqrt(math.pow(c2[0] - c1[0], 2) + math.pow(c2[1] - c1[1], 2) + math.pow(c2[2] - c1[2], 2))</code>
这可能是另一个罪魁祸首。通常在计算距离时,平方根会减慢速度。解决这个问题的一种方法是计算平方距离,这样就完全避免了使用<code>math.sqrt</code>。在</p>
<pre><code>cmds.select(meshToCek)
mel.eval("ConvertSelectionToVertices")
</code></pre>
<p>这可能不会减慢速度,但在内存中获取顶点可能会更好。在</p>
<p>我尝试了一种严格的mayaapi方法,性能似乎更好。也许有更好的方法来优化,但我们在这里取得了一些进展!在</p>
^{pr2}$
<p><code>mfn_mesh_generator</code>是一个python生成器,可以循环使用场景中的所有<code>MFnMesh</code>对象。如果你想用另一种方式收集你的网格,你可以随意改变它(我这样做只是为了把东西分开,使它更通用)。幸运的是,api的<code>MPoint</code>对象有一个方法<code>distanceTo</code>,可以计算另一个{<cd6>}之间的距离!另外,<code>MFnMesh</code>有一个方法可以用<code>getPoints</code>一下子得到所有顶点。这比一个接一个地得到优化。在</p>
<p>在5个多球体的场景中,大约需要<code>0.667850017548</code>秒。与您的方法相同的场景出现在大约<code>12.1129710674</code>秒。相当不错的速度提升!在</p>
<p>希望这对你有所帮助并给你一些想法。在</p>