Skocz do zawartości

lechoo

Members
  • Liczba zawartości

    420
  • Rejestracja

  • Ostatnia wizyta

Zawartość dodana przez lechoo

  1. in coordsys obiekt_matka ( obiekt_dziecko.pos = [x,y,z] ) x,y,z to wartosci ustawiane suwakami
  2. Zmodyfikuj ten kawalek kodu: case click of ( 2: (a = abs(gridDist.x)) 3: ( addmodifier selection[1] (Smooth autosmooth:true threshold:30) #stop ) ) Podejrzewam ze moznaby zrobic to bardziej elegancko ale to bylo najprostsze rozwiazanie.
  3. W funkcji buildMesh musisz zmienic wszystkie ost na mesh. Jest to lokalna zmienna na ktorej operuje skryptowy plugin, czyli obiekt ktory tworzy. Wyrzuc tez addmodifier i convertToMesh. Drugie jest niepotrzebne a nadawanie modyfikatora w funkcji buildMesh oznaczaloby nakladanie nowego modyfikatora za kazdym razem kiedy zmieniasz jakis parametr obiektu, bo wlasnie tak wywolywana jest funkcja buildMesh. Sama funkcja setMesh sluzy to zdefiniowania topologi jakiegos juz istniejacego mesha (to ze mesh istnieje nie oznacza ze na zdefiniowana topologie), natomiast Ty uzywales setMesh na zmiennej ost pod ktora nie bylo zadnego mesha i dlatego wywalalo Ci blad. W normalnym skrypcie musialbys najpierw napisac ost = mesh() i dopiero wtedu setMesh.
  4. Moglbys wrzucic caly skrypt, tak najlatwiej bedzie znalesc jakis blad.
  5. Myslalem ze chodzi C o sam modyfikator :) Najprawodpodobniej nie zadeklarowales zmiennej ost, przynajmniej ja mam identyczny blad w takiej sytuacji. Sprobuj zmienic sam poczatek skryptu na: plugin simpleObject OstFor name: "OstFor" category: "Own Geometric Objects" classID:#(0x61e203b2, 0x63656b19) ( local ost a dalej po staremu.
  6. Wywolanie jest jak najbardziej poprawne. Co do podstawowych bryl mozesz poszukac w przykladowych pluginach do maxa ktore sa w sdk. Sama geometrie tworzy sie dosc podobnie. Mozesz tez sprobowac na www.scriptspot.com w dziale objects.
  7. Mozesz wykorzystac konstrukcje in coordsys. Przykladowo: in coordsys glowa_obj ( --tutaj poruszasz miesniami i wszystkie opercje beda sie odbywaly w --lokalnym ukladzie wspolrzednych obiektu glowa_obj )
  8. lechoo

    if select OBJ ?

    Normalnie robi sie to na callbackach ale nie znalazlem takiego ktory bylby wywolywany w momencie zaznaczenia obiektu. Byc moze da sie to jakos obejsc wykorzystujac custom attributes np. wywolujac jakas funkcje w momencie otwarcia interfejsu dodanego do obiektu.
  9. How To ... Read Geometry Data From Text File - Part One & Two
  10. 1. Jesli poprostu chcesz pisac w maxie to proponuje zaczac od skryptow. Do wielu rzeczy nie warto pisac pluginow bo w skrypcie jest prosciej i szybciej. Natomiast jesli masz pomysl na jakies konkretne narzedzie to warto zastanwic sie nad pluginem. 2. Jest ksiazka "mastering max script & max sdk" jesli dobrze pamietam tytul i to w zasadzie wszystko (i tak lepiej niz do XSI bo tam nic nie ma). Pozostaje wiec help i przyklady z samego sdk.
  11. lechoo

    if select OBJ ?

    Nie bardzo rozumiem co chcialbys zrobic. Blad wywala Ci bo kontroler skryptowy musi zwracac wartosc Point3 czyli np. if (select $Box01)==1 then [0,0,0] else [0,0,0] powinno byc dobrze.
  12. Dobrym pomyslem byloby zamienic getnodeByName na getNodeByHandle. Nigdy nie bedziesz mial dwoch nodow o tym samym ID a z nazwami moze byc roznie.
  13. Musisz dodac do custom attributes parametr myID type:#integer i wpisac do niego ID obiektu na ktorym jest CA: $Box01.inode.handle. Teraz pod samym buttonem odzyskujesz obiekt po jego ID: myObj = maxOps.getNodeByHandle myID. Jak masz obiekt reszta jest prosta: myObj.parent - rodzic obiektu myObj.children - tablica z dziecmi obiektu
  14. Czy funkcja pod buttonem ma dzialac na obiektach bedacych dziecmi lub rodzicami obiektu do ktorego button jest przypisany?
  15. Problem jest taki ze kazesz custom atrybutowi wypisac zmienna lokalna wazna tylko w obrebie funkcji boneCA, a tego nie mozna zrobic (a jest domyslne zmienna globalna). Musisz dodac do CA jakiegos stringa np. myObjName, do niego wpisac swoja zmienna czyli nameObj i wypisywac ta wewnetrzna zmienna. fn boneCA target nameObj = ( anotherObjNameCA = attributes attribute( parameters main rollout:params( blend type:#float ui:sld default:50 myObjName type:#string ) rollout params "IK/FK Blending" ( button btnSik "IK" pos:[10,51] width:31 height:22 button btnSfk "FK" pos:[119,53] width:31 height:22 label lbl1 "" pos:[57,56] width:52 height:17 slider sld "" pos:[5,12] width:152 height:25 button btnDik "IK" pos:[12,86] width:31 height:22 button btnDfk "FK" pos:[121,88] width:31 height:22 label lbl2 "" pos:[51,86] width:61 height:17 on btnSik pressed do ( print myObjName ) on btnSfk pressed do(print a) )) cn = getnodebyname target; custAttributes.add cn anotherObjNameCA cn.myObjName = nameObj ) a = "nic"; boneCA $Box01.name "jakas nazwa" Co do pytania 2 to chyba nie ale jeszcze pomysle :)
  16. lechoo

    Quat Values * lub /

    Ja jak chce wiedziec co sie dzieje konwertuje kwaterniony na eulerangles, pracuje na nich i na koniec konwertuje zpowrotem na kwaterniony.
  17. lechoo

    Quat Values * lub /

    Z kwaternionami bedzie troche inaczej, dzielisz tylko angle: dependsOn $Box01 myVal = $Box01.rotation myVal.angle = myVal.angle / 2 inverse myVal
  18. lechoo

    zapisanie zmiennych

    Sorki, napisalem to w ciemno bez sprawdzania, powinno byc tak: anotherObjNameCA = attributes "anotherObjName" ( parameters mainParams ( myObj type:#string ) ) custAttributes.add $GeoSphere01 anotherObjNameCA
  19. lechoo

    Quat Values * lub /

    hehe, najprosciej napisac i zobaczyc czy wywali blad, ale powarznie to mozna dzielic calosc, to samo z pozycja.
  20. lechoo

    zapisanie zmiennych

    Stringa dodajesz tak: anotherObjNameCA = attributes anotherObjName ( parameters main rollout:params ( myObj type:#string ) ) custAttributes.add $GeoSphere01 anotherObjNameCA A reszta juz tak samo.
  21. lechoo

    zapisanie zmiennych

    Mozesz to zrobic przy pomocy custom attributes np. tak: anotherObjNameCA = attributes anotherObjName ( parameters main rollout:params ( myObj type:#node ) rollout params "another object" ( pickButton myObjpicker "pick object" on myObjpicker picked obj do myObj = obj ) ) custAttributes.add $GeoSphere01 anotherObjNameCA Wykoanie tego kodu spowoduje dodanie do GeoSphere01 atrybutu myObj ktory bedzie mogl przechowywac obiekty. Pickbutton sluzy tylko do wpisania czegos do tej zmiennej. Teraz mozesz dobrac sie do tego obiektu w ten sposob: print $GeoSphere01.myObj.name Spowoduje to wypisanie nazwy obiektu przechowywanego w GeoSphere01. Jesli nie potrzebujesz pickbuttona to mozesz pominac cala czesc z rolloutem i wpisac obiekt samemu $GeoSphere01.myObj = $jakis_obiekt Oczywiscie custom attributes sa zapisywane razem ze scena. Mama nadzieje ze o to Ci chodzilo.
  22. lechoo

    Klik i model

    O ile wiem nie mozna zaimportowac tylko czesci obiektow z jakiegos pliku, ale mozna zrobic merge wybranych obiektow z pliku max.
  23. lechoo

    Klik i model

    Na przyklad tak: utility test01 "test" ( button imgTest images:#("c:/temp/pic.bmp",undefined,1,1,1,1,1) on imgTest pressed do importFile "c:/temp/box.3ds" ) Wystarczy ze pozmieniasz odpowiednie sciezki i zrobisz guzik i bitmape dla kazdego obiektu.
  24. lechoo

    Klik i model

    Jesli chcesz je udostepnic to najprosciej przekonwertowac do formatu czytanego przez maxa. Jesli koniecznie chcesz robic to pluginem to musisz z poziomu kodu tworzyc cala geometrie od zera. Nie polecam tej metody, bo plik ze zrodlem moze zrobic sie strasznie duzy jesli modele sa skomplikowane i jest ich duzo. W helpie do max scriptu zerknij do rozdzialu "Scripted SimpleObject Plug-ins", tam jest pokazane jak robi sie takie rzeczy. Mozesz to zrobic jeszcze inaczej, nacisniecie konkretnej miniaturki powoduje zaimportowanie pliku z tym modelem, wydaje mi sie ze tak byloby najprosciej.
  25. lechoo

    Bugi w max skrypcie

    Wlasciwie jest to brak w VRay'u. Jego swiatla "VRayLight" nie maja udostepnionj dla max scriptu wlasciwosci excludeList.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności