Render.ru

Помогите со скриптом копирования позиции и поворота пивота у меша донора

Знаток
Рейтинг
25
#1
Есть такой скрипт, который не работает, хотя в теории должен
что я хочу вообще: скопировать трансформ пивота у одних объектов и отдать их другим, в цикле там проверяется одинаковость имен.

C-like:
   -- функция которая копирует вращение пивота
   fn RotatePivotOnly obj rotation = (local rotVal = (rotation as Quat)
   animate off in coordsys local obj.rotation*=RotVal
   obj.objectoffsetpos*=RotVal
   obj.objectoffsetrot*=RotVal
   )

--Этот функционал вызывает диалог с выбором мешей
PivotSources = selectByName title:"выдели объекты у которых заберем пивот" showHidden:true single:false
PivotTargets = selectByName title:"выдели объекты которым пивоты отдадим" showHidden:true single:false

-- теперь пишем код который в цикле будет сравнивать два этих массива поименно и будет из сурса копировать пивот в цель пока что просто пивот, без поворота

  
for i = 1 to PivotTargets.count do
    if (PivotTargets[i].name == PivotSources[i].name) do
        PivotTargets[i].pivot = PivotSources[i].pivot -- скопировать позицию пивота с источника на цель
        RotatePivotOnly PivotSources[i].rotation (PivotTargets[i].rotation) --скопировать
 

Знаток
Рейтинг
25
#2
C-like:
macroScript Pivot_Fixer
    category:"Danil_Script"
    buttonText:"Fix Pivots"
    toolTip:"Run this to fix pivots"
(
    PivotSources = selectByName title:"Select objects to COPY pivots" showHidden:false single:false
    PivotTargets = selectByName title:"Select objects to PASTE pivots" showHidden:false single:false
    ObjectCount = PivotTargets.count
    rotVal = #()
    rotVal[ObjectCount] = 0

    for i = 1 to ObjectCount do
        
    if (PivotTargets[i].name == PivotSources[i].name) do
    (
        ResetPivot (PivotTargets[i])
        PivotTargets[i].pivot = PivotSources[i].pivot
        rotVal[i] = PivotSources[i].rotation as Quat
        in coordsys local
        PivotTargets[i].rotation*=RotVal[i]
        PivotTargets[i].objectoffsetpos*=RotVal[i]
        PivotTargets[i].objectoffsetrot*=RotVal[i]
    )
)
 
Последнее редактирование:
Сверху