Перенос point cache данных из Face Robot в 3ds max

Я столкнулся с проблемой переноса point cache данных из Softimage Face Robot в 3ds max, она  заключается в том, что у 3ds max осью,  направленной в верх в world координатах, является ось Z (Z-Up), в то время как у Softimage это ось Y (Y-Up). Если вы записываете point cache данные в Softimage и загружаете их в 3ds max PointCache modifier, то после загрузки данных (из-за несоответствия осей) координаты вершин будут не верными и модель будет казаться перевернутой.

Решить эту проблему можно путем добавления XForm modifier поверх PointCache modifier с последующей коррекцией вращения и позиции XForm modifier gizmo. Сделать это можно вручную, пользуясь привязками.
Что бы автоматизировать этот процесс и избежать ошибок при работе вручную я написал небольшой скрипт, которым вы можете воспользоваться в подобной ситуации.

(
 Y_up_Matrix = (matrix3 [1,0,0] [0,0,1] [0,-1,0] [0,0,0])
 modPanel.addModToSelection (xform())
 fixedMatrix = Y_up_Matrix
 fixedMatrix.row4 = $.transform.row4 *-1
 $.modifiers[#xform].gizmo.transform = fixedMatrix
 )

Данные варианты решения применимы не только при переносе point cache данных из Softimage но и из любого другого пакета с Y-Up осью, например Maya.

Как использовать:

  1. Выделите один объект
  2. Запустите maxscript код

Добавить комментарий