2 Archivos adjunto(s)
Disperser script for xsi ver 1-5-0
Hola muchachos los pocos que os sigueis este topic. A ver os cuento un poco, en mí afán por aprender scripting en XSI, de primera mano con vbs, me he decepcionado y con toda la razón, quizás para aprender el usar vbs tiene su gracia, pero luego cuando exigues velocidad y acceso más profundo se queda muy corto, por lo que el script disperser se quedará en esta versión 1.5.0, para poder olvidar el lento vbs y meterme de lleno en lo que es el desarrollo con C++, y definir de una ves dll, y empaquetar addons.
Ahora que hay de nuevo en disperser 1.5.0? Bien, os cuento:
* primero lo malo que fue reparado el bug de generación de objetos solo en el centro del mundo, escena, etc fue fixeado ahora lo genera en las coordenadas globales de cualquier mapa de dispersión.
Los features:
*- Ahora podemos pikar más de un objeto a dispersar previa espesificación en la cantidad de objetos que queremos aleatoriamente, 1, 5, 10 o x objetos. (gracias a él comentario de Caronte).
*- El mapa de dispersión como lo llamo donde se colocaran los objetos, puede ser cualquier objeto polygonal.
*- Diferentes opciones de dispersión.
*- Randomize de rotaciones y escalado.
*- Randomize de wire color.
*- Barra de progreso de los procesos realizados.
El menú de opciones presenta 4 tabs que son:
Dispers, randomize rotation, randomize scale, wire color.
Dispers:
*- Disper name -> nombre que se desea para los objetos dispersos.
*- Disper number -> cantidad de objetos que se desea (actualmente está limitado al número de points que contiene la malla solamente).
*- Disperse by -> disperse by ofrece cuatro caminos de dispersión los cuales son:
Points: por cada punto de la malla.
Edges: por cada Edge de la malla.
Edges by curve system: un medio que me pensé alterno que es a través de la creación de nulls dispersos en una curva creada a partir de todos los Edges de la malla y luego cada objeto es aplicado un constraint de cada null para ubicarlos (la curva y los nulls son eliminados al terminar el proceso).
Polygons: por cada polígono de la malla.
*-method -> ofrece dos métodos de dispersión por duplicado y por clonado.
*-type -> by cluster significa la creación de un clúster ya sea por punto Edge o polígono, y simple (pos) por simple valores de su ubicación en el espacio (solo aplicable para points).
*-constrains -> permite definir constrains de posición y orientación del objeto padre.
*- Subdivisión -> (solo aplicable para disperse by (Edges by curve system)), esto significa que si utilizamos esta forma de dispersión sobre una malla que está suavizada la creación de la curva se adactara al suavizado de la malla y de esta forma la ubicación es más precisa.
Randomize rotation:
*-rotation by cluster -> permite añadir un valor de roll a los clusters por un valor aleatorio generado de una entrada mínima y máxima.
*-rotation by simple (pos-root) -> permite añadir valores de rotación mínimos y máximos para cada eje, el valor final se genera de un random entre el mínimo y el máximo escojido.
Randomize scale:
*- Scale -> aquí definimos igualmente el random para el escalado de cada uno de los objetos a dispersar, por defecto este siempre es uno por lo que si el objeto a dispersar ha sido escalado a un valor negativo y mayor debe ser colocado este valor dentro del valor mínimo o máximo del scale para tomar esa referencia, si no se desea randomizado en el escalado simplemente se pone en ambos campos el mismo valor actual de escalado del objeto.
Wire color.
*- Randomize wire colors -> simplemente si así se desea genera un color aleatorio para el wire de cada objeto disperso.
Bueno a priori esto es lo que he avanzado, el script no está libre de fallos así que, cualquier bug dejenmelo saber, Rasheck el weight map queda para la versión de C++ quiero hacerlo en forma de plugin con muchas otras opciones he ideas que se me han venido mientras lo hacia.
La idea era aprender y compartir con ustedes y eso lo he logrado, he de admitir que el script se pone lento dado que ya maneja muchas opciones y crea bastante cosas en el proceso, pero que tanto se le puede pedir a un lenguaje de script? Por eso voy a por C++.
Aquí os dejo una imagen con unas muestras.
-- IMÁGENES ADJUNTAS --
https://foro3d.com/attachment.php?attachmentid=14014
https://foro3d.com/attachment.php?attachmentid=14015