Sugerencias maxscript

rulflink - 30/09/2008 23:42
Hola buenas, estoy empezando con Maxscript y tengo muchas dudas, entre otras esta: Como puedo hacer que si tengo dos objetos en el viewport, por ejemplo, una esfera y una caja cuando seleccione la esfera la caja sea de color azul y cuando no esté seleccionada sea verde?
Lo he intentado con esto:
If $sphere01.isselected == true then.
$box01.wirecolor = color 8 8 136).

If $sphere01.isselected == false then.
$box01.wirecolor = color 6 135 6).

Pero solo me funciona cuando hago el evaluate all, yo querría que funcionara siempre. Gracias por las posibles respuestas.
ikerCLoN - 30/09/2008 23:49
Si quieres que funcione siempre tienes que hacer un call-back. Échale un ojo a la ayuda, porque podrías construir un script que hiciera algo como:
[code]when select $ changes obj.

If $sphere01.isselected == true then.
$box01.wirecolor = color 8 8 136).

If $sphere01.isselected == false then.
$box01.wirecolor = color 6 135 6).
)[/code]
rulflink - 01/10/2008 18:22
Muchas gracias IkerClon, eso me ha funcionado, pero no en lo que quería aplicarlo, a ver si me explico. Estoy siguiendo los videos de rigging de Paul neale.

En entonces en una introducción que hace he visto que con la Stretchy Leg cuando empieza a estirarse, el modelo en baja(en la pierna) cambia de color para avisar que está más largo de lo natural y estaba intentando hacerlo.

Lo que he hecho es esto:
When select $rectangle01 change obj do.
(Tdis= distance $point01 $bone08 tif dis<1830 then t(t $bone03.wirecolor = color 154 154 229 t) telse t(t $bone03.wirecolor = color 176 26 26 t)).

Rectangle01-es el máster de la pierna.

Dis es el valor que se usa para el float expresión distance $[1] $[2].

El problema viene en que solo me funciona cuando deselecciono el rectangle(solo calcula que color debe tener cuando no está seleccionado) y yo quisiera que funcionara mientras esta seleccionado. Muchas gracias por adelantado.

He probado en vez de when - while, pero tampoco me funciona.
ikerCLoN - 01/10/2008 18:34
¿Qué sentido tiene saber si un objeto esta escalado sólo cuando seleccione el objeto rectangle01? Un animador quisiera tener esa información disponible todo el tiempo, ¿no crees?
rulflink - 01/10/2008 20:20
Si, yo quiero eso, no solo cuando esta seleccionado rectangle01, lo que pasa es que cuando estoy moviendo rectangle01 me gustaría que en el momento ha empezado a hacer el stretcht me lo notifique cambiando el color y no cuando ya coloco la posición y deseleccione rectangle01, que es lo que me hace ese script, gracias por tu atención.
rulflink - 01/10/2008 20:23
Claro a lo que te refieres es que no está bien esto ¿no? When select $rectangle01 change obj do. Debería ser otra cosa ¿no?
ikerCLoN - 02/10/2008 01:23
Creo que te sería más sencillo si hicieras lo siguiente:
- crea un expose transform, y haz que mida la distancia entre los dos puntos que quieres. Luego, usas la propiedad distance de ese objeto en el canal diffuse de un material que tengas aplicado al objeto que quieres cambiar de color, con una condición if distance > blah then color1 else color2.

Esta solución implica usar un material y usar un objeto exposetm que te mida las distancias, pero vamos, se crea todo el sistema en un por favor. Aquí te dejo esta muestra en max2009 (no funcionara en una versión anterior de max). Para poder ver el controlador del canal difuso del material, usa el Track View.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #82575

rulflink - 02/10/2008 18:35
Me rindo ante tus pies, ole ole ole, muchas gracias.
rulflink - 02/10/2008 20:00
Por si le sirve a alguien, el material aplicarlo en el modelo en baja, ya que, cuando lo he aplicado sobre el esqueleto montado, no me funcionaba la pierna, no sé si tendrá algo que ver, pero es lo me ha pasadao, otra vez gracias IkerClon.
ikerCLoN - 02/10/2008 20:05
Nada, hombre, que para eso estamos. Otro día te paso mi número de cuenta y me metes unos dineros.