Foros 3DPoder.  

Bienvenido a Foros 3DPoder..

Usted esta viendo este foro como invitado, no esta registrado todavía, lo que limita su visión del foro. Si quiere unirse gratis a la mayor comunidad del diseño gráfico de habla hispana, tener acceso a publicar y responder mensajes, tener mensajes privados con otros miembros(PM), responder encuestas, publicar sus imágenes para que las vea el resto del mundo, tener acceso a los video_tutoriales, y muchas cosas más, no lo dude. Registrarse es rápido, simple y gratuito, agregate hoy a la mayor comunidad 3D de habla hispana! !

Si usted tiene algún problema con su registro, por favor , díganoslo aquí. 3d





¿Te ayudo?
Retroceder   Foros 3DPoder. > :: Infografia y diseño grafico. > Tutoriales, Libros y Manuales. > Almacen de Tutoriales (Castellano) > 3DStudio Max
Foro3D Galeria Privada Video3D Blueprints Software Blog3DPoder Buscar Empleo Donaciones

Trabajo en microsoft
google adsense


Respuesta
 
Herramientas
Antiguo 28 dic 2005   #1
HalfVector
H = E + L
 
Fecha de Ingreso: marzo-2004
Ubicación: Entre dos vectores
Mensajes: 877
3dsmax [MAXScript Tutorial] - Matrices de transformación

Hola.

Bueno, pues aquí estoy con un tutorial. Algo que tal vez os resulte útil en algún momento. Evidentemente eso dependerá de a qué os vayáis a dedicar. Evidentemente una persona que se dedica exclusivamente a modelar difícilmente se va a encontrar con estas cuestiones pero si uno tira por el camino de la animación/dinámicas, entonces es más que probable que llegue un momento que se tope con este tipo de cosas. Os aseguro que un programador de motores para videojuegos se topa con esto continuamente.

Así que, ¿de qué diablos estoy hablando?. Pues se trata de una situación que ya comenté en el hilo que abrí hace unos días, donde explicaba cómo hacer que un objeto mirase a otro haciendo uso de script controllers (sin utilizar el "Look-At Constraint" que viene con MAX, evidentemente).

El tema va de destripar la matriz de transformación de un objeto para así conocerla mejor y de esta forma saber qué cosas podemos hacer con ella (¡no seáis mal pensados!. ¿Os imagináis montándoos un rollito con una matriz de transformación?. ¡Qué freaky!).

En este caso, como ejemplo, crearé un script controller que hará que un objeto siga un path pero sin hacer uso del "Path Constraint" de MAX. Además de seguir el path, el objeto variará su orientación para que mire en la dirección del desplazamiento. O sea, como si activarais la opción "Follow" del "Path Constraint".

Pero antes de pasar a comentar el código del "script controller", voy a hacer una breve introducción a las matrices de transformación de un objeto en MAX.

Matrices de transformación.

Todo objeto en MAX tiene una matriz de transformación asignada que indica su posición, rotación y escalado. Por ejemplo, cread un cubo en la vista "Perspective" y mantenedlo seleccionado. Entonces abrid el MAXScript Listener (tecla F11) y escribid:

Código:
$.transform
Pulsad intro para ejecutar la línea y el resultado será similar a éste (puede que no os de el mismo resultado si no habéis creado el cubo en el origen de coordenadas):

Código:
(matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0])
Ahora puede que os estéis preguntando: "¡¡¿Y qué diablos significa esa retahíla de números?!!". Pues bien, parece claro que estamos ante una matriz, concretamente una matriz de tipo "matrix3". Eso significa, en MAX, que estamos ante una matriz de dimensiones 4x3, es decir, 4 filas y 3 columnas. Para que visualicéis mejor, voy a reordenar la matriz para mostrárosla en filas y columnas:

Código:
[1,0,0]
[0,1,0]
[0,0,1]
[0,0,0]
A esta matriz se le denomina concretamente matriz identidad. La matriz identidad tiene una característica y es que, además de que su diagonal principal está rellena con unos, cualquier matriz A que multipliquemos por la matriz identidad, nos dará como resultado la propia matriz A.

En cualquier caso ésto no era lo que os quería explicar. Lo que quería explicar es el significado de cada fila de la matriz que será lo que nos interese para resolver el problema de que un objeto mire hacia una dirección determinada. Así que yendo al grano, la primera fila de la matriz es el eje local X o vector "right" que indica la orientación del objeto en el eje X de nuestro mundo 3D. Luego tenemos la segunda fila que es el eje local Y o vector "up" que indica la orientación del objeto en el eje Y de nuestro mundo 3D. Casi para terminar, la tercera fila indica el eje local Z o vector "look" o "view" que indica la orientación del objeto en el eje Z de nuestro mundo 3D. ¡Finalmente! tenemos la cuarta fila que indica la posición de nuestro objeto relativa al origen de coordenadas de nuestro mundo 3D. Reescribo la matriz para que lo veáis mejor:

Código:
[right.x right.y right.z]
[up.x    up.y    up.z]
[look.x  look.y  look.z]
[pos.x   pos.y   pos.z]
Estos tres vectores forman lo que en matemáticas se conoce como "base" y además tiene una peculiaridad y es que los tres vectores deben formar 90º entre sí, lo que se conoce como "base ortonormal". También tienen otra propiedad y es que los tres vectores deben estar normalizados, es decir, deben ser vectores cuya longitud es 1). Esto es importante tenerlo en cuenta porque de lo contrario nuestra matriz de transformación estará mal (¡¡será una matriz degenerada!!).

Ahora, si seleccionáis el cubo, veréis dibujados los ejes X, Y y Z en forma de flechas. ¡Pero estos ejes no son los ejes locales del cubo sino que son los ejes alineados con los ejes de nuestro mundo 3D!. Para ver los ejes locales que nos dice nuestra matriz de transformación, pulsad el botón derecho del ratón mientras mantenéis pulsada la tecla ALT. Entonces os aparecerá un cuadro desplegable donde tendréis que escoger la opción "Local". De esta forma sí que estaréis visualizando los eje locales del cubo (right, up, look) que son los que nos indica la matriz de transformación, como ya he dicho.

Pero un momento, ¡los ejes son iguales que antes de activar el sistema de coordenadas "Local"!. Claro, esto es porque el cubo se crea inicialmente con sus ejes alineados con los ejes de nuestro mundo 3D. Haced una cosa, rotad el cubo 90º en el eje X. Ahora haced lo mismo que antes para poner el sistema de coordenadas en modo "Local". Ahora sí veréis cómo el eje local Y apunta hacia arriba (eje "global" Z) y el eje local Z apunta hacía "fuera de la pantalla", es decir, el eje "global" -Y. Evidentemente el eje X no cambia ya que ha sido el eje de rotación que hemos utilizado.

Ahora, teniendo aún seleccionado el cubo, volved al "MAXScript Listener" y volved a ejecutar la orden:

Código:
$.transform
¡Vaya!, como era de esperar la matriz ha cambiado para reflejar la nueva orientación de los ejes locales del cubo:

Código:
(matrix3 [1,0,0] [0,0,1] [0,-1,0] [0,0,0])
o visto de otra forma:

Código:
[1, 0,0]
[0, 0,1]
[0,-1,0]
[0, 0,0]
Como podéis ver, el vector "right" no ha variado mientras que el vector "up" ([0,0,1]) ahora apunta en la dirección del eje "global" Z y el vector look ([0,-1,0]) ahora apunta en la dirección del eje "global" -Y. ¡Lógico, si acabamos de hacer una rotación de 90º en el eje X!.

Ni que decir tiene que si movéis el cubo a otra posición y volvéis a mirar la matriz de transformación, observaréis cómo la fila cuarta de la matriz ha variado y refleja la nueva posición del cubo.

Bueno, creo que con esto ya es suficiente para que entendáis el código del script controller.

Script controller :: Follow the Path!

Sin más preámbulos, aquí tenéis el código. ¡Hala, a palo seco!.

Código:
epsilon = 0.0001

position = lengthInterp $Line01 NT
tangent = lengthTangent $Line01 NT

up = [0,0,1]

cosine = dot tangent up

if ( cosine > -epsilon and cosine < epsilon ) do up = [0,1,0]

right = normalize (cross tangent up)

up = cross tangent right

matrix3 right up tangent position
Como véis son muy pocas líneas de código. Ahora paso a explicar el código línea por línea:

Código:
epsilon = 0.0001
Aquí declaramos y asignamos la variable "epsilon". Normalmente, este tipo de variable con este valor, se utiliza para comparar valores en coma flotante. Me explico. Imaginad que queréis comparar una variable "num" en coma flotante con el valor 0, es decir:

Cita:
Escritos por Ejemplo
if num == 0.0 do (...)
En un mundo perfecto esto sería totalmente correcto, pero por desgracia, en este mundo, ésto no es correcto. ¿Qué problema hay?. El problema es que MAXScript tiene una precisión "simple". Esto quiere decir que si tenemos un número con muchos decimales, debido a esta falta de precisón, el número final que va a utilizar MAXScript, es una versión redondeada. Esto se agraba más cuando concatenamos operaciones complejas como productos escalares, productos vectoriales, multiplicación de matrices o divisiones ya que el resultado se va degenerando cada vez más. Así que si bien es posible que después de una operación donde intervienen números en coma flotante esperemos un resultado de 0, es más que probable que el resultado sea próximo a 0 pero no exáctamente 0. Por ejemplo 0.00001. ¡Es evidente que en este caso la comparación (0.0 == 0.00001) devolvería un rotundo "false"!. Así que la forma de solucionar esto es comparando nuestra variable "num" con un rango, en este caso el rango ]-epsilon, epsilon[:

Cita:
Escritos por Ejemplo
if num > -epsilon and num < epsilon do (...)
Esa comparación sí que devolvería "true". Espero haberme explicado...

Pasamos a la siguiente línea:

Código:
position = lengthInterp $Line01 NT
Bien, nosotros queremos que nuestro objeto siga una spline. Para ello necesitamos conocer la posición dentro de la spline en un espacio de tiempo determinado. Por suerte, MAXScript ofrece una función; "lengthInterp", que precisamente hace eso (de lo contrario nos hubiera tocado bregar con los diferentes tipos de interpolación existentes para las splines). A este método se le pasan dos parámetros (pueden ser hasta 4. Mirad la documentación de MAXScript para más información). El primero de ellos es una referencia a la spline en cuestión y el siguiente es el factor de interpolación. Es muy probable que muchos de vosotros os estéis preguntando qué es eso del factor de interpolación. Pues bien, digamos que es un porcentaje (normalizado, es decir, en vez de 0% a 100%, de 0 a 1) que nos indica en qué punto nos encontramos en la spline. Así, un factor de interpolación de 0 nos devolverá el punto inicial de la spline. Un valor de 1 nos devolverá el punto terminal de la spline y un valor de 0.5 nos devolverá el punto medio de la spline. Y así sucesivamente. Una vez explicado ésto, os digo qué es "NT". "NT" es una variable que viene predefinida en el script controller y nos indica el tiempo actual pero normalizado, es decir, una vez más, el tiempo en un rango [0,1]. Esto quiere decir que si tenemos una animación que va de 0 a 100 frames, si estamos en el frame 0, "NT" tendrá un valor de 0 (0/100). En el frame 50 tendrá un valor de 0.5 (50/100) y en el frame 100 un valor de 1 (100/100). Como podéis ver, esto es exactamente lo que queremos utilizar como factor de interpolación ya que en el frame 0 estaremos en el punto inicial de la spline mientras que en el 50 estaremos en la mitad de la spline y así sucesivamente.

Pasamos de línea:

Código:
tangent = lengthTangent $Line01 NT
Ok, nosotros queremos que la posición del objeto siga la spline, pero además, éste debe orientarse de forma que mire en la dirección de la trayectoria (de la spline). Para ello, necesitamos saber la tangente de la curva en un espacio de tiempo determinado. Pues bien, precisamente la función "lengthTangent" hace eso. El funcionamiento es similar a la función "lengthInterp" que he comentado anteriormente. Por si no os habéis percatado aún, éste vector tangente hará de vector "look" local a la hora de calcular la matriz de transformación. De esta forma conseguiremos que el objeto mire en la dirección de la curva. Ahora nos falta calcular los dos vectores restantes ("right" y "up") para poder calcular la matriz de transformación final.

Empezamos con el vector "up":

Código:
up = [0,0,1]
En esta línea escogemos un vector "up" temporal. Da igual el que escojamos pero a mí me pone éste . Siguiente línea:

Código:
cosine = dot tangent up
Aquí introducimos la operación producto escalar o producto punto (dot product). Esta operación es esencial en la programación 3D, ya sea en el apartado gráfico, físicas, etc. ¡Esencial!. El producto escalar tiene varios comportamiento dependiendo de los valores que se pasen para realizar la operación. En este caso os bastará con saber que el producto escalar de dos vectores normalizados (vector normalizado es un vector cuya longitud es 1) es igual al coseno del ángulo que forman ambos vectores. Concretamente nosotros estamos calculando el coseno del ángulo que forman los vectores "tangent" y "up". En próximas líneas os explicaré el por qué de calcular el coseno.

Código:
if ( cosine > -epsilon and cosine < epsilon ) do up = [0,1,0]
Bueno, aquí entra en juego la variable epsilon y el coseno que acabamos de calcular. Lo único que hace esta línea es compobar que el ángulo que forman el vector "tangent" y "up" sea distinto de 0 (o próximo a cero, recordad la charla sobre epsilon). Si resulta que no, que realmente el ángulo es próximo a 0, escogemos un nuevo valor para el vector "up" (tened en cuenta que éste es un vector "up" temporal, el "up" final lo calcularemos más adelante). Seguramente os estaréis preguntando por qué hago ésto. Pues bien, la explicación en la siguiente línea.

Código:
right = normalize (cross tangent up)
Oki doki. Nos disponemos a calcular el vector "right". Si os acordáis, en la explicación sobre las matrices de transformación dije que los vectores "right", "up" y "look" debían formar una base ortonormal, es decir, los 3 vectores debían formar ángulos rectos (90º) entre cada uno de ellos. Pues precisamente vamos a empezar a hacer eso, es decir, calcular nuestra base ortonormal. Por ahora ya tenemos el vector "look" (la tangente) y tenemos un vector "up" temporal. Así que es de lógica que si queremos tener una base ortonormal, el vector "right" debe ser perpendicular al plano formado por los vectores "tangent" y "up" (tened en cuenta que dos vectores definen un plano). Pues mirad por donde aquí entra en juego otra operación tan importante como el producto escalar; el producto vectorial (cross product). Precisamente la función "cross" de MAXScript lo que hace es calcular el vector perpendicular a los vectores que se le pasa como parámetros. En este caso estamos hallando el vector perpendicular a los vectores "tangent" y "up" que es justamente lo que andamos buscando. Además, si os fijáis, el vector emitido por el producto vectorial es normalizado con la función "normalize". Recordad lo que dije en el tema de las matrices de transformación, además de formar una base ortonormal, los vectores deben estar normalizados.

En este momento donde voy a explicar por qué hice la comprobación de que el ángulo formado por los vectores "tangent" y "up" no fuera 0. La explicación es bien sencilla. Imaginad que nuestro vector "tangent" hubiera valido [0,0,1] que es precisamente el primer valor que hemos asignado a "up". Ahora hacemos el producto vectorial de ambos vectores. Podéis comprobarlo vosotros mismo escribiendo y ejecutando la siguiente línea en el "MAXScript Listener":

Código:
cross [0,0,1] [0,0,1]
¡¡Horror, nos ha devuelto el vector [0,0,0] lo cual no es lo que queremos para nuestro vector "right"!!. Ahora escribid y ejecutad la línea:

Código:
cross [0,0,1] [0,1,0]
¡¡Bien, efectivamente el producto vectorial nos ha devuelto [-1,0,0] que es un vector perpendicular a [0,0,1] y [0,1,0]!!. Ahora entenderéis por qué he hecho la comprobación del ángulo y en el caso de que fuera 0 (o próximo a 0) por qué he variado el valor del vector "up".

Pasamos línea:

Código:
up = cross tangent right
Bueno, pues ya estamos llegando al final. Ya tenemos el vector "look" y el vector "right" pero sólo tenemos un vector "up" temporal que lo más probable es que no sea perpendicular a los vectores "look" y "right" (recordad, imprescindible para obtener una base ortonormal). Por eso tenemos que regenerar este vector. ¿Cómo?. Pues fácil, con otro producto vectorial. Sólo que en este caso, el producto vectorial será entre los vectores "look" y "right". De esta forma obtendremos nuestro vector "up" definitivo. Fijaos que en este caso no he normalizado el vector resultante ya que el producto vectorial de dos vectores normalizados da como resultado otro vector normalizado.

¡Y finalmente llegamos al final!:

Código:
matrix3 right up tangent position
Esto es muy sencillo. Estamos creando la matriz de transformación final de nuestro objeto. No será ninguna sorpresa. Sólo tenéis que comparar esta matriz con la matriz que os mostré en la explicación sobre matrices de transformación. La vuelvo a poner:

Código:
[right.x right.y right.z]
[up.x    up.y    up.z]
[look.x  look.y  look.z]
[pos.x   pos.y   pos.z]
la única diferencia es que en vez de llamar al vector "look", "look", lo hemos llamado "tangent" ya que es la tangente de la curva la que hemos utilizado como vector "look" para nuestro objeto. Pongo la matriz que hemos calculado para que lo veáis mejor:

Código:
[right.x     right.y     right.z]
[up.x        up.y        up.z]
[tangent.x   tangent.y   tangent.z]
[position.x  position.y  position.z]
Y esto es todo, con un poco de suerte todo esto tendrá sentido. Si no (y estáis interesados en el tema), os recomiendo que leáis el mensaje varias veces y poco a poco lo iréis entendiendo.

Adjunto una escena de prueba y este mismo mensaje en formato de texto. Para ver el script controller no tenéis más que seleccionar el cono, ir a la pestaña "Motion", y en la lista que hay, hacer click con el botón derecho del ratón sobre la única entrada que hay ("Transform: Transform Script") y seleccionar "Properties". De esta forma os aparecerá el cuadro de diálogo "Script Controller" donde podéis ver el código del controlador.

En fin, espero que ésto os haya resultado de utilidad.

Thanks for watching!.
Descargar Directa de Archivos ...
Tipo de Archivo: rar PathScriptController.rar (17.2 KB, 146 visitas)

Última edición por 3dpoder fecha: 08 oct 2008 a las 10:18.
HalfVector is offline   Responder Con Cita
Enlaces patrocinados
Antiguo 28 dic 2005   #2
ikerCLoN
p a l e t o
 
Avatar de ikerCLoN
 
Fecha de Ingreso: abril-2002
Ubicación: Granada
Mensajes: 13,649
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

Esta noche ya tengo qué estudiar ¡Muchas gracias por tu tiempo, y por el documento!
ikerCLoN is offline   Responder Con Cita
Antiguo 28 dic 2005   #3
Davescambra
Odio donde estoy
 
Avatar de Davescambra
 
Fecha de Ingreso: febrero-2005
Ubicación: Ontinyent, Valencia, España, Europa, La tierra...
Mensajes: 1,218
Thumbs up Re: [MAXScript Tutorial] - Matrices de transformación

Iker, creo que esto tendría que ser fijo ¿No crees?

Magnífico. Genial, aunque me queda mucho que aprender de max antes de meterme a maxscript, aunque nunca está de mas.

__________________
"Si tienes un sueño, es que existe el tiempo para realizarlo"
Proverbio Maya

esta ahora conectado.   Responder Con Cita
Antiguo 28 dic 2005   #4
HalfVector
H = E + L
 
Fecha de Ingreso: marzo-2004
Ubicación: Entre dos vectores
Mensajes: 877
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

Muchas gracias.

Ni que decir tiene que esto no es un tutorial básico de MAXScript sino que es un tema relativamente avanzado que tiene mucho de problema matemático. Lo digo para que no os desaniméis si no lo entendéis. MAXScript se puede utilizar para muchas cosas sin llegar a estos extremos.

Saludos.
HalfVector is offline   Responder Con Cita
Antiguo 28 dic 2005   #5
Santiago
Senior Member
 
Avatar de Santiago
 
Fecha de Ingreso: mayo-2004
Ubicación: Bs As / Argentina
Mensajes: 282
Contactar con Santiago a través de MSN
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

Espectacular!!! Muchas gracias!!
__________________
"nos queda la suerte, que si se balancea un poco, nos puede tocar" E. Bunbury
Santiago is offline   Responder Con Cita
Antiguo 28 dic 2005   #6
yoyes
Senior Member
 
Fecha de Ingreso: diciembre-2004
Ubicación: Mdrd
Mensajes: 704
Contactar con yoyes a través de MSN
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

No creo que me meta con el MaxScript, lo dejaremos por el momento. Pero le he estado echando un vistazo al tutorial que preparaste y te agradezco el enorme esfuerzo que hay detrás de éste.
Gracias y un saludo.
__________________
:: Ningun tonto se queja de serlo; no les debe de ir tan mal ::
yoyes is offline   Responder Con Cita
Antiguo 28 dic 2005   #7
Cesar Saez
just another monkey
 
Avatar de Cesar Saez
 
Fecha de Ingreso: marzo-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 2,938
Contactar con Cesar Saez a través de MSN
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

Gracias, lo voy a leer con calma a ver si logro seguirlo, para maxscript no hay mucho (aparte de la ayuda de max claro) y estos aportes son muy valiosos

Gracias

Edito: Acabo de darle una primera leída y enhorabuena!, eres un buen profesor, está tan bien explicado que hasta yo lo entiendo
__________________
Blog::Demo Reel '07
____________________
"Debes practicar hasta que lo dificil resulte fácil, luego practica hasta que lo fácil resulte hermoso"
Stephen Covey

Última edición por Cesar Saez fecha: 28 dic 2005 a las 16:44.
Cesar Saez is offline   Responder Con Cita
Antiguo 28 dic 2005   #8
Mars Attacks
Sexador de humanos
 
Avatar de Mars Attacks
 
Fecha de Ingreso: junio-2003
Ubicación: Castellón
Mensajes: 11,287
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

Podrías hacer cosillas para Blender, que para Max ya hay mucha gente haciendo
__________________
Yo
//
Portafolio | blog
Mars Attacks is offline   Responder Con Cita
Antiguo 28 dic 2005   #9
ikerCLoN
p a l e t o
 
Avatar de ikerCLoN
 
Fecha de Ingreso: abril-2002
Ubicación: Granada
Mensajes: 13,649
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

Es que hacerlo en MAX es más productivo y satisfactorio Mars, ¿por qué no te pones tú también con MAXScript?
ikerCLoN is offline   Responder Con Cita
Antiguo 28 dic 2005   #10
HalfVector
H = E + L
 
Fecha de Ingreso: marzo-2004
Ubicación: Entre dos vectores
Mensajes: 877
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

Cita:
Escritos por ikerCLoN
Es que hacerlo en MAX es más productivo y satisfactorio Mars, ¿por qué no te pones tú también con MAXScript?


Cita:
Escritos por Mars Attacks
Podrías hacer cosillas para Blender, que para Max ya hay mucha gente haciendo
Pues si nadie se decide a crear un exporter para Blender para el motor que estamos haciendo, tendré que crearlo yo mismo. Aunque la verdad es que da pereza tener que aprender un nuevo lenguaje (python) y una nueva API (la que exponga Blender a través de python). Y más que serán si decido hacer exporters para Maya y XSI.

Pero en fín, quién sabe, a lo mejor empiezo a desarrollar en Blender y resulta que me gusta.
HalfVector is offline   Responder Con Cita
Antiguo 28 dic 2005   #11
Fiz3d
El cabreador
 
Fecha de Ingreso: octubre-2002
Mensajes: 4,435
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

Muy bueno si señor, se agradece un monton...y muy buena explicación.

Cita:
Ni que decir tiene que esto no es un tutorial básico de MAXScript sino que es un tema relativamente avanzado que tiene mucho de problema matemático. Lo digo para que no os desaniméis si no lo entendéis. MAXScript se puede utilizar para muchas cosas sin llegar a estos extremos.
Menos mal que has puesto esto...

Saluditos.
__________________

Fiz3d is offline   Responder Con Cita
Antiguo 29 dic 2005   #12
Mars Attacks
Sexador de humanos
 
Avatar de Mars Attacks
 
Fecha de Ingreso: junio-2003
Ubicación: Castellón
Mensajes: 11,287
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

Cuando aprendas python, te preguntarás por qué llaman "lenguajes de programación" a todas esas otras cosas
__________________
Yo
//
Portafolio | blog
Mars Attacks is offline   Responder Con Cita
Antiguo 30 dic 2005   #13
mariano2cv
Senior Member
 
Avatar de mariano2cv
 
Fecha de Ingreso: abril-2005
Mensajes: 179
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

hola quisiera saber como hacer para que en max script si yo doy una serie de ordenes a objetos de una escena, por ejm que el box "a" se mueva, el box "b" se le asigne un material y el box "c" se le asigne un uvw map en el caso que en la escena no este el box "a" quiero que el script siga con las otras ordenes que le habia asignado como hago? gracias
mariano2cv is offline   Responder Con Cita
Antiguo 30 dic 2005   #14
Klópes
12 meses, 12 pagas
 
Avatar de Klópes
 
Fecha de Ingreso: julio-2005
Ubicación: Bajo el sol monegrino
Mensajes: 5,087
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

Ah, no, nada. Sólo quería salir en este hilo.
__________________
La clave es coger la vida por los cojones, apurar cada día como si fuera el último.

Hubert Farnsworth
esta ahora conectado.   Responder Con Cita
Antiguo 30 dic 2005   #15
promineo
reBorn
 
Avatar de promineo
 
Fecha de Ingreso: diciembre-2004
Ubicación: Tenerife
Mensajes: 2,949
Predeterminado Re: [MAXScript Tutorial] - Matrices de transformación

tio Half te quiero, te sales. snif snif
__________________
PromineoStudios
Cocoe

Sin riesgos en la lucha, no hay gloria en la victoria
promineo is offline   Responder Con Cita