繁体   English   中英

maya python api - 渲染相机并存储变量

[英]maya python api - render camera and store in variable

我正在使用Maya 2012,我想做的是渲染相机视图。 我发现使用MEL命令'render'(通过python调用它)可以做到这一点。 但是,据我所知,此命令呈现图像并将其保存到磁盘,同时仅返回保存图像的路径。

例:

import maya.cmds as cmds
import cv2 as cv

pathToFile = cmds.render()
renderImage = cv.imread(pathToFile)

由于我对使用图像执行各种计算机视觉算法感兴趣,将其保存到磁盘然后从磁盘读取它会产生不必要的计算开销。

是否可以渲染相机并将图像存储在变量中而无需执行此操作? 这将允许在渲染和分析渲染图像之间更快地循环。


如果有人在将来遇到这个问题:我尝试了ram磁盘方法(使用dataram RAMDisk)这是建议的,不幸的是它没有产生任何速度增加。

如果您正在寻找效率,可以考虑使用OpenMaya包访问视图的OpenGL上下文,并将Viewport 2.0视图渲染为纹理。 然后以编程方式访问该纹理。

或者,您可以编写一个包装另一个渲染插件的插件,如Mayatomr或Hardware 2.0渲染器,并将渲染的图像放入一些共享内存空间。

但是这些解决方案非常令人难以置信,涉及到如此多的无证功能。 您可能只需将渲染器设置为硬件2.0,将图像保存为BMP(无论如何OpenCV读取速度非常快),也许是上面建议的RAM磁盘,并将其称为一天。

修订

也许有一种更简单的方法。 创建一个实现MPxHardwareShader描述的MPxHardwareShader规范的自定义节点:

http://images.autodesk.com/adsk/files/viewport_2_0_api_gold.pdf

换句话说,覆盖某个节点的Hardware / Viewport 2.0渲染。 而不是实际绘制某些东西,使用您对OpenGL上下文的访问权来将视口渲染为纹理。

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/

然后用它做任何你想做的事。 聪明,是吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM