Modyfikator array 31

Szczegółowe informacje jak działa i do czego przydaje się modyfikator Array

Po przerwie ogłaszam nowy materiał dotyczący modyfikatora Array, czyli narzędzia, które potrafi kopiować geometrię na całkiem rozmaite sposoby!

Zapraszam jak zwykle do komentarzy.

Dodane dnia 2012-04-06: Uzupełnienie materiału dotyczącego modyfikatora array – teraz możemy do niego dodać krzywą i cieszyć się zmienną długością wynikowej struktury. Pokazuję też jak można dodać do tego modyfikatora drugi modyfikator – krzywą, aby uelastycznić proces modelowania i tworzenia.

31 thoughts on “Modyfikator array

  1. Odpowiedz Amba Sty 2,2015 13:56

    Witam mam pytanko, ponieważ ciągle staram się zbudować beczkę z innego tutka. Jednak problem mam taki problem że kopia elementu ciągle pojawia mi się pod detalem a nie obok detalu. Pozdrawiam

    • Odpowiedz Sz44nty Maj 25,2015 19:32

      Już był rozwiązany ten problem. A więc zmieniasz położenie obiektu nie w trybie Edit Mode tylko w Object Mode co sprawia właśnie takie dziwne ułożenia kopi danego elementu :)

  2. Odpowiedz Piotr Arłukowicz Kwi 25,2014 22:37

    Możesz mieć zablokowane jeżeli wcisnąłeś przy odpowiednich miejscach kłódkę, albo nałożone blokujące więzy, albo przełączone coś w viewporcie, albo masz obiekty, które tranformują tylko swój środek, … jest wiele możliwości.
    Sprawdź, czy nie masz wciśniętego przycisku znajdującego się w pobliżu menu zmiany centrum transformacji (menu Pivot Point), guzik przełącza się skrótem Alt + przecinek zwykły. Ewentualnie zapytaj o to na forum, to będzie łatwiej wyjaśnić o co chodzi i wkleić np. obrazek pokazujący problem/rozwiązanie.

    • Odpowiedz oputyk Kwi 26,2014 09:50

      „Sprawdź, czy nie masz wciśniętego przycisku znajdującego się w pobliżu menu zmiany centrum transformacji (menu Pivot Point), guzik przełącza się skrótem Alt + przecinek zwykły.”

      Dzięki za pomoc, działa.

  3. Odpowiedz oputyk Kwi 25,2014 14:49

    Witam, mam pytanko. Jak włączyć rotację i skalowanie za pomocą klawiszy „r” i „s” oraz za pomocą, tych wszystkich innych standardowych opcji? Pytam, bo przez przypadek zmieniłem ustawienia, przez co skalować i obracać obiekt mogę tylko za pomocą manualnego przesuwania suwaków od tych dwóch opcji, po prawej stronie. Z góry dzięki za odpowiedź. :)

  4. Odpowiedz wiwiech Kwi 4,2013 19:06

    Przepraszam, w poprzednim komentarzu podałem błędny e-mail.

  5. Odpowiedz wiwiech Kwi 4,2013 18:53

    Witam i bardzo gratuluję kursu, który jest chyba najporządniej zrobionym z dotychczas przeze mnie spotkanych i to nie tylko jeżeli chodzi o Blender.
    Mam pewien problem dotyczący modyfikatora array. W zasadzie być może problem jest dość banalny, ale póki co nie znalazłem rozwiązania (może włączył mi się już „komplikator”).
    Chodzi o to aby rozmieścić określoną ilość elementów na określonej długości. Jednocześnie aby odległości między elementami rozłożyły się równomiernie a elementy zajęły całą długość od końca do końca, bez „niedociągnięć”. Dla wyjaśnienia może powiem, że chodzi mi o zaprojektowanie domku „kanadyjczyka”, gdzie ściany są zbudowane z belek pionowo ułożonych w równych odległościach. Ważne jest, że ścianka musi zaczynać i kończyć się belką (ostatnia belka nie może być o pół odległości od końca ściany). Zasadniczo odległość między belkami wynosi 60cm, ale w pewnych momentach ścianka jest np. odrobinę krótsza i nie jest wielokrotnością tej liczby. Wtedy chciałbym belki ustawić nieco gęściej, ale nie chcę wyliczać jaki to będzie ułamek, tylko w „automatyczny” sposób dopasować się do potrzebnej szerokości. Użycie krzywej „prawie” załatwia problem, ale ponieważ tam odległość jest regulowana „ręcznie” to kończy się to np. 10cm przed końcem. Jeżeli przy okazji dało by się zaprząc do roboty jakiś snapping, np. do końca podłogi czy następnej ścianki to już byłoby całkiem super.

    • Odpowiedz piotao Kwi 4,2013 21:24

      Proste i może niezbyt wydajne rozwiązanie, to zrobić krawędź od punktu A do punktu B. Możesz precyzyjnie ustawić te punkty, aby wszystko się zgadzało. Następnie tę krawędź dzielisz za pomocą Subdivide tyle razy, ile potrzebujesz, uzyskując równe odległości pomiędzy wierzchołkami dodawanymi pośrodku… te wierzchołki wyznaczają środki belek składowych, które powinny być rozmieszczone równomiernie. Zobacz jak można wykorzystać takie wierzchołki do generowania położenia innych meshy – pomoże Ci w tym tutek na temat DupliVerts.

      • Odpowiedz wiwiech Kwi 5,2013 21:07

        Zastosowanie DupliVerts jest fajne jednak w moim przypadku posiada kilka niedogodności. Otóż z powodu określonej grubości belek, pierwsza i ostatnia będą wystawały poza wyznaczony wymiar o połowę grubości z każdej strony. Trzeba za każdym razem odjąć od długości wzorcowego odcinka 1 grubość belki. Poza tym dość problematyczne jest ustawianie otrzymanego szkieletu poprzez snapping do innych części. Przyciągany jest „rodzic”, więc trzeba się trochę nakombinować i powiem szczerze nie wyszło mi to ustawianie. No i wreszcie przy wielokrotnym użyciu tego rozwiązania plącze się na scenie dużo tych „niewidzialnych” elementów. Chciałem przenieść je do innej warstwy, ale wtedy duplikowanie nie działało.
        Miałem nadzieję, że istnieje rozwiązanie podobne do spin gdzie np. zamiast kąta podawało by się długość.

        • Odpowiedz piotao Kwi 5,2013 22:01

          Tak myślałem, że dupliverty nie będą zbyt wygodne, ale generalnie sugerowałem Ci używanie ich jako etapu pośredniego przy modelowaniu. To znaczy – po zrobieniu wierzchołków w odpowiednich miejscach i ustawieniu belek, gdy masz już zbliżone do ideału rozmieszczenie, wtedy dajesz Applay (to znaczy – Ctrl+A, Make Duplicates Real – potem możesz je rozdzielić na osobne obiekty). Po takiej operacji pozostaje poprawić końcowe elementy i masz gotową geometrię. Stosowanie tego sposobu w celu ‚dynamicznego’ tworzenia i układania elementów nie za bardzo jest sensowne w precyzyjnym modelowaniu.
          Pozostaje Ci array, wzbogacony ewentualnie o elementy początkowe i końcowe dla serii obiektów (gdy będą miały inaczej umieszczony środek – będziesz mógł je pozycjonować praktycznie dowolnie). Taki array można następnie wzbogacić krzywą pomagającą ustawić elementy pośrednie, a kontrola ich rozmieszczenia możliwa jest za pomocą Object offset. Oczywiście to również nakłada na scenę dodatkowe obiekty, które nie są widoczne a służą jedynie do ‚sterowania’, i nie jest to ani wygodne, ani słuszne w masywnym modelowaniu architektonicznym.
          Jeżeli wszystko zawiedzie, zapoznaj się może z wtyczką TinyCadTools, która nieco rozszerza możliwości Blendera jeżeli chodzi o operacje na siatkach w trybie edycji. Może tam znajdziesz odpowiednie narzędzie…

  6. Odpowiedz GreenLittleMan Mar 26,2013 15:21

    A co zrobić z oryginalną lokomotywą, która jest referencją w opcji „Start cap” dla modyfikatora? Chodzi mi ogólnie o metodykę postępowania w przypadkach, kiedy obiekt jest tylko referencją do transformacji a sam jako taki nie jest przydatny w scenie. Operacja Hide (klawisz H) ukryje go tylko z widoku 3D ale obiekt będzie nadal renderowany. Czy właściwym jest przeniesienie takich obiektów do jakiejś wybranej warstwy z obiektami, których nie chcemy renderować?

    • Odpowiedz piotao Mar 26,2013 18:32

      Tak, można przenieść obiekty na inną warstwę. Możesz też w oknie Outlinera wyłączyć je z renderowania (wygaszając ikonkę z aparatem).

  7. Odpowiedz GreenLittleMan Mar 26,2013 15:10

    Chyba nie było to wspomniane w tutku ale wybadałem, że modyfikator Array tworzy kopie zawsze wzdłuż lokalnej osi X. Dla prostego cuba to nie ma znaczenia bo jest symetryczny względem każdej z osi, ale wyobraźmy sobie że zamiast cuba jest Suzane, która jest stworzona tak, że domyślnie patrzy wzdłuż osi Z. Modyfikator Array stworzy nam kopie wzdłuż osi X więc w efekcie klony Suzane będą stykały się uszami (w domyślnej konfiguracji modyfikatora). Co, jeśli zamiarem artysty jest ustawienie małpek w kolejce, jedna za drugą? Rotacja nic nie da, małpki konsekwentnie będą się trzymać za uszy. Zauważyłem, że rozwiązaniem jest przeorientowanie lokalnego układu współrzędnych tak, aby Suzane patrzyła wzdłuż lokalnej osi X a nie Z. Ja to zrobiłem rotując wszystkie punkty mesza o 90 stopi w trybie edycji ale nawiasem pytając, czy jest jakiś sposób żeby przekręcić tylko osie lokalnego układu względem globalnego pozostawiając punkty nietknięte?

    • Odpowiedz piotao Mar 26,2013 18:31

      Twoje pytanie zawiera odpowiedź. Obracając obiekt w trybie edycji obróciłeś siatkę, natomiast sam obiekt pozostał nie obrócony. Jeżeli przekręcisz punkty o 90° w trybie edycji, a następnie przekręcisz obiekt o -90° w trybie obiektowym, uzyskasz obrót lokalnych osi obiektu, zostawiając sam obiekt w poprzednim położeniu.

      • Odpowiedz GreenLittleMan Mar 26,2013 18:45

        No właśnie, chciałem uniknąć przekręcania obiektu w trybie edycji przekręcając w jakiś sposób tylko osie lokalne (siatkę) żeby nie musieć odkręcać obiektu w drugą stronę już w trybie obiektowym. Ale ok, wygląda na to, że nie ma innego sposobu a ten też jest dobry. Dzięki!

  8. Odpowiedz Wieslaw Mar 9,2013 08:30

    Modyfikator array jest fantastycznym narzędziem, bo z jednej cegły mogę zrobić kilkaset.Dopóki w okienku modyfikatora nie zatwierdzę (apply) te kilkaset cegieł zajmuje praktycznie tyle samo miejsca, co jedna i nie obciażą pamięci komputera. Niestety wszystkie one są identyczne. Tymczasem cegły w murze mogą mieć różne odcienie. Marzy mi się opcja, która pozwalałaby nadawać poszczególnym cegłom przypadkowo trochę inny odcień. Czy taka istnieje? Musiałby to być modyfikator koloru.

    • Odpowiedz GreenLittleMan Mar 25,2013 23:41

      […] bo z jednej cegły mogę zrobić kilkaset.
      Ale nie więcej niż tysiąc, sprawdziłem empirycznie :) Jeśli tysiąc to mało, możesz dodać następny modyfikator array i znów ustawić mu count na 1000 co w efekcie powinno dać już milion cegiełek. To też, niestety, sprawdziłem… Zanim zjadło cały ram, szybko ukatrupiłem blendera :) Ale przynajmniej wiemy już jak stworzyć w blenderze Wielki Chiński Mur, i to cały!
      Wracając do Twojego projektu, budowanie domku w blenderze cegła po cegle to chyba nie tędy droga, proponowałbym zrobić litą ścianę z pojedynczego cuba i nałożyć teksturę z cegiełek z zastosowaniem bump mapping (da wrażenie wklęsłej fugi). Ale pytanie o „modyfikator koloru” (randomizację) jest interesujące i zapewne gdzieś za rogiem czai się odpowiedź…

    • Odpowiedz piotao Mar 26,2013 01:06

      Na ustawienie różnych tekstur dla wielu cegieł jest parę możliwości. Najprostsze to mapować teksturę wg. współrzędnych wybranego obiektu. Na skutek tego każda cegła będzie miała inne współrzędne tekstury a więc może mieć i inny wygląd. Inny sposób, to mapowanie UV wielu obiektów, jeszcze inny to zastosowanie projektów… Zdaje mi się, że są jeszcze jakieś sposoby ale już teraz sobie ich nie przypomnę, bo zaraz idę spać :)

      • Odpowiedz Wieslaw Kwi 5,2013 18:20

        Dzięki, Piotrze, za rzucenie kilku pomysłów, co naprowadziło mnie na zaskakująco proste rozwiązanie: dodanie tekstury z użyciem opcji mapowania „generated”. Sądziłem, że modyfikator array pozwala tworzyć tylko wierne kopie. Tymczasem w tej opcji rzutuje teksturę tak jakby wszystkie powielone cegły stanowiły jedną całość z oryginalną. Powielana jest bryła, ale nakładane są kolejne fragmenty obrazu.
        Dzięki LittleGreenMan za radę. Niestety obiekt, którego wygląd sprzed lat odtwarzam, jest dziś ruderą, cegły pokruszone, przebarwione – stworzenie dobrej tekstury ze zdjęcia odpada. Chcę, by cegły leżały tam, gdzie faktycznie, więc przypadkowej tekstury użyć nie mogę. Łatwiej jest zrobić budynek z „nowych” cegieł.

  9. Odpowiedz exedro Lis 3,2012 14:55

    Czy na tej stronce będzie poradnik do używania, obsługi i wszystkiego innego co dotyczy bone’ów? Jest mi to bardzo potrzebne.

    • Odpowiedz piotao Lis 3,2012 19:41

      Planuję w przyszłości wykonać takie tutki, ale nie pojawią się one szybko. Mam jeszcze wiele innych rzeczy do zrobienia wcześniej.

  10. Odpowiedz Artur Paź 11,2012 15:23

    Niestety, za długo siedziałem w UK i nie umiem wypowiadać się po Polsku czasami. Poradzę sobie dzięki za dobre chęci.

  11. Odpowiedz Artur Paź 9,2012 23:39

    Pytanko, jak poruszać tym całym stworzonym obiektem. Dla mnie logiczne jest, że jeśli poruszam w edit mode, to całość się po prostu porusza poprzez G, lecz całość się modyfikuje względem Empty, a ja chcę jedynie te kolumny przenosić, w nie zmienionym stanie. Jak to zrobić?

    • Odpowiedz piotao Paź 10,2012 20:39

      Zapewne potrzebujesz przenieść obiekt do którego dodany jest modyfikator array ORAZ obiekt empty, tak aby ich wzajemne ustawienie pozostało bez zmian. Ale z Twojego pytania tylko mogę się domyślać o co właściwie chodziło.

  12. Odpowiedz Michał Lip 10,2012 23:04

    Dziękuje za odpowiedź.Życzę by starczyło Panu wytrwałości. w prowadzenie tego wspaniałego kursu;]

    • Odpowiedz piotao Lip 11,2012 13:06

      Ja również dziękuję. Ten kurs to prawie przygoda, zaskakujące, pozytywne reakcje społeczności i sporo fajnej nauki. Chętnie bardziej bym to rozkręcił, i zobaczymy, może z czasem się uda :)

      • Odpowiedz Michał Lip 11,2012 14:41

        Bardzo Panu tego życzę, ponieważ kurs ten skłonił mnie do cięższej pracy i wzięcie na poważnie tematu modelowania w 3D, szczególnie poprzez profesjonalne,regularne materiały i stały kontakt z „kursantami”, a to naprawdę godne podziwu, ze względu na to iż Pan chyba sam prowadzi tą stronę.Jest czego pogratulować:D

        • Odpowiedz piotao Lip 11,2012 15:55

          No to będzie mi bardzo miło, gdy uda Ci się zrobić jakąś pracę i zechcesz podesłać ją do galerii :) No i przejdźmy po prostu na TY, będzie chyba prościej! :)

          • Odpowiedz Michał Lip 11,2012 16:38

            Ze względu na to iż jest naprawdę początkujący, to nie mam się, w tej chwili czym pochwalić, ale mam wakacje, więc nauka powinna pójść szybko i wtedy na pewno coś wrzucę.:)

  13. Odpowiedz Michał Lip 6,2012 22:13

    Chciałem w ten sposób zrobić koła do lokomotywy, lecz po dodaniu modyfikatora array i wspólnego pkt. odniesienia(empty)koła zamiast tworzyć się koło siebie to pojawiają się w różnej odległości i rotacji, a gdy przesuwam empty to tworzy kompletną rozsypanke z kół.Dlaczego tak się dzieje?

    • Odpowiedz piotao Lip 10,2012 14:42

      Jest tak dlatego, że array w Twojej konfiguracji bierze odległość względem obiektu powtarzanego a obiektem Empty. Dodatkowo jeżeli skalowałeś lub obracałeś dowolnych z tych obiektów, brane są także względne wartości obrotów i skali pomiędzy tymi obiektami. Aby się upewnić, że nie masz niechcianych rotacji lub skalowania, naciśnij Ctrl+A i utrwal skalę lub rotację w siatce obiektu.

      Samego przesuwania obiektów z nałożonym array lepiej unikać, chyba że będziesz przesuwał jednocześnie (i tak samo) obiekt Empty, który steruje położeniami kopii generowanych przez modyfikator.

A Ty co o tym myślisz?