阿赵的MaxScript学习笔记分享九《可编辑多面体的操作》

news2025/1/16 18:46:39

大家好,我是阿赵。这是MaxScript学习笔记分享的第九篇,可编辑多面体的操作。不知不觉写了这么多篇了,应该还有几篇就写完了。自己给自己加一下油。
在3DsMax里面如果需要建模,一般使用到的塌陷方式有3种,可编辑的网格、多面体和面片。
对于我自己来说,我觉得可编辑多面体(Editable Poly)是功能比较完善的一种类型,所以这里单独拿出来讲一下它的用法。

1、把物体转换成EditablePoly

在这里插入图片描述

使用converttopoly方法可以把指定的对象转换成可编辑多面体

2、选择不同的编辑层级

在这里插入图片描述

首先确保是在编辑界面上选择了想要改变编辑层级的对象,比如上面的例子,需要改变的对象是boxt1,所以是这样写:
modPanel.setCurrentObject boxt1.baseObject
然后通过subobjectLevel = 层级编号 来指定打开的层级
0:不选择
1:顶点层级
2:线段层级
3:边缘层级
4:面层级
5:多面体层级

3、顶点层级操作

1.获取顶点的数量

在这里插入图片描述

这里有两种办法可以获得顶点的数量
使用numverts属性,或者使用polyop.getnumverts的方法
需要注意的是,polyop提供的方法,都只能用在可编辑多边形上面,不然会报错
在这里插入图片描述

2.顶点坐标的获取和修改

在这里插入图片描述

通过(polyop.getvert 对象 序号)方法,可以获得对象身上某个序号的顶点的坐标
在这里插入图片描述

改变顶点坐标,有2种方法
第一种是通过(对象.EditablePoly.SetSelection #Vertex #{序号})的方法,先选中了某个点,然后通过(move 对象.selectedVerts [坐标])来移动
第二种办法是直接通过(polyop.setVert 对象 序号 [坐标])来直接设置某个顶点的坐标

3.设置顶点颜色

在这里插入图片描述

方法(polyop.setVertColor 对象 通道 顶点数组序号 颜色)可以改变顶点色
注意,这里的通道,具体是有0、-1、-2这三种,其中
0:顶点固有色
-1:顶点自发光颜色
-2:顶点颜色的alpha通道
顶点序号是一个数组,举个例子,如果我想把boxt1d所有顶点的固有色都改成红色,可以这样写:
polyop.setVertColor boxt1 0 #(1,2,3,4,5,6,7,8) (color 255 0 0)
还需要注意的地方是,3DsMax默认是不显示顶点色的,所以需要在物体属性里面勾选显示顶点色,并指定显示的通道
在这里插入图片描述
在这里插入图片描述

这个过程当然也可以用脚本设置
显示顶点色:
对象.showVertexColors = true
显示不同的通道:
对象.vertexColorType = 通道序号
需要注意的是,设置vertexColorType的通道序号,是刚才设置顶点色的通道乘以-1
0:VertexColor
1:VertexIllumination
2:VertexAlpha

我们常用的编写着色器过程,一般使用顶点色都是rgba的,所以我们需要指定固有色和Alpha这两个通道,这样,在游戏引擎写着色器时,获取VertexColor,就能得到0和-2两个通道组成的rgba值

如果想清除已经设置的顶点颜色,可以通过(channelInfo.ClearChannel 对象 通道)来操作
比如想清除boxt1的alpha通道颜色,可以channelInfo.ClearChannel boxt1 -2

4、polyop所有方法列表

上面详细介绍了顶点的相关操作,我个人觉得是比较常用的,其他的线段、边缘、面、多面体级别,就不一一介绍了,可以看看polyop的所有方法列表,通过单词的意思应该可以看懂具体方法的作用
freeVData:; Public,
setNumMapFaces:; Public,
meshSmoothByEdge:; Public,
collapseFaces:; Public,
meshSmoothByVert:; Public,
forceSubdivision:; Public,
getEdgesUsingFace:; Public,
getEdgeFlags:; Public,
setVertSelection:; Public,
getVDataValue:; Public,
setNumMapVerts:; Public,
collapseEdges:; Public,
getFaceSmoothGroup:; Public,
breakVerts:; Public,
attach:; Public,
getFacesUsingEdge:; Public,
setVertFlags:; Public,
setVDataChannelSupport:; Public,
setMapSupport:; Public,
weldEdges:; Public,
unHideAllFaces:; Public,
createVert:; Public,
getFaceArea:; Public,
getFacesUsingVert:; Public,
getVertsByFlag:; Public,
setNumVDataChannels:; Public,
setNumMaps:; Public,
createEdge:; Public,
setDiagonal:; Public,
autosmooth:; Public,
weldVertsByThreshold:; Public,
getSafeFaceCenter:; Public,
isVertDead:; Public,
setHiddenFaces:; Public,
resetEData:; Public,
setFaceColor:; Public,
setEdgeVis:; Public,
bevelFaces:; Public,
setFaceMatID:; Public,
moveVert:; Public,
getFaceDeg:; Public,
isFaceDead:; Public,
setHiddenVerts:; Public,
setEDataValue:; Public,
applyUVWMap:; Public,
createShape:; Public,
moveFacesToPlane:; Public,
retriangulate:; Public,
chamferVerts:; Public,
getVert:; Public,
getFaceVerts:; Public,
getDeadFaces:; Public,
getNumFaces:; Public,
getEDataChannelSupport:; Public,
getMapFace:; Public,
makeEdgesPlanar:; Public,
capHolesByFace:; Public,
makeVertsPlanar:; Public,
setSlicePlane:; Public,
getEdgeVerts:; Public,
getDeadVerts:; Public,
getNumVerts:; Public,
getNumEDataChannels:; Public,
getMapVert:; Public,
cutEdge:; Public,
detachFaces:; Public,
cutVert:; Public,
resetSlicePlane:; Public,
isMeshFilledIn:; Public,
getFaceFlags:; Public,
getFaceSelection:; Public,
resetVData:; Public,
getNumMapFaces:; Public,
tessellateByEdge:; Public,
meshSmoothByFace:; Public,
tessellateByVert:; Public,
propagateFlags:; Public,
getElementsUsingFace:; Public,
setEdgeFlags:; Public,
getEdgeSelection:; Public,
checkTriangulation:; Public,
setVDataValue:; Public,
getNumMapVerts:; Public,
splitEdges:; Public,
divideFace:; Public,
collapseVerts:; Public,
deleteIsoVerts:; Public,
getVertsUsingFace:; Public,
getEdgesByFlag:; Public,
getVertSelection:; Public,
getVDataChannelSupport:; Public,
getMapSupport:; Public,
divideEdge:; Public,
slice:; Public,
setFaceSmoothGroup:; Public,
unHideAllVerts:; Public,
collapseDeadStructs:; Public,
getVertsUsingEdge:; Public,
getVertFlags:; Public,
getNumVDataChannels:; Public,
getNumMaps:; Public,
weldEdgesByThreshold:; Public,
createPolygon:; Public,
weldVerts:; Public,
getFaceNormal:; Public,
getEdgesUsingVert:; Public,
getOpenEdges:; Public,
setVertColor:; Public,
chamferEdges:; Public,
deleteEdges:; Public,
deleteFaces:; Public,
deleteVerts:; Public,
getFaceCenter:; Public,
isEdgeDead:; Public,
getHiddenFaces:; Public,
freeEData:; Public,
getVertsByColor:; Public,
getEdgeVis:; Public,
extrudeFaces:; Public,
getFaceMatID:; Public,
setVert:; Public,
getFaceEdges:; Public,
getHasDeadStructs:; Public,
getHiddenVerts:; Public,
getEDataValue:; Public,
defaultMapFaces:; Public,
moveEdgesToPlane:; Public,
makeFacesPlanar:; Public,
flipNormals:; Public,
moveVertsToPlane:; Public,
inSlicePlaneMode:; Public,
getEdgeFaces:; Public,
getDeadEdges:; Public,
getNumEdges:; Public,
setEDataChannelSupport:; Public,
setMapFace:; Public,
capHolesByEdge:; Public,
cutFace:; Public,
capHolesByVert:; Public,
getSlicePlane:; Public,
getBorderFromEdge:; Public,
setFaceFlags:; Public,
setFaceSelection:; Public,
setNumEDataChannels:; Public,
setMapVert:; Public,
detachEdges:; Public,
tessellateByFace:; Public,
detachVerts:; Public,
fillInMesh:; Public,
getVertsUsedOnlyByFaces:; Public,
getFacesByFlag:; Public,
setEdgeSelection:; Public)

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

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

相关文章

P6专题:P6 EPPM和PPM基本概念

目录 引言 Oracles Primavera P6 Enterprise Project Portfolio Management(P6 EPPM) Oracles Primavera P6 Professional Project Management 引言 Oracle Primavera系列软件专注于项目密集型企业,其整个项目生命周期内所有项目的组合管…

一些Linux内核内存性能调优笔记!

前言 在工作生活中,我们时常会遇到一些性能问题:比如手机用久了,在滑动窗口或点击 APP 时会出现页面反应慢、卡顿等情况;比如运行在某台服务器上进程的某些性能指标(影响用户体验的 PCT99 指标等)不达预期…

JavaEE学习笔记-SpringBoot快速上手、部分注解解释

SpringBoot快速上手 一、快速创建SpringBoot应用1.1利用IDEA提供的Spring Initializr创建Spring Boot应用1.2Spring Boot生成的项目结构介绍1.3初步测试后端是否OK(建立一个controll类)二、热部署2.1 添加依赖2.2 Setting处项目自动化设置2.3 具体项目设置2.4 待选步骤三、注…

渗透five86-3

本机kali ip为:192.168.56.104,靶机ip用nmap -sP或者arp-scan -l去查看靶机ip为192.168.56.121输入nmap -sS -sV -T5 -A 192.168.56.121 #进行靶机端口信息收集发现仅有80端口,同时发现了robots.txt文件,打开web端发现是Drupal 7的框架,之前的…

【蓝桥杯集训12】DFS(3 / 5)

目录 842. 排列数字 - DFS按位置枚举 843. n-皇后问题 - DFS按行枚举 165. 小猫爬山 - DFS枚举小猫 1209. 带分数 - DFS 3502. 不同路径数 - 842. 排列数字 - DFS按位置枚举 活动 - AcWing 题目: 给你一个整数n 要求将1~n的所有排列情况列出 比如&#xff1a…

stm32hal库硬件IIC使用OLED(SSD1306)

其实OLED算是非常常用的一个小模块了,之前用的一直用的是软件模拟的IIC,总的来说感觉还是都是有点"答辩",经常莫名其妙的就点不亮的,用了cubemx之后硬件iic配置就非常方便了,还是想用硬件iic,一方…

C++ 常用命令行开发工具(Linux)

文章目录1、简介2、gcc / g2.1 system(执行shell 命令)2.2 popen(建立管道I/O)2.3 vforkexec(新建子进程)3、clang3.1 下载和安装clang3.2 clang和gcc比较3.2.1 gcc3.2.2 clang3.2.3 LLVM4、make4.1 例子14…

DNS作用及工作原理

文章目录1. DNS作用2 DNS 三个组成部分:2.1 客户端2.2Local DNS2.3 权威域 DNS 服务器3 工作过程1. DNS作用 DNS 分为 Client 和 Server,Client 扮演发问的角色,也就是问 Server 一个 Domain Name,而 Server 必须要回答此 Domain…

MySQL实战解析底层---深入浅出索引

目录 前言 索引的常见模型 InnoDB 的索引模型 索引维护 后言 覆盖索引 最左前缀原则 索引下推 前言 一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样一本500 页的书,如果你想快速找到其中的某一个知识点&…

CentOS安装RStudio-Server的方法

R语言是生信分析、数据挖掘最常用最好用的软件之一,得到了广大生信工程师、数据分析师的厚爱。Rstudio 是 R 的集成开发环境,使得R语言的用户体验更强。一般个人电脑(PC, Personal Computer)使用单机版的 Rstudio 即可&#xff0c…

I.MX6ULL_Linux_系统篇(22) kernel移植

原厂 Linux 内核编译 NXP 提供的 Linux 源码肯定是可以在自己的 I.MX6ULL EVK 开发板上运行下去的,所以我们肯定是以 I.MX6ULL EVK 开发板为参考,然后将 Linux 内核移植到 I.MX6U-ALPHA 开发板上的。 配置编译 Linux 内核 和uboot一样,在编…

C#/Unity------抽象类与接口(一篇文章彻底搞懂...)

抽象类/接口以及区别 SUMMARY: 具体类→抽象类→接口:越来越抽象,内部实现的东西越来越少 一、抽象类 抽象类是未完全实现逻辑的类 抽象类为复用而生,专门用作基类 封装确定的,开放不确定的,推迟到合适的子类来实现…

初识STM32单片机

目录 初识STM32单片机 什么是单片机? STM系列单片机命名规则 STM32F103C8T6单片机简介 标准库与HAL库区别 通用输入输出端口GPIO 什么是GPIO? 定义 命名规则 内部框架图 推挽输出与开漏输出 如何点亮一颗LED灯 编程实现点灯 按键点亮LED灯…

【JavaWeb】CSS基础知识:引入方式 + 选择器

目录 CSS引入 行内样式表 内部样式表 外部样式表 CSS选择器 基础选择器 标签选择器 类选择器 ID选择器 通配符选择器 复合选择器 后代选择器 子选择器 CSS引入 CSS的引入有三种&#xff0c;三种的优缺点各不相同。 行内样式表 <!-- 行内样式表 --><!--…

Splunk Add-on 碰到证书SSL问题

最近Splunk add-on 在连接对方app 的 时候,经常报SSL的错: ERROR AdminManagerExternal - Unexpected error "<class requests.exceptions.SSLError>" from python handler: "HTTPSConnectionPool(host=app.com, port=443): Max retries exceeded with…

flex布局方式让最后一个(或第二个...n)元素居右显示

<div class"round"> <div class"income">收入</div> <div class"center"> <img style"width: 12px" src"../../img/big/up.png"> </div> <div class"rg"> <span cl…

项目实战典型案例1——redis只管存不管删除 让失效时间删除的问题

redis只管存不管删除 让失效时间删除的问题一&#xff1a;背景介绍二&#xff1a;思路&方案三&#xff1a;代码模拟1.错误示范通过班级id查询课程名称执行结果通过班级id修改课程名称&#xff08;并没有删除对应缓存&#xff09;执行结果2.正确示范在错误示范的更新接口上添…

详解进程 及 探查进程

进程的概念PCB是什么task_struct的作用如何执行进程进程的探查什么是bashps命令的使用&#xff08;查看进程&#xff09;创建进程探究父子进程进程的概念 简而言之&#xff0c;进程就是正在在执行的程序 之前说过&#xff0c;程序执行的第一步Windows是双击程序Linux是 ./ &a…

vue路由篇

路由的理解 介绍 路由(英文&#xff1a;route)就是对应关系&#xff0c; 路由分为前端路由和后端路由&#xff0c;比如前端路由就是 Hash 地址与组件之间的对应关系。 具体来说&#xff1a;一个路由就是一组key-value的对应关系 key 为 url 路径value 可能是函数function 或…

反弹shell数据不回显带外查询pikaqiu靶场搭建

P1 文件上传下载&#xff08;解决无图形化和解决数据传输&#xff09; 解决无图形化&#xff1a; 当我们想下载一个文件时&#xff0c;通常是通过浏览器的一个链接直接访问网站点击下载的&#xff0c;但是在实际的安全测试中&#xff0c;我们获取的权限只是一个执行命令的窗口…