gpt4 book ai didi

c++ - Maxscript - 动画改变网格中的顶点位置

转载 作者:行者123 更新时间:2023-11-28 02:24:38 25 4
gpt4 key购买 nike

我有不同的 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]
)
)
)
)

对象设法将其形状更改为所需的形状(尽管它的形状在视口(viewport)中不会改变,仅在渲染时才会改变)。但是,自动键不起作用,它不会在 100 或任何地方放置关键帧。它在手动更改顶点位置时确实有效。但是我有 2000 个顶点,我需要使用 MAXScript。任何线索为什么会发生这种情况以及如何解决它?真的非常感谢!

(我试过在 Listener 中只改变一个或两个顶点,但它再次不起作用......但是手动自动键工作!:'( )

最佳答案

使用meshOp.setVert 方法设置物体顶点的位置。如果您在完成后使用 update,更改将显示在视口(viewport)中:

N = convertToMesh (Box length:10 width:10 height:10)
with animate on at time 100 (meshOp.setVert N 1 [5,5,10])
update N

关于c++ - Maxscript - 动画改变网格中的顶点位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31168336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com