`
schi
  • 浏览: 205874 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

normalize a vector with python (Maya)

阅读更多
  在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)

希望对你有帮助。
0
0
分享到:
评论

相关推荐

    Python库 | normalize-0.6.3.tar.gz

    "normalize-0.6.3.tar.gz" 是一个针对Python的库,版本为0.6.3,它以tar.gz格式进行压缩。这种格式通常用于在Unix/Linux环境下打包和压缩文件,便于分发和存储。在Windows系统中,可以使用类似7-Zip或WinRAR的软件来...

    ffmpeg-normalize:Pythonffmpeg的音频规范化

    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.pdf

    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 ...

    ffmpeg-normalize-1.15.6.tar.gz

    Python库在FFmpeg Normalize的上下文中可能指的是用Python编写的接口或者工具,使得开发者能够方便地在Python程序中调用FFmpeg Normalize的功能。Python作为一种广泛使用的编程语言,拥有丰富的第三方库支持,通过...

    Normalize a URL.zip

    在IT行业中,URL规范化(Normalize a URL)是一个重要的概念,主要涉及到网络地址的标准化处理,以确保它们在解析和比较时的一致性。这通常在处理网页链接、爬虫抓取数据或者搜索引擎优化(SEO)时显得尤为重要。...

    Vector2d-Python:Mat Buckland所编写的Vector2D代码从Matlab实例编程游戏AI到c ++ Python的翻译

    本项目是Mat Buckland所编写的`Vector2D`代码从Matlab语言移植到C++和Python的实例,旨在帮助开发者理解如何在不同的编程环境中实现游戏AI相关的向量操作。 在Python中,虽然内置的数据类型如`tuple`或`list`可以...

    Python库 | hamolicious_vector_class-0.1.4-py3-none-any.whl

    如果库没有提供文档,可以尝试从源代码中的类和方法命名来推测其用途,例如`Vector`类可能包含向量的基本操作,而`normalize`函数可能用于将向量归一化为单位向量。 在实际项目中,正确选择和使用合适的Python库是...

    Python库 | ffmpeg-normalize-1.15.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:ffmpeg-normalize-1.15.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Python库 | email-normalize-0.1.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:email-normalize-0.1.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    PyPI 官网下载 | ffmpeg-normalize-1.14.0.tar.gz

    FFmpeg Normalize 是一个 Python 库,它利用 FFmpeg 工具对音频文件进行标准化处理,确保音频音量的一致性。在处理多媒体内容时,尤其是音视频编辑、播客制作或者音频库管理等领域,保持音频文件的音量水平一致是...

    Python库 | ffmpeg_normalize-1.22.4-py2.py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:ffmpeg_normalize-1.22.4-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    normalize.min.css

    Normalize.css 是一个可以定制的CSS文件,它让不同的浏览器在渲染网页元素的时候形式更统一。这是一个压缩后的css文件,由于源码中没有提供,这里分享给大家。 源码下载地址:...

    前端项目-normalize.zip

    "前端项目-normalize.zip" 是一个专注于CSS规范化的项目,其核心在于`normalize.css-master`文件,它是一个广泛使用的库,旨在为不同浏览器之间的默认样式提供一致的基础。这个压缩包的目的是将CSS样式标准化,确保...

    Python库 | normalizeurl-1.0.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:normalizeurl-1.0.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    normalize-zh, Normalize.css 中文文档与源码解读.zip

    Normalize.css 是一个开源项目,由 Nicolas Gallagher 和 Jonathan Neal 联合发起,旨在提供一个现代、一致的基础样式,用于Web开发。这个项目的目标是通过消除跨浏览器的样式差异,为HTML元素提供统一的默认样式,...

    normalize.styl, normalize.css的手写笔版本.zip

    normalize.styl, normalize.css的手写笔版本 版 Normalize.css 版本 开始克隆 repo git clone https://github.com/bymathias/normalize.styl或者使用 Bower 安装。 bower install --

    normalize.css-8.0.0.zip

    5. **链接**:`&lt;a&gt;`元素,处理了链接的默认颜色、下划线和鼠标悬停效果,使其更加一致且符合预期。 6. **表单元素**:`&lt;input&gt;`、`&lt;textarea&gt;`、`&lt;select&gt;`、`&lt;button&gt;`等,调整了表单元素的样式,使其在不同浏览器...

Global site tag (gtag.js) - Google Analytics