在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)
希望对你有帮助。
分享到:
相关推荐
"normalize-0.6.3.tar.gz" 是一个针对Python的库,版本为0.6.3,它以tar.gz格式进行压缩。这种格式通常用于在Unix/Linux环境下打包和压缩文件,便于分发和存储。在Windows系统中,可以使用类似7-Zip或WinRAR的软件来...
ffmpeg标准化 使用ffmpeg批量标准化音频的实用...Python 3.6或更高版本 在$ PATH中安装的来自http://ffmpeg.org/的ffmpeg v3.1或更高版本 安装 pip3 install ffmpeg-normalize 或下载此存储库,然后运行pip install
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库在FFmpeg Normalize的上下文中可能指的是用Python编写的接口或者工具,使得开发者能够方便地在Python程序中调用FFmpeg Normalize的功能。Python作为一种广泛使用的编程语言,拥有丰富的第三方库支持,通过...
在IT行业中,URL规范化(Normalize a URL)是一个重要的概念,主要涉及到网络地址的标准化处理,以确保它们在解析和比较时的一致性。这通常在处理网页链接、爬虫抓取数据或者搜索引擎优化(SEO)时显得尤为重要。...
本项目是Mat Buckland所编写的`Vector2D`代码从Matlab语言移植到C++和Python的实例,旨在帮助开发者理解如何在不同的编程环境中实现游戏AI相关的向量操作。 在Python中,虽然内置的数据类型如`tuple`或`list`可以...
如果库没有提供文档,可以尝试从源代码中的类和方法命名来推测其用途,例如`Vector`类可能包含向量的基本操作,而`normalize`函数可能用于将向量归一化为单位向量。 在实际项目中,正确选择和使用合适的Python库是...
资源分类: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 Normalize 是一个 Python 库,它利用 FFmpeg 工具对音频文件进行标准化处理,确保音频音量的一致性。在处理多媒体内容时,尤其是音视频编辑、播客制作或者音频库管理等领域,保持音频文件的音量水平一致是...
资源分类:Python库 所属语言:Python 资源全名:ffmpeg_normalize-1.22.4-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Normalize.css 是一个可以定制的CSS文件,它让不同的浏览器在渲染网页元素的时候形式更统一。这是一个压缩后的css文件,由于源码中没有提供,这里分享给大家。 源码下载地址:...
"前端项目-normalize.zip" 是一个专注于CSS规范化的项目,其核心在于`normalize.css-master`文件,它是一个广泛使用的库,旨在为不同浏览器之间的默认样式提供一致的基础。这个压缩包的目的是将CSS样式标准化,确保...
资源分类:Python库 所属语言:Python 资源全名:normalizeurl-1.0.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Normalize.css 是一个开源项目,由 Nicolas Gallagher 和 Jonathan Neal 联合发起,旨在提供一个现代、一致的基础样式,用于Web开发。这个项目的目标是通过消除跨浏览器的样式差异,为HTML元素提供统一的默认样式,...
normalize.styl, normalize.css的手写笔版本 版 Normalize.css 版本 开始克隆 repo git clone https://github.com/bymathias/normalize.styl或者使用 Bower 安装。 bower install --
5. **链接**:`<a>`元素,处理了链接的默认颜色、下划线和鼠标悬停效果,使其更加一致且符合预期。 6. **表单元素**:`<input>`、`<textarea>`、`<select>`、`<button>`等,调整了表单元素的样式,使其在不同浏览器...