[英]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.