Vai al contenuto
uncle pritt

Script E Architettura

Recommended Posts

ciao a tutti.

grazie al laboratorio di composizione architettonica mi sto intrippando di script. parto da livello zero punto uno, al liceo avevo fatto qualcosa con turbopascal, ma niente di serio. quindi mi piacerebbe applicare gli script alla generazione di forme architettoniche, composizione di moduli predefiniti per realizzare edifici e trip del genere.

sono arrivato alla lezione 3 dei tut e ho guardato con più interesse la tesi di phillix. ora riesco a creare box e primitive varie nello spazio più o meno come intendo, usando la funzione random.

ora. il passo successivo è come creare questi oggetti senza che si intersechino tra loro

mi creo 6 primitive con

for i = 1 to 6 do 

(

  box pos:[(random -20 20),(random -20 20),(random -20 20)] length: 25 width: 25 height: 25

)
e vanno a caso nello spazio, visto stamattina su un post. se volessi moltiplicare un modulo prestabilito? io mi modello una stanza tipo o un oggetto selezionato inizierei con
select $modulo*

for i = 1 to 6 do 

(

 ...

)

ipotizzo una funzione del tipo "if...then...else" per la non sovrapposizione dell'oggetto. per la moltiplicazione del modulo non ne ho idea.

una mano? uno spunto?

vorrei postare poi i vari progressi che faccio con gli script in questo thread, andando di pari passo con l'esame che preparo analizzando le relazioni script architettura.

ciao a tutti a presto :hello: :hello:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Caspita ma spazi in tutti i campi!!! Se vai avanti così prima o poi ti farai un programma tutto tuo!! Ora torno su a lezione a vedere se è arrivato il prof cha fino ad ora ha accumulato due ore di ritardo!!! In bocca al lupo e a risentirci presto.

P.s. aspetto ancora con ansia i tuoi commenti sul mio primo lavoro "finito" . Ora scappo veramente!!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

figoso il video della tesi!! non l'avevo visto. vorrei anch'io arrivare a creare una cosa del genere, solo che mi piacerebbe farlo sulle superfici, scriptando i vertici di quadpatch o superfici nurbs.

devo dire che snobbavo un po' lo script :rolleyes: :rolleyes: . da ieri mi sto intrippando e mi sto applicando. mi sono creato i primi scriptini, tipo creare un cubo con impostazioni predefinite e centrare la vista sul cubo dopo averlo creato

rimane il dubbio su come creare moduli che non si sovrappongano

l'obiettivo di oggi è ricreare la funzione array

ciaoooo

edit:

a cosa ti riferisci ? smile.gif

a questi meravigliosi video introduttivi


Modificato da uncle pritt

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

NITROSAGGIO è un gruppo tirato su dal Prof. Antonino Saggio, profeta e evangelizzatore italiano della IT Architecture (information technology).

Insegna a Roma, alla Ludovico Quaroni, e ho avuto la fortuna di seguirne il corso di Progettazione Architettonica Assistita, ormai 3-4 anni fa....grossa esperienza!

bel personaggio e bel cervello...uno dei pochi nel grigiume totale che riusciva a farti vedere abbastanza oltre il naso e oltre i mattoncini di laterizio,facendoti capire che stiamo nel 21esimo secolo.

Questo è il suo sito.

Quello con chioma fluente e barba è lui...un "filo" narcisista e oratore divertente, se vi capita ascoltatelo

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

su esempio del tutorial di riO ho fatto un piccolo script che mi cambia i materiali del mat editor in materiali vray

poi gli ho detto di applicarmi il primo materiale agli oggetti selezionati

in mezzo gli voglio dire di cambiare i nomi dei materiali in vraymtl1, vraymtl2...etc etc...

così ho scritto questo

numTotaleMateriali = 24

for i = 1 to numTotaleMateriali do

(

mat = getMeditMaterial i

meditMaterials[i] = VRayMtl ()

)

for i = 1 to numTotaleMateriali do

(

meditMaterials[i].name = ("VRayMtl" + i)

)

select geometry

for obj in selection do

(

obj.material = meditMaterials[1]

)

la parte meditMaterials.name = ("VRayMtl" + i) mi dice -- Unable to convert: 1 to type: String

non so come fare. ho tirato fuori tutto dal macrorecorder, dove se cambio nome al matriale manualmente mi viene scritta la stessa stringa con al posto della prima i il numero identificativo del materiale e dopo l'uguale solo "vraymtl"

thanks...

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

la riga

meditMaterials[i].name = ("VRayMtl" + i)
va cambiata in
meditMaterials[i].name = ("VRayMtl" + i as string)

in questa maniera il valore di i (un numero) viene trasformato in stringa di testo e diviene compatibile con il valore accettato da meditMaterials.name

c'è differenza quando una variabile restituisce 1 anzichè "1"

nel primo caso è un numero, nel secondo è un testo, ovvero una string

quindi 1+1 = 2 mentre "1" + "1" = "11" dove "11" è sempre un testo e non un numero


Modificato da philix

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

uhhhhhh

questo è importante. non ero riuscito a capire appunto come trasformare un valore numerico in testo, o una cosa del genere. avevo provato a mettere as string, ma fuori della parentesi, cosa del tutto inutile

grazie.

ho imparato qualcosa di nuovo anche oggi

ciaooooo

edit: funzionaaaaaa!!!!!! :w00t: :w00t: :w00t: grazieee


Modificato da uncle pritt

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

allora, vedendo uno script in rete per l'array, modificandolo e semplificandolo sono giunto a questo

obj = $

dim_x = abs(obj.min.x - obj.max.x)

num = getkbvalue prompt:"ripetizioni"

vallo = getkbvalue prompt:"intervallo"

for i = 0 to num do

(

s = copy obj

s.pos = [(dim_x * i) + vallo,25,0]

)
ora, mi aspettavo qualcosa di diverso. lo scipt includeva la creazione di array su righe e colonne. io l'ho fatto solo su righe per semplificare. in più aggiungeva una rotazione ma ho individuato le stringhe per quelle istruzioni e le ho eliminate. la forma dello script sopra riportato l'ho capita. il problemo rimane in questo punto
s = copy obj

s.pos = [(dim_x * i) + vallo,25,0]

qui dico che s saranno le copie dell'oggetto selezionato e la posizione delle copie è data dall'espressione [(dim_x * i) + vallo,25,0], dove teoricamente in x mi prende le dimensioni dell'oggetto in valore assoluto, lo moltiplica per i che incrementa e alla fine gli aggiunge il valore "vallo" che ho definito prima.

il problema è che mi crea una serie di cubi tutti attaccati l'uno all'altro, come se facesse solo "dim_x *i" ed il "+ vallo" non lo considera

porqueeeee????!!!!!!! :wallbash: :wallbash: :wallbash:

ciaoooo

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ho provato a fare delle prove numeriche.

se metto

a = 3

b = 6

c = a+b

for i = 0 to 5 do

  (

	c * i

  )

dovrebbe fare: 3+6=9--> 9*0=0; 9*1=9; 9*2=18; 9*3=27...fino a 45 no?

invece non lo fa. mi scrive nel listener 3 6 9 OK OK

penso che sia qui l'errore dello script precedente

come dovrei fare? dovrebbe essere una semplice operazione

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

allora ho risolto il primo quesito trasformando la linea in

s.pos = [(i * vallo), 25,0]

continuo a non spiegarmi il motivo del perchè non funzioni il ciclo for del secondo esempio, visto che al primo script si poteva mettere anche una formula del tipo riportato al post precedente...

magari me lo sapete dire voi...

per oggi basta và...

ciaoooo

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

prova così:

a = 3

b = 6

c = a+b

for i = 0 to 5 do

  (

	format"risultato: % \n"(c * i)

  )

la differenza dallo script precedente in cui andava l'espressione in quel modo è che stavolta è all'interno di un blocco di codice(il ciclo for) e quindi il risultato non va al listener, col format invece lo scrivi forzatamente(ti consiglio di usare sempre questo così hai più controllo e ci sono meno problemi).

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

uhhhh grazie provo subito.

oggi pasticciando un po' mi ha dato alcuni problemi lo scripting: cercando di spostare un cubo con semplici codici, guardati dalla guida in linea, o ruotarlo, dando le istruzioni dal listener, non funzionava; per il ".pos" mi dava sempre come undefined nonostante mettessi il nome dell'oggetto prima del punto, facendo tutte le prove con "=" o ":" prima delle parentesi quadre, oppure non mettendolo affatto. la stessa cosa con "eulerangles <x,y,z>. in più se cambiavo totalmente script, alle volte mi diceva che alcuni parametri erano invalidi per eulerangles anche se non era presente nè nel listener che nella finestra dello script; come se mi tenesse caricata la funzione in una qualche memoria.

ciaoooo

ps: oggi ho modificato il codice dell'array di ieri sera aggiungendo le ripetizioni anche lungo z e dicendogli di mettere lunghezze random per le ripetizioni; mi sta intrippando sempre più

ciaooo

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.

×