沐风老师MaxScript快速入门教程

news2024/11/15 7:59:17

Maxscript是将自定义3dMax应用的更强大的方法之一。结合内置的侦听器和编辑器,我们在运行时操作和测试代码,使其成为用户试验和探索改进软件体验的强大选项。通过Maxscript,我们几乎可以操作软件中的每一个对象,包括但不限于:

-进口/出口(Importing/Exporting)

-材质(Materials)

-渲染(Rendering)

-轨迹(Tracks)

-控制器(Controllers)

-动画(Animations)

-修改器(Modifiers)

-粒子(Particles)

-帮助器(Helpers)

-灯光(Lights)

-摄像机(Cameras)

-几何学(Geometry)

我们现在开始吧。首先,右键单击位于屏幕左下方的粉色框,打开如图1所示的监听器窗口:

图1

在“侦听器”窗口中,您会发现一个菜单“MacroRecorder”。记录器将在Maxscript中回声我们在3ds Max中执行的操作。这是一个很好的工具,可以学习或复制和粘贴脚本来补充我们的行动。

值和变量

与大多数编码语言一样,使用Maxscript时最常用的值是浮点值、整数和字符串。浮点是十进制数字,如3.4。整数是整数,如1和2。字符串是单词的表示或字符的集合,无论是否可读,可以是字母数字,这意味着它们可以包含字母和数字。与另一种编码类似,值类型也是必不可少的。例如,添加两个浮点值将返回一个表示另一个浮点值的值。将两个整数相加将返回一个表示整数的值。如果我们在整数上加一个浮点值,小数将确保返回浮点值。字符串是用引号定义的,例如“Hello”。

变量在Maxscript中分配很简单。在“侦听器”窗口上的白色框中,我们可以键入以下内容:X=7。这将给X赋值7。我们可以在第二行键入Y=8。接下来,如果我们键入X+Y,Listener将相应地识别值,并返回图2中所示的值15。请注意,Maxscript不区分大小写,所以大写或小写X都表示相同的值。

图2

节点和属性

Maxscript为我们提供了对图3中Modifier面板中显示的节点和属性的访问。

图3

对于每个节点,都有子类。这包括主要类,例如几何体或空间扭曲。例如,“几何体”节点包含“长方体”、“球体”、“圆柱体”等。因此,假设我们希望使用Maxscript插入一个长方体。我们定义我们的变量“mybox”,然后为其分配Maxscript值以插入一个基本的box:mybox=box()。如图4所示,在屏幕上导入一个框,并保持值“mybox”。这允许我们根据需要对其进行操作。

图4

如果我们键入以下内容:showclass“box.*”Maxscript将返回我们可以操作的属性。只需添加我们想要修改的属性到定义变量的末尾,就可以随心所欲地对其进行修改。如图5所示,我通过输入mybox.length=1000来增加框的长度。

图5

变换

操作对象的变换相对简单。例如,我们可以输入以下内容:移动mybox[15,15,15]。这将使长方体从其当前位置重新定位到x、y和z轴上的15个单位。要直接更改长方体的坐标,我们按如下方式更改position属性:mybox.position=[0,0,0]。3ds Max(以及大多数3D软件)使用欧拉角进行旋转(在所有三个轴上旋转)。这意味着我们需要定义每个轴的旋转。所以,要旋转,我们首先定义我们的变换:我的旋转=欧拉角度0 45 0。然后,我们可以使用图6中显示的:rotate mybox my rotate将其应用于长方体。在定义旋转变量时,请确保按enter键以将其记录在侦听器中,然后再尝试使用该值。或者,我们可以通过如下方式更改属性来通过单个轴进行旋转:mybox.returation.X=45。

图6

我们可以类似地设置对象的比例:mybox.scale=[50,50100]。我们可以使用以下输入相对放大:缩放mybox[50,50]。

数组

数组本质上是多个元素的列表,帮助我们通过所有这些元素应用流程。例如,如果我们键入“选择灯光”,Maxscript将选择场景中的所有灯光。此选择本质上是一个数组。要创建数组,我们可以键入:my_awesome_array=#($box001,$box002)。这将把方框001和002添加到一个数组中。如果我们选择了许多对象,我们可以输入“my_awesome_array=selection as an array”来添加所有内容。

对象集和集合

3dMax中的许多对象都可以使用简单的命令进行操作。例如,我们可以通过键入“隐藏灯光”或“删除摄像头”来隐藏或删除摄像头和灯光。Maxscript中也使用通配符进行选择。例如,如果我们想选择所有名称为“roundy”的球体,我们可以键入以下内容:选择$*roundy*。这将在名称字符串内的任何位置搜索所有对象以查找文本圆形,并选择它们。

函数

函数是我们希望在代码的其他部分中调用的操作的集合。例如,如果我们想创建一个长方体,将长度和宽度设置为100,并将其转换为多边形对象,我们将定义如图7所示的函数。

fn makeMyBox = 
(
mybox = box()
mybox.width = 100
mybox.length = 20
converttopoly mybox
)

图7

迭代

许多方法可以迭代和重复代码;大多数人使用“do, while, if,和 for”来完成任务。迭代这一点的一种方法是以下脚本:for I=1 to 5 do(print I)。这将打印1、2、3、4、5。要遍历一个对象集合,我们可以在objects do中键入:for obj in objects do (print obj.name)。这将列出每个对象的名称。

for obj in objects do (print obj.name)

下面是用Maxscript编写的小插件:

3DMAX材质ID随机生成器本站下载:

https://download.csdn.net/download/mufenglaoshi/38169180
3dMax一键多边形窗插件PolyWindow:

https://download.csdn.net/download/mufenglaoshi/87893957

最后,感谢大家的阅读,下期再见!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】-vector的模拟实现(以及memcpy如何使用)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

Spring-MVC的注解扫描-spring17

包括我们业务层和Dao层,去帮助别人去扫 只扫controller下的注解

00_YS_硬件电路图

1.主控制芯片的型号 STM32F407IGT6,LQFP-176,1MB 内部 FLASH,192KB RAM USART3 RS485 通信,芯片使用 SP3072EEN; UART5 RS232 通信, CAN 1 路,型号 SN65HVD230 USB 支持 …

Python应用实例(二)数据可视化(三)

数据可视化(三) 1.使用Plotly模拟掷骰子1.1 安装Plotly1.2 创建Die类1.3 掷骰子1.4 分析结果1.5 绘制直方图1.6 同时掷两个骰子1.7 同时掷两个面数不同的骰子 1.使用Plotly模拟掷骰子 本节将使用Python包Plotly来生成交互式图表。需要创建在浏览器中显示…

代码随想录算法训练营第十九天 | 动态规划系列5,6,7,8

动态规划系列5,6,7,8 377 组合总和 Ⅳ未看解答自己编写的青春版重点代码随想录的代码我的代码(当天晚上理解后自己编写) 爬楼梯进阶322 零钱兑换未看解答自己编写的青春版写完这道题后的感受重点代码随想录的代码动态规划,也要时刻想着剪枝操作。我的代码(当天晚上理…

异常执行结果随笔

前段时间有朋友问我异常执行顺序问题,这里简单记录下哈。 伪代码描述,当j0和j1,输出结果分别是什么? int i 0; int j 0或1; try {j i / j;System.out.println(i);return i; } catch (Exception e) {System.out.pri…

win10如何使用wsl配置Ubuntu并使用vscode连接

文章目录 0. 前置资料1. 下载wsl2. 下载Ubuntu3. vscode连接wsl 0. 前置资料 wsl为适用于 Linux 的 Windows 子系统,可参考以下微软的官方文档 https://learn.microsoft.com/zh-cn/windows/wsl/ 1. 下载wsl 点击屏幕左下角的放大镜,直接在输入框键入P…

第 354 场LeetCode周赛

A 特殊元素平方和 模拟 class Solution { public:int sumOfSquares(vector<int> &nums) {int res 0;int n nums.size();for (int i 0; i < n; i)if (n % (i 1) 0)res nums[i] * nums[i];return res;} };B 数组的最大美丽值 差分数组: n u m s [ i ] nums[…

cmake处理参数时的一些问题说明

cmake处理参数时的一些问题说明 函数传参空格和分号的坑函数转发的坑demo 函数传参遇到不平衡方括号的坑 函数传参空格和分号的坑 我们在处理函数和宏的时候不过不小心会遇到很多坑例如: someCommand(a b c) someCommand(a b c)因为cmake中使用空格或者分号分隔符所以上面代…

Django实现接口自动化平台(十一)项目模块Projects序列化器及视图【持续更新中】

相关文章&#xff1a; Django实现接口自动化平台&#xff08;十&#xff09;自定义action names【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解&#xff0c;查看本章内容时&#xff0c;要结合整体项目代码来看&#xff1a; python django vue httprunner …

LangChain 本地化方案 - 使用 ChatYuan-large-v2 作为 LLM 大语言模型

一、ChatYuan-large-v2 模型 ChatYuan-large-v2是一个开源的支持中英双语的功能型对话语言大模型&#xff0c;与其他 LLM 不同的是模型十分轻量化&#xff0c;并且在轻量化的同时效果相对还不错&#xff0c;仅仅通过0.7B参数量就可以实现10B模型的基础效果&#xff0c;正是其如…

自动化测试-selenium环境搭建

文章目录 1. 什么是自动化2. 自动化测试分类3. selenium的环境搭建4. 测试selenium 1. 什么是自动化 自动化是指使用软件工具、脚本或程序来执行一系列的任务、操作或流程&#xff0c;而无需人工干预或指导。 自动化测试&#xff1a;使用自动化工具和脚本来执行测试用例&#x…

浅谈端口 | 80端口和8080端口是2个不同的端口吗?有何区别?

目录 写在前面 端口及其特点 端口号的范围和分类 在HTTP超文本传输协议中80端口有正式的身份 写在前面 首先&#xff0c;确定以及肯定的是他们俩是完全不同的端口。一般80作为网页服务器的访问端口&#xff0c;比如一个网站的ip地址是119.119.119.119&#xff0c;我们在浏…

如何将SAP数据抽取到Azure数据湖平台?

经过多年的发展&#xff0c;SNP Glue 在全球已成为值得信赖且广为人知的解决方案&#xff0c;支持客户将其 SAP 数据与现代化的平台集成。SNP Glue 打破了数据孤岛&#xff0c;向数据科学家开放了 SAP&#xff0c;支持基于企业 SAP 数据的多个新用例。 随着时间的推移&#xff…

MySQL数据库之事物

一、MySQL事务的概念 &#xff08;1&#xff09;事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么都执行&#xff0c;要么都不执行。 &#xff08…

【基础理论】描述性统计基本概念

一、说明 统计学是数学的一个分支&#xff0c;涉及数据的收集、解释、组织和解释。本博客旨在回答以下问题&#xff1a; 1. 什么是描述性统计&#xff1f;2. 描述性统计的类型&#xff1f;3. 集中趋势的度量&#xff08;平均值、中位数、模式&#xff09; 4. 散布/离差度量&…

每天一道C语言编程(6):委派任务

题目描述 某侦察队接到一项紧急任务&#xff0c;要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人&#xff0c;但有以下限制条件&#xff1a; 1)A和B两人中至少去一人&#xff1b; 2)A和D不能一起去&#xff1b; 3)A、E和F三人中要派两人去&#xff1b; 4)B和C都去或都不去…

使用CatBoost和SHAP进行多分类完整代码示例

CatBoost是顶尖的机器学习模型之一。凭借其梯度增强技术以及内置函数&#xff0c;可以在不做太多工作的情况下生成一些非常好的模型。SHAP (SHapley Additive exPlanation)是旨在解释具有独特视觉效果和性能价值的机器学习模型的输出。CatBoost和SHAP结合在一起构成了一个强大的…

《动手学深度学习》(pytorch版本)中`d2lzh_pytorch`包问题

《动手学深度学习》&#xff08;pytorch版本&#xff09;中d2lzh_pytorch包问题

vue3-03 todo-新增任务

步骤&#xff1a; todoStorage.js&#xff1a;定义获取任务列表的方法、将任务存储到localStorage的方法、后续需要用到的获取随机id的方法。useTodoList.js&#xff1a;用一个响应式变量todosRef接收任务列表的数据&#xff1b;使用watchEffect方法将新增的任务保存到localSt…