Maya教程之maya中的种树脚本
凌雪 2018-07-30 来源 :网络 阅读 2878 评论 0

摘要:本文将带你了解Maya教程之maya中的种树脚本,希望本文对大家学Maya有所帮助

本文将带你了解Maya教程之maya中的种树脚本,希望本文对大家学Maya有所帮助


 

题记:
            公司项目要求,做场景时候需要ass的代理,于是需要一个刷树的脚本。
   
   思路:
            网上其实有蛮多刷草刷树的工具,我也下载了一个,不过是mel写的。于是决定自己写一个。把这个问题分解开有以下几步:
   1,让用户选择一个需要种的树的模型和地面模型。
   2,用户在maya的3d视图中点击一下鼠标,复制一颗树。
           3,将树移到鼠标点击的地面模型位置。
   
   问题的关键:
          1,如何在maya中实现鼠标点击的事件。
   2,如何求视图中鼠标点击时候,与视图中的模型的交互位置
   
   解决:
   1,鼠标的点击事件。
   我先查了maya api,在proxy模块里有MPxContext类,可以创建各种鼠标交互事件,不过很可惜的是,这个类不能在python中导入,如果有大神指导如何在python  api中导入这个类,请赐教!
   最后我在maya.cmds里找到的鼠标点击事件draggerContext,它支持鼠标点击,鼠标拖拽,鼠标施放以及鼠标点击之前的事件。并且可以获取点击时候鼠标在视窗中的2d位置。
   
   2,将鼠标的位置转换成三维空间和地面物体的交互。
   
   maya在api中有很多对3d视窗的方法,例如:获取视窗的摄像机,获取视窗的widget,获取视窗的大小等等。我们需要获取的是鼠标在视窗中的坐标。
   创建一个view对象
   import maya.OpenMayaUI as omUIview =  omUI.M3dView.active3dView()用viewToWorld方法获取点击鼠标时,视线到鼠标点击位置的射线的起始位置和方向。
   worldPt = om.MPoint()worldVector =  om.MVector()view.viewToWorld(x_pos,y_pos,worldPt,worldVector)
   worldPt就是视线的起始点,worldVector是视线起始点到鼠标点击位置的射线。
   然后就是求该射线与地面物体的交点,
   import maya.OpenMaya as omom.MFnMesh.closestIntersection()
   用该方法可获取射线与物体的交点。
   剩下的就是复制物体,移动位置。
   
   上张截图:
   
   
   后记:
   作为主要功能,基本完成了。参考网上的工具,其实后续可以开发随机旋转缩放,树的缩略图等等。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Maya频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程