当前位置: 首页 > news >正文

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

大家好,我是阿赵。这是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)

相关文章:

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

大家好,我是阿赵。这是MaxScript学习笔记分享的第九篇,可编辑多面体的操作。不知不觉写了这么多篇了,应该还有几篇就写完了。自己给自己加一下油。 在3DsMax里面如果需要建模,一般使用到的塌陷方式有3种,可编辑的网格、…...

【Redis场景5】集群秒杀优化-分布式锁

集群环境下的秒杀问题 前序 【Redis场景1】用户登录注册 【Redis场景2】缓存更新策略(双写一致) 【Redis场景3】缓存穿透、击穿问题 【Redis场景拓展】秒杀问题-全局唯一ID生成策略 【Redis场景4】单机环境下秒杀问题 在单机环境下的并发问题,我们可以使用相关…...

transformer目标检测开山之作detr

1. 将一个batch的图片输入backone获得feature。 (2,c,w,h)先输入resnet50中,得到(2,2048,w,h)。虽然这里channel不是256,但是在输入e…...

双指针法|位运算|离散化|区间合并

目录 双指针算法 位运算 离散化 序列合并 双指针算法 题目描述&#xff1a;1.输入n个单词&#xff0c;每个单词在输入的时候按空格隔开&#xff0c;之后打印出每个单词且换行 #include<iostream> #include <string>using namespace std; int main() {strin…...

Rockchip Android13 GKI开发指南

Rockchip Android13 GKI开发指南 文章目录Rockchip Android13 GKI开发指南GKI介绍Google upstream kernel下载及编译Rockchip SDK中GKI相关目录介绍Rockchip GKI编译代码修改编译固件烧写KO编译及修改添加新的模块驱动的方法调试ko方法开机log确认uboot阶段Android阶段KO加载KO…...

手把手教你原生JavaScript打造丝滑流畅的轮播图,让你的网站瞬间提升用户体验!

简介 轮播图是网页设计中常见的交互组件之一&#xff0c;用于展示多张图片或内容&#xff0c;让用户能够方便地浏览、切换和选择。本文将介绍如何使用原生 JavaScript 手写一个简单的轮播图&#xff0c;并且通过代码解释实现细节。 目录 简介 HTML 结构 CSS 样式 JavaScr…...

git常用基本操作

克隆远程代码更新本地代码 git clone <-b | -branch> [branch name] [repository URL] git pull #拉取远程仓库代码&#xff0c;更新本地仓库 git merge <branch-name> #合并目标分支 建立本地仓库分支 git branch #查看当…...

剑指 Offer —— 数组和字符串

文章目录剑指 Offer 04. 二维数组中的查找代码实现解题方案 思路算法步骤剑指 Offer 05. 替换空格题目描述代码实现解题方案 思路算法步骤剑指 Offer 11. 旋转数组的最小数字 - 解决方案题目描述剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中&#xff1a; 每…...

Java 字符编码

编码&#xff1a;数据存储进计算机中需要转换为二进制存储&#xff0c;这个过程就是编码。 解码&#xff1a;计算机读取数据并展示在页面上&#xff0c;需要将二进制转换为人类语言的过程&#xff0c;叫做解码。 乱码&#xff1a;如果编码和解码时使用的码表不一样&#xff0c;…...

ubuntu-9-安装chrony时间同步

使用chrony搭建时间同步服务器 [Linux系列]Chrony时间同步服务器 配置chrony服务&#xff0c;实现服务器时间自动同步 linux上内网环境配置NTP时间同步详解 经验体会&#xff1a;解决Ubuntu 18.04Windows双系统时间不同步的问题 1 时间同步 我们知道一台电脑主机&#xff0c;…...

CMMI流程规范—服务与维护

服务与维护&#xff08;Service and Maintenance, SM&#xff09;是指产品销售之后的客户服务和产品维护。客户服务和产品维护的宗旨就是提高客户对产品以及对开发方的满意度。服务与维护过程域是SPP模型的重要组成部分。本规范阐述了服务与维护过程域的两个主要规程&#xff1…...

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

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

Elasticsearch:构建自动补全功能 - Autocomplete

什么是自动补全&#xff08;autocomplete&#xff09;功能呢&#xff1f;我们举一个很常见的例子。 每当你去谷歌并开始打字时&#xff0c;就会出现一个下拉列表&#xff0c;其中列出了建议。 这些建议与查询相关并帮助用户完成查询。 Autocomplete 正如维基百科所说的&#xf…...

One UI 5.1 更新来了

之前一直在关注One UI 5.0里提到的视频通话背景功能模块&#xff0c;结果5.0版本推送的时候没有引入&#xff0c;有先行者计划博主说是5.1里肯定会有的&#xff1b;前一两天One UI 5.1更新来了&#xff0c;然而该功能还是没有引入&#xff0c;表示很遗憾&#xff1b;本次更新新…...

Python学习笔记11:文件

文件 打开文件 函数open的参数mode的最常见取值 值描述‘r’读取模式&#xff08;默认值&#xff09;‘w’写入模式‘x’独占写入模式‘a’附加模式‘b’二进制模式&#xff08;与其他模式结合使用&#xff09;‘t’文本模式&#xff08;默认值&#xff0c;与其他模式结合使…...

django-filter的使用

django-filter是一个通用的、可重用的应用程序&#xff0c;它可以减轻视图代码的编写工作量。具体来说&#xff0c;它允许用户根据模型的字段筛选查询集&#xff0c;并显示表单让他们这样做。 安装 pip install django-filter快速开始 在settings.py中添加如下配置: INSTAL…...

时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络)

时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络) 目录时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络)预测效果基本介绍程序设计参考资料预测效果 基本介绍 MATLAB实现IWO…...

【C++】string的成员函数、成员常量和非成员函数

目录 string 1. string的成员函数 1.1 构造、析构和赋值运算符重载 1.1.1 构造函数 1.1.2 析构函数 1.1.3 赋值运算符重载 1.2 迭代器 1.3 容量 1.4 元素访问 1.4.1 遍历方法 1.5 修改器 1.6 字符串操作 2. string的成员常量 3. string的非成员函数 string 以下…...

网络互连模型:OSI 七层模型

OSI 七层模型 七层模型&#xff0c;亦称 OSI&#xff08;Open System Interconnection&#xff09;。OSI 七层参考模型是国际标准化组织&#xff08;ISO&#xff09;制定的一个用于计算机或通信系统间网络互联的标准体系&#xff0c;一般称为 OSI 参考模型或七层模型。OSI 七层…...

18跨越语言:不同语言间进行RPC通信

在最开始介绍gRPC时我们讲到,gRPC具有灵活的兼容性,可以支持很多种编程语言,下面我们就使用在后端领域最常用的两种编程语言Go和Java,来体验一下gRPC在不同语言的项目间是如何进行通信的。 逻辑架构 由上图我们可以看出,Go语言设计gRPC的服务端,Java语言设计gRPC的客户端…...

解压缩工具:Bandizip 中文

bandizip是一款可靠和快速的压缩软件&#xff0c;它可以解压RAR、7Z、ZIP、ISO等数十种格式&#xff0c;也可以压缩7Z、ZIP、ISO等好几种常用格式&#xff0c;在压缩文件方面毫不逊色于winrar&#xff0c;适用于多核心压缩、快速拖放、高速压缩等功能&#xff0c;采用了先进快速…...

JAVA知识点全面总结2:面向对象

二.面向对象 1.面向对象有哪些重要的关键字&#xff1f;作用是什么&#xff1f; 2.理解多态的使用&#xff1f; 3.接口与抽象类的相同点和不同点&#xff1f; 4.equals和toString的判断&#xff1f; 5.新建对象的流程是什么&#xff1f;new一个对象&#xff1f; 6.深拷贝…...

DNS作用及工作原理

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

Android 9.0 wifi的随机mac地址修改为固定不变

1.前言 在9.0的系统rom产品定制化开发中,在系统默认的wifi的mac地址是会在联网前后会变化,因为默认是随机显示mac地址,所以会在连上wifi后mac地址会变动但是如果根据mac地址来升级 会引起一系列问题,为了避免这些问题 所以就要求固定mac地址,这就需要看wifi模块怎么改变ma…...

Apinto 网关 V0.11.1 版本发布,多协议互转,新增编码转换器,接入 Prometheus

Eolink 旗下 Apinto 开源网关再次更新啦~ 一起来看看是否有你期待的功能&#xff01; 1、协议转换功能上线 之前发布的 Apinto v0.10.0 已经支持了多协议的基本功能&#xff0c;实现多协议支持的一次验证。本次最新版本可以支持 HTTP 与 gRPC、HTTP 与 Dubbo2 之间的协议转换。…...

Android 12.0 根据app包名授予app监听系统通知权限

1.概述 在12.0的系统rom产品定制化开发中,在一些产品rom定制化开发中,系统内置的第三方app需要开启系统通知权限,然后可以在app中,监听系统所有通知,来做个通知中心的功能,所以需要授权 获取系统通知的权限,然后来顺利的监听系统通知。来做系统通知的功能 2.根据app包名…...

mysql视图和存储过程

视图视图就是将一条sql查询语句封装起来&#xff0c;之后使用sql时&#xff0c;只需要查询视图即可&#xff0c;查询视图时会将这条sql语句再次执行一遍。视图不保存数据&#xff0c;数据还是在表中。SELECT 语句所查询的表称为视图的基表&#xff0c;而查询的结果集称为虚拟表…...

uniapp 实现人脸认证

前言 对于前端来说&#xff0c;需要后端提供一个人脸识别接口&#xff0c;前端传入图片&#xff0c;接口识别并返回结果&#xff0c;如此看来&#xff0c;其实前端只需实现图片传入即可&#xff0c;但是其实不然&#xff0c;在传入图片时&#xff0c;需要进行以下几点操作&…...

自学大数据第三天~终于轮到hadoop了

前面那几天是在找大数据的门,其实也是在搞一些linux的基本命令,现在终于轮到hadoop了 Hadoop hadoop的安装方式 单机模式: 就如字面意思,在一台机器上运行,存储是采用本地文件系统,没有采用分布式文件系统~就如我们一开始入门的时候都是从本地开始的; 伪分布式模式 存储采用…...

Unity 入门精要00---Unity提供的基础变量和宏以及一些基础知识

头文件引入&#xff1a; XXPROGRAM ... #include "UnityCG.cginc"; ... ENDXX 常用的结构体&#xff08;在UnityCg.cginc文件中&#xff09;&#xff1a;在顶点着色器输入和输出时十分好用 。 关于如何使用这些结构体&#xff0c;可在Unity安装文件目录/Editor…...