Ahí van unas funciones que, aplican distintas transformaciones aleatoriamente:
Código:
Fn randomtranslation deltax deltay deltaz = (t- Recorremos todos los objetos seleccionados tfor obj in selection do (t - El desplazamiento inicial será de 0.0 local dispx = 0.0, dispy = 0.0, dispz = 0.0 t - Determinamos aleatoriamente el desplazamiento para cada eje if deltax.= 0.0 do dispx = random -deltax deltax if deltay.= 0.0 do dispy = random -deltay deltay if deltaz.= 0.0 do dispz = random -deltaz deltaz t - Aplicamos el desplazamiento move obj [dispx, dispy, dispz] t)).
Fn randomrotation deltax deltay deltaz = (t- Recorremos todos los objetos seleccionados tfor obj in selection do (t - El ángulo de rotación inicial será de 0.0 local anglex = 0.0, angley = 0.0, anglez = 0.0 t - Determinamos aleatoriamente el ángulo para cada eje if deltax.= 0.0 do anglex = random -deltax deltax if deltay.= 0.0 do angley = random -deltay deltay if deltaz.= 0.0 do anglez = random -deltaz deltaz t - Aplicamos la rotación rotate obj (eulerangles anglex angley anglez) t)).
Fn randomscale deltax deltay deltaz = (t- Recorremos todos los objetos seleccionados tfor obj in selection do (t - La escala inicial será 1.0 local scalex = 1.0, scaley = 1.0, scalez = 1.0 t - Determinamos aleatoriamente el factor de escala if deltax.= 1.0 do scalex = random -deltax deltax if deltay.= 1.0 do scaley = random -deltay deltay if deltaz.= 1.0 do scalez = random -deltaz deltaz t - Aplicamos la escala scale obj [1.0 + scalex, 1.0 + scaley, 1.0 + scalez] t).
)
Ejemplo de uso:
Código:
- Aplicamos una rotación aleatoria de 10º en x y z.
Randomrotation 10.0 0.0 10.0.
Aplicamos una traslación aleatoria de 2.0 en y, y 3.0 en z.
Randomtranslation 0.0 2.0 3.0.
Aplicamos una escala aleatoria en x, y, y z.
Randomscale 0.1 0.2 0.3
Evidentemente quedaría mejor con una UI, pero es totalmente funcional. Saludos.
Edito: he modificado una cosa en la función randomscale.