Автор: GOST
Относительно точная привязка кисти.

Полную привякзу кисти определяют две переменные: Actor(Movement).Location и Actor.PrePivot;

Первая переменная: PrePivot отвечает за смещение точки привязки относительно центральной точки объекта, масштабирование и повороты. Она скрыта от пользователя и изменение ее значения возможно только из редактора. Но если подправить в скрипте для класса Actor строчку:

var    vector  PrePivot;   // Offset from box center for drawing.
на
var(Movement) vector  PrePivot;   // Offset from box center for drawing,
то после этой манипуляции, откомпилировав всё, вы получите возможность управлять этой важной точкой не только мышью, но и в default-свойствах объекта вручную. Почему выбран раздел Movement? Да потому, что там находятся Location и Rotation обьекта.
Как оказалось эта манипуляция – не такая уж тривиальная задача особенно в UnrealEd2, поэтому ниже я по шагам описываю порядок действий:
    Далее package – это модуль. Модули могут быть текстурными, системными/скриптовыми, звуковыми или с музыкой (карта – тоже модуль). Соответственно каждый из типов лежит в своём каталоге и обслуживается своим браузером. Что впрочем не мешает в один модуль напихать всё и сразу. :)
  1. Сделайте копию файла Engine.u !!!
  2. Откройте редактор.
  3. В текстурном браузере загрузите модуль с текстурами: LadrStatic.utx. Он требуется для компиляции.
  4. В том же текстурном браузере загрузите модуль Engine.u из каталога System.
  5. В браузере скриптов откройте(загрузите) через меню Open Package... всё тот же модуль Engine.u из каталога System.
  6. Откройте скрипт для класса Actor и сделайте изменения.
  7. Запустите компиляцию.
  8. По успешному окончанию компиляции, в окне браузера скриптов в меню View включите Show Packages, должно раскрыться подокно со списком текущих модулей. Выберите Engine и сохраните.
  9. Закройте редактор.
  10. Расслабтесь. :)
После открывайте редактор и для любого класса порождённого от Actor в default-свойствах в разделе Movement будет доступен вектор PrePivot.
Ложка дёгтя: После всех этих манипуляций Engine.u станет тоньше на семь с небольшим килобайт, что говорит о небольшой потере информации. Поэтому при возникновении глюков с UT надо помнить о копии Engine.u.
Вторая ложка дёгтя: При пропатчивании файла Engine.u операцию надо повторять.
Ну и совсем мелочь: Проверялось на чистом UT с пачтем 420, ну и на всём, что было раньше этого. Впрочем при других вариантах могут возникнуть только проблемы с компиляцией, а именно могут возникнуть ошибки при попытке откомпилировать ссылки на незагруженные модули (вот собственно почему надо было грузить LadrStatic.utx).
Точка привязки - своя для каждой кисти или персонажа. Она определяет также текущий центр масштабирования и поворота. На угол поворота влияния не оказывает. Точка привязки может находиться в центре каркаса (отдельная точка), вне каркаса или на любой его вершине.
При изменении значений точки привязки вручную, точка своё положение в мире не меняет, зато при этом происходит смещение кисти / персонажа, так как переопределяется смещение центра от PrePivot.

Вторая переменная: Movement.Location - положение PrePivot в мире, т.е. текущие координаты точки привязки (X,Y,Z). При изменении координат точка привязки смещается и двигает за собой кисть.

Редактирование мышью:

В редакторе поставить точку привязки на грань  абсолютно точно не получается. Возможно следующее:

  1. Поставить привязку на вершину - левый клик по вершине при выключенном Vertex Editing.
  2. Поставить привяку произвольно (только для плоскости проекции) - правый клик в нужном месте (не должно попадать на кисти и объекты) и во всплывающем меню пункт Pivot. (!!! К сожалению при этом одна из координат будет нулевой)
  3. При нажатой Alt точка привязки драгается левой кнопкой мыши в любое место на экране (только в плоскости проекции ). !!! Если при этом точка привязки совпадает с вершиной, то будут смещаться обе, а Undo сработат только для точки привяки,  вершина останется на новом месте !!!.
  4. Выровнять точку привязки по сетке - правый клик по точке привязки. !!! При этом точка привязки двигает за собой кисть.
Выровнять любую вершину по сетке можно, используя точку привязки. А именно, совместить точку привязки с вершиной и правым кликом выровнять по сетке.

Что это даёт? Это позволяет стыковать кисти на уровне более точно, а следовательно избегать или даже избавляться от некоторых глюков геометрии.


Мощь муверов.

Немного эпическое название получилось, но тем не менее суть не меняется. Для муверов точка PrePivot – одна из самых важных, если не важнейших. Именно её движение и повороты определяются в ключах. Вот об этих самых ключах я и хотел бы сказать пару слов.

Всё в том же Engine.u  живёт скрипт для класса Mover. В нём определяются массивы ключей:

var vector       KeyPos[8];
var rotator      KeyRot[8];
Так вот в свете вышесказанного надо исправить это на:
var() vector       KeyPos[8];
var() rotator      KeyRot[8];
Именно сразу после исправления скрипта для Actor исправьте и скрипт для Mover, а затем компилируйте. KeyPos и KeyRot лягут в раздел Mover. Если это не очень удобно, то при исправлении надо укзать в скобках как будет называться раздел, куда вы хотите их поместить.
В результате у каждого мувера добавятся в свойствах KeyPos - набор ключевых позиций и KeyRot - ориентация в этих ключах.

Поверьте мне, руками поставить мувер в нужное место и с нужным поворотом гораздо проще, чем мышью, да и точнее будет! Только не забывайте изменять значение NumKeys при изменении количества ключевых точек.