分享一些maxscript代码片段

设置当前目录,获取当前目录

sysInfo.currentdir

"C:\Program Files\Autodesk\3ds Max 2016"

sysinfo.currentdir = "D:\\workVRbak\\南通给模型\\南通max\\南通日景"

"D:\workVRbak\南通给模型\南通max\南通日景"
polyop.moveVert <Poly poly> <vertlist> {<point3 offset>|<point3 offset_array>} \
node:<node> useSoftSel:<bool>
通过offset偏移量移动

polyop.getVert <Poly poly> <int vertex> \
node:<node=unsupplied>
Returns the tposition of the specified vertex 返回的是位置

polyop.getVertSelection <Poly poly>
Returns the current vertex selection as a bitarray. 返回bitarray  #{972,1,2...975}

polyop.setVertSelection <Poly poly> <vertlist> 【Sets the current vertex selection based on <vertlist>.】
范例:polyop.setvertselection $ #{1,2,3}
<vertlist>是 #{1,2,3}

从手册看polyop的方法都是小写开头,也能写成大写,而EditablePoly的方法都是大写的,能写成小写,maxscript不区分大小写

polyop.setVert $ 1 (polyop.getvert $q3 1)
顶点位置设置,将当前物体的1顶点移动到q3物体的1顶点。
polyop.setVert $ 1 [1,1,1]--将当前物体的1顶点移动到[1,1,1]
polyop.getNumVerts $ --获取顶点数量
polyop.getVert $ 1 --获取顶点1的位置
polyop.setVert $ 1 [0,0,0] --设置顶点1的位置为[0,0,0]
<integer><EditablePoly>.GetNumVertices () --获取顶点数量
<integer><EditablePoly>.GetNumFaces () --获取面数量
<integer><EditablePoly>.GetNumEdges () --获取边数量
<point3><EditablePoly>.GetVertex <index>vertexID --获取顶点位置

以下代码真是无语

xx = (atan2 v u) / 180 - 1 //ok
xx = (atan2 v u) / 180 -1 //error,确实会报错

调用命令行,调用外部exe或文件

DOSCommand "delete c:\\temp\\foo.dat"
DOSCommand ("copy " + source_file + " " + dest_folder)

ShellLaunch "E:\\tests\\lookup.html" ""

shellLaunch "e:/t.avi" "/play /loop"

ShellLaunch "firefox.exe" @"c:\temp\report.html"

ShellLaunch "iexplorer.exe" @"c:\temp\report.html"
ShellLaunch @"c:\windows\" ""

ShellLaunch "explorer.exe" @"c:\windows"

选择一些顶点塌陷成一个顶点

p = convertToPoly(Plane()) --create a plane, convert to Epoly,一句实现2步
polyop.setVertSelection p #{7,8,12,13} --select some vertices,指定选择的顶点
p.EditablePoly.collapse #Vertex --collapse the selected vertices,将这些顶点塌陷为一个点

多个点沿轴偏移

p = convertToPoly(Plane()) --create a plane, convert to Epoly
polyop.setVertSelection p #{7,8,12,13} --select some vertices
p.movetoplane [0,0,1] 5.0 #Vertex --move 5.0 units along +Z
<void><EditablePoly>.SelectElement ()--从当前选择的edge选择元素
<enum><EditablePoly>.GetEPolySelLevel ()--获取当前level,返回的是枚举,如当前选择的是元素级别返回#Elemen

先选择了一个顶点,直接切到元素选择,此时运行$.GetSelection #Vertex,相当于直接切到顶点级别,将获取到1个顶点

<bitArray><EditablePoly>.GetSelection <enum>selectionLevel
selectionLevel enums: {#Object|#Vertex|#Edge|#Face|#CurrentLevel}

先在顶点级别选择顶点3,切换到元素级别,运行$.SetSelection #Vertex #{5},这时候切到顶点级别,发现顶点选择了5

<integer><EditablePoly>.GetVertexEdgeCount <index>vertexID --返回顶点的共享边数量

返回材质id,从面id

<index><EditablePoly>.GetFaceMaterial <index>faceID

这是一个选择当前物体z坐标小于100的所有点

a=#()
convertToPoly $
vertCount = polyop.getNumVerts $
for j=1 to vertCount do
(
    if ($.getVertex j).z < 100 as float do
    (
        append a j
    )
)
polyop.setVertSelection $ a

从一个pos,沿一个方向发射一条射线

ray <pos_point3> <dir_point3>
--Returns a new ray with given position and direction vector. 
intersectRay <node> <ray> 
--返回最近的交点

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maxscript是3D Max软件的一种脚本语言,用于增强软件的功能和自动化任务。Maxscript脚本可以用于创建自定义工具、操作场景中的对象、编辑材质和纹理、控制动画等各种操作。Maxscript内置了大量的命令和函数,方便用户进行开发和脚本编写。 为了更好地理解和学习Maxscript,中文帮助对于中文用户来说是十分重要的。Maxscript中文帮助提供了对Maxscript语言和命令的详细解释和示例,使用户能够更方便地查找和理解需要的信息。 Maxscript中文帮助内容包括Maxscript语言的基本语法、常用命令和函数的介绍,以及实例代码和教程等。通过阅读中文帮助,用户可以了解到如何使用Maxscript进行对象的创建、变换和操作,如何编写循环和条件语句,如何控制摄像机和灯光等等。 同时,Maxscript中文帮助也可以帮助用户解决在使用Maxscript过程中遇到的问题和困惑。用户可以通过搜索关键词或浏览目录来找到相关的主题,并查看详细的说明和示例代码。如果遇到特定的问题,用户还可以参考Maxscript中文帮助中的常见问题解答部分,以获取更具体的解决方案和建议。 总之,Maxscript中文帮助为用户提供了学习和使用Maxscript的重要工具和资源。它帮助用户更好地理解Maxscript语言和命令,提供了丰富的示例和教程,解决了用户在使用Maxscript过程中的困惑和问题。用户可以根据自己的需要,随时随地地查找和学习Maxscript相关的知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值