• 启用max脚本
  • 数据类型
  • 基本使用
    • 基本数学操作
    • 建模操作
  • 语法
  • 函数
  • 导入导出
  • 应用实例
  • 总结

MAXscript是3ds Max内置脚本语言,Max2.0及以后加入的功能。也能使用在与3ds Max相关的产品中如Autodesk VIZ,character studio,Plasma和GMax;脚本可使用于建模,动画,材质,渲染等等。它是专门为3D Studio Max设计的。 – 摘自百度百科

1. 启用max脚本

  • 在3d max软件中打开max script菜单,打开max script侦听器,这是一个交互式的界面,可在里面输入脚本代码。
  • 在max script菜单中,打开max script编辑器可编辑脚本文件,主要好处是有高亮显示,也可以用别的编辑器。
  • 在max script菜单中,选择运行脚本,选择脚本位置,即可运行自定义的脚本文件。

2. 数据类型

1. int
2. float
3. string
4. 数组 数组的每个元素可以是不同的,下标是从1开始的

1 +2
3
1.0+2.0
3.0
a = "hello"
"hello"
#(1,2,3,"asd",[12,3])
#(1, 2, 3, "asd", [12,3])
a = #(1,2,4,4)
#(1, 2, 4, 4)
a[1]
1
a[3]
4

5. 类型转换

a = 1
1
a as string
"1"
a = "1"
"1"
a as float
1.0
a = "1.0"
"1.0"
a as integer
1

6. 结构体
struct <struct_name> ( <member> , <member> )
声明:Struct person (name, height, age, sex)
实例化:Bill = person name:"Bill" height:72 age:34 sex:#male

3. 基本使用

基本数学操作

2*3
6
pi *2
6.28319
2 ^3
8
"asd"+"def"
"asddef"
random 1 100   // 生成1 -100 的随机数
1
random 1.0 100
56.6555
x =1
1
x+=1
2

建模操作

  • 生成一个box 不区分大小写

    1. Box()
    2. mybox = Box() 后面无参数就需要加上括号
    3. mybox = box length:20 width:20 height:20生成的box带有一定的参数。类似函数调用,不能带括号,后面是参数
      生成的box 的box默认的名字是Box001
  • 取得一个box

    1. $Box001 使用对象名
    2. mybox 使用变量名
  • 修改属性

    1. $Box001.width=100
    2. mybox.length=100
    3. mybox.wirecolor = (color 255 0 255)
    4. mybox.scale = [1.5,1.5,1.5]
  • 变换

    1. move mybox [10,0,0] 移动
    2. scale name_obj [<x,y,z>] 放缩
    3. rot_box = eulerangles 0 30 0
      rotate mybox rot_box
      旋转,需要先设置一个旋转角,再旋转,可以看成是函数的调用
  • 增加修改器
    addModifier mybox (twist angle:30)
    更改修改器属性
    mybox.twist.angle = 60
    获得修改器的属性

showclass "twist.*"
Twist(扭曲) : modifier {90,0}.axis(轴) : integer.bias(偏移) : float.angle(角度) : float.limit(限制) : boolean.upperlimit(上限) : float.lowerlimit(下限) : float
OK
  • 获取某个修改器的全部属性
showclass "box.*"
Box(长方体) : GeometryClass {10,0}.height(高度) : float.length(长度) : float.lengthsegs : integer.width(宽度) : float.widthsegs : integer.mapcoords : boolean.heightsegs(高度分段) : integer

4. 语法

条件
if mybox.height == 10 then mybox.width = 20

循环

for i = 1 to 5 do
(
box_copy = copy mybox
box_copy.pos = [i * 50, 0, 0]
)

设置间隔

for i = 1 to 5 by 2 do
(
box_copy = copy mybox
box_copy.pos = [i * 50, 0, 0]
)

使用

arr = for i=1 to 5 collect i
#(1, 2, 3, 4, 5)for i in arr do print i
1
2
3
4
5
OKfor i = 1 to arr.count do print arr[i]
1
2
3
4
5

do while 循环

do <expr> while <expr> -- do loop
while <expr> do <expr> -- while loopx=10
while x>0 do print (x-=1)
9
8
7
6
5
4
3
2
1
0
0x=10
do print (x-=1) while x>10

局部变量和全局变量

for i = 1 to 3 do
(
local rad = 10
s = sphere()
s.pos.x = i * 10
s.radius = rad
)global rad = 10
sphere radius:rad

5. 函数

  • 函数调用

    1. 【函数名 实参】
    2. 【函数名 参数名:值 参数名:值】
  • 函数定义
    1. 【fn 函数名 形参 = (……)】
    2. 【function 函数名 参数1:值 参数2:值 = ()】
      如果有多个参数直接往后叠加就行
// 方式二
function sig num:0 test:"2" =
(
if num==0
then messagebox("0")
else if num ==1
then messagebox ("1")
else messagebox("2")
messagebox(test)
)sig test:"3" num:0 

// 方式一
fn si temp =
(messagebox(temp)
)
si "data"

6. 导入导出

  • 导入
    importFile "C:\Users\uux\Desktop\576.obj" #noPrompt
  • 导出
    exportFile "C:\Users\uux\Desktop\5761.obj" #noPrompt
  • 重置场景
    resetMaxFile #noprompt无提示

7. 应用实例

学习max script脚本主要是有一个需求对obj文件进行批量的细化操作,以下是操作代码。

for i =0 to 590 do
(resetMaxFile #noprompturl1 = "F:\m\seg" +i as string + ".obj"; -- 获得文件名url2 = "F:\\nm\seg" +i as string + ".obj";importFile url1 #noPrompt -- 导入addmodifier $default (tessellate tension:0) -- 增加细化修改器$default.tessellate.iterations = 1    -- 修改迭代次数exportFile url2 #noPrompt    -- 导出
)

8. 总结

max script脚本是一门很有用的语言,使用脚本基本可以实现图形界面大部分的操作,可快速的进行批量的模型操作,同时还可以生成动画,建模,模型调整等等操作,可以较大提升生产力。第一次接触,并不是很了解max script,如有错误,欢迎指出。

Max Script 入门教程相关推荐

  1. 3D MAX 入门教程内容结构

    入门教程内容结构 本教程内容分为五个部分,用几个具体的例子讲解大多数的脚本操作和语法知识. 一.MAXScript简介 1.说明什么是MAXScript以及它有什么功能,能给用户带来什么好处. 2.访 ...

  2. 3Ds max入门教程:快捷键命令和鼠标热键大全

    推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 起初,您可能需要花一些时间查找热键,但是一旦您使用它们记住了它们,它们将使您以至少两倍的速度产生结果.例如,当您进行建模(移动.缩放.旋 ...

  3. ASP.NET CORE 入门教程(附源码)

    ASP.NET CORE 入门教程 第一课 基本概念 基本概念 Asp.Net Core Mvc是.NET Core平台下的一种Web应用开发框架 符合Web应用特点 .NET Core跨平台解决方案 ...

  4. 关于flask入门教程-ajax+echarts实现大屏展示

    陆陆续续写了一个系列的flask入门教程了,最后以一个半成品大屏做个了结,也算是一段时间的成果吧,毕竟不是专业码农,只是爱好而已,还有很多其他的事情等待探索. 大屏用到的技术主要包括标准的HTML.C ...

  5. Python基础入门教程:Day21-30/Web前端概述

    Python基础入门教程:Web前端概述 说明:本文使用的部分插图来自 Jon Duckett 先生的*HTML and CSS: Design and Build Websites*一书,这是一本非 ...

  6. leafLet入门教程兼leafLet API中文文档参考

    leafLet官方文档链接(英文原版):https://leafletjs.com/reference-1.3.4.html#marker-bindpopup 文章目录 leafLet教程 一.简单入 ...

  7. ECharts实现数据可视化超详细基础入门教程

    ECharts实现数据可视化超详细基础入门教程 ECharts介绍 ECharts官网:https://echarts.apache.org/zh/index.html ECharts是一款基于Jav ...

  8. Python入门教程出炉:Day21-30_Web前端概述

    Python入门教程出炉:Day21-30_Web前端概述 [说明]:本文使用的部分插图来自Jon Duckett先生的HTML and CSS: Design and Build Websites一 ...

  9. zendframework2入门教程

    目录 序言 5 第 1章 Zend Framework2 简介 6 1.1 Zend Framework2 简介 6 1.2 下载安装 6 1.3 搭建开发环境 6 第2章 创建ZF2项目 7 2.1 ...

  10. 【CV】Pytorch一小时入门教程-代码详解

    目录 一.关键部分代码分解 1.定义网络 2.损失函数(代价函数) 3.更新权值 二.训练完整的分类器 1.数据处理 2. 训练模型(代码详解) CPU训练 GPU训练 CPU版本与GPU版本代码区别 ...

最新文章

  1. memcached安装、使用
  2. 【Linux】一步一步学Linux——stat命令(77)
  3. MySQL 的 bug 必须修复吗?
  4. [Java基础]接口基础
  5. 《动手学深度学习》 第二天 (自动求梯度)
  6. HUE WorkFlow Schedule 调用Hive参数传递,外部参数传递,时间参数传递
  7. 基于jQuery实现自动或点击切换效果
  8. C-Wandering Robot 模拟
  9. c#基础传智播客学习截图
  10. nginx中配置pathinfo模式示例
  11. python读写pdf_Python读写PDF
  12. 4-google translate插件安装及使用
  13. 路由器下一跳地址怎么判断_三分钟了解路由器路由表
  14. 获取必应每日一图网址
  15. 扬州鉴真国际半程马拉松
  16. 新型智慧城市的技术诠释
  17. 实现国产化转型,ZStack Cloud 助力中铁财务数字化转型!
  18. Unity中的角色属性芒星比例图
  19. 程序员github头像_给新程序员的5个GitHub技巧
  20. 助你成功的10个万能谈话技巧

热门文章

  1. 2019年大学计算机基础题库,大学计算机基础考试题库(含答案)
  2. python银行系统-python实现简单银行管理系统
  3. 年轻导演的创业之路-杨立坤
  4. c语言 鼠标宏,鼠标宏设置软件下载 Mini Mouse Macro(鼠标宏设置工具) v7.2.0.0 免费安装版 下载-脚本之家...
  5. 如何在计算机设置鼠标宏,鼠标宏怎么设置,详细教您鼠标如何设置宏
  6. 软件无线电原理深入解析
  7. 微PE安装win10系统 GPT、BOOTMGR PBR、EFI PART红色
  8. [Zinnia][Windows]手写输入法的一些研究
  9. 改写jtopo滚轮缩放代码
  10. paraview视图vtkView