Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
DiegoPennati

Script di randomizzazione

Recommended Posts

Buonasera a tutti,

condivido uno script che ho fatto stamattina, serve a spostare/ruotare/scalare la selezione di oggetti in maniera casuale, dando solo i range minimo e massimo dell'operazione.

Se trovate bug o malfunzionamenti ditemelo che correggo,

Ciao!!

Randomizer.rar

Share this post


Link to post
Share on other sites

Ciao Diego,

grazie per la condivisione.

La tua discussione precedente era stata spostate nella sezione "Programmazione e script" forse non la trovavi più e ne hai aperta un'altra. Cancello la precedente e sposto questa


Edited by mOcrAm

Share this post


Link to post
Share on other sites

Ciao,

questo è un messaggio generato automaticamente.

Se hai ricevuto questo messaggio è perché la tua discussione è stata spostata e messa nella sezione più appropriata.

Quando crei una discussione ti preghiamo di far attenzione ad inserirla nella sezione corretta in modo che sia più facile per tutti consultare il forum.

grazie per la collaborazione

lo staff di Treddi.com

Share this post


Link to post
Share on other sites

Ciao Diego,

grazie per la condivisione.

La tua discussione precedente era stata spostate nella sezione "Programmazione e script" forse non la trovavi più e ne hai aperta un'altra. Cancello la precedente e sposto questa

Si... siccome l'ho pubblicato di fretta, pensavo mi si fosse impallato il pc durante l'invio della nuova discussione, e l'ho riaperta... sorry!

Share this post


Link to post
Share on other sites

Ciao Diego,

un lavoro pregevole, complimenti.

L'unica cosa che riterrei importante e' l'inserimento di un tasto reset che riporti le geometrie allo stato iniziale, ho notato infatti che non si riesce ad annullare le operazioni effettuate da script col ctrl+z.

Share this post


Link to post
Share on other sites

Ciao Diego,

un lavoro pregevole, complimenti.

L'unica cosa che riterrei importante e' l'inserimento di un tasto reset che riporti le geometrie allo stato iniziale, ho notato infatti che non si riesce ad annullare le operazioni effettuate da script col ctrl+z.

già, hai ragione! dovrei fargli salvare le posizioni e gli angoli di rotazione per ogni oggetto al momento dell'avvio dello script e col reset riportarli li e impostare i fattori di scala tutti al 100%...

quando ho un attimo ci provo, e se ci riesco aggiorno!

ciao!

Share this post


Link to post
Share on other sites
Guest

Scarico e provo appena possibile, per ora grazie... (vediamo se è una valida alternativa ad altri ;) )

Mat

:hello:

Share this post


Link to post
Share on other sites
Guest

Prima impressione, molto da elaborare, per prima cosa puoi provare ad inserire degli spinner invece di dover inserire gli input manualmente.

Matteo

:hello:

Share this post


Link to post
Share on other sites

già, hai ragione! dovrei fargli salvare le posizioni e gli angoli di rotazione per ogni oggetto al momento dell'avvio dello script e col reset riportarli li e impostare i fattori di scala tutti al 100%...

quando ho un attimo ci provo, e se ci riesco aggiorno!

ciao!

esattamente quello che intendevo, poi sarebbe perfetto, semplice ed efficace.

Share this post


Link to post
Share on other sites

Eccoti altre idee

Se vuoi metti gli spinner e vuoi fare una cosa "professionale" e "figosa" fai in modo che aumentando il minimo, il valore massimo non sia mai inferiore e stessa cosa diminuendo il valore del massimo il minimo resti sempre sotto.

Anche un bottone per impostare a zero i campi del move, uno per quelli dello scale e uno per quelli del rotate non sarebbe male

Share this post


Link to post
Share on other sites
Guest

Io te la butto li come suggerimento (per quel che mi ricorso di MaxScript)....

Puoi dividere un po' per gruppi e rollout... oltre ad inserire un "about" che non fa mai male

________________________________________________________________________________________

parameters params rollout: nome.rollout

(

nome.parametro type:#float ui:nome.parametro ---x

nome.parametro type:#float ui:nome.parametro ---y

nome.parametro type:#float ui:nome.parametro ---z

)

rollout nome.rollout "nome.rollout"

(

local range=[-10000,10000,0] ----inserisci il range senza doverlo ripetere sempre

group "nome.gruppo"

(

spinner nome.parametro "nome.spinner" range:range ---X

spinner nome.parametro "nome.spinner" range:range ---y

spinner nome.parametro "nome.spinner" range:range ---z

)

rollout nome.rollout "nome.rollout"

group "RESET Position"

(

button resetALL "RESET"

)

on resetALL pressed do

(

nome.parametro=0

nome.parametro=0

nome.parametro=0

)

)

________________________________________________________________________________________

Share this post


Link to post
Share on other sites

Ciao Diego,

premetto che non sono un vero programmatore e questo e' il mio primo tentativo su maxscript, quindi perdona le eventuali ingenuità, ho cercato di risolvere il problema del tasto Reset risolvendolo come segue...

on btn1 pressed do

(

------------------------------ LETTURA POSIZIONI INIZIALI-----------------------------

global movepos = #()

selezione = selection as array

noggetti = selezione.count + 1

i = 1

while i < noggetti do

(

select selezione

movepos=selezione.pos

i += 1

)

select selezione

------------------------------ LETTURA DEI DATI DA INTERFACCIA------------------------------

...continua

------------------------------ TASTO RIPOSIZIONA------------------------------

on btn3 pressed do

(

selezione = selection as array

noggetti = selezione.count + 1

i = 1

while i < noggetti do

(

select selezione

selezione.pos=movepos

i += 1

)

select selezione

)

......

spero possa esserti di aiuto,

ciao

Share this post


Link to post
Share on other sites

per il riposizionamento della rotazione il ragionamento temo sia un po' più complesso

per la rotazione memorizzerei il .rotate facendo lo stesso ragionamento del .pos

Share this post


Link to post
Share on other sites

la sintassi dovrebbe essere del tipo:

.rotation=(quat 0 0 0 1)

ma non riesco a creare l'array che lo contiene, perchè non riconosce il tipo point3 nell'array

Share this post


Link to post
Share on other sites

Cosi' mi sembra funzioni anche se potrebbe dare dei problemi se non si resetta il pivot a tutte le geometrie selezionate.

on btn1 pressed do

(

------------------------------ LETTURA POSIZIONI INIZIALI-----------------------------

global movepos = #()

global rotpos = #()

global scalepos = #()

selezione = selection as array

noggetti = selezione.count + 1

i = 1

while i < noggetti do

(

select selezione

movepos=selezione.pos

rotpos=selezione.rotation

scalepos=selezione.scale

i += 1

)

select selezione

etc....

on btn3 pressed do

(

------------------------------ RIPOSIZIONA------------------------------

selezione = selection as array

noggetti = selezione.count + 1

i = 1

while i < noggetti do

(

select selezione

selezione.rotation=rotpos

selezione.pos=movepos

selezione.scale=scalepos

i += 1

)

select selezione

Share this post


Link to post
Share on other sites

i dati ottenuti premendo il primo bottone li recupera se chiamati dal secondo bottone?

il primo tasto prende i dati degli oggetti selezionati poi effettua la modifica degli oggetti, il tasto RIPOSIZIONA legge quei dati per riportare gli oggetti alla posizione precedente alla modifica.

Il problema e' che se clicki piu' volte il primo tasto, il tasto RIPOSIZIONA ti riporta gli oggetti indietro di una sola modifica.

Share this post


Link to post
Share on other sites

non se creo due funzioni, la prima che legge lo stato iniziale la prima volta che viene premuto il tasto randomize, e la seconda che legge lo stato ogni volta che il tasto viene premuto. salvando in due array diversi in teoria è possibile creare sia l'undo che il reset.

sbaglio qualcosa?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...
Aspetta! x

Ti piacerebbe rimanere sempre aggiornato sulle ultime novità nel campo della computer grafica?

Iscrivendoti alla Newsletter riceverai subito una mail con le indicazioni per scaricare gratuitamente:

  1. Le immagini HDRI presenti su HDRI pro
  2. Una sequenza di 300 immagini HDRI generata da Luca Deriu tramite il programma Real HDR