Повернуть к лицу вектор в Гудини с питоном - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь настроить геометрию в Гудини в том же направлении, что и нормаль на линии. Я получаю нормаль как вектор с величиной 1, а затем использую формулу angle = arccos ((x dot y) / (magnitude x * magnitude y). Чтобы получить угол поворота объекта, а затем умножить на 180, чтобы преобразовать его в градусах. по какой-то причине это не дает последовательного результата.

Я делаю что-то явно не так с моей математикой? Я новичок в Гудини, поэтому я не уверен, что могу что-то упустить из-за среды, которая усложнит это.

Вот код Python, который я использую.

#normalize and store as vector3
currentNormal = hou.Vector3(currentNormal).normalized()
previousNormal = hou.Vector3(previousNormal).normalized()

#get dot product and magnitudes
dotProd = numpy.dot(previousNormal, currentNormal)
previousMagnitude = numpy.sqrt((previousNormal[0]**2) + (previousNormal[1]**2) + (previousNormal[2]**2))
currentMagnitude = numpy.sqrt((currentNormal[0]**2) + (currentNormal[1]**2) + (currentNormal[2]**2))

nextLocationRotate = numpy.arccos(dotProd/(previousMagnitude * currentMagnitude))

nextLocationRotate = [0.0, nextLocationRotate*180, 0.0]

Я пытаюсь вращаться вокруг оси y.

...