MaxScript输出所选对象在每一帧中的速率以及平均速率到一个文件


How To ... Output Object Data To File

macroScript SpeedSheet category: "HowTo"

(

if selection.count > 0 then

(

output_name = getSaveFileName caption: "SpeedSheet File" types: "SpeedSheet (*.ssh)|*.ssh|All Files (*.*)|*.*|"

if output_name != undefined then

(

output_file = createfile output_name

at time animationrange.start format "Object(s): %/n" (selection as array) to :output_file

average_speed = 0  --平均速度

for t = animationrange.start to animationrange.end do

(

at time t current_pos = selection.center

at time (t-1f) last_pos = selection.center

frame_speed = (distance current_pos last_pos)*FrameRate --帧速

average_speed += frame_speed

format "Frame %: %/n" t frame_speed to :output_file

)

average_speed /= (animationrange.end-animationrange.start)

format "Average Speed: %/n" average_speed to :output_file

close output_file

edit output_name

) --end if

) --end if

) --end macroScript

 

运行结果:

==================================

animationrange  默认为100帧

FrameRate 帧速率 这里是30

有一行代码让我思索好久,最后恍然大悟

frame_speed = (distance current_pos last_pos)*FrameRate

一直想为什么乘呢?

原来1秒有30帧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我非常乐意为您编写3dsmax导入fbx格式模型的maxscript代码,并为每一句添加文注释。 下面是代码: ``` -- 设置工作目录,用于打开fbx文件 setProjectFolder "C:/项目文件/" -- 打开fbx文件 MAXScript dotNetClass: @"Autodesk.Fbx.FbxManager" fbxManager = dotNetObject "Autodesk.Fbx.FbxManager" fbxIOSettings = dotNetObject "Autodesk.Fbx.FbxIOSettings" fbxManager.GetIOSettings() fbxImporter = dotNetObject "Autodesk.Fbx.FbxImporter" fbxManager.CreateImporter (fbxIOSettings) -- 设置fbx文件名 fbxFileName = "模型文件.fbx" -- 检查fbx文件是否可导入 if (fbxImporter.Initialize fbxFileName -1 fbxIOSettings) == true do ( -- 获取fbx场景 fbxScene = dotNetObject "Autodesk.Fbx.FbxScene" fbxImporter.Import fbxScene -- 将fbx场景的模型导入到3dsmax maxNode = dotNetObject "Autodesk.Max.MaxPlus.INode" dotNet.addEventHandler maxNode "AddedToScene" (dotNetObject "System.EventHandler" (dotNetObject "Autodesk.Max.MaxPlus.Node_EventAddedToScene")) fbxImporter.Import fbxScene maxNode = undefined ) else ( format "无法导入FBX文件: %\n" fbxFileName ) -- 关闭fbx导入器和fbx管理器 fbxImporter?.Destroy() fbxIOSettings?.Destroy() fbxManager?.Destroy() ``` 解释一下每一句代码: 第1行:设置工作目录,用于打开fbx文件。 第3-6行:打开fbx文件。我们使用3dsmax的dotNetClass,调用Autodesk.Fbx.FbxManager类来创建并设置fbx导入器。 第9行:设置fbx文件名。 第12-29行:检查fbx文件是否可以导入,如果可以就导入fbx场景的模型到3dsmax。我们使用Autodesk.Fbx.FbxImporter的Import方法来导入模型。然后我们使用dotNetObject创建一个Autodesk.Max.MaxPlus.INode对象,并为该对象添加AddedToScene事件处理程序,以便在模型成功导入到场景时通知我们。 第32-35行:关闭fbx导入器和fbx管理器。我们使用Destroy方法,以便正确释放类实例所占用的资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值