我一直在寻找几个小时如何在Python中为3DS Max(v2017)执行一个非常简单的脚本,但API很糟糕 - 至少可以说。
我甚至无法获得如何选择场景中的现有对象。另外我不明白我是否应该使用pymxs wrapper或MaxPlus。
我需要做的就是告诉3ds Max在选择某个场景摄像机时更改渲染效果属性 - 或者将视图切换到该摄像机。
我会用伪代码写下你的脚本,这样你就可以 - 希望 - 更好地理解这个主题:
camera_1 = MaxPlus.Factory.SelectCameraObject("36x24_MoreDof")
# camera name is 36x24_MoreDof
camera_2 = MaxPlus.Factory.SelectCameraObject("36x24_LessDof")
# camera name is 36x24_LessDof
effect1 = RenderingTab.EnvironmentAndEffects.Effects.Attribute1
effect2 = RenderingTab.EnvironmentAndEffects.Effects.Attribute2
effect1.active = False
effect2.active = False
while True:
if camera_1.isSelected == True:
effect1.active = True
effect2.active = False
elif camera_2.isSelected == True:
effect1.active = False
effect2.active = True
我希望它足够清楚..你知道如何在3DS Max的实际Python代码中翻译它吗?
提前谢谢大家,
里卡多
下面是python脚本,用作您的请求的指南。
基本上,我建议您将自己视为使用Python获得语言优势的MaxScript程序员。要访问3ds Max场景,请浏览MaxScript(通过PyMXS)。然后,您将Python的优势用于字符串处理和数据管理(字典!)。必要时使用MaxPlus进行某些较低级别的SDK访问。
下面的脚本按名称获取对象,通过索引获取渲染效果,并根据对象选择启用/禁用渲染效果:
import pymxs
mxs = pymxs.runtime
object_1 = mxs.getNodeByName( "Camera001" )
effect_1 = mxs.getEffect(1)
effect_1.camera
mxs.setActive(effect_1, mxs.false)
if object_1.isSelected:
mxs.setActive(effect_1, mxs.true)
希望这可以帮助!