Maxscript - Анимация, изменяющая положение вершины в сетке

У меня есть разные наборы из 2000 точек, которые определяют положение вершины сетки. Например, один набор делает сетку в форме X, другой в форме Y и т. Д.

Я хочу сделать анимацию с этой изменяющейся сеткой, но Autokey не может даже разместить ключевой кадр.

Моя процедура следующая:

Я импортирую сетку, используя следующий код MAXScript, который отображается в 3dsmax как Object001:

vert_array = #()
face_array = #()
in_name = ((GetDir #export)+"/meshdata.dat")
in_file = openFile in_name
if in_file != undefined then
(
 num_verts = readValue in_file
 num_faces = readValue in_file
 vert_array.count = num_verts
 face_array.count = num_faces
 for v = 1 to num_verts do
 (
  vert = readValue in_file
  vert_array[v] = vert
 )
 for f = 1 to num_faces do
 (
  face = readValue in_file
  face_array[f] = face
 )
 close in_file
 new_mesh = mesh vertices:vert_array faces:face_array
)

затем я нажимаю на autokey и перехожу к кадру 100 (например) и выполняю следующий MAXScript:

N=$Object001
animate on
(
    at time 0 (N.pos=[0,0,0] )
    at time 100 (
vert_array = #()
face_array = #()
in_name = ((GetDir #export)+"/meshdata2.dat")
in_file = openFile in_name
if in_file != undefined then
(
 num_verts = readValue in_file
 num_faces = readValue in_file
 vert_array.count = num_verts
 face_array.count = num_faces
 for v = 1 to num_verts do
 (
  vert = readValue in_file
  vert_array[v] = vert
 )
 for f = 1 to num_faces do
 (
  face = readValue in_file
  face_array[f] = face
 )
 close in_file
for v=1 to num_verts do
(
    N.verts[v].pos=vert_array[v]
)
)
)
)

Объекту удается изменить свою форму на желаемую (хотя его форма не изменяется в области просмотра, только при визуализации). ОДНАКО, автоключ не работает, он не ставит ключевой кадр на 100 и нигде. Работает при ручном изменении положения вершины. Но у меня 2000 вершин, мне нужно использовать MAXScript. Любая подсказка, почему это происходит и как это исправить? Спасибо Вам большое!

(Я попытался в Слушателе изменить только одну или две вершины, и снова это не работает... но вручную работает автоключ!! '()

1 ответ

Использование meshOp.setVert метод для установки позиций вершин объекта. Изменения появятся в окне просмотра, если вы используете update когда вы закончите:

N = convertToMesh (Box length:10 width:10 height:10)
with animate on at time 100 (meshOp.setVert N 1 [5,5,10])
update N
Другие вопросы по тегам