Render.ru

Помогите со скриптом

Рейтинг
14
#1
есть вот такой скрипт

macroScript SetPivotBySelection
category: "-China-"
buttonText: "Set Pivot by Selection"
tooltip: "Sets pivot of the selected object(s) based on the selection type"
(
on isEnabled return selection.count != 0

on execute do
(
if selection.count == 0 then return

local sel = selection as array

if classOf sel[1] == Editable_Poly do
(
local vertSel = polyOp.getVertSelection sel[1]
local verts = for i = 1 to vertSel.count where vertSel collect sel[1].verts
polyOp.setPivot sel[1] verts
)
else if classOf sel[1] == PolyMeshObject do
(
local vertSel = polyOp.getVertSelection sel[1].baseObject
local verts = for i = 1 to vertSel.count where vertSel collect sel[1].baseObject.verts[vertSel]
polyOp.setPivot sel[1] verts
)
else if classOf sel[1] == Editable_Mesh do
(
local vertSel = meshOp.getVertSelection sel[1]
local verts = for i = 1 to vertSel.count where vertSel collect sel[1].verts
polyOp.setPivot sel[1] verts
)
else
(
local subObjLevel = sel[1].currentSubObjectLevel
case subObjLevel of
(
1:
(
local vertSel = polyOp.getVertSelection sel[1]
local verts = for i = 1 to vertSel.count where vertSel collect sel[1].verts
polyOp.setPivot sel[1] verts
)
2:
(
local edgeSel = polyOp.getEdgeSelection sel[1]
local edges = for i = 1 to edgeSel.count where edgeSel collect sel[1].edges
polyOp.setPivot sel[1] edges
)
3:
(
local faceSel = polyOp.getFaceSelection sel[1]
local faces = for i = 1 to faceSel.count where faceSel collect sel[1].faces
polyOp.setPivot sel[1] faces
)
)
)
)
)

global myCustomRollout
if doesFileExist (getDir #userScripts + "\\myCustomRollout.rol") do
(
myCustomRollout = loadRolloutFile (getDir #userScripts + "\\myCustomRollout.rol")
destroyDialog myCustomRollout
)

myCustomRollout = newRolloutFloater "Custom Rollout" 150 200
addRollout myCustomRollout (SetPivotBySelection.create())

и вроде все верно....но он не пашет...хоть убей
 

LastJedi

Знаток
Рейтинг
27
#4
Очевидно вот так: sel[1].pivot = [координвты], предварительно рассчитав нужные координаты.

Ну и это не единственная проблема в скрипте…

Все do надо заменить на then, поскольку do не подразумевает использование блока else.

Во всех циклах идентичные ошибки. Вместо:
Код:
local verts = for i = 1 to vertSel.count where vertSel collect sel[1].verts
должно быть что-то типа:
Код:
local verts = for i = 1 to vertSel.count where vertSel[i] collect sel[1].verts[i]
.Если я правильно понял задумку.
 
Рейтинг
74
#8
Добрый день. Не стал создавать новую тему для короткого вопроса. Прошу помочь со скриптом. В строке:
CoronaColorCorrect inputTexmap:( meditMaterials[2].texmapDiffuse)
Чем надо заменить meditMaterials[2], чтобы скрипт работал не с материалом из ячейки, а с материалом выбранного объекта?
 

LastJedi

Знаток
Рейтинг
27
#9
Добрый день. Не стал создавать новую тему для короткого вопроса. Прошу помочь со скриптом. В строке:
CoronaColorCorrect inputTexmap:( meditMaterials[2].texmapDiffuse)
Чем надо заменить meditMaterials[2], чтобы скрипт работал не с материалом из ячейки, а с материалом выбранного объекта?
Материал выбранного объекта: $.material
 
Рейтинг
74
#11
meditMaterials[2].texmapDiffuse = Color_Correction map:( meditMaterials[2.texmapDiffuse)

Ещё вопрос если можно. Как составить строку скрипта, чтобы было обратное действие? Чтобы вместо карты Color Correction поставить map(карту) которая внутри него в канал Diffuse, как бы отменить действие?)
 

Владислав Бодюл

Активный участник
Рейтинг
15
#12
Ещё вопрос если можно. Как составить строку скрипта, чтобы было обратное действие? Чтобы вместо карты Color Correction поставить map(карту) которая внутри него в канал Diffuse, как бы отменить действие?)
Код:
meditMaterials[2].texmapDiffuse = meditMaterials[2].texmapDiffuse.inputTexmap
 
Рейтинг
74
#15
Попробуй вместо inputTexmap использовать map
Почему-то работает вариант с именем материала:
meditMaterials[9].texmapDiffuse = meditMaterials[9].texmapDiffuse.map
Но, не работает с материалом выбранного объекта:
$.material.texmapDiffuse = $.material.texmapDiffuse.map
В чём может быть проблемма?
 
Сверху