seo整站优化网站建设,网站建设广告管理,wordpress config.php,电子商务推荐类网站建设的目的大家好#xff0c;我是阿赵。这是MaxScript学习笔记分享的第九篇#xff0c;可编辑多面体的操作。不知不觉写了这么多篇了#xff0c;应该还有几篇就写完了。自己给自己加一下油。 在3DsMax里面如果需要建模#xff0c;一般使用到的塌陷方式有3种#xff0c;可编辑的网格、…大家好我是阿赵。这是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 0VertexColor 1VertexIllumination 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)