• 如何在3dMax中使用Python按类型选择对象?


    如何在3dMax中使用Python按类型选择对象?

    3dMax提供了pymxs API,这是MAXScript的Python包装器,可帮助您扩展和自定义3dMax,并更轻松地将其集成到基于Python的管道中。

    pymxs模块包含一个运行时成员,该成员提供对MAXScript环境中的接口、函数、结构、对象、属性和变量的访问,无论这些接口是内置的还是由用户定义的。

    如果需要选择特定类型的对象(节点),例如灯光、相机等。

    可以使用INode类的GetObject()方法获取对节点对象的引用,或3dmax命令中的“modified object”,并使用对象的GetSuperClassID()方法获得表示对象超类的整数id。

    此外,MaxPlus SuperClassIds类包含方便的常量,可以用来避免检查和记住超类的数字id。

    下面给出一个选择场景中所有灯光对象的脚本示例:

    1. from MaxPlus import SuperClassIds
    2. from MaxPlus import SelectionManager
    3. def scene_objects():
    4. def list_children(node):
    5. list = []
    6. for c in node.Children:
    7. list.append(c)
    8. list = list + list_children(c)
    9. return list
    10. return list_children(MaxPlus.Core.GetRootNode())
    11. for o in scene_objects():
    12. obj = o.GetObject()
    13. if obj.GetSuperClassID() == SuperClassIds.Light:
    14. SelectionManager.SelectNode(o, False)

    在3dMax中测试上面代码的执行:

    1.在3dmax中创建一个由灯光、几何体和其他类型对象构成的简单场景,如下图:    

    2.点击3dmax主菜单->脚本->新建脚本,将前面的Python代码复制粘贴到MAXScript脚本编辑器窗口中。(请注意的是:在复制和粘贴本例中的脚本时,缩进可能无法正确粘贴,这将影响代码的正确执行,所以,粘贴的时候要检查缩进的正确性。)

    3.点击MAXScript脚本编辑器菜单中的“语言”,然后,选择“Python”作为当前编程语言,如图:    

    4.取消场景中所有对象的选择状态。然后,按下“Ctrl+e”键执行Python脚本,可以看到场景中所有灯光对象在脚本执行后,都处于被选中状态,如图:

    提示:Python运行环境随3dMax一起被安装,所以,不需要再另外安装Python运行环境。 

  • 相关阅读:
    微信小程序——事件监听
    【LeetCode热题100】--114.二叉树展开为链表
    设计模式 - 观察者模式
    寄存器与ROM与RAM
    价值工程杂志价值工程杂志社价值工程编辑部2022年第23期目录
    springboot毕设项目4S店车辆管理系统4n9r4(java+VUE+Mybatis+Maven+Mysql)
    羽夏看Linux内核——环境搭建
    简述RDD
    Axios源码仿写与二次封装
    Mycat中间件分配数据库
  • 原文地址:https://blog.csdn.net/mufenglaoshi/article/details/134543357