cg-node. Connecting artists

CG-NODE. Connecting artists

Comunidad de artistas digitales

Comunidad de artistas digitales
Página 1 de 2 1 2 ÚltimoÚltimo
Resultados 1 al 10 de 19

Tema: vertexAlignTool

  1. #1

    Post vertexAlignTool

    Hola,

    Creo que ya he conseguido hacer el primer Mel que sirve para algo, la verdad es que es una tonteria, pero para mi es un gran triunfo.

    En principio lo que hace es alinear vertices, por el momento solamente en el eje X, pronto espero poder hacer una ventanita donde se escoja el eje al que se quiere alinear y quizas el punto donde se alineen, pero no lo tengo muy claro aun. Por ahora hace una media con dos puntos, pero estaria bien matizar eso.

    Espero que le hecheis un ojo y me aconsejeis en como podria mejorar lo hecho o si hay alguna manera mejor.

    Gracias y un saludo

    Código:
    string $vertexSeleccionat[]=`ls -sl`;
    
    int $numVertex=`size($vertexSeleccionat)`;
    
    float $vertexPosicioA[]=`pointPosition -l $vertexSeleccionat[0]`;
    
    float $vertexPosicioB[]=`pointPosition -l $vertexSeleccionat[$numVertex-1]`;
    
    float $mitjaPosicions= ($vertexPosicioA[0] + $vertexPosicioB[0])/2;
    
    string $moureVertex;
    
    for ($moureVertex in $vertexSeleccionat)
    {
    
      select -add $moureVertex;
    
      move -x -ls $mitjaPosicions;
    
    
    }
    Última edición por Josich; 28/11/2006 a las 23:16

  2. #2

    Predeterminado

    Lo he retocado un poco. En vez de coger dos vertices (el primero y el último)y hacer la media, ahora la hace con todos los vertices seleccionados.

    Un saludo

    Código:
    /////////////////////////////////////
    //   alineadorDeVerticesX         ///
    //                                ///
    //     by Josich                  ///
    //       2006                     ///
    /////////////////////////////////////
    //El Script alinea vertices en el eje X, 
    //haciendo un media de sus posiciones locales.
    
    
    //Variables/////////////
    float $mitjaPosicions;
    
    int $sumatori;
    
    float $vertexPosicio;
    
    float $suma=0; 
    
    /////////////////////////
    
    string $vertexSeleccionat[]=`ls -sl`; //vertices seleccionados
    
    int $numVertex=`size($vertexSeleccionat)`; //cantidad de vertices seleccionados
    
    
    
    //Hace una suma de todos los valores del eje X
    
         for ($sumatori=0;$sumatori<$numVertex;$sumatori++) 
         {
    
            float $vertexPosicio[]=`pointPosition -l $vertexSeleccionat[$sumatori]`;
             
             $suma+=$vertexPosicio[0];
           
         }
    
    //Hace la media: suma de posiciones /por numero de vertices
    
    float $mitjaPosicions=$suma/$numVertex;
    
    string $moureVertex;
    
    //mueve los vertices a su nueva posicion
    
          for ($moureVertex in $vertexSeleccionat)
          {
    
               select -add $moureVertex;
    
               move -x -ls $mitjaPosicions;
    
    
          }

  3. #3

    Predeterminado

    Mola el script!
    A ver si lo acabas de completar para los 3 ejes y anyades una ventanita

    Mira te dejo un trozo de codigo para que puedes comprobar si hay algo selecionado, para que asi no te pete el script si no hay nada selecionado.
    Espero que te ayude!

    Saludos

    Código:
    string $selected[] = `ls -sl`;
    
    if (!(`size($selected)`)) {
        //tu codigo
    }
    else{
        confirmDialog -m "Seleciona al menos 2 vertices para poder alinearlos";
    }

  4. #4

    Predeterminado

    Mola! aqui en el curro tenemos uno parecido, lo hizo larry asi que seguramente el te podria ayudar

    Un saludo.

  5. #5

    Predeterminado

    Muchas gracias Fog, es una muy buena idea, lo añadiré enseguida. El problema es que aún no se hacer que al clicar un botton lance un proceso por eso no tengo muy claro como hacer la ventanilla.

    Gracias David, Larry seria de gran ayuda si señor.

    Tengo pensado hace un slider para poder escoger el punto donde se alineen. Por ejemplo en el punto medio (como lo hace ahora) o tirar hacia el punto maximo o el minimo. Pero lo primero la ventanilla :P.

    Un saludo

  6. #6

    Predeterminado

    Mira, para lanzar una ventana al ejecutar el script tienes que hacer esto.
    Te pongo un ejemplo para que veas por donde van los tiros

    Espero que veas por donde va el tema.

    Código:
    drawUI; //llama a la funcion que dibuja la ventana y ejecutara el codigo tuyo
    
    proc drawUI ()
    {
    	if (`window -ex myWin`==1) {deleteUI myWin;}
        	windowPref -enableAll false;
    
    	window -t "Nombre Ventana" -tlb 1 -wh 100 70 myWin;
    	columnLayout;
    	button -l "Alinear" -c "FUNCION TUYA PARA ALINEAR VERTICES";
    	showWindow myWin;
    }

  7. #7

    Predeterminado

    un truco, en vez de mover los vertices, utiliza un escale, asi lo que puedes hacer una vez que calculas el centro, utilizas un escale a 0,0,0 si los quieres mover a ese punto, y 1,0,1, por ejemplo si los quieres dejar todos a la misma altura(mover en Y), o 0,1,1 si los quieres mover solo en X, con el scale tienes muchas opciones sin tener que recalcularla

    seria

    scale -p $vertexposicio[0] cm $vertexposicio[1] cm $vertexposicio[2] 0 1 1

    para un constraint en x
    larry vizoso
    lighting pipeline developer
    Linked in :BlueBolt: mi blog

  8. #8

    Predeterminado

    Gracias a los dos.Me estais siendo de gran ayuda.

    Fog entiendo la idea, voy a ponerla en practica a ver si lo consigo.

    Larry, muy buena idea lo de escalar, ya que tenia pensado repetir el script para cada eje, asi se ahorran muchas lineas. Lo que no entiendo es lo de "cm" al declarar el pivote. Para que sirve exactamente?

    Un saludo

  9. #9

    Predeterminado

    Después de algunas dificultades creo que lo he conseguido. Como vereis lo he reescrito todo siguiendo vuestras indicaciones y estoy satisfecho con el resultado. Quiero agradeceros la ayuda.

    Espero que pronto pueda poner el slider que me gustaria y conseguir que la ventana sea rowLayout en vez de columnLayout, pero no me deja cambiarla. Me dice:" Too many children in layout" y no se a que se refiere.

    Un saludo

    Código:
    /////////////////////////////////////////////////
    //                                            ///
    //          vertexAlignTool                   ///
    //                                            ///
    //           by JOSICH                        ///
    //                                            ///
    // Gracias a los usuarios de CG node,         ///
    // especialmente a Fog y Larry por sus        ///
    // indicaciones, sin ellas este script        ///
    // seria una autentica chapuza.               ///
    ///////////////////////////////////////////////// 
    
    
    
    
    
    drawUI; //crea la ventana de herramienta
    
    proc drawUI ()
    {
    	if (`window -ex myWin`==1) {deleteUI myWin;}
        	windowPref -enableAll false;
    
    	window -t "Vertex Align Tool" -wh 200 100 myWin;
    	columnLayout;
    	button -l "X"  -c "align(0, 1, 1)"; //constriccion al eje X
           button -l "Y"  -c "align(1,0,1)";  //constriccion al eje Y
           button -l "Z"  -c "align(1,1,0)";  //constriccion al eje Z
    	showWindow myWin;
    }
    
    
    proc align(float $constX, float $constY, float $constZ) //funcion de recolocacion de vertices
    {
    
    
    
    
    string $vertexSelected[]=`ls -sl`;
    
    int $numVertex=`size ($vertexSelected)`;
    
           if (!$numVertex) // si no se selecciona ningun vertice manda error
           {
               confirmDialog
               -t "Error"
               -m "select at least two vertex"
               -b "OK";
      
           }
           else
           {
    
               float $vertexPosition[]=`pointPosition -w $vertexSelected[0]`;
    
               scale -p $vertexPosition[0] $vertexPosition[1] $vertexPosition[2]  $constX $constY $constZ;
           }
    }

  10. #10

    Predeterminado

    Despues le hecho un vistazo al script a ver que tal!

    A mi al principio tambien me liava mucho el tema de los layouts para meter las cosas en las ventanas, pero gracias a este tutorial me comenze a enterar del tema un poco mas.
    Ya veras, leetelo con calma que vale la pena y te lo explica todo muy bien lo e crear un UI :
    http://67.15.36.49/team/Tutorials/me...eEditor_01.asp

    Si te miras algunos de mis scripts que hay en este foro puedes pillar cosillas de como las he hecho asi te sirven de algo de ayuda.

    Esperamos ver la version completa
    Saludos!

Página 1 de 2 1 2 ÚltimoÚltimo

Información de tema

Usuarios viendo este tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •