Hallo liebe Community,
ich programmiere im Moment ein Script in Python, welches mir ermöglichen soll, acht verschiedene Camera-Views zusammen in einem großen Bild abzuspeichern. Ich brauche dieses Bild mit 8 verschiedenen Ansichten nebeneinander für ein stereoskopisches Projekt und der Player kann nur solche Bilder verarbeiten. Generell habe ich mich erst seit Kurzem in dieses Thema eingearbeitet, deshalb bin ich mir auch sicher dass es eine Lösung gibt, ich sie aber leider noch nicht gefunden habe.
Programmierung:Um dies zu realisieren hole ich mir zu Beginn die aktuelle Größe des Viewports und lege ein Bild mit der 4fachen Breite und 2fachen Höhe an. Dadurch kann ich jeweils vier Camera-Views auf einer Länge darstellen. Ich dachte mir bisher ich kann nachdem ich das große Bild angelegt habe, einfach die einzelnen Views an die vorgesehenen Positionen kopieren oder sie als Textur für einen bestimmten Bildbereich übergeben. Doch leider finde ich keine Funktion dafür, weder in Python noch in der Maya API.
Mein Code in Python:import maya.cmds as cmds
import maya.mel as mm
import maya.OpenMaya as api
import maya.OpenMayaUI as apiUI
import ctypes
# read the color buffer from the view, and save the MImage to disk
view = apiUI.M3dView.active3dView()
wrapper = api.MImage()
view.readColorBuffer(viewImage, True)
scriptUtilw = api.MScriptUtil()
scriptUtilh = api.MScriptUtil()
wPtr = scriptUtilw.asUintPtr()
hPtr = scriptUtilh.asUintPtr()
viewImage.getSize(wPtr, hPtr)
twidth = scriptUtilw.getUint(wPtr)
theight = scriptUtilh.getUint(hPtr)
print (twidth)
print (theight)
wrapper.create (twidth*4,theight*2)
wrapper.writeToFile('C:/wrapper.jpg', 'jpg')
Ich dachte ich könnte mit der Funktion writeColorBuffer vllt die einzelnen Farbinformationen von den Kameras auf das Wrapper-Bild speichern, aber das hat leider nicht funktioniert.
Ich hoffe ihr könnt mir vllt weiterhelfen, auf welche Weise ich am Besten die einzelnen Views in das eine Bild übergeben kann. Wichtig wäre, dass es performant arbeiten soll.