Vai al contenuto
yogurt

Maxscript per fare ordine in libreria

Recommended Posts

ciao a tutti,

ovrrei condividere con voi (condividiere nel senso che avrò sicuramente bisogno di una mano) uno script che sto facendo per risolvermi un problema: 

ho 10 anni di file di modelli scaricati e mai archiviati . per darvi un'idea dell'entità della cosa sono più di 15000 file.. ovvio che non posso farlo a mano e visto che sono cose comprate non posso neanche buttare via tutto.

Così sto cercando di rendere aturmatico questo processo. 

in sostanza devo :

1) arire il file

2) ragruppare le texture in una cartella _maps

3) collegare le texture a questa cartella 

4) fare una preview e salvarla con il nome del file 

5) salvare il tutto

 

sto procedendo così, premeotto che non so usare e non capisco maxscript:

 

--open file

max file open

--unhie all
max unhide all

--Select all
actionMan.executeAction 0 "40021" 
--group 
actionMan.executeAction 0 "40140"

-- assegna al gruppo il nome del file
a = $Group001

select a
oldName = "Group001"
newName =maxFileName
 
for o in $ where o.name == oldName do o.name = newName

-- posiziona pivot sulla base
$.pivot = [($.max.x+$.min.x)/2, ($.max.y+$.min.y)/2, $.min.z]

-- posiziona gruppo sullo 000
select a
$.pos = [0,0,0]

--crea box grande come gruppo
--chiama box temp
--rendi non renderizzabile il cubo
-- crea livello temp
--crea camera con nome temp 
--seleziona camera
--posiziona camera su primo vertice del cubo
--seleziona target
--posiziona target su 000
--seleziona camera 
--imposta camera (zoom out -0,5 fstop...)
--inserisci dome bianca chiamata temp
--inserici luce laterale
--relink bitmap
--collect texture e file max 
--impostare preset render
--render 800x800
--salvare immagine con nome file
--cancellare titti i file chiamati temp
--salvare file

quindi se avete suggerimenti sono molto più che ben accetti

 

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Premetto che non so scriptare , ma se riesci a fare una cosa del genere penso che saremo in tanti a volerti fare una statua nel piazzale del Campus Party!!! Seguo in attesa che arrivi qualcuno più esperto di me...

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
7 ore fa, D@ve ha scritto:

Se non sbaglio ci sono @mOcrAm e @Michele71 che masticano un po' di maxscript :P

 

Se posso essere di aiuto volentieri...

Comunque @yogurt devi evitare che ti si aprano le finestre di conferma di 3ds altrimenti il tuo intento di rendere il procedimento automatico ti si rivolterà contro...

Ad esempio per creare un gruppo non dovresti usare

 actionMan.executeAction 0 "40140" 

altrimenti ti si apre la classica finestra da confermare

image.png.562878c1a45f7c76a7ce70a58dd56087.png

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)

Allora, io comincio con il creare la cartella "_maps" all'interno della cartella prescelta con le texture. Ovviamente il passo successivo è prendere tutte le texture dalla root principale e portarle nella sub-root "_maps"... 

 

rollout t "test"
(
	button btn_browse "Select folder with textures"
	button btn_copyfile "Group texture"
	
	global dir

			on btn_browse pressed do
		(
			dir = getSavePath caption:"select folder with textures"
			if dir != undefined do
			(
				newfolder = makeDir (dir + ("\\_Maps")) all:true
			)
		)
)
	
)
createdialog t

 

Perdonatemi, ma io ho pochissimo tempo a disposizione e 3dsmax è qui a casa, quindi la prova sopra è fatta molto velocemente. Vediamo se @mOcrAm continua con il secondo step :D 

 

Edit : Rileggendo, penso che non ciò capito na mazza..... 


Modificato da Michele71

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Grazie raga gentilissimi!

 

14 ore fa, mOcrAm ha scritto:

Se posso essere di aiuto volentieri...

Comunque @yogurt devi evitare che ti si aprano le finestre di conferma di 3ds altrimenti il tuo intento di rendere il procedimento automatico ti si rivolterà contro...

Ad esempio per creare un gruppo non dovresti usare

 


 actionMan.executeAction 0 "40140" 

altrimenti ti si apre la classica finestra da confermare

si in realtà era un pò una gabbola quella di lasciare che mi chiedesse di confermare il nome del gruppo ; era per vedere come era il file perchè alle volte ho mesh in giro per tutto lo spazio , così in quel caso o bloccavo tutto e cancellavo il file oppure sistemavo il modello e poi facevo ripartire lo script

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ok pensavo volessi fare uno script che una volta avviato facesse tutto per "n" file in sequenza mentre tu eri a fare tutt'altro oppure la notte ecc ecc ecc.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

si effettivamente sarebbe figo...manon so seconviene ci sono un sacco di varibili... non so secondo te/voi conviene?  

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

direi che allora è il caso di fare un'interfaccia... poi man mano che vai avanti valuti se è il casi di inserire altre cose in base alle tue esigenze ecc ecc

dopo se ho mezz'oretta ti carico un po di codice buttato li e ci si ragiona

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ragazzi, questa è una figata pazzesca!!!! se riuscite a creare questo script, siete dei geni, io non so manco da che parte iniziare!!!!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)
-- CONTROLLA SE LO SCRIPT E' ATTIVO E IN CASO LO CHIUDE PRIMA DI RIAVVIARLO
global t
try (destroyDialog t) catch()

-- ROLLOUT PRINCIPALE
rollout t "test"
(
	-- CREAZIONE INTERFACCIA
	button btn_browse "Select folder with textures"
	button btn_copyfile "Group texture"
	button btn_test "TEST CODICE"
	
	-- VARIABILI
	global dir = ""
	global groupObj
	global selgroup
	global Xmin = 0.000
	global Xmax = 0.000
	global Ymin = 0.000
	global Ymax = 0.000
	global Zmin = 0.000
	global Zmax = 0.000
	
	-- CODICE
	on btn_browse pressed do
	(
		dir = getSavePath caption:"select folder with textures"
		if dir != undefined do
		(
			newfolder = makeDir (dir + ("\\_Maps")) all:true
		)
	)
	
	on btn_test pressed do
	(
	
		-- APRI FILE
		max file open
		
		-- MOSTRARE TUTTI GLI OGGETTI
		max unhide all
		
		-- CANCELLARE CAMERE E LUCI PRESENTI IN SCENA
		delete (for i in cameras where not isDeleted i collect i)
		delete (for i in lights where not isDeleted i collect i)
		
		-- CREARE UN GRUPPO	
		tempName = maxFileName as stringstream
		newName = "grp_" + (readDelimitedString tempName ".")
		group $* name:newName
		selgroup = Execute ("$'"+newName+"'")
		clearselection() -- Cancella selezione precedente
		select selgroup
		
		-- RECUPERO INFORMAZIONI GRUPPO
		Xmin = $.min.x
		Xmax = $.max.x
		Ymin = $.min.y
		Ymax = $.max.y
		Zmin = $.min.z
		Zmax = $.max.z
		
		-- POSIZIONA PIVOT SULLA BASE
		selection.pivot = [(Xmax+Xmin)/2,(Ymax+Ymin)/2,Zmin]
		
		-- POSIZIONA GRUPPO SULL'ORIGINE
		in coordsys world $.pos = [0, 0, 0]
		
		-- CREA BOX GRANDE COME GRUPPO
		clearselection() -- Cancella selezione precedente
		mybox = box name:"temp" width:(Xmax-Xmin) length:(Ymax-Ymin) height:(Zmax-Zmin) pos:[0,0,0]
		select $temp
		$.renderable = false -- Rendi non renderizzabile il cubo
		clearselection() -- Cancella selezione precedente
		
		--crea livello temp
		--crea camera con nome temp 
		--seleziona camera
		--posiziona camera su primo vertice del cubo
		--seleziona target
		--posiziona target su 000
		--seleziona camera 
		--imposta camera (zoom out -0,5 fstop...)
		--inserisci dome bianca chiamata temp
		--inserici luce laterale
		--relink bitmap
		--collect texture e file max 
		--impostare preset render
		--render 800x800
		--salvare immagine con nome file
		--cancellare titti i file chiamati temp
		--salvare file
	)
	
)
createdialog t

Boh ho provato a far alcuni passaggi, ho lasciato il codice di Michele in alto per non perderlo man mano che andiam avanti con la discussione.

Per facilitare le cose ti ho aggiunto un pò di righe del tipo "cancella luci" e "cancella camere" perchè in una fase successiva di render per semplificare la vita bisogna partire da una scena senza luci e senza camere altrimenti bisognerà preveder un'infinità di variabili, poi vedi tu le mie son solo idee :D

 

Guarda che l'ho buttato giù velocemente è da migliorare ovviamente


Modificato da mOcrAm

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)

Allora, girovagando per il web ho trovato due bellissimi script. Il primo crea un file di testo con TUTTE le texture presenti nella scena, mentre il secondo leggendo il file di testo creato, copia le texture della scena in una cartella a scelta. Gli script sono di thatoneguy.

Ora @mOcrAm se li inserisco in un rollout ho vari errori di eccezioni (No outer local variable references permitted here in primis.) ma non ho potuto approfondire. Vediamo se possiamo inserirli in un rollout comune, anche modificandoli...

 

1)

(
 filesave = getsavefilename types:"TXT(*.txt)"
 filesave = (filesave+".txt")
 if filesave != undefined then
 (
  BT=getClassInstances BitmapTexture
  (
   dump = ""
   local mapfiles=#()
   fn addmap mapfile =
   (
 local mapfileN=mapfile as name
 local index=finditem mapfiles mapfileN
 if index == 0 do append mapfiles mapfileN
   )
   enumeratefiles addmap
   sort mapfiles
   for mapfile in mapfiles do
   (
   append dump ((mapfile as string)+"\n")
   )
   createfile filesave
   fstream = openfile filesave mode:"w"
   format "%" dump to:fstream
  )
 )
)

2)

(
file = getopenfilename caption:"Open New-Line-Seperated Map List."
if file != undefined then
(
 dest = getsavepath initialDir:("W:\\") caption:"Choose a Destination Folder."
)
if file != undefined and dest != undefined then
(
 open_file = openfile file mode:"r+"
 seek open_file 0
 mapfiles = readDelimitedString open_file "~"
 mapfiles = filterstring mapfiles "\n"
 for i = 1 to mapfiles.count do
 (
  newname = filenamefrompath mapfiles[i]
  newname = (dest+"\\"+newname)
  oldname = mapfiles[i]
  copyfile oldname newname
  )
)
)

 

Scusatemi, ma sono preso dallo scripting in C#, dato che sto facendo un test che poi presenterò qui su Treddi :D 


Modificato da Michele71

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)

Allora si continua un poco alla volta...

 

-- CONTROLLA SE LO SCRIPT E' ATTIVO E IN CASO LO CHIUDE PRIMA DI RIAVVIARLO

try (destroyDialog ::t) catch()

-- ROLLOUT PRINCIPALE
rollout t "test" width:300
(
	-- CREAZIONE INTERFACCIA
	button btn_browse "Select Path and create folder for copy textures"
	button btn_copyfile "Copy texture (from txt file)"
	button btn_test "TEST CODICE"
	
	-- VARIABILI
	global dir = ""
	global groupObj
	global selgroup
	global Xmin = 0.000
	global Xmax = 0.000
	global Ymin = 0.000
	global Ymax = 0.000
	global Zmin = 0.000
	global Zmax = 0.000
	global mybox, cam
	
	-- FUNZIONE PER COLLEZIONARE LE TEXTURE TRAMITE FILE DI TESTO
		fn direct = (
		file = getopenfilename caption:"Open New-Line-Seperated Map List."
			if file != undefined then
				(
					dest = getsavepath initialDir:dir caption:"Choose a Destination Folder."
				)
			if file != undefined and dest != undefined then
				(
					open_file = openfile file mode:"r+"
					seek open_file 0
					mapfiles = readDelimitedString open_file "~"
					mapfiles = filterstring mapfiles "\n"
					for i = 1 to mapfiles.count do
						(
							newname = filenamefrompath mapfiles[i]
							newname = (dest+"\\"+newname)
							oldname = mapfiles[i]
							copyfile oldname newname
						)
				)
		)
		
	-- CODICE-------------------------|
	on btn_browse pressed do
	(
		dir = getSavePath caption:"Select Path and create folder for copy textures"
		if dir != undefined do
		(
			newfolder = makeDir (dir + ("\\_Maps")) all:true
		)
	)
	--------------------------------------|
	on btn_copyfile pressed do
	(
		direct()
	)
	--------------------------------------|
	on btn_test pressed do
	(
	
		-- APRI FILE
		max file open
		
		-- MOSTRARE TUTTI GLI OGGETTI
		max unhide all
		
		-- CANCELLARE CAMERE E LUCI PRESENTI IN SCENA
		delete (for i in cameras where not isDeleted i collect i)
		delete (for i in lights where not isDeleted i collect i)
		
		-- CREARE UN GRUPPO	
		tempName = maxFileName as stringstream
		newName = "grp_" + (readDelimitedString tempName ".")
		group $* name:newName
		selgroup = Execute ("$'"+newName+"'")
		clearselection() -- Cancella selezione precedente
		select selgroup
		
		-- RECUPERO INFORMAZIONI GRUPPO
		Xmin = $.min.x
		Xmax = $.max.x
		Ymin = $.min.y
		Ymax = $.max.y
		Zmin = $.min.z
		Zmax = $.max.z
		
		-- POSIZIONA PIVOT SULLA BASE
		selection.pivot = [(Xmax+Xmin)/2,(Ymax+Ymin)/2,Zmin]
		
		-- POSIZIONA GRUPPO SULL'ORIGINE
		in coordsys world $.pos = [0, 0, 0]
		
		-- CREA BOX GRANDE COME GRUPPO
		clearselection() -- Cancella selezione precedente
		mybox = box name:"Box_Tmp" width:(Xmax-Xmin) length:(Ymax-Ymin) height:(Zmax-Zmin) pos:[0,0,0]
		select $Box_Tmp
		ConvertToPoly $Box_Tmp
		$.renderable = false -- Rendi non renderizzabile il cubo
		clearselection() -- Cancella selezione precedente
		
		
		
		
		-- CREA LIVELLO CHIAMATO "Layer_Tmp"
		layer = LayerManager.newLayer()
		layer.setname "Layer_tmp"
		
		--CREA CAMERA CHIAMATA "Cam_Tmp" CON TARGET 0,0,0
		cam = Targetcamera target:(Targetobject transform:(matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0]))
		cam.name = "Cam_Tmp"
		
		--SELEZIONA LA CAMERA
		select cam
		
		--POSIZIONA LA CAMERA SUL PRIMO VERTICE DEL BOX
		sel_vert_pos = $Box_Tmp.getVertex 1
		cam.pos = 	sel_vert_pos
		
		--SELEZIONA LA CAMERA
		select cam
			
		--imposta camera (zoom out -0,5 fstop...)
		--inserisci dome bianca chiamata temp
		--inserici luce laterale
			
		--INSERIRE GLI OGGETTI DELLA SCENA NEL LAYER
		for i in objects do
			(
				select i
				for n in (selection as array) do layer.addnode n
			)
			
		--relink bitmap
		--collect texture e file max 
		--impostare preset render
		--render 800x800
		--salvare immagine con nome file
		--cancellare tutti i file chiamati temp
		--salvare file
	)
	
)
createdialog t  style:#(#style_titlebar, #style_sysmenu, #style_toolwindow, #style_sunkenedge)

Ora, ci sono almeno per me, delle perplessità @yogurt:

Il Box serve solo per posizionare la camera? Se si, una volta che svolge il suo compito può essere cancellato.

Quando parli del primo vertice del Box a cosa ti riferisci?

La luce che laterale, dove va posizionata? 

Cosa intendi per preset render?

Con quale engine devi renderizzare? 

 

Altro, sto facendo le prove con 3dsmax 2010, quindi non ho possibilità di creare dome, zoom out ecc, quindi qualcuno ( @mOcrAm) si metta la mano sulla coscienza :D . Infine non ho Vray...

 

Ho integrato nello script il secondo dei due precedentemente postati. Il primo ha il problema di avere una funzione nel suo corpo, quindi se inserito in un rollout, mi da un errore di eccezione dato che non è possibile avere la funzione li (deve essere esterna). Si può tranquillamente aggirare il problema creando un tasto assestante nella toolsbar; selezioni tutto lo script e trascini quest'ultimo sulla toolsbar creando un tasto per usarlo quando vuoi...


Modificato da Michele71

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Mi offro come cavia per testare lo script 

 

ho i seguenti requisiti :

3dsmax 2016 - 2018 ( originale )

vray  ultima versione ( originale ) 

 

attendo news

 

 

 

 

 

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Cavolo pensavo di aver fatto un posto che non se lo sarebbe cag**to nessuno. Oggi riaccendo il computer e vedo che Michele71 e Mocram praticamente mi hanno già fatto lo script :) . Se venite al campus party vi riempio di birre. :)

 

22 ore fa, benq80 ha scritto:

il Project Manager qualcuno l'ha mai testato?

project manager l'ho testato. funziona su pochi file quando hai tanti file da di matto. mi ha fatto i primi 50 file bene tutti gli altri ha esploso le mesh in giro. Ho provato anche il connecter ma sostanzialemente non fa proprio proprio ordine tra i file, anzi..

 

9 ore fa, Michele71 ha scritto:

Allora si continua un poco alla volta...

 


-- CONTROLLA SE LO SCRIPT E' ATTIVO E IN CASO LO CHIUDE PRIMA DI RIAVVIARLO

try (destroyDialog ::t) catch()

-- ROLLOUT PRINCIPALE
rollout t "test" width:300
(
	-- CREAZIONE INTERFACCIA
	button btn_browse "Select Path and create folder for copy textures"
	button btn_copyfile "Copy texture (from txt file)"
	button btn_test "TEST CODICE"
	
	-- VARIABILI
	global dir = ""
	global groupObj
	global selgroup
	global Xmin = 0.000
	global Xmax = 0.000
	global Ymin = 0.000
	global Ymax = 0.000
	global Zmin = 0.000
	global Zmax = 0.000
	global mybox, cam
	
	-- FUNZIONE PER COLLEZIONARE LE TEXTURE TRAMITE FILE DI TESTO
		fn direct = (
		file = getopenfilename caption:"Open New-Line-Seperated Map List."
			if file != undefined then
				(
					dest = getsavepath initialDir:dir caption:"Choose a Destination Folder."
				)
			if file != undefined and dest != undefined then
				(
					open_file = openfile file mode:"r+"
					seek open_file 0
					mapfiles = readDelimitedString open_file "~"
					mapfiles = filterstring mapfiles "\n"
					for i = 1 to mapfiles.count do
						(
							newname = filenamefrompath mapfiles[i]
							newname = (dest+"\\"+newname)
							oldname = mapfiles[i]
							copyfile oldname newname
						)
				)
		)
		
	-- CODICE-------------------------|
	on btn_browse pressed do
	(
		dir = getSavePath caption:"Select Path and create folder for copy textures"
		if dir != undefined do
		(
			newfolder = makeDir (dir + ("\\_Maps")) all:true
		)
	)
	--------------------------------------|
	on btn_copyfile pressed do
	(
		direct()
	)
	--------------------------------------|
	on btn_test pressed do
	(
	
		-- APRI FILE
		max file open
		
		-- MOSTRARE TUTTI GLI OGGETTI
		max unhide all
		
		-- CANCELLARE CAMERE E LUCI PRESENTI IN SCENA
		delete (for i in cameras where not isDeleted i collect i)
		delete (for i in lights where not isDeleted i collect i)
		
		-- CREARE UN GRUPPO	
		tempName = maxFileName as stringstream
		newName = "grp_" + (readDelimitedString tempName ".")
		group $* name:newName
		selgroup = Execute ("$'"+newName+"'")
		clearselection() -- Cancella selezione precedente
		select selgroup
		
		-- RECUPERO INFORMAZIONI GRUPPO
		Xmin = $.min.x
		Xmax = $.max.x
		Ymin = $.min.y
		Ymax = $.max.y
		Zmin = $.min.z
		Zmax = $.max.z
		
		-- POSIZIONA PIVOT SULLA BASE
		selection.pivot = [(Xmax+Xmin)/2,(Ymax+Ymin)/2,Zmin]
		
		-- POSIZIONA GRUPPO SULL'ORIGINE
		in coordsys world $.pos = [0, 0, 0]
		
		-- CREA BOX GRANDE COME GRUPPO
		clearselection() -- Cancella selezione precedente
		mybox = box name:"Box_Tmp" width:(Xmax-Xmin) length:(Ymax-Ymin) height:(Zmax-Zmin) pos:[0,0,0]
		select $Box_Tmp
		ConvertToPoly $Box_Tmp
		$.renderable = false -- Rendi non renderizzabile il cubo
		clearselection() -- Cancella selezione precedente
		
		
		
		
		-- CREA LIVELLO CHIAMATO "Layer_Tmp"
		layer = LayerManager.newLayer()
		layer.setname "Layer_tmp"
		
		--CREA CAMERA CHIAMATA "Cam_Tmp" CON TARGET 0,0,0
		cam = Targetcamera target:(Targetobject transform:(matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0]))
		cam.name = "Cam_Tmp"
		
		--SELEZIONA LA CAMERA
		select cam
		
		--POSIZIONA LA CAMERA SUL PRIMO VERTICE DEL BOX
		sel_vert_pos = $Box_Tmp.getVertex 1
		cam.pos = 	sel_vert_pos
		
		--SELEZIONA LA CAMERA
		select cam
			
		--imposta camera (zoom out -0,5 fstop...)
		--inserisci dome bianca chiamata temp
		--inserici luce laterale
			
		--INSERIRE GLI OGGETTI DELLA SCENA NEL LAYER
		for i in objects do
			(
				select i
				for n in (selection as array) do layer.addnode n
			)
			
		--relink bitmap
		--collect texture e file max 
		--impostare preset render
		--render 800x800
		--salvare immagine con nome file
		--cancellare tutti i file chiamati temp
		--salvare file
	)
	
)
createdialog t  style:#(#style_titlebar, #style_sysmenu, #style_toolwindow, #style_sunkenedge)

Ora, ci sono almeno per me, delle perplessità @yogurt:

Il Box serve solo per posizionare la camera? Se si, una volta che svolge il suo compito può essere cancellato.

Quando parli del primo vertice del Box a cosa ti riferisci?

La luce che laterale, dove va posizionata? 

Cosa intendi per preset render?

Con quale engine devi renderizzare? 

 

Altro, sto facendo le prove con 3dsmax 2010, quindi non ho possibilità di creare dome, zoom out ecc, quindi qualcuno ( @mOcrAm) si metta la mano sulla coscienza :D . Infine non ho Vray...

 

Ho integrato nello script il secondo dei due precedentemente postati. Il primo ha il problema di avere una funzione nel suo corpo, quindi se inserito in un rollout, mi da un errore di eccezione dato che non è possibile avere la funzione li (deve essere esterna). Si può tranquillamente aggirare il problema creando un tasto assestante nella toolsbar; selezioni tutto lo script e trascini quest'ultimo sulla toolsbar creando un tasto per usarlo quando vuoi...

 

 

-Si il box serve solo per posizionare la camera e pensavo di cancellarlo insieme allacamera e alla dome; perquanto riguarda i vertici so che a ogni vertice max assegna  un numero e se non sbaglio il primo viene sempre assegnato al vertice (per un cubo) con coordinate [1,1,1]

-per la luce laterale mi sa che è una cosa che si pò anche non fare, anzi forse è un problema in meno. 

-Preset render intendo qualità del render pernsavo di caricare un file rps

-vray

 

 

9 ore fa, deam ha scritto:

Mi offro come cavia per testare lo script 

 

ho i seguenti requisiti :

3dsmax 2016 - 2018 ( originale )

vray  ultima versione ( originale ) 

 

attendo news

 

 

 

 

 

papi ti devo chiamare!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Visto che sono solamente delle preview e lo script potrebbe interessare anche chi non possiede VRay, una idea è quella di fare dei render basilari giusto per capire di cosa si sta parlando. Cosi come la gestione delle texture da rilinkare; Se si possiede VRay c'è da scrivere cose, MR altre cose ecc. il che diventa troppo esoso in termini di tempo ed energie. Cioè, quello che voglio intendere, è creare uno script base utile ma tutti, o no? 

 

Altra cosa. La camera viene posizionata in un vertice a terra. Io credo che sia meglio in alto. Comunque, hai provato lo script @yogurt?

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Allora, da abbozzare a fare uno script ce ne passa hahaha....

Comunque oltre alla distinzione utenti ecc ec che per le texture potrebbe essere raggirabile (almeno ho un'idea) si potrebbe agira su:

 - motore di render si legge quello presente in scena e si resetta

 - si imposta una luce anche qui in funzione dell'engine presente

 

 - si crea una camera: quella che crea la riga di codice di Michele è una Target Camera "vecchia" e non una Physical Camera... Bisogna capire dove è meglio parare, in alternativa si legge la versione di max e in base a quella si sceglie quale creare

 

Per il resto quando ho ancora mezz'ora libera ci guardo

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ma scusate dirò una cazzata 

ma perchè non fare in modo che l'oggetto venga caricato direttamente in un file di max presettato che serve solo per questo scopo

in modo che non si debba creare ne telecamera e altro , 

basta incollare il tutto e far partire il render 

tipo una scena del genere

image.png.9637f737390503a22475119278b72130.png

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.

×