Есть сетки, закрытые друг от друга. Мне нужно скопировать нормаль из одной сетки в другую с помощью maxscript. Целевые вершины - это точки в одном и том же положении. Но результат странный, даже значение normal одинаковое, направление неверное. Я пробовал некоторые методы, чтобы получить/установить нормальное значение в координатах мира/локальных/родительских.. Но это не имеет смысла. Как я могу получить правильный результат?
О копировании нормали из одного меша в другой с помощью maxscript
Ответы (2)
Два меша должны выполнить "reset xform"... Или мы можем преобразовать нормаль A в мир, чтобы получить worldNormal. Затем преобразовать worldNormal в локальное пространство B, чтобы получить normalB...
Возможно, вы захотите попробовать использовать модификатор Edit_Normal для указания явных нормалей. https://help.autodesk.com/view/3DSMAX/2020/ENU/?guid=GUID-9F33B780-7A98-4638-BD00-A1725FA1DB70
В соответствии с этой документацией, если вы используете setFaceNormal для настройки нормалей непосредственно на вашей сетке,
Как только вы запускаете update() для сетки, это значение перезаписывается.
https://help.autodesk.com/view/3DSMAX/2020/ENU/?guid=GUID-58D1F8B6-0012-4727-AA29-B2C79EA46E16
Однако, похоже, это не работает для нормалей вершин, этого может быть достаточно для вас?
Начиная с 3ds Max 2015, установка нормали вершины устанавливает нормаль как явную, поэтому она сохранит свое значение при обновлении сетки. В версиях до 3ds Max 2015 установка нормали вершины с помощью MAXScript имела очень кратковременный эффект, поскольку данные могли быть легко перезаписаны неявным пересчетом нормали на основе группы сглаживания при перерисовке окна просмотра или рендеринге сцены.
https://help.autodesk.com/view/3DSMAX/2020/ENU/?guid=GUID-BD473113-389F-4C96-BE07-217FF75796EF