Nomear slots conforme os layers

Por: netroger  

Em: 24/02/2014 16:30

Amigos 3d1, tudo bem?
Há algum modo de automatizar a nomeação dos slots do 3dmax utilizando os nomes dos layers? (um script, talvez?)
Faço isso pois modelo noCAD separando por material e, depois, importo no max daí, então, tenhio que nomear slot por slot com os nomes de material que já tenho nos layers. Seria possível automatizar isso?|

Obrigado!

Netroger
O maior modelista do mundo é Deus!
Meu portifólio: www.maquetedigital.com
Eu nao conheço, talvez alguem aqui conheça vou acompanhar o topico achei interessante.
Tem, fiz isso semana passada.

Pra fazer a montagem de uma arma que tem varias peças, e varios models diferentes pra cada peça, e cada peça tem uma separação espeficica de mapeamento (no UVW, por exemplo, a lamina é sempre na mesma região, o cabo é sempre na região dele e a lamina sempre na região dela..

Pra gerar o mapa especifico de cada arma com as peças certinhas, tive que fazer um script pra gerar e controlar um mapa Composite com cerca de 60 layers e as texturas já vem com opacidade 0 e com blending mode Additive..


Faz o seguinte que eu acho q vc consegue.. Q o material n foi muito dificil de criar, o mais dificil foi controlar a opacidade (pra subir a opacidade certa pra peça certa.. tive q usar \'arrays\' e uns negócios que não são da minha natureza saber q eu não sou programador realmente..) de cada parte de textura pra ficar 100% só na textura cujo objeto foi chamado pelo script.. Então.. Abre o listener (f11) e vai criando esse material e vai vendo o q o listener diz.. Esse listener do max vai dizendo em linguagem de código as coisas q vc tá fazendo (tem coisas q ele não fala aí vc dá uma pesquisadinha..)


Depois eu acho esse script aí copio e colo a criação de material aqui pra vc ver....

No caso como eu fiz foi q o nome do arquivo, sem a extensão, era o nome do layer dele. Eu acho q eram uns 60 layers então realmente foi mais rapido criar com script mesmo xd..



@edit: Não achei aqui.. osso q eu to fazendo um outro script q eu passei a noite hoje refazendo e tal aí agora n da pra fazer de novo.. Mas sei q um amigo meu tem esse aí ainda no micro dele depois se ele tiver eu pego e posto aqui..


Mas teoricamente, vou te explicar q com isso já da pra vc dar uma pesquisada breve e uma mexida no listener pra tidar duvidas..


@edit:
----derr---- eu entendi errado XD..heuuheuehheheuuhe

É assim, vc quer que cada objeto da cena tenha um material proprio e isso?

Faz assim..:

//////////////////////////////////////////////////////////////////////////////////


--codigo ScreamingFox (presente3d1)


/////////////////////////////////////////////////////////////////////////////////////
(criado agora e testado e funcionando =D)

Dessa maneira cada objeto em cena vai ter 1 material, cada material tem o nome que é \"Objeto: (nome do objeto)\" e cada material já está no objeto.. Aí no caso é só mudar as cores pra diferenciar..

Vc pode também fazer um array de numeros até 256 e depois pegar um elemento randomico nesse array e usar como dado de cor.. Dessa maneira o material já ia vir com uma cor random e tal..

Mas se vc gostar muito desse codigozinho depois eu tento fazer esse rand aí...

Obs: O codigo pode estar bagunçado é q eu não sei programar isso aí só depois de ouvir o Hino à Saraswati por uns 3 meses e tal.. Aprendi a maioria dessas funções ontem a noite quando não dormi pra dominar o basico do MaxScript pra fazer o meu plugin de criação de armas.


Heuhe vc tinha falado de \'layers\' por isso q eu pensei q vc tava querendo criar um mapa Composite no plugin, com 1 layer pra cada objeto em cena (isso é mais chato de fazer do que isso aí q vc tava querendo)
















A Beleza está entre a Ética e a Razão!..
Ohohohoho XDDD


Esse aqui é uma pequena evolução do de cima... Fiz agorinha tbm :)..

Até q é util.. pra cada objeto em cena, ele cria um material (com o nome que é \'Objeto: nome do objeto\' (ex: \"Objeto: Box001\").. Pra cada material aplicado é posta uma cor randomica o que torna bem facil de diferenciar =D



Obs: O script vai ter um limite pra 25 objetos por vez que é o limite dos slots..
A Beleza está entre a Ética e a Razão!..
--Codigo ScreamingFox (Presente 3d1)--
A Beleza está entre a Ética e a Razão!..


Desse jeito aí tá bom pra quem é \'iniciante\' no 3ds.. mas achei q deixa um pouco bagunçado... alem de ter a limitação dos slots.. dá pra fazer a mesma coisa com um material do tipo multi-sub, caso os objetos não tenham separação de material ID deles mesmos aí então daria pra ser feito com um numero praticamente ilimitado de objetos..
A Beleza está entre a Ética e a Razão!..
Vê se o script faz o q vc imaginou e me dá feedback DD=...

XD




OBS: É sempre importante a humildade e sinceridade... Pra alguem que vê \'de fora\', as vezes pode dar a entender que eu simplesmente aprendí espontaneamente a \'programar\'... Mas fiz algo que é proprio do ser humano de fato, e que é o exercicio d\'o \"segredo\" do \"lado escuro do behaviorismo\"\'(que é, basicamente, \"qualquer ser humano é capaz de fazer, o que qualquer ser humano é capaz de fazer\"), então aprendí a aumentar um pouquinho a minha capacidade de cognição e interpretação ENQUANTO observando determinadas coisas.. e assim pude copiar a um nivel extremamente rudimentar o que um amigo programador fazia, simplesmente o vendo fazer.
No caso, a questão do array e loop, aprendi vendo o amigo fazer (apesar de que ele usaria o loop com \'for\' nesse caso (com certeza hehe).. e eu usei um loop com while (de primeira e funciona belezinha XDD)...

Logo, toda essa logica de argumentação do script não é mais do que mera caricatura, uma \'charge\' sobre o que eu imagino ser a habilidade de um amigo (o \"Dragão Eremita\", de e sobre quem eu observei digitar e ouvi falar sobre conteúdos de logica de programação..).


@edit: Contei pra ele q existia o MAXScript acho q só pra ver essa questão mwahueheuhueuh XD


@edit2: É.. sobre o while.. eu preferí usar o while pq no caso ali a causa se fecha em sí mesma sem necessitar de variavel externa, global ou local que em ambos os casos deveriam em deteriminados casos serem declaradas (ex: global x = 1) antes.. No caso desse while o loop adiciona valor à propria variavel condicionante do while (a contagem de elementos num conjunto que o loop adiciona XDDD)..
A Beleza está entre a Ética e a Razão!..

Faça o login para poder comentar

Usuários conectados

Total de mensagens publicadas pelos membros da comunidade: 711103.

Total de membros registrados: 138591

Últimos membros registrados: cardioton, lumileanukprice, iqblastpro, NowSlimKapselnRezensionDE, holdybeech, Arthursgifford, Drive, xenoprostactive2025.

Usuário(s) on-line na última hora: 708, sendo 9 membro(s) e 699 visitante(s).

Membro(s) on-line na última hora: Le_Andro, RAULRAMOS26, Ronaldo, JMDesign, Jucartoon, Roberto Movanni, Nicole_felix15, klogg, Fernando Cunha.

Legenda: Administrador, Especial, Moderador, Parceiro .

3D1 © Três D1 © 1999-2024. Todos direitos reservados.