最近修改一个maya中的jlCollisionDeformer工具,该工具有一个明显不足,变形后顶点分布太乱,无法满足生产需求。于是考虑对该变形后的顶点进行平滑处理。既然要做平滑处理就要获取当前点及与该点保持连接关系的点的坐标,再以此为基础代入平滑算法。

我的基本思路是利用maya.OpenMaya模块中现有的api来获得一个基于当前模型的顶点迭代器(MItMeshVertex)。然后利用迭代器内置方法来逐顶点的进行平滑。

第一次使用OpenMaya模块还是很不熟练,看了好几天的技术文档。废话不多说,直接上代码:

 ##############create a new MObject!#####################
vertexcount = self.newpoints.length()
inMeshFn.getVertices(mesh_counts,mesh_connect)
polycount = inMeshFn.numPolygons() tempMeshData = OpenMaya.MFnMeshData()
tempObject = OpenMaya.MObject()
tempObject = tempMeshData.create()
newObject = OpenMaya.MObject() MeshFs = OpenMaya.MFnMesh()
#create a DAG path newObject = MeshFs.create(vertexcount,polycount,inPoints,mesh_counts,mesh_connect,tempObject) Inmesh_vertex_iter = OpenMaya.MItMeshVertex(newObject)

第二行或者当前模型的顶点数量。

第三行获取了当前模型的顶点分布信息。

第四行获取了当前模型的多边形面数。

第六行为tempMeshData对象分配内存地址,该对象为MFnMeshData类型。

第七行为tempObject对象分配内存空间,该对象为MObject类型。

第八行利用tempMeshData对象的create()方法创建一个内存空间,并赋值给tempObject对象。这样tempObject对象就有了内存空间去存储对应信息了。

第九行为newObject对象分配内存地址,该对象为OpenMaya.MObject()。用于存储返回值。

第十一行为MeshFs对象分配内存地址,该对象为MFnMesh类型。

第十四行利用MFnMesh类的create方法创建一个新的MObject对象,返回给tempObject及newObject对象。

第十六行以newObject对象为参数,初始化MItMeshVertex对象,生成一个顶点迭代器,并返回给Inmesh_vertex_iter对象。

不得不说maya中构建顶点迭代器的方法很麻烦,但这样的方式可以保证程序的安全稳定高效,充分利用了内存的特质。本人目前看的OpenMaya技术文档还仅限几个类,该文如有不足还请指正。

有了这个迭代器我们就可以非常快速高效的植入平滑算法了,你可以通过这种方法多次迭代产生平滑度更高的pointsArray信息。

以上。

怎样生成一个顶点迭代器(MItMeshVertex)的更多相关文章

  1. python基础一 ------利用生成器生成一个可迭代对象

    #利用生成器生成一个可迭代对象#需求:生成可迭代对象,输出指定范围内的素数,利用生成器产生一个可迭代对象#生成器:本身是可迭代的,只是 yield 好比return返回,yield返回后函数冻结状态, ...

  2. 用php生成一个excel文件(原理)

    1.我们用php来生成一个excel文档来讲述其原理: excel2007里面的文档目录组成部分为: 2.我们使用ZipArchive()方法来生成一个简易的excel文件. 使用方法: 3.代码如下 ...

  3. js生成一个不重复的ID的函数的进化之路

    在MongoDB中的ObjectID,可以理解为是一个不会重复的ID,这里有个链接http://blog.csdn.net/xiamizy/article/details/41521025感兴趣可以去 ...

  4. 动态生成一个设定好特殊样式的Tlabel,快速生成代码

    动态生成一个设定好特殊样式的Tlabel,快速生成代码: 1.自己先在可视化界面设定一个Label,像这样: 2.选择label,快捷键ctrl+C 复制,粘贴带代码编辑器去,会生成一段这样的窗体代码 ...

  5. 【代码笔记】iOS-通过颜色来生成一个纯色图片

    一,效果图. 二,代码. RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional se ...

  6. C# 如何生成一个时间戳

    在程序中,常常会用到时间戳,如何生成一个时间戳呢? /// <summary> /// 获取时间戳 /// </summary> /// <returns>< ...

  7. ZeroMQ接口函数之 :zmq_curve_keypair - 生成一个新的CURVE 密钥对

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_curve_keypair zmq_curve_keypair(3) ØMQ Manual - ØMQ/4.1.0 ...

  8. Bitmap文件格式+生成一个BMP文件

    Bitmap的文件格式: #define UINT16 unsigned short #define DWORD unsigned int #define WORD short #define LON ...

  9. 今天网站后台登录页面需要生成一个二维码,然后在手机app上扫描这个二维码,实现网站登录的效果及其解决方案如下

    要实现二维码登录,需要解决2个技术,1.需要js websocket 与后台php实现长连接技术 2.实现二维码生成技术 要实现这个功能第二个算是比较简单,只需要下载一个php的二维码生成器即可,但要 ...

随机推荐

  1. React文档(十三)思考React

    在我们的看来,React是使用js创建大型快速网站应用的首要方法.它在Facebook和Instagram的使用已经为我们展现了它自己. React的一个很好的地方就在于当你创建应用的时候它使你思考如 ...

  2. [lightoj P1151] Snakes and Ladders

    1151 - Snakes and Ladders Time Limit: 2 second(s)    Memory Limit: 32 MB 'Snakes and Ladders' or 'Sh ...

  3. Python中文问题

    读取数据库中文是?? 解决如下 一.python2版本需要在 文件的开头要加上编码设置来说明文件的编码  python3版本以上不需要 #encoding=utf-8 二.在连接数据的连接参数里加上字 ...

  4. Python—全局变量、局部变量、匿名函数

    局部变量和全局变量 college1 = 'JMU' #全局变量 def change_name(name): college1 = 'LiGong' #局部变量,此函数是其作用域 # global ...

  5. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.1 A map with single layer

    MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.1 A map with single layer 一.前言 开始MapServer用 ...

  6. 浮点型的三个特殊值 Double.NEGATIVE_INFINITY Double.POSITIVE_INFINITY Double.NaN

    Double.NEGATIVE_INFINITY 负无穷 Double.POSITIVE_INFINITY 正无穷 Double.NaN 非数 注意:浮点数才有无穷的概念,整数是没有的 比如: int ...

  7. spring @bean 的理解

    1.spring @bean 注解只能注解到方法上 2. 该方法必须返回一个实例对象 3.该过程相当于,通过一个方法去构造一个实例对象 ,然后交给spring管理 4.使用场景   如需要构造出一个特 ...

  8. Android 音视频深入 十四 FFmpeg与OpenSL ES 播放mp3音乐,能暂停(附源码下载)

    项目地址https://github.com/979451341/FFmpegOpenslES 这次说的是FFmpeg解码mp3,数据给OpenSL ES播放,并且能够暂停. 1.创建引擎 slCre ...

  9. Linux下实现ssh免密认证

    添加域名映射 配置ssh免密登陆 拷贝master服务器公钥至本机 验证master服务器ssh免密登录其余服务器 添加域名映射 打开hosts文件 Vim /etc/hosts 添加域名对象 配置s ...

  10. 第三视角Beta答辩总结

    第三视角Beta答辩总结 博客链接以及团队信息 组长博客链接 成员信息(按拼音排序) 姓名 学号 备注 张扬 031602345 组长 陈加伟 031602204 郭俊彦 031602213 洪泽波 ...