Render.ru

обращение к элементам сетки в скрипте

Виталий Мартынов

Активный участник
Рейтинг
11
#1
Всем привет. Подскажите плиз знающие люди как в MaxScript создать массив или коллекцию из элементов сетки, или просто как задать обращение к элементам. Объясню на примере. Нужно скрывать элементы сетки (примитив, разбитый на фрагменты-элементы) по условию в процессе анимации. Так как это сделать в скрипте.
 

igorznag

Мастер
Рейтинг
103
#2
Попробуйте изменить/использовать функцию findIsolatedPolys().
Функция находится в теме: 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_array
1. В новой сцене создаем один чайник (Teapot) и конвертируем его в Editable Poly.
2. Выделяем чайник и запускаем скрипт.
 

Виталий Мартынов

Активный участник
Рейтинг
11
#3
Спасибо за ответ. Я новичек в скриптах и пока многого не понимаю в вашем скрипте но буду разбираться. Сейчас стоит новая, более актуальная задача по проверке цикла при анимации. Вынес ее в новую тему.
 
Сверху