Empezar MAXScript

May 2, 2017 | Author: David Inlines | Category: N/A
Share Embed Donate


Short Description

Download Empezar MAXScript...

Description

Tutorial de inicio de MAXScript!

www.davidinlines.com

Empezar con MAXScript David Inlines 3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

1

Tutorial de inicio de MAXScript!

www.davidinlines.com

Empezar con MAXScript A. El manual B. MAXScript Primera parte ! ! ! ! ! ! ! ! ! ! ! ! !

1.1 Diferentes componentes de un Script ! 1.1.1 Signos 1.2 Funciones en MAXScrpit. 1.3 Construccion de Listas o Arrays. 1.4 Entrar Comandos. 1.5 Identificación de objetos y modificación de parámetros. 1.6 Variables y métodos para asignarlas. 1.7 Asignar Accesos 1.8 Variables globales y locales. 1.9 Listas o Arrays ! 1.9.1 Lista o Array cerrada. ! 1.9.2 Lista o Array abierta. 1.10 Operaciones y operandos.

Segunda Parte ! ! ! ! ! ! ! ! ! ! ! ! !

2.1 Funciones. 2.2 Crear comandos de transformación. ! 2.2.1 Comando MOVER. ! 2.2.2 Comando ESCALAR. ! 2.2.3 Comando ROTAR. 2.3 Comandos para indicar propiedades. 2.4 Comandos para añadir modificadores. 2.5 Expresar animaciones. 2.6 Argumentos. Simplificar las funciones. 2.7 if... then... else. 2.8 Bucles. ! 2.8.1 Bucle For ! 2.8.2 Bucle While

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

2

Tutorial de inicio de MAXScript!

www.davidinlines.com

Tercera Parte ! ! 3.1 Crear herramientas de entorno con MAXScript. ! 3.2 Menús contextuales de botón dercho. ! 3.3 Definición de Macros. ! 3.4 Cómo crear un botón. ! ! 3.4.1 Cómo hacerlo operativo. ! 3.5 Añadir un contador deslizante. ! ! 3.5.1 Cómo hacerlo operativo. ! 3.6 Crear mensajes de error. ! 3.7 Crear cajas flotantes. ! 3.8 Editor de visual MAXScript. ! 3.9 Herramienta Macro Recorder. ! 3.10 Comando Debugger Dialog. Cuarta parte !

Comandos y funciones más importantes utilizados en este manual.

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

3

Tutorial de inicio de MAXScript!

www.davidinlines.com

A. El manual Este manual no esta preparado para formar a un programador de MAXScript con todo el sentido de la palabra, eso sí, aprenderemos a entender y crear guiones que podrá necesitar más adelante: · Cómo crear, abrir y ejecutar guiones. · Crear guiones que generen y editen objetos. · Crear funciones dentro de los guiones. · Conocer que son las variables o argumentos y su efecto en una función. · Conocer y aplicar condiciones o bucles. · Crear animaciones de geometrías y añadir modificadores. · Crear utilidades personales operativas con persianas, paneles, botones y cajas flotantes. Para poder seguirlo bien, es preferible tener unos mínimos conocimientos de programación y conocer el funcionamiento del Autodesk 3ds Max, ya que el código que aprenderemos, modifica valores de objetos de dicho software. Toda la información de este manual esta sacada del libro "3ds Max 2012. Curso Avanzado" , Josep Molero Vera, Inforbook's, S.L. con algunas pequeñas correciones. Si algo está mal desarrollado, por favor, envíenme un correo a [email protected] para corregirlo. En mi blog personal www.davidinlines.wordpress.com he colgado algunos ejercicios y prácticas que salen en este manual.

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

4

Tutorial de inicio de MAXScript!

www.davidinlines.com

B. MaxScript MAXScript es un lenguaje de programación orientado a objetos de 3ds Max y exclusivo de 3ds Max. El dominio de este lenguaje, se pueden conseguir grandes mejoras en al utilización de 3ds Max, las tareas de creación y animación pueden ser mucho más eficientes gracias a las operaciones programadas con MAXScript, construir modelos que, "a mano" sería muy costoso, en cambio, con unas líneas de código sencillo se pueden crear cosas complejas con geometrías y animaciones. MAXSript Listener: Consta de un espacio mayor donde se escriben los "Scripts" de varias líneas, es la parte rosada; abajo está la ventana donde se muestra el resultado, por ejemplo, si en la parte rosada ponemos "2+2" abajo saldrá "4". Mini Listener: Se encuentra en al parte inferior izquierda del 3ds Max y se utiliza igual que el MAXScript Listener.

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

5

Tutorial de inicio de MAXScript!

www.davidinlines.com

Primera parte 1.1 Diferentes componentes de un script · Línea escrita o Script: Objeto fundamental y evaluable del programa. Generalmente construido por elementos que pueden ser destinos, valores, constantes u otras líneas. · Operador: Destino de operación matemática. · Operando: Componente de una operación. · Argumento: Cualquier variable de una función. · Factor: Elemento similar al operando, que forma parte de una expresión. · Variable: Valor que se almacena en la memoria para su utilización posterior. · Elemento de la línea: Cualquier componente de la línea. · Destino: Generalmente sus componentes indican nombres de variables, matrices o funciones definidas por el programador. · Expresión: Grupo de destinos que constituyen una operación matemática. · Números enteros: Valores numéricos exactos. · Números reales: Valores numéricos con coma flotante. · Cadenas: Son caracteres de texto entre comillas. · Lista o Array: Serie ordenada de elementos o expresiones. · Descriptores: Son ciertos caracteres que representan ficheros. · Comando: Es el destino cuyo nombre representa un comando del programa. · Función: Es un destino de una función o comando creada por el programador. 1.1.1 Signos \ : Se utiliza para que una línea ignore el final de una expresión. ; : Separa expresiones dentro de una línea. , : Separa expresiones en una Lista o Array, no es una coma flotante para número real. . : Es la coma flotante de un número real. También es un punto de notación entre un objeto con nombre y su parámetro. – : Para comentarios aclaratorios, no se evalúa la línea que lo contiene. # : Indica Lista o Array. $ : Identifica el texto que sigue como el nombre de un objeto 3ds Max con nombre. Otros utilizados son: () . ´ "

1.2 Funciones en MAXScript Como se ha nombrado más arriba, si en la parte rosada del Listener ponemos cualquier suma, en la parte inferior nos devolverá el resultado: 1+2 devuelve 3 1.1 + 2.2 devuelve 3.3 (ojo on el . y no la ,) 1.1 + 2 devuelvr 3.1 Para escribir texto, lo deberemos poner entre comillas: "Hola" devuelve "Hola"

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

6

Tutorial de inicio de MAXScript!

www.davidinlines.com

1.3 Construccion de Listas o Arrays #(,) #(2.2 + 3 , 3.3 + 4) Devuelve #(5.2 , 7.3) El valos puede estar construido por números enteros, reales, expresiones y cadenas sin limitación de elementos.

1.4 Entrar comandos ( ) torus ( ) + intro devuelve un toroide en el viewport llamado "Torus001"

1.5 Identificación de objetos y modificación de parámetros $. = valor $Torus001.segments = 60 - Aumenta el valor de segmentos a 60 $Torus001.sides = 40 - Aumenta el valor de sides a 40. $Torus001.Radius1 = 20 - Aumenta el valor del radio 1 a 20.

1.6 Variables y métodos para asignarlas = Minombre = "este es mi nombre" david = "inlines" - devuelve inlines A = 2 - devuelve 2 B=5 C = #(A+B) devuelve #7 D = #(A + B, A * B) devuelve #(7,10) Micaja = box() - asigna un objeto a una variable A partir de ahora, cada vez que escriba Minombre en el Listener, le devolverá "Este es mi nombre", esto significa que a la variable Minombre se le ha asignado "Este es mi nombre", así con todas las variables asignadas. - A la hora de asignar variables, no existe diferencia entre mayúsculas y minúsculas. - También se pueden asignar otros correspondientes a objetos o parámetros de 3ds max, por ejemplo colores, nombres de objetos, parámetros de dimensión, etc. - No se pueden utilizar números enteros ni reales para representar nombres de variables. - Solo se utilizará el punto . para separar el nombre del objeto de su parámetro.

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

7

Tutorial de inicio de MAXScript!

www.davidinlines.com

1.7 Asignar accesos Es una construcción que permite introducirse en los componentes de objetos y valores compuestos, mediante operandos de propiedades de un objeto o indexar una Lista o Array. . Micaja.length = 50 Micaja.width = 10 Micaja.height = 15 Cada vez que pulsamos intro, "Micaja"se actualiza. Si hemos creado muchas variables, podemos ver las propiedades esribiendo showProperties por ejemplo showProperties Micaja, nos devolverá: showProperties () ! .height : float ! .length ; foat ! .lengthsegs : integer ! .width : float ! .widthsegs : integer ! .mapcoords : boolean ! .heightsegs : integer ! .realWorldMapSize : boolean false Esto es un listado de propiedades del objeto al que corresponde la variable y a su derecha el tipo de dato que precisa. · Float: dato de coma flotante · Integer: dato de número entero · Booblean: True o False, también On/Off · String: cadena entre comillas " ".

Para definir las coordenadas se utiliza el operando position y el valor de la posición entre corchetes: .position = [valor 1, valor 2, valor 3] micaja.position = [1, 2.0, 9]

1.8 Variables globales y locales Las variables globales son variables que quedan memorizadas mientras no se cierre el programa. Las variables locales son aquellas son aquellas que se almacenan en la memora de forma temporal mientras el script esté en funcionamiento; las variables son locales si no se le indica ningún ámbito. global =

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

8

Tutorial de inicio de MAXScript!

www.davidinlines.com

local = global Micaja = box( ) local Micaja = box ( ) Las persistent global hace que la variable se salve al cerrar una escena y sea restituida al abrirla de nuevo.

1.9 Listas o Arrays Es una serie ordenada de variables almacenadas bajo un mismo nombre, es una gran variables dividida en partes denominada Elemento. 1.9.1 Lista o array cerrada: #( (, )) #(2, 5, 7, 25) devuelve #(2, 5, 7, 25) b = 12 devuelve 12 x = 60 devuelve 60 # (13, "array", cos x, #(b + 2*10.0)) devuelve #(13, , 0.5, #(32.0)) 1.9.2. Lista o array abierta: #( ) Los elementos de la lista se añaden uno a uno entre corchetes. MiLista = # () devuelve #( ) MiLista [1] = "casa" devuelve "casa" MiLista [2] = 125 devuelve 125 MiLista [3] = 2 devuelve 2 MiLista [4] = 3 devuelve 3 MiLista devuelve #("casa", 125, 2, 3)

1.10 Operaciones y operadores Son operaciones matemáticas simples. + - * / , ^ sin x, cos x, pi... Random x y devuelve un número que esté entre X e Y Random 10 20 puede devolver 19 o 15 Los Contadores o Incrementales son incrementos determinados por i = i + 1 puediendo sustiruis el + por cualquier otro operador (+ - * / , ^ sin x, cos x, pi,...).

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

9

Tutorial de inicio de MAXScript!

www.davidinlines.com

Segunda parte 2.1 Funciones La función es un pequeño guión o parte de un guión que puede ser evaluada y ejecutada para obtener un resultado. Function o fn = Para funciones recurrentes, colocamos mapped en lugar de function o fn, que son funciones dentro de otras funciones y dentro de otras funciones tantas veces como se precise. function miFuncion= ( ) miFuncion ( ) Por ejemplos, queremos crear una función que haga Teteras de radio 30 y 4 segmentos: function CreaTeteras = ( ! Tetera = teapot radius:30 segments: 4 ) CreaTetera () (Sin espacio en el paréntesis anterior)

2.2 Crear comandos de transformación 2.2.1 Comando MOVER move nombre_de_variable [] move miesfera [70,70,0] Con este comando hemos desplazado la esfera 70 unidades en X y en Y, en Z 0. 2.2.2 Comando ESCALAR scale nombre_variable [] Scale miesfera [2,2,1] En el eje X e Y se ha escalado por dos en el Z se queda igual (1=igual)

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

10

Tutorial de inicio de MAXScript!

www.davidinlines.com

2.2.3 Comando ROTAR Para rotar las figuras, se adaptan los parámetros a la forma de especificar los ángulos en el espacio tridimensional, bajo el método de Euler. 1. Se define como variable un comando de rotación de objeto. nombre_rotacion = eulerangles Ax Ay Az miRotacionEsfera = eulerangles 0 30 0 2. Cuando tenemos la variable definida: rotate nombre_de_variable nombre-rotacion rotate miesfera miRotacionEsfera

Normalmente siempre se trabaja con el Sistema de Coordenadas Universales (SCU), si necesitamos cambiar este, haremos lo siguiente: in coordsys = eulerangles Ax Ay Az in coordsys local mirotacion = eulerangles 0 30 0 ! ! ! ! ! !

Los sistemas específicos son: · in coordsys world si estaba en otro sistema y quiere volver al SCU. · in coordsys local pasa al Sistema de Coordenadas Local. · in coordsys parent pasa al Sistema de Coordenadas Ascendiente. · in coordsys grid pasa al Sistema de Coordenadas de la Cuadrícula. · in coordsys screen pasa al Sistema de Coordenadas de la Pantalla. · in coordsys pasa al Sistema de Coordenadas de Designar

2.3 Comandos para indicar propiedades Se trata de activar (true) o desactivar (false) propiedades de la figura y cambiar valores, por ejemplo: miesfera.segments = 8 miesfera.radius = 40 miesfera.smooth = false miesfera.mapcoords = true

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

11

Tutorial de inicio de MAXScript!

www.davidinlines.com

2.4 Comandos para añadir modificadores Un aspecto muy importante es la asignación de modificadores mediante código, se añaden mediante el comando addmodifier, bastante lógico: addmodifier ( ) MiTetera = teapot radius: 30 addmodifier MiTetera (bend angle: 45) Si queremos añadirle otro modificador igual o diferente, solo debemos ponerlo debajo del otro: MiTetera = teapot radius: 30 addmodifier MiTetera (bend angle: 45) addmodifier MiTetera (bend angle: 90) Para poder modificar el valor de algún parámetro, es igual que la forma anteriormente explicada: nombre_variable.comando_modificador.propiedad = valor MiTetera.bend.angle=60

IMPORTANTE: En este ejemplo, hemos utilizado el modificador Bend y solo estamos modificando el valor del ángulo, si lo que necesitamos es cambiar el el eje de giro (en X Y Z) debemos cambiar "angle" por "Axis": MiTetera.bend.axis = 0 para seleccionar el eje X MiTetera.bend.axis = 1 para seleccionar el eje Y MiTetera.bend.axis = 2 para seleccionar el eje Z Para activar alguna parte del modificador, por ejemplo el Limits, escribiremos: MiTetera.bend.limit = true para activarlos MiTetera.bend.limit = false para desacrivarlo. La mayoría de modificadores trabajan así.

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

12

Tutorial de inicio de MAXScript!

www.davidinlines.com

2.5 Expresar animaciones Todo lo programado anteriormente, se puede animar con una serie de comandos: animate on ( at time tiempo_fotograma_inicio (nombre_variable.parametros>) at time tiempo_fotograma_final (nombre_variable.) ) Un ejemplo de una tetera en reposo y se va escalando hasta el fotograma 50 y vuelve a su posición y escala inicial: tetera = teapot () animate on ( at time 0 (tetera.pos = [-80,0,0]; tetera.scale = [1,1,1.5]) at time 50 (tetera.pos = [80,50,0]; tetera.scale = [1,8,1.5]) at time 100 (tetera.pos = [-80,0,0]; tetera.scale = [1,1,1.5]) ) MAXScript da por definido en tiempo_fotogramas el número de fotogramas, para cambiar esta unidad utilizaremos las siguientes formas: · s para indicar la unidad de segundos. · f para indicar el número de fotogramas. · t para "tick" unidad de resolución de tiempo, equivalente a 1/4800 de segundo. · m para indicar la unidad de minutos.

2.6 Argumentos. Simplificar las funciones Se utilizan para no hacer eterno el trabajo de crear una función por cada elemento, por ejemplo, si queremos hacer 20 elementos o más, deberemos utilizar los Argumentos para simplificar el tiempo y el trabajo, asignamos unos argumentos a una función y a las restantes solo habrá que modificar pocos valores: La función es: function creamiSatelite unradio unaposicion = ( ) creamisatelite unradio y unaposicion serian nombres de argumentos de una única variable creamitetera: miSatelite.radius = unradio miSatelite.position = unaposicion

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

13

Tutorial de inicio de MAXScript!

www.davidinlines.com

De esta manera, la función quedaría así: function creamiSatelite unradio unaposicion = ( ! miSatelite = sphere () ! ! /*declaramos la variable miSatelite*/ ! miSatelite.radius = unradio!! /*declaramos la variable un radio para ! ! ! ! ! ! ! ! colocar el valor del radio*/ ! miSatelite.position = posicion! /*Declaramos la variable deposición para ! ! ! ! ! ! ! colocar el valor posición [x y z]*/ ! ) !

/*llamamos a la función colocando los valores*/

! !

creamisatelite 20 [0,80,0]! ! creamisatelite 10 [0,100,0]!!

! !

/*radio 20 y posición [0,80,0]*/ /*radio 10 y posicion [0,100,0]*/

2.7 if... then... else En programación, la secuencia if evalúa la expresión indicada como condición y si el resultado es cierto (true) pasa a evaluar la sieguiente función then. Por lo contrario, si el resultado es falso (false), pasaría a evaluar la otra función else: if then ( ! ) else ( ! ) Ejemplo: A= 60 B=50 micaja1 = box length : A micaja2= box length : B if A>B then! ! ( ! ! ! ) else ! ( ! ! ! )

!

!

!

!

/*Verifica si A es mayor que B*/

$box001.width=100!!

/*se ejecuta si A es mayor que B*/

$box002.height=50! !

/*Si no, cambia la altura caja02*/

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

14

Tutorial de inicio de MAXScript!

www.davidinlines.com

/*A es mayor que B, por lo tanto la anchura de la box001 pasa a 100 y la box002 permanece igual*/ Conceptos básicos de igualdades y desigualdades: < menor que. > mayor que. = mayor o igual que. = igual que, siempre como asignación de valor. == igual que, como comparación entre valores. != no igual a o desigual.

2.8 Bucles Se utilizan para realizar acciones repetitivas de forma automática. Para MAXScript existen dos: For y While

2.8.1 Bucle For Es un tipo de bucle muy representativo y utilizado en repeticiones de todo tipo: for in o = do o collet ! ( ! ! ! ) La expresión se puede representar de varias formas: 1. to : esta estructura indica que las repeticiones se producen entre las dos , siendo el incremento de la repetición 1. Ejemplo 1: Si escribimos la siguiente línea en el Listener: for n=20 to 30 do print n Nos devuelve: 20 21 22 23 24 25 26 27

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

15

Tutorial de inicio de MAXScript!

www.davidinlines.com

28 29 30 OK Donde cada número es n. Ejemplo 2: La siguiente línea va a crear varias repeticiones de un objeto sin necesidad de repetir cada vez la operación: miTetera = teapot ( ) for n=1 to 3 do ( ! copiTetera = copy miTetera ! copiTetera.position = [n* 60, 0, 0] ) Nos crea 4 teteras en fila empezando desde la posición [0,0,0]. 2. to by : al introducir by, la que le sigue indica el valor de incremento de repetición. Si añadimos al primer ejemplo (print n) by 2, nos queda: for n = 20 to 30 by 2 do print n Nos devuelve: 20 22 24 26 28 30 OK 3. where : si añade este comando a alguna de las variantes anteriores, establece una condición cierta (true) o falta (false). Se evalúa al principio del bucle y se ejecuta si se cumple el true. El comando do, da la orden de evaluación y ejecución de la expresión o función que sigue y que es el objeto de la creación del bucle. También se puede utilizar el comando collect en vez de do, este comando actúa igual que el do, pero además crea una lista con todos los elementos devueltos. Coloquemos collect en el ejemplo anterior: for n = 20 to 30 by 2 collect print n

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

16

Tutorial de inicio de MAXScript!

www.davidinlines.com

Nos devuelve: 20 22 24 26 28 30 #(20,22,24,26,28,30) Si aplicamos collect al ejemplo de las teteras, nos creará las teteras y además nos creará una lista de la posición de cada una: miTetera = teapot () for n=1 to 4 by 1 collect ( ! copiTetera = copy miTetera ! copiTetera.position = [n*60, 0, 0] ) Nos devuelve: La creación de las teteras en diferentes posiciones y una lista con su posición: #([60, 0,0], [120, 0, 0], [180, 0, 0], [240, 0, 0])

2.8.2 Bucle while Este bucle se utiliza para ejecutar una función mientras se cumpla la condición especificada en : while do while es el comando, la primera variable establece el rango de la condición de certidumbre definida anteriormente, a continuación do para ejecutar la siguiente de acción. La forma inversa sería: do while Los comandos actúan de la misma forma. Ejemplo 1: a=2 while a>0 do print "cierto" La función devuelve: cierto cierto cierto ...

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

17

Tutorial de inicio de MAXScript!

www.davidinlines.com

De forma automática e ininterrumpida, nunca para hasta que se finalice de alguna forma.

Ejemplo 2: a=2 while a) at time tiempo_fotograma_final (nombre_variable.) ) ----------------------------------------------------------------------------------------------------------------------tetera = teapot () animate on ( at time 0 (tetera.pos = [-80,0,0]; tetera.scale = [1,1,1.5]) at time 50 (tetera.pos = [80,50,0]; tetera.scale = [1,8,1.5]) at time 100 (tetera.pos = [-80,0,0]; tetera.scale = [1,1,1.5]) )

Argumentos. Simplificar las funciones function creamiSatelite unradio unaposicion = ( ) creamisatelite unradio y unaposicion serian nombres de argumentos de una única variable creamitetera: ----------------------------------------------------------------------------------------------------------------------miSatelite.radius = unradio miSatelite.position = unaposicion function creamiSatelite unradio unaposicion = ! ( ! ! miSatelite = sphere () ! ! ! ! miSatelite.radius = unradio!! ! ! ! ! ! ! ! ! ! miSatelite.position = posicion! ! ! ! ! ! ! ! ! )

/*declaramos la variable miSatelite*/ /*declaramos la variable un radio para ! ! colocar el valor del radio*/ /*Declaramos la variable de posición para ! colocar el valor posición [x y z]*/

!

/*llamamos a la función colocando los valores*/

! !

creamisatelite 20 [0,80,0]! ! creamisatelite 10 [0,100,0]!!

! !

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

/*radio 20 y posición [0,80,0]*/ /*radio 10 y posicion [0,100,0]*/

29

Tutorial de inicio de MAXScript!

www.davidinlines.com

Bucle if if then ( ! ) else ( ! ) ----------------------------------------------------------------------------------------------------------------------A= 60 B=50 micaja1 = box length : A micaja2= box length : B if A>B then! ! ! ! ! ! ( ! ! $box001.width=100!! ! ) else ! ( ! ! $box002.height=50! ! ! )

/*Verifica si A es mayor que B*/ /*se ejecuta si A es mayor que B*/

/*Si no, cambia la altura caja02*/

Bucle for for in o = do o collet ! ( ! ! ! ) ----------------------------------------------------------------------------------------------------------------------Ejemplo 1: miTetera = teapot ( ) for n=1 to 3 do ( ! copiTetera = copy miTetera ! copiTetera.position = [n* 60, 0, 0] )

3ds Max 2012. Curso Avanzado. Josep Molero Vera, Inforbook’s

30

Tutorial de inicio de MAXScript!

www.davidinlines.com

----------------------------------------------------------------------------------------------------------------------Ejemplo 2: Con by miTetera = teapot () for n=1 to 4 by 1 collect ( ! copiTetera = copy miTetera ! copiTetera.position = [n*60, 0, 0] ) ----------------------------------------------------------------------------------------------------------------------Ejemplo 3: Con collect miTetera = teapot () for n=1 to 4 by 1 collect ( ! copiTetera = copy miTetera ! copiTetera.position = [n*60, 0, 0] )

Bucle while do while ----------------------------------------------------------------------------------------------------------------------1. a=2 while a>0 do print "cierto" La función devuelve: cierto cierto cierto ... De forma automática e ininterrumpida, nunca para hasta que se finalice de alguna forma. ----------------------------------------------------------------------------------------------------------------------Ejemplo 2 a=2 while a
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF