Всем привет. Подскажите плиз знающие люди как в MaxScript создать массив или коллекцию из элементов сетки, или просто как задать обращение к элементам. Объясню на примере. Нужно скрывать элементы сетки (примитив, разбитый на фрагменты-элементы) по условию в процессе анимации. Так как это сделать в скрипте.
fn findIsolatedPolys obj:selection[1] faces: = if iskindof obj Editable_Poly do
(
fn firstBit arr = if arr.isEmpty then #{} else #{(arr as array)[1]}
--if faces == unsupplied do faces = obj.selectedfaces as bitarray
if faces == unsupplied do faces = obj.faces as bitarray
local vertsUsingFace = polyop.getVertsUsingFace
local facesUsingVert = polyop.getFacesUsingVert
local iso = #(), f, ff, flist
f = firstBit faces
flist = faces
while not f.isEmpty do
(
ff = facesUsingVert obj (vertsUsingFace obj f)
ff *= faces
flist -= ff
f = if not (ff - f).isEmpty then ff else
(
append iso ff
firstBit (faces = flist)
)
)
iso
)
obj_elements_array=findIsolatedPolys()
print obj_elements_array
1. В новой сцене создаем один чайник (Teapot) и конвертируем его в Editable Poly.
2. Выделяем чайник и запускаем скрипт.
Спасибо за ответ. Я новичек в скриптах и пока многого не понимаю в вашем скрипте но буду разбираться. Сейчас стоит новая, более актуальная задача по проверке цикла при анимации. Вынес ее в новую тему.
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Виталий Мартынов
igorznag
Функция находится в теме: Separate polygons that are next to each other in groups !?. Сообщение 10.
Вместо obj.selectedfaces пишем obj.faces и получаем такой скрипт:
fn findIsolatedPolys obj:selection[1] faces: = if iskindof obj Editable_Poly do ( fn firstBit arr = if arr.isEmpty then #{} else #{(arr as array)[1]} --if faces == unsupplied do faces = obj.selectedfaces as bitarray if faces == unsupplied do faces = obj.faces as bitarray local vertsUsingFace = polyop.getVertsUsingFace local facesUsingVert = polyop.getFacesUsingVert local iso = #(), f, ff, flist f = firstBit faces flist = faces while not f.isEmpty do ( ff = facesUsingVert obj (vertsUsingFace obj f) ff *= faces flist -= ff f = if not (ff - f).isEmpty then ff else ( append iso ff firstBit (faces = flist) ) ) iso ) obj_elements_array=findIsolatedPolys() print obj_elements_array1. В новой сцене создаем один чайник (Teapot) и конвертируем его в Editable Poly.2. Выделяем чайник и запускаем скрипт.
Виталий Мартынов