Juzwa Posted May 16, 2013 Share Posted May 16, 2013 Witam, Mam kilkadziesiac elementow. Kazdy ma inny kształt. Kazdy sklada sie z kilku tysiecy mniejszych fragmentów (pocietych w RayFire). Potrzeba mi z nich zdjąć "warstwe zewnętrzną". Glowie sie nad tym od wczoraj i mysle ze trzeba bedzie zahaczyc o maxscript, jednak nie wiem zbytnio jaki utworzyc warunek selekcji. Jednak wolalbym maxscripta nei ruszac, nie jestem w tym biegly. Reczne usuwanie to kilkudniowe katorga. Oto screen o co mi dokladnie chodzi (oproszczone oczywiscie, interesuje mnie by pozostaly tylko elementy czerwone): Uploaded with ImageShack.us Link to comment Share on other sites More sharing options...
Reanimator Posted May 16, 2013 Share Posted May 16, 2013 Jezeli to co chcesz zaznaczyc ma konkretny material (jesli rayfire przydziela nowe dla partii wewnetrznych, zniszonych), to mozesz po materiale. Mozesz zaznaczac obiekty w czasie animacji? Link to comment Share on other sites More sharing options...
Juzwa Posted May 16, 2013 Author Share Posted May 16, 2013 Jezeli to co chcesz zaznaczyc ma konkretny material (jesli rayfire przydziela nowe dla partii wewnetrznych, zniszonych), to mozesz po materiale. Mozesz zaznaczac obiekty w czasie animacji? Rayfire moze ewentulanie przydzielic material nowo powstalym elementom przy cieciu, bez zadnych warunkow niestety. Moge wybierac sobie obiekty podczas animacji. Chcialbym wlasnie tego uniknac bo to paskudna reczna robota i zajelaby mi prawdopodobnie caly weekend :) - - - Połączono posty - - - Licze bardziej na cos w stylu: select visible to camera :) P.S. ten czerwony kolor to do podgladu o co mi chodzi Link to comment Share on other sites More sharing options...
Miłosz3ds Posted May 16, 2013 Share Posted May 16, 2013 Cześć. Nie bardzo wiem w jakiej to jest formie, ale jakbyś połączył to wszystko w jeden obiekt editable poly, zaznaczył sub-object "element" i pobawił się zaznaczaniem z "ignore backfacing" to może coś z tego wyjdzie? Strzelam, nie wiem czy to się uda- a nie mam jak sprawdzić w tym momencie ;) albo jeszcze inaczej - zaznacz sobie widoczne polygony (właśnie za pomocą ignore backfacing) i potem ctrl + click na podgrupę "element". Link to comment Share on other sites More sharing options...
Juzwa Posted May 16, 2013 Author Share Posted May 16, 2013 @Miłosz3ds - Tez tak myslalem z poczatku. Jednak ignore backfacing to jest troszke inna opcja i zwraca tylko uwage, w ktora strone patrza fejsy. W efekcie zaznaczasz fejsy patrzace w strone kamery, a nie widoczne w kamerze - pamietam ze mialem kiedys z tym juz problem. Link to comment Share on other sites More sharing options...
Miłosz3ds Posted May 16, 2013 Share Posted May 16, 2013 Cholera, masz rację. Pomyliłem kwestię - myślałem, że rzeczywiście są interpretowane fejsy od strony kamery, ale byłem przekonany, że działa to też na przysłaniające się polygony - tzn. jak jeden zasłania drugi - to ten zasłonięty nie jest zaznaczany. Mój błąd. Pomyślę jeszcze i jak na coś wpadnę to napisze, pozdrawiam! :) Link to comment Share on other sites More sharing options...
Reanimator Posted May 16, 2013 Share Posted May 16, 2013 Heh, wyobrazam sobie, ze jakis skrypt sprawdza bounding box calego obiektu, pozniej kazdego fragmentu i ich polozenia w przestrzeni. Na zasadzie porownania wspolrzednych zaznacza te, ktore sa najblizej krawedzi obiektu, zdejmujac zewnetrzna warstwe;) Duza abstrakcja ;) Link to comment Share on other sites More sharing options...
Juzwa Posted May 16, 2013 Author Share Posted May 16, 2013 Udało się! Odpowiedz znaleziona na AreaAutodesk, Oto rezultat i o co mi chodzilo: Naprawde ciekawe, prawda? Oto skrypt, który dokładnia działa jak "Select Visible" - juz wyladowal u mnie na shelfie. ----------------------- visobj = #() for obj = 1 to $objects.count do ( $objects[obj].gbufferChannel = obj ) preferences.maximumGBufferLayers = 1 bitmapsize = 320 bm = bitmap bitmapsize bitmapsize channels:#(#objectID) render bitmapsize bitmapsize to:bm channels:#(#objectID) for j=0 to bitmapsize-1 do ( for k=0 to bitmapsize-1 do ( Test = getchannel bm [j,k] #objectID TestString = Test as string TestString = trimleft TestString "#(" TestString = trimright TestString ")" testasnumber = TestString as integer if (TestString !="0") then(appendIfUnique visobj $objects[testasnumber]) ) ) select visobj ------------------------------------- P.S. http://area.autodesk.com/forum/autodesk-3ds-max/maxscript/solved-select-objects-visible-to-camera/page-1/ a to link z calym tematem Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now