在maya中有个normalize命令用来normalize一个大小为3的浮点数组,而没有python版的normalize命令,python本身也没有处理Vector的内建函数,所以只有自己去实现。
在maya中可以有以下方法来实现normalize。
为了对比mel版本的normalize命令,我先给出mel版本的样例。
在maya中创建一个locator(其它也行),随便移动一下然后执行下面的代码
float $locPos[] = `getAttr locator1.translate`;
// Result: -6.743036 3.618447 2.797823 //
normalize($locPos);
print $locPos;
// Result:
-0.827572
0.444091
0.343376
纯python实现normalize
def normalize(v=[]):
if len(v) == 3:
length = lambda v: (v[0]*v[0] + v[1]*v[1] + v[2]*v[2]) ** 0.5
return ( v[0] / length(v), v[1] / length(v), v[2] / length(v) )
else:
return 0
在maya中使用
import maya.cmds as mc
locPos = mc.getAttr("locator1.translate")[0]
print(locPos)
# (-6.7430359036937162, 3.6184465390115115, 2.7978227410646745)
normalize(locPos)
# Result: (-0.82757196706231873, 0.44409149866149278, 0.34337644087676383) #
使用pymel,pymel有Vector类型,其实是继承API的MVector
import pymel.core as pc
loc = pc.PyNode("locator1")
locpos = loc.translate.get()
print(locpos)
# [-6.74303590369, 3.61844653901, 2.79782274106]
type(locpos)
# Result: <class 'pymel.core.datatypes.Vector'> #
locpos.normalize()
print(locpos)
# [-0.827571967062, 0.444091498661, 0.343376440877]
使用python API
import maya.OpenMaya as om
import maya.cmds as mc
locPos = mc.getAttr("locator1.translate")[0]
print(locPos)
# [-6.74303590369, 3.61844653901, 2.79782274106]
locVet = om.MVector(locPos[0], locPos[1], locPos[2])
locVet.normalize()
norLoc = (locVet.x, locVet.y, locVet.z)
print(norLoc)
# (-0.82757196706231873, 0.44409149866149278, 0.34337644087676383)
希望对你有帮助。
分享到:
相关推荐
Part I focuses on web scraping mechanics: using Python to request information from a web server, performing basic handling of the server’s response, and interacting with sites in an automated fashion...
python库。 资源全名:normalize-0.6.3.tar.gz
Normalize a URL.zip,Normalize a URL
Python Text Processing with NLTK 2.0 Cookbook is your handy and illustrative guide, which will walk you through all the Natural Language Processing techniques in a step-by-step manner. It will ...
资源分类:Python库 所属语言:Python 资源全名:ffmpeg-normalize-1.15.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:email-normalize-0.1.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
ffmpeg标准化 使用ffmpeg批量标准化音频的实用...Python 3.6或更高版本 在$ PATH中安装的来自http://ffmpeg.org/的ffmpeg v3.1或更高版本 安装 pip3 install ffmpeg-normalize 或下载此存储库,然后运行pip install
资源分类:Python库 所属语言:Python 资源全名:ffmpeg_normalize-1.22.4-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Normalize.css 是一个可以定制的CSS文件,它让不同的浏览器在渲染网页元素的时候形式更统一。这是一个压缩后的css文件,由于源码中没有提供,这里分享给大家。 源码下载地址:...
⼀、导⼊常⽤numpy模块 from numpy import * //可以直接引⽤numpy中的属性XXX import numpy as np //引⽤numpy中的属性⼀定要np.XXX ⼆、常⽤函数以及转化关系 np.arange() 对应 python中的range() np.array() 对应 ...
资源分类:Python库 所属语言:Python 资源全名:normalizeurl-1.0.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
normalize-zh, Normalize.css 中文文档与源码解读
normalize.styl, normalize.css的手写笔版本 版 Normalize.css 版本 开始克隆 repo git clone https://github.com/bymathias/normalize.styl或者使用 Bower 安装。 bower install --
资源分类:Python库 所属语言:Python 资源全名:ffmpeg-normalize-1.19.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
normalize.css
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:ffmpeg_normalize-1.15.4-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
前端项目-normalize,将.css规范化为节点打包模块
postcss-normalize, 从browserList中使用 normalize.css 所需的部分 PostCSS标准化 使用规范Normalize允许你根据项目 browserList的使用 normalize.css 部分。使用 @import-normalize 确定 normalize.css的规则将包