Vou dividi-lo em partes para fica fácil e curto ao mesmo tempo. Esta matéria não ensinará muito afundo o desenvolvimento de Scripts, mas será uma análise com exemplos para destacar alguns conceitos.
Será muito comentado o uso do MAXScript Reference (Help), por onde você poderá consultar determinado tópico para maiores informações.
Na primeira parte desta matéria, veremos o básico do MAXScript, como acessá-lo e alguns fundamentos.
O que é MAXScript?
MAXScript é a linguagem de script interna predefinida no 3ds max, permitindo que o usuário acesse a maioria dos aspectos do programa.
Essa linguagem é projetada especificamente para complementar o 3ds max.
O que esta linguagem oferece aos usuários?
- Controlar o soft interativamente através de linha de comando na janela Listener;
- Estender ou substituir a interface para melhor intereção do usuario;
- Customizar objetos, modificadores, materiais, texturas, efeitos no render e efeitos atmosféricos.
- Escrever scripts como se fosse plug-ins (scripted plug-ins), customizando modificadores, mesh objects, efeitos no render e outros;
- Construa ferramentas customizada de import/export usando ASCII e arquivo binario de I/O (input/output)
- Grave suas ações como comandos de MAXScript utilizando o Macro Record; entre outras.
O que o 3ds max não faz ou não tem a ferramenta poderá desenvolver facilitando seu trabalho.
Preciso saber programação para desenvolver minhas ferramentas?
Necessariamente NÂO! A sintaxe da linguagem é simples o bastante para aqueles que não são programadores, porque inclui o mínimo das regras básica da mesma.
Para aqueles que ja tenham algum conhecimento mais avançado, poderá fazer ferramentas mais aprimoradas.
Acessando MAXScript Utility Painel
Open Listener - Abre a janela do Listener para a inserção dos comandos.
New Script - Cria um novo Script, abrindo o editor próprio do Max.
Open Script - Abra os Scripts no editor.
Run Script - Execute os Scripts.
Utilities - Alguns Scripts tem a opção, depois de carregado ele fica nesta janela para qualquer momento ser aberto novamente.
Esta é a janela do Listener, ela pode ser acessada pressionando F11, através do Painel Utility, pelo Menu MAXScript e também fica aparente na interface na parte inferior à esquerda.
Na parte rosa é utilizada pelo Macro Record onde é escrito toda a ação feita pelo usuário, mas também poderá digitar seu comando nesta parte também.
Na parte branca é o resultado das ações mas também pode ser inserido comandos nesta parte.
Fundamentos da programação de Scripts
Abra o Listener e digite na parte branca:
sphere radius:30 segs:20 (tecle ENTER)
Esta linha inteira é o Construtor do tipo de objeto, sphere é a classe definada pelo MAX. Os parâmetros depois da classe são as informações para o Construtor definir o objeto com estes parâmetros de acordo com cada classe. Pesquise no MAXScript Reference (help) sobre os parâmetros da classe: Exemplo: digite no listener:
box (pressione F1)
Ira abrir o help com todas as propriedade da classe box que podem ser acessadas via script.
digite no Listener:
box( ) -- tecle ENTER se não tiver parâmetros adicionais feche com ( )
move $box01 [10,20,0] -- tecle ENTER
Este exemplo cria um objeto box e move em 10 unidades no eixo X e 20 unidades no eixo Y.
Move é a ação (função) que será feita, $box01 é nome do objeto na cena, sempre que quiser acessar um objeto deve por o sinal de dolar $ mais o nome do objeto.
[10,20,0] é um vetor, esta é a sintaxe dos eixos [X,Y,Z] sempre procedidos com [ ] e sepados por \",\" virgula.
move é a função, $box01 [10,20,0] é a chamada da função, então a leitura ficaria assim:
ação: move o que mover: $box01 para onde mover: [10,20,0]
digite no Listener:
$sphere01.wirecolor = blue
Este exemplo atribui a cor azul ao objeto. Esta é uma propriedade de atribuição, você esta atribuindo a cor do objeto $sphere01 como blue azul.
Esta é a sintaxe de notação de ponto, podendo acessar as propriedades do objeto, exemplo:
$sphere.name
$sphere.pos
$sphere.radius
$sphere01.wirecolor
Cada propriedade tem sua sintaxe, exemplo:
$sphere.name = \"Bola\"
$sphere01.wirecolor = green
Veja que a sintaxe para mudar o nome é diferente da cor. Tente colocar assim:
$sphere01.wirecolor = 500
Retornará um erro dizendo que é impossível converter 500 pra o tipo cor.
Aqui cabe uma nota. Todos os nomes devem estar dentro de \"name\" aspas, isto é uma string, valores são digitados normalmente 20, 50, 100, cores podem ser digitadas pelo nome, somente (red, green, blue, white, black, orange, yellow, brown e gray) estas são as globais predefinidas pelo MAX, mas podemos escrever utilizando as combinações RGB, sua sintaxe é:
color R(ed) G(reen) B(lue) A(lpha) | color 255 195 255 0
O MAXScript contem tipos reservados como Names(classes, objetos, funções, e outros valores) Palavras(if, else, while, for, do, then etc). Exemplo:
copy $sphere01 pos:[50,-80,30] name:\"Bola\"
Como ja foi explicado acima copy é uma função, $sphere01 é o objeto em cena, pos:[] é para onde copiar e name:\"Bola\" é o nome da cópia. Tentem tiras as aspas name:Bola retornará um erro de impossível converter o tipo pra string. Este foi um exemplo de nomes reservados, onde devemos obedecer sua sintaxe.
digite no Listener:
$Bola.material = standardMaterial diffuse:yellow opacity:50
Lembram do que disse acima? isto é uma propriedade de atribuição, você esta atribuindo um standardMaterial com a cor diffuse amarela e 50% de opacidade ao objeto cujo nome em cena é Bola.
Você pode escrever varias linhas no Listener e depois executá-la de uma só vez assim:
Selecione todo seu código e pressione ENTER do teclado numérico ou Shift+ENTER(do teclado alfabético).
Bem, este foi uma pequena Introdução aos Fundamentos do MAXScript. Como podem ver, há muita coisa que deixei vago mas que futuramente retornarei a elas.
Espero que tenham gostado e ate a proxima
Fagner Granella
Usuários conectados
Total de mensagens publicadas pelos membros da comunidade: 710666.
Total de membros registrados: 138146
Últimos membros registrados: mikael_a, felipemattoli, cineboss, fercomin, Lopez31Yasir, Djavan, Ferhsq, mggarcia.
Usuário(s) on-line na última hora:
1415, sendo 16 membro(s) e 1399 visitante(s).
Membro(s) on-line na última hora: mikael_a, Duda, mauricio prisco, Victor Mendonça, JesusEnzo , David Rodney, renaz, Cledson, Daniel Monteiro, Pedro Juliato, Adalberto Rocha, felipemattoli, Reinaldo Silva, Geraldo Nunes, Vlady, Marco Rocha.
Legenda: Administrador, Especial, Moderador, Parceiro .