Hola. La verdad es que no sé si esto está bien aquí, en el foro de modelado, pero creo que es a lo que más se acerca, en parte, al motivo de este mensaje (a falta de un foro sobre Maxscript).
El caso es que varios usuarios me han ido pidiendo a lo largo del tiempo que llevo en estos foros que fuera haciendo cosas en Maxscript para que así la gente pudiera ir aprendiendo este útil lenguaje para max. Lo cierto es que podría crear un tutorial desde cero sobre Maxscript, pero siendo sinceros, eso es algo bastante pesado y por ahora no tengo intención de hacerlo.
En lugar de eso, he pensado que estaría bien que de vez en cuando crease alguna utilidad que a la vez de útil (por eso se les llama utilidades, ¿no?), sirva para que la gente vaya tomando contacto con Maxscript. Por ahora ya he sacado unos cuantos scripts, los dos últimos los he sacado en estos dos últimos días y ambos están relacionados con el tema de script controllers.
Así que está tarde, leyendo los foros de CGtalk, me he encontrado con un usuario que necesitaba que sus árboles (que eran copias exactas) tuvieran una mayor variación para que no resultase la cosa tan monótona. Así que se me ha ocurrido que una forma de crear variaciones en los árboles sería (siempre y cuando el árbol tuviera la suficiente densidad de malla) aplicar un modificador Path Deform a cada árbol con valores escogidos aleatoriamente. De forma que me he puesto manos a la obra y he creado una herramienta que recoge la lista de objetos a modificar y otra lista de los shapes que se utilizaran para el Path Deform. También se puede especificar un rango de valores para algunos de los parámetros del Path Deform. De esos rangos de valores, posteriormente se escogera uno aleatoriamente. Lo mismo ocurre con los shapes, aleatoriamente se irán asignando los diferentes shapes especificados.
El código está bien comentado para que podáis entender lo que hace cada línea. Eso sí, me he ahorrado algunos mecanismos de detección de errores para no enmarañar el código. Por ejemplo, habría que comprobar que el valor mínimo no sobrepase el máximo, etc.
En fin, como una imagen vale más que mil palabras, junto con el código de la utilidad he adjuntado un video (como viene siendo habitual) mostrando el funcionamiento de esta herramienta.
Espero que os guste.