Maxscript - 动画更改网格

时间:2015-07-01 17:50:39

标签: c++ animation mesh 3dsmax 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
)

接下来,我点击自动键并前进到第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。 任何线索为什么会发生这种情况以及如何解决它?非常感谢你!

(我已经在Listener中尝试过一个或两个顶点,而且它不起作用......但手动操作自动键!:'()

1 个答案:

答案 0 :(得分:2)

使用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
相关问题