Cursos e Bibliotecas Ver Mais

Galeria 3D1 Ver Mais

damorim1   Diadema-sp - AC
Gaona   Brasil - AC
Vinicius Luiz   Teresina - PI
Ricardo   Montreal - Quebec - Canada - AC
gilson antunes   Curitiba - Brasil - PR

Portfólios Ver Mais

ROBICO   ilha do Marajó - PA
ze rodrigues de moraes   brasilia - distrito federal - AC
g.neder   SP - São Paulo

[help] maxscrpt - modifiers!

Por: PedroFelipe  

Em: 19/09/2004 09:47

Bem essa é para o grande granella! Seguinte .. to querendo fazer assim ... fazer um ultilitario que pegue um objeto na cena (pickbutton) e que de para mudar as propriedades do modificador pelo script .. pois quando vc trabalha com varios objetos mas com o mesmo modificador (nesse caso com o meshsmooth) vc precisa ficar ligando ... desligando para nao pesar a edição ... incrementar o iterations e tal ... entao quero fazer isso bem semelhante ao light listner .. que voce pode alterar as propriedades de todas as luzes criadas (Tools>light listener) bom ai vai o codigo rollout unnamedRollout "Untitled" width:578 height:212 ( label lbl1 "Ms Controler" pos:[14,6] width:62 height:15 pickButton pickbtn "Pick Object" pos:[4,25] width:83 height:24 groupBox grp1 "" pos:[97,19] width:263 height:35 enabled:true checkbox chk1 "On" pos:[102,29] width:33 height:15 editText nameobjt "" pos:[137,27] width:109 height:18 enabled:false label lbl3 "Iterations:" pos:[253,29] width:57 height:19 spinner spn1 "" pos:[309,28] width:36 height:16 type:#integer on pickbtn picked obj do ( master = obj nameobjt.text = obj.name nameobj = obj.name chk1.checked = true thestate = true return obj ) on spn1 changed obj1 do ( obj = nameobjt.text obj.meshsmooth.iterations = spn1.value ) ) CreateDialog unnamedRollout width:370 height:212 tá dai quando eu pego o objeto já com o modificador aplicado .. e mudo o spinner iterations .. ele diz que nao existe o meshsmoofh no objeto como mostra a figura a seguir Fico esperando uma luz :P
Vixe!!!!! Pelo que entendo de MS nao tem como acessar o "Iterations" deste jeito nao.... Primeiro: "obj = nameobjt.text" vai retornar o valor de Box01, e Box01 nao é nada nesta cena, para vc selecionar, modificar etc um objeto pelo nome vc usa o sinal de dollar "$" exemplo: select $Box01, selecionara o objeto cujo nome seja Box01.....o correto para essa situação é: "obj = "$"+nameobjt.text" com isso retorna $Box01, Ok? Segundo: ele nao reconhece o modifier MeshSmooth neste objeto, porque o modificador ja esta assimilado a ele antes de vc rodar o script, por isso ele retonar "propriedade invalida: entre meshsmooth e Box01" que neste caso este objeto é um PolyMeshObject nao um Box com o modifier aplicado saca? um exemplo: MS = MeshSmooth() -- assinalo a variavel MS é o modificador meshsmooth tea = Teapot() -- declaro que tea é o objeto Teapot addModifier tea MS -- adiciono o modifier MS ao objeto tea MS.iterations = 1 -- mudo o valor de iterations para 1 de todos os objetos que estiverem com o modifier MS aplicado deu pra entender? eu apliquei o meshsmooth com o script assim tenho o controle dele pelas variaveis. No caso do seu script ele nao encontra o modifier MeshSmooth por isso retorna invalido. eu ate tentei fazer reconher: on spn1 changed val do ( obj01 = "$"+nameobjt.text obj01.modifiers[#MeshSmooth].iterations = val ) mas de forma alguma reconhece :seila: agora se mudar para $.modifiers[#MeshSmooth].iterations = val e selecionar o objeto ele reconhece numa boa......muito estranho mesmo, essa concerteza fico de devendo, mas da uma lida em collections e modifiers que deve ter a solução ;) Só um observação: vc usou o Visual MaxScript né? fica uma bagunça o codigo cheio de width, height e position(pos) se vc tem certa pratica tente fazer tudo pelo teclado, bom pelo menos eu gosto alem de ser divertido fica organizado, mas so em extrema necessidade eu uso isso pra posicionar certinho ;) abraços
Fagner Granella
Programador Oracle PL/SQL - Java
nossa que estranho ... estranho mesmo .. bem funcionou ... mais uma vez fica o meu grande obrigado! :)))))) Mas ai cá com os meus botoes já surgiu mais duas duvidas 1- Quando eu "piko" o objeto o script funciona numa boa ... mas quando eu clicar em outro .. tem como aparecer outra daquelas propriedades .. como se aqueles campos ali fossem um conteiner como é chamado em C/C++ .. tem como? 2- se der certo .. to pensando em trocar o pickbutton por um daquelas tipo o exclude de qualquer parametro de luz .. sabe .. para incluir e excluir objetos (varios at the same time) aquilo é uma class tambem? sem querer te encher cara .. mas isso me ajudarai um monte :P Pedro
é estranho mas nao impossivel, da para acessar muita coisa pelo script ate o shell do windows :D .. Como assim clica em outro e nao funciona? tem que funcionar pois o pick no seu codigo retorna o objeto escolhido, tanto faz selecionar outro que fuinciona numa boa, da uma checada no seu codigo....uma coisa, pra que tanta declaração de variavel ali? master nao esta sendo chamada por ninguem, se quiser usar ela vai ter que declarar como local ou global(local funciona so dentro da execução do pick e global se for usar em todo resto do script..... uma sugestão poderia fazer um array de todos os objetos que tenham o meshsmooth aplicado, assim quando rodar o script ou aperta um botão ele colheria todos os objetos e dai vc escolhe onde quer que aparece a lista se um drop list ou numa igual a do light lister ou mesmo como disse um eclude/include. qualquer coisa vai postando que vamos fazendo ou esclarecendo, só nao ligue a demora em responder pq de semana é complicado, as vezes chego do escritorio cansado ou meio tarde e nem ligo o pc ;)
Fagner Granella
Programador Oracle PL/SQL - Java
entao granella o que eu quero fazer é bem igual ao light listner ... fazer como que ao rodar o script ele procure todos os arquivos que tenham o meshsmooth aplicado ... mas nao tenho nem ideia do que procurar para aprender :P nao tem o open source do light listner? pois eu queria um conteiner daquele com o nome on/off e iteratons para cada um dos objetos saca? Pedro
Cara desculpas mesmo, ja falei na MP mas vamos lá.... nao adinataria pegar o codigo do listener porque estara em c++ o jeito é fazer um collect via maxscript mesmo.... Bom tera que fazer um array coletando de cada objeto o modifier Meshsmooth, eu ate que tentei aqui uns codigos baiscos mas nao deu certo, vou estudar mais seu problema e posto aqui ok? vai ser minha priemria experiencia com modifiers :D
Fagner Granella
Programador Oracle PL/SQL - Java
Granella .. depois de bater a cabeca um monte resolvi postar minha duvida na cgtalk e o (Grande) bobo me deu uma luz .. porem nao resolveu mas acho que esse é o caminho theObjects = for o in objects where (for m in o.modifiers where classof m == MeshSmooth collect m).count > 0 collect o Beleza pelo que eu entendi ele vai procurar todos os objetos que tenham o meshsmooth aplicado (que nao seja instancia) dai eu dei uma lida no help sobre collections .. e realmente funciona legal .. porem esse codigo ai nao funcionou .. vo bate aqui a cabeca para tentar achar qq coisa eu posto ai
O mestre "Bobo" é o cara, se eu pudesse ficar olhando o trabalho dele, trampava de graça :-P Mas aew o que estava tentando era parecido com o dele, eu estou fazendo um de cameras, nao sei se ja viu (olhe o topico "Ciclo de Cameras") onde uso um collect para guardar um array de todas as cameras, so que ate ai tudo bem cameras tem sua classe propria só usar $cameras e o max pega todas da cena, agora modifier é foda, nunca mexi via MS mas em camera ficaria assim for c in $cameras where (isKindOf c camera) collect c como disse no post anterior tentei uns codigos este foi o primeiro que veio a mente dai testei outros e nao é a mesma coisa utilizando classes definidas. como assim nao funcionou? nao estou com o max no momento mas se estiver correto (claro se foi o BOBO que fez impossivel de estar errado) ele retorna um array #(PolyMesh) como ja disse mais acima neste post a definição do objeto com meshsmooth..... Agora se o caso for o nome do objeto no array coloque collect o.name explica aew o que nao funfo que nao entendi :oops:
Fagner Granella
Programador Oracle PL/SQL - Java
da erro de sintatese ... e se vc for ver bem essa sintatese dele eh estranha mesmo (for m in o.modifiers where classof m == MeshSmooth collect m).count > 0 collect o vindo dele eu sei que nao pode estar errado .. mas sei la .. nao deu
Caramba..Papo de louco...heheheh... Juro que tentei entender... Os caras tem a manha.

Faça o login para poder comentar

Usuários conectados

Total de mensagens publicadas pelos membros da comunidade: 710613.

Total de membros registrados: 138079

Últimos membros registrados: diobene, ketobhbpremium, Mhiwuwese, deluronforte, Aahiravan026, Percivalgodfrey, Canithencer, Virk.

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

Membro(s) on-line na última hora: DeividRobert, TadeuB79, qazxsw123, diobene, Carlos E. Nogueira, Rodrigo, mastermax, Willmitnick, Marco Rocha.

Legenda: Administrador, Especial, Moderador, Parceiro .

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