Gracias Gracias:  14
Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 29

Tema: Tutorial MaXScript - Introduccion

  1. #1
    Administrador y fundador. Avatar de 3dpoder
    Fecha de ingreso
    Apr 2002
    Mensajes
    15,455

    3dsmax Tutorial MAXScript - Introducción

    1- Introducción

    1.1 - Descripción general de MAXScript
    MAXScript es un lenguaje de alto nivel orientado a objetos y de sintaxis muy sencilla. Esta pensado para usuarios de 3D Studio MAX que no estén familiarizados con la programación. Sus variables son sin tipo y no hay distinción entre mayúsculas y minúsculas.
    Este lenguaje no necesita compilador. Todas las instrucciones se llevan a cabo en tiempo de ejecución.
    Podemos utilizar MAXScript y 3D Studio MAX al mismo tiempo. Se puede crear un cubo en MAXScript y seguidamente, modificarlo en 3D Studio.
    Algunos ejemplos de utilización de este lenguaje pueden ser:

    • Creación de escenas complejas que interactivamente serían demasiado complicadas de llevar a cabo.
    • Creación de herramientas de proceso por lotes.
    • Generación de funciones nuevas para facilitar una determinada tarea.
    • Uso de casi todas las funciones de 3D Studio MAX.
    • Creación de nuevos paneles y ventanas con utilidades para 3D Studio MAX.


    1.2 - Cómo se accede a MAXScript
    MAXScript se encuentra en el panel de herramientas.
    En este panel hay una persiana de utilidades, y dentro de ella se puede presionar el botón MAXScript



    Una vez se haya abierto la persiana de MAXScript podremos acceder a las opciones: Abrir oyente, guión nuevo, abrir guión, ejecutar guión y cerrar.
    [*]Abrir oyente: Abre la ventana oyente de MAXScript. Si pulsamos esta opción y el oyente esta minimizado, o escondido detrás de otra ventana, lo restaurara. Si la cierra y la vuelve a abrir, conserva el texto que había antes de cerrarla.


    [*]Guión nuevo: Abre un editor en una ventana nueva, donde se puede escribir un nuevo guión en MAXScript
    [*]Abrir guión: Al pulsar esta opción se abre un cuadro de diálogo de apertura de archivos en el que el usuario ha de elegir un guión en MAXScript. Una vez escogido el guión se abrirá una ventana Editor de MAXScript con el contenido del fichero.[*]Ejecutar guión: El usuario escoge un guión en MAXScript y éste se lee y se ejecuta. La salida puede verse, dependiendo del tipo de guión, en los visores de 3D Studio MAX o bien en la ventana oyente de MAXScript.[*]Utilidades: Muestra las utilidades de guión disponibles.[*]Cerrar: Cierra la utilidad MAXScript.

    1.3 - Utilización del oyente de MAXScript
    En el oyente se pueden ejecutar comandos y expresiones. Para ejecutarlos, simplemente se escribe el comando o expresión y se pulsa la tecla ENTER.
    Podemos desplazarnos por el texto del oyente como si fuese un editor normal. También se puede cortar, copiar y pegar el texto seleccionado (CTRL-X, CTRL-C, CTRL-V) y editar nuevos comandos en medio del texto, o modificar los que ya teníamos y después ejecutarlos.
    Para ejecutar comandos en medio del texto, después de editarlos en una línea nueva, se ha de pulsar la tecla ENTER del teclado numérico, o bien presionar MAYÚSCULAS – ENTER. Los resultados se muestran en la misma ventana, bajo el comando o los comandos ejecutados.

    Es posible ejecutar bloques de código seleccionándolos previamente y pulsando las teclas MAYÚSCULAS – ENTER o bien, presionando ENTER desde el teclado numérico.
    La instrucción Include “NombreFichero.Extensión” inserta el contenido del fichero “NombreFichero” en el oyente sin ejecutarlo.
    Se puede seleccionar el texto y ejecutarlo por trozos.
    Podemos trabajar con el oyente de MAXScript y con 3D Studio MAX al mismo tiempo.

    1.4 - Variables en MAXScript
    Las variables se utilizan para almacenar datos que varían durante la ejecución del programa. En MAXScript no es necesario declarar las variables antes de utilizarlas
    Tenemos dos clases de variables en MAXScript:
    [*] Variables locales:[*] Se consideraran variables locales aquellas que se utilicen por primera vez dentro de un bloque o función. En caso contrario, las variables se consideraran globales.[*] Sólo son visibles en el bloque o función donde se declaran.[*] Su valor se mantiene mientras se esta ejecutando la función o el bloque donde se encuentran.
    [*]Variables globales:[*] Son visibles en todo el código MAXScript.[*] Podemos acceder a ellas desde diferentes utilidades, funciones, etc. Su valor permanece hasta que se sale de 3D Studio MAX.

    La primera vez que se utiliza una variable MAXScript la inicializa como “undefined”.
    Para que el código sea más claro, es recomendable indicar de qué clase son las variables. Para ello, utilizaremos los términos “local” y “global”. Nótese que los comentarios en MAXScript van precedidos de 2 guiones “- -“.

    local x = 2, m = 3.7
    local y, z, r
    global texto = ”Hola”
    global i = 1, -- La declaración continúa en las líneas siguientes
    j = 3,
    que = sin (35)
    local f=g=h=0
    En la declaración de variables, podemos definir si son globales o locales, pero no indicamos de qué tipo son. Esto es debido a que las variables son libres de tipo. Las variables pueden cambiar el tipo de valor en las asignaciones. Por ejemplo, en una primera asignación una variable puede ser un entero, y en una segunda asignación, la variable puede ser una cadena de caracteres. Esto no quiere decir que se puedan hacer operaciones incorrectas. Si tratamos de hacerlas, MAXScript dará un error. Para convertir un tipo de variable en otro tipo utilizaremos la instrucción “as” de la siguiente forma:
    [CENTER]Valor as nuevo_tipo.
    Nótese en la imagen siguiente que las salidas de comando en el oyente siempre son de color azul, excepto en los errores.



    1.5 - Operaciones matemáticas en MAXScript
    Cuando introducimos una operación matemática en MAXScript, éste evalúa dicha operación y muestra el resultado en la ventana oyente. MAXScript dispone de las operaciones matemáticas necesarias para hacer que funcione de forma semejante a una calculadora.
    Las expresiones matemáticas están compuestas por operadores (+,-,*...) y por operandos. Un operando matemático puede ser:
    [*] Un Nombre de variable, números, etc.. Por ejemplo:[*]1 + 3 -- Suma ambos números[*]Total - 5 -- Suma 5 al valor de la variable "Total"[*]Total + iva -- Suma el valor de la variable "Total" más el valor de la variable "iva"[*] Una llamada a una función. Por ejemplo[*](GradosARadianes grados:180) + 5 -- Llama a la función "GradosARadianes" pasando como parámetro 180 grados y al resultado le suma 5.[*]Una expresión matemática. Por ejemplo:[*]123 + (Total - iva) -- Restamos el contenido de la variable "iva" al contenido de "Total" y le sumamos el valor 123.

    En la Tabla siguiente podemos ver las expresiones matemáticas que tiene MAXScript.

    Operaciones Matemáticas

    <operando_matemático> + <operando_matemático> Suma <operando_matemático> - <operando_matemático> Resta <operando_matemático> * <operando_matemático> Multiplicación <operando_matemático> / <operando_matemático> División <operando_matemático> ^ <operando_matemático> Exponencial <operando_matemático> as <factor> Conversión entre tipos

    En la figura siguiente tenemos unos ejemplos de expresiones matemáticas en el oyente de MAXScript:



    También se puede utilizar el formato abreviado de asignación del lenguaje C para modificar un valor contenido en una variable. Por ejemplo:

    Formato abreviado de asignación

    x + = 5 -- Incrementa en 5 el valor de x
    y * = 7 -- Multiplica por 7 el valor de y
    z - = 9 -- Resta 9 al valor de z
    que / = 8 -- Divide que entre 8
    1.6 - Objetos de 3D Studio MAX en MAXScript

    MAXScript puede trabajar con objetos de 3D Studio MAX al mismo tiempo que se trabaja con ellos de forma interactiva a través de los botones y paneles. De hecho, los objetos pueden ser creados, transformados, modificados y eliminados desde MAXScript al igual que se hace desde 3D Studio MAX.
    Los comandos de creación de objetos coinciden con los nombres de estos objetos. Podemos crear una caja tan sólo escribiendo en la ventana oyente el comando box ( ), o bien, si tenemos la versión, su equivalente en español caja ( ). Una vez escrito, y después de presionar la tecla INTRO, se crea una caja con los parámetros por defecto. Es recomendable escribir los comandos en inglés, ya que no todos los parámetros que hay se han traducido al español. En este tutorial escribiremos todos los comandos y parámetros en inglés
    Es indiferente si escribimos el comando en mayúsculas y en minúsculas, ya que MAXScript no distingue entre ellos. También se recomienda asignar el objeto a una variable, para hacer más manejable el uso de dicho objeto. Si el objeto creado no se asigna a ninguna variable y queremos referirnos a él utilizaremos el símbolo “$” delante del nombre que tiene el objeto en la escena.
    Pongamos un ejemplo de creación de una caja de altura 20, anchura 30 y longitud 40. Asignaremos el resultado a la variable PrimeraCaja:



    Cuando utilizamos el comando box con parámetros, se eliminan los paréntesis y en su lugar ponemos los nombres de los parámetros seguidos de los dos puntos y su valor. Los parámetros que se omiten adquieren su valor por defecto.
    Cuando MAXScript ha creado la caja devuelve el nombre que tiene dicha caja en la escena (En este caso, el nombre será “Caja01”) y al mismo tiempo indica la posición que tiene la nueva caja en la escena (Con las coordenadas x, y, z separadas por comas y dentro de corchetes). MAXScript dibuja la caja en la escena. Se puede trabajar con la nueva caja desde 3D Studio MAX como si se hubiese creado de forma interactiva. Podemos transformarla, modificarla, eliminarla e incluso deshacer la creación de la caja con el botón “deshacer”.
    Atención: No es lo mismo el nombre que tiene la caja en la escena (Caja01) que el nombre de variable en MAXScript (primeraCaja).

    Utilizaremos la variable primeraCaja para acceder más fácilmente a los parámetros de creación y a las propiedades generales y de transformación:



    En la imagen anterior hay varios ejemplos de modificación de algunos parámetros de la caja. Podemos modificar todos los parámetros del objeto (altura, radio, etc..), de nodo (nombre, color, etc...) y de transformación (rotación, posición, etc). Para modificar un valor en un objeto utilizaremos uno de los siguientes es quemas:
    [*] $NombreObjeto.Parámetro=NuevoValor[*] NombreVariable.Parámetro=NuevoValor

    Donde "NombreObjeto" sería equivalente a $Caja01 en el ejemplo anterior y "NombreVariable" equivale a PrimeraCaja.

    1.6.1 - ShowClass
    Para saber los nombres y tipos de parámetros de un objeto se puede utilizar la función ShowClass(). Si escribimos en el oyente de MAXScript sólo el nombre de la función seguido de los dos paréntesis tendremos una lista de todos los objetos de 3DStudio MAX y sus parámetros correspondientes. Cada parámetro ira seguido de su tipo.
    Lo más normal es que se quiera saber los parámetros de un objeto determinado, sin necesidad de que salgan todos los objetos de 3D Studio MAX. Tenemos dos ejemplos de ello en el siguiente recuadro.
    Ejemplos de ShowClass ShowClass "box.*" -- Muestra todos los parámetros de la clase box
    Box(Caja) : Geométricas {10,0}
    .height(Altura) : float
    .length(Longitud) : float
    .lengthsegs : integer
    .width(Anchura) : float
    .widthsegs : integer
    .mapCoords : boolean
    .heightsegs(SegmsAltura) : integer
    OK

    ShowClass "Box.height" -- Muestra todos los datos del parámetro height
    Box(Caja) : GeometryClass {10,0}
    .height(Altura) : float
    OK

    En el primer ejemplo indicamos con un asterisco que queremos saber todos los parámetros del objeto Box. Utilizamos el asterisco como un comodín. Si quisiésemos saber todos los parámetros de los objetos que comenzasen por “B” sólo tendríamos que poner ShowClass “B*.*” y obtendríamos una lista con ellos. Si por el contrario ya sabemos el parámetro pero no estamos seguros del tipo que tiene, nos bastara con poner ShowClass“Box.NombreParametro”.
    En el segundo ejemplo de ShowClass hemos comprobado que el parámetro "Height" de la clase "Box" es del tipo "Float".

    Fuente oficial: Bienvenidos a la página de Eloweyn
    Miniaturas adjuntadas Miniaturas adjuntadas Tutorial MaXScript - Introduccion-ubic.jpg   Tutorial MaXScript - Introduccion-ubicdespl.jpg   Tutorial MaXScript - Introduccion-oyvacio.jpg   Tutorial MaXScript - Introduccion-editor.jpg  

    Tutorial MaXScript - Introduccion-click.jpg   Tutorial MaXScript - Introduccion-oyvar.jpg   Tutorial MaXScript - Introduccion-math.jpg   Tutorial MaXScript - Introduccion-box1.jpg  

    Tutorial MaXScript - Introduccion-box2.jpg  
    Imágenes adjuntadas Imágenes adjuntadas Tutorial MaXScript - Introduccion-pestanya.jpg 
    Si vas a subir un trabajo al foro, hazlo adjuntando la imagen, archivo, vídeo o lo que sea, no publicando enlaces de otros sitios. http://www.foro3d.com/f45/forma-correcta-de-insertar-imagenes-y-archivos-en-nuestro-mensaje-98930.html

    |Agradecer cuando alguien te ayuda es de ser agradecido|

  2. #2
    Miembro Nuevo
    Fecha de ingreso
    Jul 2008
    Mensajes
    14

    Re: Tutorial MAXScript - Introducción

    Buenos días, tengo un código para max script, para importar archivos de RealFlow desde 3D max pero lo pego en el max script y no me funciona o no hace nada alguien me puede decir como hago esta tarea, gracias.

  3. #3
    reconvertido Avatar de ikerCLoN
    Fecha de ingreso
    Apr 2002
    Ubicación
    Los Angeles, USA
    Mensajes
    14,911

    Re: Tutorial MAXScript - Introducción

    Seguramente, lo que tengas sea un MACROSCRIPT. Al ejecutarlo, búscalo en Customize/ Customize User Interface. Pero para importar archivos de Real Flow, tienes un plugin en la página web de Next Limit.

    Y la próxima vez, intenta escribir en el sitio correcto. A los administradores les cuesta tiempo y esfuerzo mantener todo el foro ordenado.
    character TD @ Walt Disney Animation Studios

    mi curso de rigging facial :: https://www.domestika.org/en/courses...je-3d/ikerclon
    blog :: www.somosposmodernos.com
    twitter :: www.twitter.com/soyposmoderno
    linkedIn :: www.linkedin.com/in/ikerj

  4. #4
    Miembro Nuevo
    Fecha de ingreso
    Jul 2008
    Mensajes
    14

    Re: Tutorial MAXScript - Introducción

    lo siento mucho, pero como así que en el sitio correcto? disculpa mi ingnorancia es que es la prímera vez que escribo aca.

  5. #5
    Miembro Nuevo
    Fecha de ingreso
    Jul 2008
    Mensajes
    14

    Re: Tutorial MAXScript - Introducción

    y sí, tengo el plugin que da Nexlilimit, pero no he podido con él. lo instalé pero no me funciona.

    gracias. un feliz día.

  6. #6
    Miembro Nuevo
    Fecha de ingreso
    Jul 2009
    Mensajes
    27

    Respuesta: Tutorial MAXScript - Introducción

    3DPoder
    Queria hacerte una pequeña pregunta, que para colmo de males no se como expresar. A ver, en otros lenguajes es posible poner una orden dentro de una variable y ejecutarla, por ejemplo en Visual Fox.
    Ahora necesito algo similar en MaxScript para actuar sobre objetos creados a mano. Son muchos muy similares y los llamo por ejemplo: tecla01, tecla02 y así hasta una gran cantidad. Como puedo hacer para referenciarlos uno por uno, en un bucle?
    Algo que luciera más o menos como (soy novato en maxScript):
    for n = 1 to 100
    (
    variable = "tecla" + (n as string)
    variable.pos.x = n * 200
    )

    Ya se que la sintaxis esta mal, estoy tratando de mostrar lo que necesito. Necesito que cada "tecla" sea tratada de una manera especial, no puedo tratarlas globalmente a todas igual

    Gracias por tu atencion, a lo mejor hay alguna solución en MaxScript

  7. #7
    reconvertido Avatar de ikerCLoN
    Fecha de ingreso
    Apr 2002
    Ubicación
    Los Angeles, USA
    Mensajes
    14,911

    Respuesta: Tutorial MAXScript - Introducción

    Con MAXScript también puedes hacer eso. Lo que yo te recomiendo es almacenar en una lista (array) todos los objetos a modificar. O usar directamente los nombres de los objetos para efectuar la operación. En cualquier caso:

    -- recoge todo lo seleccionado en una lista
    theList = #()
    for s in selection do
    (
    append theList s
    )

    -- efectúa la orden en cada elemento de la lista
    for i = 1 to theList.count do
    (
    theList[i].position.x = i * 200
    )
    character TD @ Walt Disney Animation Studios

    mi curso de rigging facial :: https://www.domestika.org/en/courses...je-3d/ikerclon
    blog :: www.somosposmodernos.com
    twitter :: www.twitter.com/soyposmoderno
    linkedIn :: www.linkedin.com/in/ikerj

  8. #8
    Senior Member
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,637

    Respuesta: Tutorial MAXScript - Introducción

    Una puntualizacion.
    Recoger la selección en un array:

    Código:
    mysel = $selection as array
    y punto pelota.

    Para procesar la historia:

    Código:
    for item in mysel do
    (
     item.pos.x *= 200 --O lo que sea
    )
    Última edición por Nessito; 09-07-2009 a las 15:41
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  9. #9
    Senior Member Avatar de Ruramuq
    Fecha de ingreso
    Sep 2004
    Mensajes
    124

    Respuesta: Tutorial MAXScript - Introducción

    parece que quieres basarte en el nombre del objecto, tonces:
    Código:
    (
    	local teapots = $Teapot* --también $Teapotí? (si son menos de 100)
    	for n in 1 to teapots.count do
    	(
    		teapots[n].pos.x = n * 2
    	)
    )
    en selecciones se puede usar simplemente selection, solo en ciertas ocaciones se usa array, y también se puede usar getCurrentSelection()

    la función selection existe para simplificar varias acciones, porque es mapeable, osea puedes usar selecction.pos += 10 en lugar de crear loops

  10. #10
    Miembro Nuevo
    Fecha de ingreso
    Jul 2009
    Mensajes
    27

    Respuesta: Tutorial MAXScript - Introducción

    3DPoder:
    Hay alguna función capaz de devolver un número rellenado por ceros por la izquierda? esto es algo que se necesita mucho, especialmente en los bucles for con los que recorremos objetos numerados así 01, 02, 03, etc. Con "n as String" obtengo el número n hecho cadena, pero, si además lo quiero rellenar por la izquierda con x cantidad de ceros?
    Muchas gracias. Estos primeros días con maxScript voy a estar pregunton

  11. #11
    Senior Member
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,637

    Respuesta: Tutorial MAXScript - Introducción

    Depende de la versión.
    En el 2008 ya tienes una versión "formateante" del print: formattedprint() creo que se llama. Buscala.

    En de todas formas siempre te puedes hacer una funcioncilla de este palo:
    Código:
    fn zerofill num size =
    (
    	local result = ""
    	local aux = num as string
    	if size > aux.count then
    	(
    		for i = 1 to (size - aux.count) do result += "0"
    	)
    	result + aux
    )
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  12. #12
    Miembro Nuevo
    Fecha de ingreso
    Jul 2009
    Mensajes
    27

    Respuesta: Tutorial MAXScript - Introducción

    Muy buena la funcioncita que rellena ceros por la izquierda, más compacta que la mia. En otros lenguajes se las conoce como PADL, gracias! tengo que espabilarme más!

  13. #13
    Senior Member
    Fecha de ingreso
    Oct 2010
    Ubicación
    México D.F.
    Mensajes
    582

    Re: Respuesta: Tutorial MAXScript - Introducción

    Hola a todos, tengo un ejemplo maxscript.
    Este código se crea un botón para mencionar que objetos
    va realizar su trabajo, ejemplo mencionar botón caja etc, etc.
    Este código, como le hago, para crear más botones, y que cada botón, mencione
    su objeto respectivo, por ejemplo si yo menciono el botón caja, tiene que aparecer caja ok etc, etc.
    Y espero una ayuda a todos en general, y estaré agradecido, de ustedes, gracias.

    Código :
    rollout pru "Prueba"---Nombre del Rollout
    (
    button b "BOX" ---Lo que va a tener el rollout
    on b pressed do --- cuando presione el botón
    (
    box() --- Lo que va a hacer cuando presione el botón
    )
    )
    createDialog pru----Crear el rollout
    Última edición por Miguel-Arte-3D-1990; 03-09-2015 a las 03:19

  14. #14
    Senior Member
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,637

    Re: Respuesta: Tutorial MAXScript - Introducción

    Copia/pega el contenido del rollout, cambia "button b..." por "button <loquetesalgadelpito>..." y sustituye la línea "box()..." por lo que quieras que haga el botón en cuestión.
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  15. #15
    Senior Member
    Fecha de ingreso
    Oct 2010
    Ubicación
    México D.F.
    Mensajes
    582

    3dsmax Re: Respuesta: Tutorial MAXScript - Introducción

    Hola a todos, ya resolví el caso como Activar "Link" y DesActivar unLink"
    ejemplo código:
    Rollout crearobj "Activar link" ----Activar Link----
    (
    button lin "Crear"
    on lin pressed do
    (
    b = box name:"Caja"
    p = point name:"Punto"
    b.parent = p
    Select p
    Rollout unlink "desactivar unlink" ----Desactivar unlink------
    (
    button DesLink "DesActivar link"
    on DesLink pressed do
    (
    Select b
    $.parent = ulink
    $Punto
    )
    )
    )
    )
    createdialog unlink ----DesActivar----
    createdialog crearobj ----Activar---- Resuelto por Miguel
    Última edición por Miguel-Arte-3D-1990; 03-09-2015 a las 03:22

Página 1 de 2 12 ÚltimoÚltimo

Temas similares

  1. RealFlow Primer tutorial de RealFlow: Vistazo general e introducción
    Por kazlivsjy en el foro Almacen de Tutoriales
    Respuestas: 0
    Último mensaje: 07-09-2014, 13:09
  2. Tutorial para animar con maxscript
    Por juliux en el foro Programación y Scripts
    Respuestas: 0
    Último mensaje: 19-12-2012, 05:51
  3. Respuestas: 3
    Último mensaje: 10-11-2008, 08:26
  4. Tutorial de MaXScript prinsipiante
    Por Alexs1888 en el foro Programación y Scripts
    Respuestas: 4
    Último mensaje: 06-10-2008, 23:42
  5. [MaXScript Tutorial] - Matrices de transformacion
    Por HalfVector en el foro Programación y Scripts
    Respuestas: 18
    Último mensaje: 02-08-2008, 17:41

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •