/  Forum  /  Blender Technicznie  /  Nody / Video Sequence Editor  /  Liczba losowa w deklarowanym przedziale

Liczba losowa w deklarowanym przedziale

#0 Liczba losowa w deklarowanym przedziale

#54811, 20190303, 19:06:00
Cześć Wam. W jednym ze swoich filmów chyba na temat normalmap Bartek Skorupa wspomniał, że za pomocą nodów można odtworzyć w blenderze praktycznie każda formułę matematyczną.
Orientujecie się czy szło by zbudować grupę nodów, zwracającą losową liczbę całkowitą np z zakresu od 1 do 100?
Wiem, że można wykorzystać nod "Object Info" ale ten parametr random wymaga duplikowania obiektów, natomiast ja potrzebuję losową wartość zmieniająca się w każdej kolejnej klatce animacji, która będzie wykorzystywana na jednym obiekcie.

Z góry dzięki za sugestie 

Zyzio

Aktywny użytkownik
*
559 45 0

#1 Odp: Liczba losowa w deklarowanym przedziale

#54812, 20190303, 19:48:27
animation nodes?

Zygfryd

Aktywny użytkownik
*
376 33 1
eeee mmmm yyyy

#2 Odp: Liczba losowa w deklarowanym przedziale

#54813, 20190303, 19:57:33
Dzięki za zainteresowanie Zygfryd, zapomniałem dopisać, że potrzebuję tego w nodach materiałowych cycles :)

Chyba, że da się to zastosować także tam? bo nie miałem jeszcze do czynienia z Animation Nodes...

Zyzio

Aktywny użytkownik
*
559 45 0

#3 Odp: Liczba losowa w deklarowanym przedziale

#54814, 20190303, 20:38:55
a w jaki sposób chcesz wykorzystać ten numerek?

Zygfryd

Aktywny użytkownik
*
376 33 1
eeee mmmm yyyy

#4 Odp: Liczba losowa w deklarowanym przedziale

#54815, 20190303, 20:47:27
Ta losowa liczba byłaby "Factorem" miksującym ze sobą obszary materiału w formie pasków o różnych kolorach.

Zyzio

Aktywny użytkownik
*
559 45 0

#5 Odp: Liczba losowa w deklarowanym przedziale

#54816, 20190303, 21:35:36
Nie wiem dlaczego to nie działa w 2.79

Zygfryd

Aktywny użytkownik
*
376 33 1
eeee mmmm yyyy

#6 Odp: Liczba losowa w deklarowanym przedziale

#54817, 20190303, 21:39:32
Dzięki wielkie, spróbuję zadziałać z tym w 2.8 :)

Zyzio

Aktywny użytkownik
*
559 45 0

#7 Odp: Liczba losowa w deklarowanym przedziale

#54818, 20190304, 01:50:41
Możesz jeszcze spróbować z takim wyrażeniem "#noise.random()". Wstawiając to w dowolne pole tworzy się losowa liczba z zakresu od 0 do 1, która zmienia się w czasie. Tylko akurat nody z cycles kiepsko współpracują z czymś takim, mi jakoś bezpośrednio nie chciało. Można jednak dodać jakiegoś pośrednika.
I tak np (tak jak na zdjęciu niżej):
1. Dodajesz jakąś własną właściwość
2. W polu z liczbą wstawiasz #noise.random(), możesz też nazwać ją, powiedzmy Random
3. W edytorze nodów w jakimś nodzie np. value dodajesz Driver - Single from Target - i wskazujesz uprzednie fioletowe pole.
Jak chcesz większy zakres, możesz tę wartość pomnożyć przy pomocy noda math.

Arek

Ekspert
*
3569 460 3
Tak 49396350

#8 Odp: Liczba losowa w deklarowanym przedziale

#54819, 20190304, 08:22:32
Arku to jest genialne, zauważyłem też, że wystarczy wkleić Twoją formułkę tylko w polu tekstowym noda "Value" bez potrzeby angażowania driverów i to działa :)

Zyzio

Aktywny użytkownik
*
559 45 0

#9 Odp: Liczba losowa w deklarowanym przedziale

#54821, 20190304, 16:06:33
Samo "noise.random()" zadziałało? Czy "#noise.random()"? Bo dla ścisłości to z krzyrzykiem też tworzy driver i dopiero w driverze jest formuła. No ale właśnie u mnie nie specjalnie to działało, raz zadziałało, raz nie, te nody są bardzo kapryśne jeśli chodzi o drivery dlatego wrzuciłem coś pewniejszego. No ale jak u Ciebie to działa bezpośrednio to super.
Dla pewności proponuję byś spróbował to, co zrobiłeś, na jakimś świeżym przykładzie i jak będzie działać bez problemu to extra. Może jest jakaś różnica między Blenderami na różnych platformach systemowych.

Arek

Ekspert
*
3569 460 3
Tak 49396350

#10 Odp: Liczba losowa w deklarowanym przedziale

#54822, 20190304, 18:52:36
Wersja z hashem działa bardzo dobrze ale tylko w 2.8.

Zyzio

Aktywny użytkownik
*
559 45 0

#11 Odp: Liczba losowa w deklarowanym przedziale

#54823, 20190304, 20:04:56
Faktycznie, na 2.8 działa to dobrze i bez innych kombinacji. Coś jednak w tym 2.8 poprawili :). Dzięki za info.

Arek

Ekspert
*
3569 460 3
Tak 49396350

#12 Odp: Liczba losowa w deklarowanym przedziale

#54824, 20190304, 20:09:38
To ja dziękuję za cynk, ponieważ to rozwiązanie daje bardzo wiele rozmaitych możliwości "tanim" kosztem :)

Zyzio

Aktywny użytkownik
*
559 45 0

#13 Odp: Liczba losowa w deklarowanym przedziale

#54825, 20190304, 20:56:07
Na wszelki wypadek (dla innych zainteresowanych - sam szukałem dlaczego mi nie działa Wasz sposób) dopowiem, że w preferencjach Blendera musi być zaznaczony checkbox Auto Run Python Script (w menu Save & Load).

Staszek7

Użytkownik
*
78 13 0
jestem tu nowy!

#14 Odp: Liczba losowa w deklarowanym przedziale

#54827, 20190304, 22:20:59
To ja dziękuję za cynk, ponieważ to rozwiązanie daje bardzo wiele rozmaitych możliwości "tanim" kosztem :)
Nie ma sprawy i jest tak jak mówisz, że tanim kosztem. Nieraz zamiast pajęczyny nodów można po prostu wpisać algorytm równania. Np, jak pisałeś na początku że chcesz całkowitą liczbę losową z zakresu od 1 do 100 - int(noise.random()*100) lub round(noise.random()*100). Hash jest tylko po to, aby utworzyć szybko driver.

Arek

Ekspert
*
3569 460 3
Tak 49396350

#15 Odp: Liczba losowa w deklarowanym przedziale

#54832, 20190305, 15:26:55
Kurde jakie to jest fajne :). Są gdzieś oficjalnie opisane tego typu komendy czy jest to po prostu część wiedzy z zakresu pythona?

Zyzio

Aktywny użytkownik
*
559 45 0

#16 Odp: Liczba losowa w deklarowanym przedziale

#54833, 20190305, 17:53:37
Są gdzieś oficjalnie opisane tego typu komendy czy jest to po prostu część wiedzy z zakresu pythona?
Jest to na pewno część wiedzy Pythona ale umiejętność programowania w tym przypadku nie jest jakoś wielce wymagana. Krótki opis tego jest tu:
https://docs.blender.org/manual/en/latest/animation/drivers/workflow_examples.html
No ale jak to z opisami bywa, podane są tylko jakieś podstawowe informacje, a resztę dowiedz się sam. I chyba tu najlepszym źródłem info będzie sam Blender.
W konsoli Pythona w Blenderze wklejasz (ctrl+V - mysz tu nie działa):
bpy.app.driver_namespacei wciskasz Ctrl+Spacja co spowoduje podpowiedzenie wpisania następnych fraz:



Nazwy, które się pojawią to nazwy, które możesz wpisać do drivera, np "bpy.app.driver_namespace['pi']" - w driverze wystarczy wpisać "pi" i zwróci to wartość pi (3.14...). To akurat można wklepać w wielu miejscach, niekoniecznie do drivera.
Jeśli będziesz dalej wpisywał to, co ci konsola proponuje i wciskał Ctrl+Space, aby ci dalej podpowiadał, w końcu ujrzy się krótki opis, np (sinus):



... zwraca sinus wartości x mierzone w radianach.
Lub np powyższy random:



Zwraca losową liczbę z zakresu 0 - 1. Typ float (zmiennoprzecinkowa).
Jak jest Ci znana konsola pythona to sorry za zbyt "szczegółowy" opis poruszania się.

Oczywiście nie jest to wszystko, bo np można też stosować wyrażenia i moduły Pythona, wypadałoby wiedzieć co to jest Float, Integer, jak wykonuje się działania (np ** oznacza podniesienie do potęgi, choć tu akurat jest funkcja "pow"). Oczywiście umiejętność programowania jest tu bardzo wskazana, bo można też tworzyć własne funkcje i  nazwy do driverów, opis jest w tym poradniku wyżej.

Arek

Ekspert
*
3569 460 3
Tak 49396350
Ostatnia zmiana: 20190305, 20:01:16 wysłana przez Arek

#17 Odp: Liczba losowa w deklarowanym przedziale

#54834, 20190305, 18:47:50
Konkretne i wyczerpujące info raz jeszcze wielkie dzięki Arku jesteś GOŚĆ :)

Zyzio

Aktywny użytkownik
*
559 45 0

#18 Odp: Liczba losowa w deklarowanym przedziale

#54835, 20190306, 10:18:23
Piękna sprawa z tymi funkcjami, można by było zrobić o tym jakiś tutorial na stronę PKB.
kozakbartosz.pl

Kosak

Użytkownik
*
127 7 0
Front-end developer and 3d graphic designer