3DS Max Python脚本编写

时间:2018-12-12 21:23:52

标签: python scripting 3dsmax

我一直在寻找如何在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代码中翻译此内容?

谢谢大家

里卡多

1 个答案:

答案 0 :(得分:0)

下面是python脚本,可用于指导您的请求。

  • PyMXS;我的建议是主要使用它。它包装了几乎所有的MaxScript(一些特殊的MaxScript语法功能除外)。与它所基于的3ds Max SDK相比,它已经持续开发了数十年,功能强大,并且提供了许多辅助功能和简化功能。
  • MaxPlus;我的建议是使用PyMXS未涵盖的某些位(例如,用于创建基于Qt的UI的函数MaxPlus.GetQMaxMainWindow()),但不要将其用作Python中的主要工具。它是较新的,虽然从长远来看可能更适合Python暴露3ds Max SDK,但从短期来看,您可能更喜欢PyMXS的覆盖范围和简单性。

基本上,我建议您将自己视为使用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)

希望这会有所帮助!