我一直在寻找如何在Python中为3DS Max(v2017)执行非常简单的脚本的小时,但是API太糟糕了-至少可以这么说。
我什至不知道如何选择场景中的现有对象。 另外,我不知道是否应该使用pymxs包装器或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代码中翻译此内容?
谢谢大家
里卡多
答案 0 :(得分:0)
下面是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)
希望这会有所帮助!