У нас вы можете посмотреть бесплатно UAW Modding: How Walker Legs Work или скачать в максимальном доступном качестве, видео которое было загружено на ютуб. Для загрузки выберите вариант из формы ниже:
Если кнопки скачивания не
загрузились
НАЖМИТЕ ЗДЕСЬ или обновите страницу
Если возникают проблемы со скачиванием видео, пожалуйста напишите в поддержку по адресу внизу
страницы.
Спасибо за использование сервиса ClipSaver.ru
UAW Launcher: https://drive.google.com/drive/u/1/fo... Universe at War - Earth Survivors Discord: / discord The Max Script used in this video: /* Max 9-safe Rotate selected bone/object pivot (object offset) and preserve: 1) the selected node's object-space motion 2) all descendants' world-space motion Intended workflow: go to frame 0 Skin Always Deform OFF run script turn Always Deform back ON */ fn getChildrenRecursive n = ( result = #() for c in n.children do ( append result c subKids = getChildrenRecursive c for k = 1 to subKids.count do append result subKids[k] ) result ) fn rotatePivotPreserveAnimation parentNode rotQ = ( kids = getChildrenRecursive parentNode tStart = animationRange.start.frame tEnd = animationRange.end.frame parentObjectTMBefore = #() childWorldBefore = #() /* store selected node's OBJECT transform and descendants' WORLD transforms */ for t = tStart to tEnd do ( at time t ( append parentObjectTMBefore (copy parentNode.objecttransform) frameData = #() for i = 1 to kids.count do ( append frameData (copy kids[i].transform) ) append childWorldBefore frameData ) ) /* rotate pivot/object-offset ONCE at frame 0, not animated */ at time 0 ( parentNode.objectoffsetrot = rotQ * parentNode.objectoffsetrot ) /* for each frame, solve node TM so OBJECT TM matches original */ with animate on ( frameIndex = 1 for t = tStart to tEnd do ( at time t ( targetObjTM = parentObjectTMBefore[frameIndex] /* after objectoffsetrot changed, current objecttransform reflects: newObjectOffsetTM * currentNodeTM Since ObjectTM = ObjectOffsetTM * NodeTM, solve NodeTM = inverse(ObjectOffsetTM) * targetObjectTM */ currentObjectOffsetTM = parentNode.objecttransform * (inverse parentNode.transform) solvedNodeTM = (inverse currentObjectOffsetTM) * targetObjTM parentNode.transform = solvedNodeTM /* restore descendants exactly in world space */ frameData = childWorldBefore[frameIndex] for i = 1 to kids.count do ( kids[i].transform = frameData[i] ) ) frameIndex = frameIndex + 1 ) ) messageBox "Done. Pivot rotated and animation compensated." true ) /* ------- USER SETTINGS ------- */ rotX = -90.0 rotY = 0.0 rotZ = 0.0 rotQ = (eulerangles rotX rotY rotZ) as quat /* ------- RUN ------- */ if selection.count != 1 then ( messageBox "Select exactly one parent bone/object." ) else ( parentBone = selection[1] rotatePivotPreserveAnimation parentBone rotQ )