簡體   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