Vai al contenuto
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

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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


Modificato da mOcrAm

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Ospite

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

Mat

:hello:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Ospite

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

Matteo

:hello:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Ospite

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

)

)

________________________________________________________________________________________

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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

sto facendo il tasto "undo" che va indietro di uno, e il tasto "Reset" che torna all'inizio!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

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?

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×