Cursos e Bibliotecas Ver Mais

Galeria 3D1 Ver Mais

renansantos   Cachoeiro / ES - ES
Jomar Machado   Rio de Janeiro - RJ
Fabio Mensen   São Paulo - SP
Francis   Birigui - SP

Portfólios Ver Mais

Thiago Luz   Poços de Caldas
Jailton   recife-pe
Fabiano Simao   Joinville - SC - AC
NickBoy3D   Breves-Pa - PA

GRUPO DE ESTUDO: MAXScript

Por: tiagodmed  

Em: 11/05/2009 21:18

Estou começando a estudar maxscript e espero que tenham paciência comigo. :) Peguei um script nesta página: http://www.scriptspot.com/forums/3ds-max/scripts-wanted/script-for-instancing-look-at-constraints [code:1:5f3a9e376b]for i = 1 to selection.count do ( selection[i].rotation.controller[2].target_axisFlip = false --Select LookAt Axis FLIP selection[i].rotation.controller[2].target_axis = 2 --Select LookAt Axis selection[i].rotation.controller[2].StoUP_axis = 1 --Source Axis selection[i].rotation.controller[2].upnode_axis = 2 --Aligned to Upnode Axis selection[i].rotation.controller.weight[2] = 100 --Pode desligar o LookAt constraint )[/code:1:5f3a9e376b] Minha ideia é controlar o LookAt de vários planes de uma só vez. Fiz a parte pra desativar o LookAt, mas não consigo achar o código pra apagar o LookAt. O MaxScript Listener não mostra o código pra delete. Esse código dá erro quando tem na seleção objeto sem lookat constraint. Alguém poderia ajudar?
Apagar o look at é só apagar o segundo controlador do list controller, pra um objeto seria o seguinte: [code:1:e9254df44e]$.rotation.controller.delete 2[/code:1:e9254df44e] Pra vários tem que colocar em loop, um amigo meu que me ensinou o básico do maxscript me passou esse atalho que o maxscript aceita em um loop: [code:1:e9254df44e]for i in selection do i.rotation.controller.delete 2[/code:1:e9254df44e] Vc pode simplificar o teu código assim também. ;) [code:1:e9254df44e] for i in selection do ( i.rotation.controller[2].target_axisFlip = false --Select LookAt Axis FLIP i.rotation.controller[2].target_axis = 2 --Select LookAt Axis i.rotation.controller[2].StoUP_axis = 1 --Source Axis i.rotation.controller[2].upnode_axis = 2 --Aligned to Upnode Axis i.rotation.controller.weight[2] = 100 --Pode desligar o LookAt constraint )[/code:1:e9254df44e]
Fla3DMadness Muito obrigado. Agora está funcionando 99%. Ainda dá erro quando em meio aos objetos selecionados, têm objetos que não tem o LookAt Constraint. Já tentei aprender programação várias vezes. Passei longos meses tentando o Delphi, mas sempre desisti. Estou achando que o maxscript é bem menos complicado. Baixei alguns tutoriais e espero ter tempo pra estudar todos os dias.
Eu também sou uma negação em programação, mas tenho aprendido um pouco com a ajuda desse amigo que manja de programação. Nesse teu caso o que eu sei é que vc tem que colocar um if pra testar se o objeto tem o rotation list ou não, mas como essa não é a minha praia eu não consigo fazer isso funcionar de jeito nenhum, mas estou curioso pra saber como resolver, deve ser algo simples pra quem entende de maxscript. Eu imaginava que seria algo simples assim: [code:1:c0c17eaac0]for i in selection do ( if i.rotation.controller == Rotation_List then i.rotation.controller.delete 2 )[/code:1:c0c17eaac0] Mas o max me da um OK no listener e não faz nada... vou tentar catar alguém que entende pra saber onde está o erro. :-P
Bom, tive uma resposta rápida no cgtalk, faltava um classof pra reconhecer o rotation_list, então a correção do meu código seria: [code:1:7ef7b1e53f]for i in selection do ( if classOf i.rotation.controller == Rotation_List then i.rotation.controller.delete 2 )[/code:1:7ef7b1e53f] E ainda deram a dica pra testar se existem dois controladores no list, melhor ainda: [code:1:7ef7b1e53f]for i in selection where classOf i.rotation.controller == Rotation_List and i.rotation.controller.count > 1 do --it might contain only one subcontroller i.rotation.controller.delete 2 )[/code:1:7ef7b1e53f] Bom, a gente vai aprendendo aos poucos, pelo menos descobri que não tinha nada errado com o meu for misturado com if. :D
Fla3DMadness O código agora está 100%. Se não fosse esse código, eu teria que fazer o lookat em uns 300 planes, um por um. Seria uma tortura pq qualquer mudança, seria necessário fazer tudo em todos os planes. Vc me ajudou demais. Muito obrigado. Só uma observação: no segundo código só tem um parêntese - ")". Ficou dando erro e coloquei o parêntese de abertura em tudo que é lugar e nada. Aí deixei sem parênteses e o código funcionou.
É, esse último código sobrou esse parenteses no final, tem que remover mesmo.
E aí pessoal, Estou enviando uma dica de script que achei no site do Guillemro M Leal LLaguno. São vários scripts gratuitos muito bons, mas eu gostei muito do Gtools_Jar_Planter. Ele funciona como o AdvPainter distribuindo qualquer obj (inclusive proxys) pintando, mas é bem mais simples que o AdvPainter. Só tem um probleminha, só é possível rodar ele uma vez depois de instalado. Depois que vc desliga o MAX é pciso deletar os arquivos do script e tornar a instala-los como da primeira vez para ele voltar a funcionar. Será que os "experts" em scripts aqui do forum podem dar uma mão e tentar corrigir isso?? O script está na página do autor http://www.evvisual.com/maxscript.htm Valewwssss
Um tutorial de maxscript muito bom: http://3dats.com/custom_parametric_object_maxscript.asp Espero que gostem.
Olá a todos! Excelente discussão esta, também estou aqui batendo cabeça com o MAXScript. Há anos que fico querendo utilizar melhor ele, mas o manual do maxscript honestamente não me parece tão amigável, talvez por meu inglês não ser fluente. Tenho um script que eu fiz e uso direto há anos, quando estou modelando, o RemoveLoop. Uso para remover um edge loop com seus vértices:
"color:1936a30973">renankogut, Você falou de criar um bounding box ao redor de um objeto selecionado, tem um que uso atualmente que faz isto e achei muito legal, o "Translated Bounding Box": http://www.scriptspot.com/3ds-max/scripts/translated-bounding-box Como eu só queria criar Dummy com ele, simplifiquei, na base de tentativa e erro até acertar, para: [quote:1936a30973 disse: on isEnabled return selection.count > 0 on execute do ( for i in selection do with undo on ( c = snapshot i c.transform = matrix3 1 d = dummy boxsize:(c.max - c.min) delete c d.transform = i.transform d.pos = i.center d.name = i.name + " Dummy" ) )
BOM, mas o que eu ainda não consegui fazer é o comando Align. Estou tentando utilizar o "Affect Pivot Only " e alinhar o pivot de um objeto com o centro de outro. São objetos com nomes específicos, mas não sei como formular o comando. Algo tipo: alinhar pivot do box01 ao centro do cylinder01, em X, Y, Z. Alguém tem alguma luz? :)
Caetano Brasil Loucomotion

Faça o login para poder comentar

Usuários conectados

Total de mensagens publicadas pelos membros da comunidade: 711065.

Total de membros registrados: 138542

Últimos membros registrados: gustavovladson, Ronson, emerson_di, Nicole_felix15, ukhovit, lumileanprüfen, FairyFarmsHempGummies, NowSlimKapselnPreisde.

Usuário(s) on-line na última hora: 1069, sendo 4 membro(s) e 1065 visitante(s).

Membro(s) on-line na última hora: klogg, Ronson, Frederico Wagner N. R., gustavovladson.

Legenda: Administrador, Especial, Moderador, Parceiro .

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