Tear Off Copy Mejorado para Maya

Nota: Este script genera un viewport igual que el generado por Tear Off Copy en Maya 2017. Actualizaré este artículo cuando haya resuelto este problema.

 

La opción para crear una copia del panel actual usando Tear Off Copy en una ventana flotante no siempre es como todos querríamos que funcionase

En concreto, al hacer esto con un Viewport no disponemos de una ventana con todas las posibilidades, si no una versión en la que es imposible elegir por qué cámara queremos mirar o qué panel está integrado en ella.

Esto es realmente molesto para los artistas de Maya que utilizan distintos viewports en una pantalla secundaria para tener distintas vistas de la escena.

Lo que hacen es

  • crear una cámara,
  • mirar a través de ella
  • hacer una copia de este panel con Tear Off Copy o Tear Off de esa vista

Después, es imposible volver a cambiarlo.

Por eso, hace tiempo, escribí un pequeño script que realiza estos pasos creando una cámara perspectiva, un panel nuevo y además éste dispone de todas las opciones de un Viewport normal para cambiar su contenido.

 

Soluciones alternativas

Hay otras formas, según me han comentado, para cambiar la vista de cámara. Éste método tiene algunos puntos ventajosos respecto a otros, por ejemplo, la posibilidad de crear una ventana con un viewport directamente usando un hotkey. Aún así añadiré más posibilidades al script y actualizaré la entrada poco a poco, puesto que, por ejemplo, solamente puedes crear una ventana y no múltiples.

Una manera es arrastrar con el botón central del ratón desde el outliner cualquier cámara a nuestro viewport.
La segunda manera es hacer click derecho sobre el icono de cámara del viewport para seleccionar otra cámara.

Aún así, al igual que yo, mucha gente desconoce estos métodos y este script aún puede ser de utilidad.

¿Quieres usar el script?

Este script es gratuito y de momento no está incluido en la lista de nuestras herramientas en la web oficial, así que explicaré aquí como utilizarlo.

Lo tengo alojado en GitHub, un repositorio de proyectos donde tengo otros scripts gratuitos alojados para acceso público. Puedes notificar problemas o seguir las actualizaciones a través de allí.

 

Descargar el Script

Entra en este enlace para ver el script

Cuando veas el texto del script en tu navegador, haz click derecho sobre el texto –> Guardar Como…

Se descargará un archivo .py en el lugar que tu elijas.

 

Instalar el Script

Ahora os explico dos maneras de instalar el script en vuestro Maya. Una es menos duradera que la otra.

A) Instalación menos duradera pero rápida

Abres el Script Editor en Maya (Window->General Editors->Script Editor o busca en la documentación de tu versión Maya cómo abrirlo)

Seleccionas una pestaña de Python en la sección de abajo. Esta parte es importante si quieres que funcione correctamente.

File -> Load Script…    Y eliges el archivo que acabas de descargarte con extensión .py

Luego haces File -> Save Script to Shelf… y se creará un botón en el shelf que tengas ahora mismo activo con ese script. Puedes ponerlo donde quieras.

También puedes asignarlo a un Hotkey usando el Hotkey Editor. Hablaré de esto en una entrada futura que enlazaré cuando esté escrito. Mientras tanto podéis encontrar como hacerlo en la documentación encontrando el artículo llamado “Create a Runtime Command” para vuestra versión de Maya en la página oficial de Autodesk.

B) Instalación más duradera para todas las versiones de Maya o una concreta

Si estás en windows, busca tu carpeta de usuario Mis Documentos (Suele ser C:\Users\Lidia\Documents).

Allí busca la carpeta /maya/

Tienes dos opciones:

  1. Entrar en /maya/scripts/ para instalarlo en todas las versiones de Maya
  2. Entrar en /maya/*version*/scripts/ para instalarlo solo en esa versión. (maya/2016/scripts/, por ejemplo).

En cualquiera de las dos opciones, debes copiar el archivo .py que has descargado en la carpeta scripts/ que hayas elegido.

Ahora tienes que abrir el Shelf Editor para añadir un nuevo botón.

En la pestaña Shelves, eliges el shelf donde vas a añadir el botón, por ejemplo, Animation.

Haces click en el botón “Add Item” arriba a la derecha de la lista de contenidos del shelf.

Después renombras el botón y pulsas enter (por ejemplo, Tear Off Copy).

Luego selecciona de la lista tu nuevo botón y abajo modifica el Tooltip que aparecerá cuando pongas el ratón encima del mismo y el Icon Label si quieres que tenga un texto el botón.

Puedes también cambiar el icono pulsando el dibujo del logo de maya.

Luego vas a la pestaña Command, seleccionas Python, y escribes el siguiente código allí:

import advancedTearOffPanel

advancedTearOffPanel.main()

Después debes volver a la pestaña Shelves y pulsar “Save All Shelves” para que se guarde el cambio.

El botón estará ya disponible en tu Shelf.

Puedes crear este botón en cualquier versión de Maya y funcionará para todas ellas.

 

Explicación detallada sobre el script

A partir de aquí es para usuarios más avanzados que tengan interés en saber cómo se ha hecho el script.

import maya.cmds as cmds # Importamos el modulo para acceder a comandos de MEL
import time # Necesitaremos esto para obtener un numero aleatorio

# Definimos una variable global que usaremos para almacenar este panel.
# El script solamente crea uno y lo vuelve a seleccionar si pulsamos de nuevo el boton si lo hemos perdido.
# Estas dos lineas solo se van a ejecutar una sola vez al hacer import.
global tearOffPanel
tearOffPanel = None

# Esta funcion crea el panel. Debemos llamarla desde fuera como hacemos en el boton.
def main():
	# Obtengo la variable global para poder usarla dentro de main.
	global tearOffPanel

	# Si la variable contenia algo, mostrarlo en vez de crearlo
	if tearOffPanel and cmds.window(tearOffPanel, query=True, exists=True):
		cmds.showWindow(tearOffPanel)
		return

	# Generamos un nombre para el nuevo panel. Como Maya a veces es incapaz de crear un nombre unico
	# utilizo el modulo time para obtener el tiempo actual, que siempre cambia, para generar el nombre.
        # Es un truco para reducir las posibilidades de que haya coincidencias.
	newName = 'tearOffPanel{}'.format(str(time.time()).split('.')[0])
	
	# Usamos los comandos para crear interfaz nativa de Maya para crear la nueva ventana.
	tearOffPanel = cmds.window(newName, title='Advanced Tear Off Copy', widthHeight=(600,500))

        # Creamos dentro un PaneLayout y dentro un modelPanel, que es un viewport, con la barra de menus visible.
        # Un layout creado de esta manera contendra la opcion para cambiar el panel.
	cmds.paneLayout()
	cmds.modelPanel(tearOffPanel, menuBarVisible=True)
	cmds.showWindow(tearOffPanel)

 

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *