玩着3dmax把Python学了-01

3ds Max 2022以前的版本要借助Python的api来实现Python编程达到编辑绘图脚本的功能,但是好消息来了,3ds Max 2022 起,MaxPlus 不再作为 3ds Max 的 Python API 包含在内。而是3ds Max 将 Python 3.7 的标准版本包涵其中了,位于 [3ds Max Install]\Python37 下。可以将标准的预编译扩展库与此版本的 Python 配合使用。

参考官网:https://help.autodesk.com/view/MAXDEV/2024/ENU/?guid=MAXDEV_Python_using_pymxs_html

文章目录

  • 一、让3dmax带着我写代码
    • 1、打开宏录制
    • 2、支持的python版本
    • 3、开始我们的python
    • 4、创建一个几何体
    • 引入库文件
    • 修改位置:
    • 带参数创建
    • 通过选择来移动
    • 改个颜色吧
    • 给个材质吧!
    • 增加修改器
    • 复制
    • 设置坐标系
  • 二、转战maxscript编辑器
    • 2、整一个动画
    • 3、整一个图形拉伸试试
    • 4、旋转

一、让3dmax带着我写代码

我们初次使用3dmax来写Python脚本肯定会遇到各种困难,关键是会面临有问题不知道去问谁的窘境和尴尬。现在好了,我们可以让3dmax的宏录制带着我们来编写Python代码。

1、打开宏录制

首先,我们可以按快捷键F11来打开脚本监听器,如下图(记得勾选宏录制为Enable):

在这里插入图片描述

2、支持的python版本

在这里插入图片描述

3、开始我们的python

在这里插入图片描述

4、创建一个几何体

要创建几何体,我们必须导入pymxs runtime库,方式如下:

from pymxs import runtime as mxs

比如我们要创建一个几何体box,一句话:

 pymxs.runtime.box(name="box001")

这里name后面表示名称的字符串可以是单引号也可以是双引号,这个不影响正确性。
除此意外你还可以创建sharp

 pymxs.runtime.circle(name="circle001")
pymxs.runtime.rectangle(name="rect001")

在这里插入图片描述

引入库文件

当然,如果每次都写一个 pymxs.runtime,那很麻烦,我们还是将这个库引入后方便后面多次使用,代码如下:

from pymxs import runtime as mxs
mxs.box(name="box001")

在这里插入图片描述

属性修改:官网属性修改

修改位置:

https://help.autodesk.com/view/MAXDEV/2024/ENU/?guid=MAXDEV_Python_using_pymxs_pymxs_module_html
咱们挪挪吧,下面的代码就是想box001移动到200,200,200的位置:

t1=mxs.getNodeByName("box001") #通过节点名称获取box001对象
t1.position = rt.Point3(200,200,200)

带参数创建

或者,我们在新建的时候,给点参数吧,否则每次都在原点。

mxs.box(pos=rt.Point3(75,75,0))

带参数创建了一个茶壶,并且事后指定它的半径和位置及分段。

teapot_position=pymxs.runtime.point3(100,20,10)
my_teapot = pymxs.runtime.teapot(radius=50, pos=teapot_position, segments=2)
from pymxs import runtime as rt

t1 = rt.teapot()
t2 = rt.teapot(pos=rt.point3(20,20,0))

通过选择来移动

pp=pymxs.runtime.selection[0]
pp.position=rt.point3(200,200,200);

改个颜色吧

sb=rt.selection[0]
sb.wirecolor=rt.color(120,0,0)

给个材质吧!

材质修改,可以直接借助maxscript脚本
rt.execute(“$Box*.material = standard()”)
https://help.autodesk.com/view/MAXDEV/2024/ENU/?guid=MAXDEV_Python_using_pymxs_pymxs_materials_html
当然,我们既然选择了python脚本,那么我们还是希望能够通过Python脚本来实现

m = pymxs.runtime.standardMaterial()
m.diffuse = pymxs.runtime.color(100,10,10)
m.specular = pymxs.runtime.color(100,0,0)

有了上面的材质,我们可以给我们创建的几何体来赋予材质了

m = pymxs.runtime.standardMaterial()
m.diffuse = pymxs.runtime.color(100,10,10)
m.specular = pymxs.runtime.color(100,0,0)
t = pymxs.runtime.teapot()
t.material=m

我们刚刚是以标准材质为例来展示材质的创建和修改的,当然,我们知道,3dmax中有三种典型的材质Standard, Physical, 及 MultiMaterial我们后面将对其逐个讲解。

增加修改器

其实,我们可以编辑一下box啦

加载修改器代码:

my_modifier = pymxs.runtime.taper()
my_modifier.amount = 2.0
my_modifier.curve = 1.5
pymxs.runtime.addmodifier(my_teapot, my_modifier)
from pymxs import runtime as rt

my_teapot = rt.teapot()
rt.convertTo(my_teapot, rt.editable_poly)
my_mod = rt.UVWMap()
rt.addModifier(my_teapot, my_mod)

直接调用maxscript的指令也可以,如下代码就是调用maxscript的box()创建了一个box

pymxs.runtime.execute('box()')

如果打开文件

pymxs.runtime.execute('max file open')

复制

 sb=rt.selection[0]
rt.copy(sb)

设置坐标系

pymxs.runtime.toolMode.coordsys(pymxs.runtime.Name("world"))

二、转战maxscript编辑器

基于上面的测试和实验,我们初步了解了Python脚本如何调用3dmax的基本指令,我们不可能永远这么测试下去,玩玩还可以,如果我们想编写一个插件或者有正式作用的脚本,还是要在maxscript中来进行,尽管他的只能感知和语法提示作用还不好(如果我们真要编写比较复杂的脚本后面我们将转战pycharm或者sublime text或者VSCode)。

2、整一个动画

rt = pymxs.runtime
t = rt.teapot()
with pymxs.animate(True):
    # go to frame 0
    with pymxs.attime(0):
        t.pos = rt.point3(0,0,0)
    # go to frame 100
    with pymxs.attime(100):
        t.pos = rt.point3(100,100,100)

上面这个动画将我们创建的茶壶从原点移动到100,100,100的位置,耗时100帧。

3、整一个图形拉伸试试

rt.rectangle()
shp=rt.selection[0]
shp.position=rt.point3(100,100,0)
rt.convertTo(shp, rt.editable_poly)

通过convertTo转化为了一个可编辑多边形

4、旋转

https://help.autodesk.com/view/MAXDEV/2024/ENU/?guid=MAXDEV_Python_using_pymxs_pymxs_objects_html

# define function for rotating only the pivot point
def RotatePivotOnly( obj, rotation):
    rotValInv=rt.inverse (rt.r2q(rotation))
    with pymxs.animate(False):
        obj.rotation*=rotValInv
        obj.objectoffsetpos*=rotValInv
        obj.objectoffsetrot*=rotValInv


b=rt.box(pos=rt.Point3(75,75,0)) # create a 25x25x25 box, vertex 1 at [62.5,62.5,0] (world)
rt.convertToMesh (b) # convert box to mesh so we can access the vertex location
DumpXForms(b) # print transforms
b.pivot= rt.Point3(50,50,0)# move pivot only to [50,50,0]
DumpXForms (b) # print transforms
rotation = rt.EulerAngles( 0, 0, 35)
RotatePivotOnly (b, rotation) # rotate pivot only 35 degrees about local Z
DumpXForms (b)# print transforms

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/17147.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Filter 过滤器

Filter过滤器介绍 这里我们讲解Filter的执行流程,从下图可以大致了解到,当客户端发送请求的时候,会经过过滤器,然后才能到我们的servlet,当我们的servlet处理完请求之后,我们的response还是先经过过滤器才…

基于SpringBoot的线上日志阅读器

软件特点 部署后能通过浏览器查看线上日志。支持Linux、Windows服务器。采用随机读取的方式,支持大文件的读取。支持实时打印新增的日志(类终端)。支持日志搜索。 使用手册 基本页面 配置路径 配置日志所在的目录,配置后按回车…

2023亚马逊云科技研究,数字化技能为中国企业和员工带来经济效益

在中国,信息技术在个人、企业和宏观经济层面都推动着重大变革。为了研究这些变化所带来的影响,盖洛普咨询公司(Gallup)和亚马逊云科技开展了关于数字化技能的调研。 研究表明,数字化技能正在为中国企业和在职人员带来巨大的经济价值&#x…

一文带你入门C++类和对象【十万字详解,一篇足够了】

本文字数较多,建议电脑端访问。不多废话,正文开始 文章目录 ———————————————【类和对象 筑基篇】 ———————————————一、前言二、面向过程与面向对象三、结构体与类1、C中结构体的变化2、C中结构体的具体使用3、结构体 --&…

程序环境和预处理

目录 一 程序的翻译环境和执行环境 二 详解编译链接 2.1 翻译环境 2.2 编译本身也分为几个阶段 2.3 运行环境 三 预处理详解 3.1 预定义符号 3.2 #define 3.2.1 #define 定义标识符 3.2.2 #define定义宏 3.2.3 #define 替换规则 3.2.4 #和## 3.2.5 带副作用的宏参…

告别被拒,如何提升iOS审核通过率(上篇)

iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬。那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率呢&#x…

Centos7快速安装Kibana并连接ES使用

Elasticsearch 提供了一个名为 Kibana 的官方可视化界面。Kibana 是一个开源的数据可视化和管理工具,用于 Elasticsearch。它提供了丰富的功能,如仪表板、图表、地图等,帮助您更好地理解、搜索和可视化存储在 Elasticsearch 中的数据。 在 C…

【软考备战·希赛网每日一练】2023年5月5日

文章目录 一、今日成绩二、错题总结第一题 三、知识查缺 题目及解析来源:2023年05月05日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 有返回消息的就是同步消息;不需要等待返回消息就可以去做其他事情的请求消息就是异步消息…

从零基础到网络安全专家:全网最全的网络安全学习路线

前言 网络安全知识体系非常广泛,涉及的领域也非常复杂,有时候即使有想法和热情,也不知道从何入手。 为了帮助那些想要进入网络安全行业的小伙伴们更快、更系统地学习网络安全知识,我制定了这份学习路线。本路线覆盖了网络安全的…

网络协议与攻击模拟-03-ARP协议

ARP 协议(地址解析协议) 一、 ARP 协议 将一个已知的 IP 地址解析为 MAC 地址,从而进行二层数据交互 是一个三层的协议,但是工作在二层,是一个2.5层协议 二、工作流程 1、两个阶段 ARP 请求 ARP 相应 2、 ARP 协议…

Java 基础入门篇(三)—— 数组的定义与内存分配

文章目录 一、数组的定义1.1 静态初始化数组1.2 动态初始化数组1.3 数组的访问 二、数组的遍历三、数组的内存图 ★3.1 Java 的内存分配3.2 数组的内存图3.3 两个数组变量指向同一个数组对象 四、数组使用的常见问题补充:随机数 Random 类 一、数组的定义 数组就是…

黑盒测试过程中【测试方法】详解2-正交实验

在黑盒测试过程中,有9种常用的方法:1.等价类划分 2.边界值分析 3.判定表法 4.正交实验法 5.流程图分析 6.因果图法 7.输入域覆盖法 8.输出域覆盖法 9.猜错法 前面我们已经讲解过了等价类划分、边界值、判定表。 可以参考我之前的文章&#xff…

MySQL 常用命令

#--------------------------- #----cmd命令行连接MySql--------- cd C:\Program Files\MySQL\MySQL Server 5.5\bin # 启动mysql服务器 net start mysql # 关闭mysql服务器 net stop mysql # 进入mysql命令行 mysql -h localhost -u root -p 或mysql -u root -p #---------…

SPSS如何进行回归分析之案例实训?

文章目录 0.引言1.线性回归分析2.曲线回归分析3.非线性回归分析4.Logistic回归分析5.有序回归分析6.概率回归分析7.加权回归分析 0.引言 因科研等多场景需要进行数据统计分析,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合…

璞华助力“数字人社”,为成都市人社数字化建设提供多方位的产品与技术支持!

新的时期,人力资源和社会保障事业进入新一轮的制度创新和加快发展阶段。把对各项人力资源和社会保障业务的支持和服务纳入信息化建设,通过 “数字人社”信息化建设项目,是充分利用新一代信息技术,有效整合各类信息资源&#xff0c…

为什么说网络安全行业是IT行业最后的红利?

前言 2023年网络安全行业的前景看起来非常乐观。根据当前的趋势和发展,一些趋势和发展可能对2023年网络安全行业产生影响: 5G技术的广泛应用:5G技术的普及将会使互联网的速度更快,同时也将带来更多的网络威胁和安全挑战。网络安全…

石头科技2022年营收实现双位数增长,以技术实力打响创新价值战

近日,石头科技披露了2022年度财务报告,报告显示,在在较大内外部压力下,石头科技2022年营收依然实现双位数增长,且境内外销售收入平稳增长。 该公司在近年来不断完善其产品矩阵,目前已推出手持无线吸尘、商…

想回西安

五一假期结束了,开始营业总结下跟读者们的交流。 特别感谢大家让我在自己的技术号里面写一些和生活相关的事情,现在正常营业,回复下读者的问题。 问题 发哥,我现在有个疑惑能麻烦帮我解答下嘛。 我已经工作一年多了,但…

Java基础(二十一):集合源码

Java基础系列文章 Java基础(一):语言概述 Java基础(二):原码、反码、补码及进制之间的运算 Java基础(三):数据类型与进制 Java基础(四):逻辑运算符和位运算符 Java基础(五):流程控制语句 Java基础(六)&#xff1…

第十九章 观察者模式

文章目录 前言普通方式解决问题CurrentConditions 显示当前天气情况WeatherData 管理第三方Clint 测试 一、观察者模式(Observer)原理完整代码SubjectObserverWeatherData implements SubjectCurrentConditions implements ObserverBaiduSite implements ObserverClint 前言 普…