我正在尝试在3D空间中的其他两个点之间找到相等距离的点。例如,我的场景中有2个立方体。我想在这两个球体与Pymel之间的距离相等的地方添加5个(或3个或80个......)定位器。
我可以很容易地找到球体之间的中间点:
import pymel.core as pm
import pymel.core.datatypes as dt
pos_1, pos_2 = pm.selected()
point_1 = dt.Vector(pos_1.getTranslation())
point_2 = dt.Vector(pos_2.getTranslation())
midway_point = (point_1 + point_2) / 2
然而,我似乎无法弄清楚如何在两个球体之间的线上得到多个点。
我试过这样的事情:
import pymel.core as pm
import pymel.core.datatypes as dt
pos_1, pos_2 = pm.selected()
point_1 = dt.Vector(pos_1.getTranslation())
point_2 = dt.Vector(pos_2.getTranslation())
distance = point_1.distanceTo(point_2)
divided_distance = distance / 5
for i in range (1, 5):
position = point_1 + (divided_distance * i)
pm.spaceLocator(position = position, absolute = True)
这会在两个球体之间添加5个定位器,但它们不在连接3D空间中两个点的线上。
有人能指出我正确的方向吗?
答案 0 :(得分:2)
当你计算两点之间的距离时,你得到一个标量,基本上是一个数字,即点相互远离的单位数。但是你没有得到的是从一个到另一个的方向。这将是 vector 。要获取向量,请更改此行:
distance = point_1.distanceTo(point_2)
到此:
difference = point_2 - point_1
现在不是获得两个点之间的单个单位距离,而是获得一个具有三个轴的每个所需距离的向量。
几乎奇迹般地,如果您只是将变量distance
替换为difference