1

我试图在 3D 空间中的其他 2 个点之间找到相等距离的点。例如,我的场景中有 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 空间中的两个点的线上。

谁能指出我正确的方向?

4

1 回答 1

2

当您计算两点之间的距离时,您会得到一个scalar,本质上是一个数字,即两点之间的距离单位数。但是你没有得到的是从一个到另一个的方向。那将是一个向量。要获取向量,请更改此行:

distance = point_1.distanceTo(point_2)

对此:

difference = point_2 - point_1

现在,您获得的不是两个点之间的单个单位距离,而是一个具有三个轴中每个轴所需距离的向量。

几乎奇迹般地,如果您将变量替换distancedifference

于 2016-02-09T06:23:29.120 回答