Vou postar um primeiro desafio. A ação é algo realmente simples, mas eu ainda não consegui resolver.
A intenção era criar um controlador com o uso de spline, um simples "sphere control".
Bom na minha falta total de conhecimentos de script, fui direto para o Listener (uma grande vantagem disso é que com o tempo a gente vai gravando e aprendendo vários comandos).
[code:1:3083381b13]Circle radius:20 pos:[0,0,0] isSelected:on[/code:1:3083381b13]
Circle radius:20 pos:[0,0,0] isSelected:on
Bom nos meu parcos conhecimentos vou explicar o que significa cada uma dessas informações.
Circle - informa ao software qual a ferramenta vai ser usada.
radius: - informa o tamanho do raio do circulo a ser criado.
20 - valor do raio
pos: - localização espacial onde o circulo vai ser criado
[0,0,0] - coordenadas espaciais de onde o circulo vai ser criado, nesse caso X=0, Y=0 e Z=0
isSelected: - Indica se o circulo vai continuar selecionado após ser criado ou se ele não vai estar selecionado. "on" para ficar selecionado e "off" para ficar descelecionado.
Isso é importante quando vamos adicionar um novo comando para esse circulo, pois se ele não estiver selecionado a nova ação não tem como ser aplicada.
Mais um exeplo antes de proceguir:
Comando para selecionar e comando para remover seleção:
select $Circle01 - seleciona o objeto Circulo, o comando select indica que um objeto vai ser selecionado, o simbolo $ vem antes do nome de um objeto.
clearSelection() - esse comando desseleciona todos os objetos que estiverem selecionados.
Continuando a criação da esfera de controle:
[code:1:3083381b13]Circle radius:20 pos:[0,0,0] isSelected:on
$.name = "circulo_1"
maxOps.cloneNodes $ cloneType:#copy newNodes:&nnl
select nnl
$.name = "circulo_2"
rotate $ (angleaxis 90 [1,0,0])
maxOps.cloneNodes $ cloneType:#copy newNodes:&nnl
select nnl
$.name = "circulo_3"
rotate $ (angleaxis 90 [0,0,1])
clearSelection()[/code:1:3083381b13]
Quais são as novidades aqui:
$.name = "circulo_1" - Renomeia o objeto (no caso o objeto foi renomeado para circulo_1). Evite usar o traço use o under line.
circulo-1 > errado (esse simbolo pode fazer parte de um codigo então ele pode causar um erro no script)
circulo_1 > certo
rotate $ (angleaxis 90 [1,0,0]) - esse comando vai rotacionar o objeto circulo em um angulo de 90º no eixo X (lembrando que as coordenadas sempre são dadas por X,Y, Z)
O resultado dessa ação deve ser esse:
*obs.: quando o script é executado os 3 circulos criados são da mesma cor, eu mudei as core manualmente apenas para ficar visível que os circulos não estão unidos.
Agora estamos chegando perto de onde eu não consegui prosseguir.
Vamos agora converter esses circulos em editable spline, o código para isso é o seguinte:
[code:1:3083381b13]macros.run "Modifier Stack" "Convert_to_Spline"[/code:1:3083381b13]
Então vamos ver como o script esta até agora:
[code:1:3083381b13]Circle radius:20 pos:[0,0,0] isSelected:on
$.name = "circulo_1"
macros.run "Modifier Stack" "Convert_to_Spline"
maxOps.cloneNodes $ cloneType:#copy newNodes:&nnl
select nnl
$.name = "circulo_2"
rotate $ (angleaxis 90 [1,0,0])
macros.run "Modifier Stack" "Convert_to_Spline"
maxOps.cloneNodes $ cloneType:#copy newNodes:&nnl
select nnl
$.name = "circulo_3"
rotate $ (angleaxis 90 [0,0,1])
macros.run "Modifier Stack" "Convert_to_Spline"
clearSelection()[/code:1:3083381b13]
Bom a etapa seguinte seria fazer o comando attach, pesquisando no help do max eu achei o seguinte comando:
[code:1:3083381b13]splineOps.startAttach <editable_spline_or_line_node_or_modifier>[/code:1:3083381b13]
Porém eu não sei como usa-lo, e aqui começa o nosso grupo de estudos, espero que de certo :D