Nuke forum

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Nuke forum » Экстренная помощь » Анимация часов


Анимация часов

Сообщений 1 страница 12 из 12

1

Дано:Электронные часы - 4 цифры ( 7 палочек в каждой цифре).Думаю все их видели:) Вырезал отдельно все палочки, могу гасить их выключая ноды. Есть тонкость, палочки загораются и гаснут не сразу ,а в три фазы "не горит - горит в пол силы - горит ярко".
Задание: Часы должны взбесится. Палочки , формирующие цифры, должны загораться и гаснуть хаотично. Как это сделать процедурно?

Попробовал написать экспрессию. Нужно по сути дела просто получить ноду случайным образом выдающую 0 и 1. Если писать в курв эдиторе, то не понятно как туда втиснуть само тело программы( if , else и тд), там просто одно строка, чуть что выдает ошибку, точку запятую не понимает. В ноде Expression поля вида .......=........... и тоже не особо ясно. Толстенный том по TLC как то не очень помогает, просто не понятно куда писать. Заранее благодарен если кто нибудь подскажет:)

0

2

чтобы они взбешивались пральна, (загорались и гасли постепенно), возьми синус от фрейма*х
х - подберешь.
прописывай это в мержах, да где хочешь.

Отредактировано perlinnoise (2010-07-06 15:44:38)

0

3

вот, как вариант

Код:
set cut_paste_input [stack 0]
version 6.0 v1
Constant {
 inputs 0
 channels rgb
 name Constant1
 selected true
 xpos 272
 ypos -1087
}
Dot {
 name Dot1
 selected true
 xpos 306
 ypos -949
}
set N171cbc00 [stack 0]
Bezier {
 points {{
{164 1196 0 -1.78}
{164.4 796.4 0 -1.37}
{249.2 875.6 0 1.37}
{249.4 1116.6 0 1.77}
}}
 shape {}
 translate {399 401.6000061}
 rotate 90
 scale {-1 1}
 center {164 796.5999756}
 color {0 1 0 1}
 name Bezier7
 selected true
 xpos 692
 ypos -684
}
set N2ed022d0 [stack 0]
Grade {
 channels alpha
 white {{noise((frame+offset)*speed)>0.3 i}}
 name Grade7
 selected true
 xpos 692
 ypos -569
 addUserKnob {20 User}
 addUserKnob {7 offset R 0 100}
 offset 14.5
 addUserKnob {7 speed}
 speed 0.355
}
Premult {
 name Premult7
 selected true
 xpos 692
 ypos -523
}
push $N171cbc00
Bezier {
 points {{
{164 1196 0 -1.78}
{164 800 0 -1.37}
{249.2 875.6 0 1.37}
{249.4 1116.6 0 1.77}
}}
 shape {}
 translate {0 -403}
 rotate 90
 scale {1 -1}
 center {164 796.5999756}
 color {0 1 0 1}
 name Bezier6
 selected true
 xpos 582
 ypos -684
}
set N27f6a640 [stack 0]
Grade {
 channels alpha
 white {{noise((frame+offset)*speed)>0.3 i}}
 name Grade6
 selected true
 xpos 582
 ypos -569
 addUserKnob {20 User}
 addUserKnob {7 offset R 0 100}
 offset 38
 addUserKnob {7 speed}
 speed 0.415
}
Premult {
 name Premult6
 selected true
 xpos 582
 ypos -523
}
push $N171cbc00
Bezier {
 points {{
{164 1196 0 -1.78}
{164 800 0 -1.37}
{234.2 876.2 0 1.37}
{234.4 1117.2 0 1.77}
}}
 shape {}
 rotate 90
 scale {1 -1}
 center {164 796.5999756}
 color {0 1 0 1}
 name Bezier5
 selected true
 xpos 472
 ypos -684
}
set N27f2e5b0 [stack 0]
Grade {
 channels alpha
 white {{noise((frame+offset)*speed)>0.3 i}}
 name Grade5
 selected true
 xpos 472
 ypos -569
 addUserKnob {20 User}
 addUserKnob {7 offset R 0 100}
 offset 79
 addUserKnob {7 speed}
 speed 0.365
}
Premult {
 name Premult5
 selected true
 xpos 472
 ypos -523
}
push $N171cbc00
Bezier {
 points {{
{164 1196 0 -1.78}
{164 800 0 -1.37}
{242 870 0 1.37}
{242 1111 0 1.77}
}}
 shape {}
 translate {400 0}
 scale {-1 -1}
 center {164 796.5999756}
 color {0 1 0 1}
 name Bezier4
 selected true
 xpos 362
 ypos -684
}
set N236448f0 [stack 0]
Grade {
 channels alpha
 white {{noise((frame+offset)*speed)>0.3 i}}
 name Grade4
 selected true
 xpos 362
 ypos -569
 addUserKnob {20 User}
 addUserKnob {7 offset R 0 100}
 offset 68
 addUserKnob {7 speed}
 speed 0.42
}
Premult {
 name Premult4
 selected true
 xpos 362
 ypos -523
}
push $N171cbc00
Bezier {
 points {{
{164 1196 0 -1.78}
{164 800 0 -1.37}
{242 870 0 1.37}
{242 1111 0 1.77}
}}
 shape {}
 translate {399.6999817 0}
 scale {-1 1}
 center {164 796.5999756}
 color {0 1 0 1}
 name Bezier3
 selected true
 xpos 252
 ypos -684
}
set N23644780 [stack 0]
Grade {
 channels alpha
 white {{noise((frame+offset)*speed)>0.3 i}}
 name Grade3
 selected true
 xpos 252
 ypos -569
 addUserKnob {20 User}
 addUserKnob {7 offset R 0 100}
 offset 36.5
 addUserKnob {7 speed}
 speed 0.4
}
Premult {
 name Premult3
 selected true
 xpos 252
 ypos -523
}
push $N171cbc00
Bezier {
 points {{
{164 1196 0 -1.78}
{164 800 0 -1.37}
{242 870 0 1.37}
{242 1111 0 1.77}
}}
 shape {}
 scale {1 -1}
 center {164 796.5999756}
 color {0 1 0 1}
 name Bezier2
 selected true
 xpos 142
 ypos -684
}
set N171ddef0 [stack 0]
Grade {
 channels alpha
 white {{noise((frame+offset)*speed)>0.3 i}}
 name Grade2
 selected true
 xpos 142
 ypos -569
 addUserKnob {20 User}
 addUserKnob {7 offset R 0 100}
 offset 14
 addUserKnob {7 speed}
 speed 0.345
}
Premult {
 name Premult2
 selected true
 xpos 142
 ypos -523
}
push 0
push 0
push $N171cbc00
Bezier {
 points {{
{164 1196 0 -1.78}
{164 800 0 -1.37}
{242 870 0 1.37}
{242 1111 0 1.77}
}}
 shape {}
 center {164 796.5999756}
 color {0 1 0 1}
 name Bezier1
 selected true
 xpos 32
 ypos -684
}
set N2363ad50 [stack 0]
Grade {
 channels alpha
 white {{noise((frame+offset)*speed)>0.3 i}}
 name Grade1
 selected true
 xpos 32
 ypos -569
 addUserKnob {20 User}
 addUserKnob {7 offset R 0 100}
 addUserKnob {7 speed}
 speed 0.365
}
Premult {
 name Premult1
 selected true
 xpos 32
 ypos -523
}
Merge2 {
 inputs 8+1
 name Merge1
 selected true
 xpos 32
 ypos -439
}
Expression {
 expr3 a*sin(x/2)*sin(y/2)
 name Expression1
 selected true
 xpos 32
 ypos -402
}
Premult {
 name Premult8
 selected true
 xpos 32
 ypos -378
}
push $N2ed022d0
push $N27f6a640
push $N27f2e5b0
push $N236448f0
push $N23644780
push 0
push $N171ddef0
push $N2363ad50
Merge2 {
 inputs 7+1
 name Merge3
 selected true
 xpos -134
 ypos -601
}
Grade {
 white 0.006
 name Grade8
 selected true
 xpos -134
 ypos -509
}
Merge2 {
 inputs 2
 name Merge4
 selected true
 xpos -134
 ypos -330
}
set N27f63d80 [stack 0]
Transform {
 translate {526 0}
 center {378 828}
 name Transform1
 selected true
 xpos -10
 ypos -223
}
TimeOffset {
 time_offset 150
 name TimeOffset1
 selected true
 xpos -10
 ypos -199
}
push $N27f63d80
Merge2 {
 inputs 2
 name Merge2
 selected true
 xpos -134
 ypos -141
}
Crop {
 box {0 0 2048 1556}
 name Crop1
 selected true
 xpos -134
 ypos -95
}

цифирблат разумеется дальше можешь свой рисовать
в грейдах есть две кнобы пользовательские
speed - меняем скорость мерцания
offset - сдвигаем анимацию, чтоб не было повторений у разных палочек по анимации

надеюсь, будет полезно

и в принципе
всё, что пишется в экспрешнах (как в ноде экспрешн, так и в курв эдиторе)
пишется не на Тикле, а на языке Knob Math Expression
там действительно не работают алгоритмические законы (if else, for, while etc)
но зато чудесно работает математическая логика
для большинства задач хватит знаний о том, что

if A>B then C  <=>   (A>B)*C
A and B          <=>   A*B
A or B            <=>   A+B
not A             <=>   1-A

Отредактировано jahamba (2010-07-18 00:52:52)

0

4

Изящное решение =)
У меня что то вот такое получилось:

set cut_paste_input [stack 0]
version 6.0 v6
push $cut_paste_input
Bezier {
opacity {{"int (random(frame/5)*1.6)" i}}
points {{
{476 1120 104.1 1.01 104.1}
{868 1260 104.1 -0.24 104.1}
{1160 952 106.1 -1.33 106.1}
{1072 444 128.9 -2.6 128.9}
{384 484 160.7 2.29 160.7}
}}
shape {}
center {1024 778}
name Bezier24
selected true
xpos -3196
ypos 2948
}
Bezier {
inputs 0
opacity {{"int (random(frame/5,5)*1.6)" i}}
points {{
{476 1120 104.1 1.01 104.1}
{868 1260 104.1 -0.24 104.1}
{1160 952 106.1 -1.33 106.1}
{1072 444 128.9 -2.6 128.9}
{384 484 160.7 2.29 160.7}
}}
shape {}
center {1024 778}
name Bezier19
selected true
xpos -3054
ypos 2980
}
Bezier {
inputs 0
opacity {{"int (random(frame/4)*1.8)" i}}
points {{
{476 1120 104.1 1.01 104.1}
{868 1260 104.1 -0.24 104.1}
{1160 952 106.1 -1.33 106.1}
{1072 444 128.9 -2.6 128.9}
{384 484 160.7 2.29 160.7}
}}
shape {}
center {1024 778}
name Bezier23
selected true
xpos -2917
ypos 3020
}
Bezier {
inputs 0
opacity {{"int (random(frame/5)*1.6)" i}}
points {{
{476 1120 104.1 1.01 104.1}
{868 1260 104.1 -0.24 104.1}
{1160 952 106.1 -1.33 106.1}
{1072 444 128.9 -2.6 128.9}
{384 484 160.7 2.29 160.7}
}}
shape {}
center {1024 778}
name Bezier18
selected true
xpos -2793
ypos 3020
}
Bezier {
inputs 0
opacity {{"int (random(frame/6)*1.6)" i}}
points {{
{476 1120 104.1 1.01 104.1}
{868 1260 104.1 -0.24 104.1}
{1160 952 106.1 -1.33 106.1}
{1072 444 128.9 -2.6 128.9}
{384 484 160.7 2.29 160.7}
}}
shape {}
center {1024 778}
name Bezier20
selected true
xpos -2617
ypos 3019
}
Bezier {
inputs 0
opacity {{"int (random(frame/3)*1.6)" i}}
points {{
{476 1120 104.1 1.01 104.1}
{868 1260 104.1 -0.24 104.1}
{1160 952 106.1 -1.33 106.1}
{1072 444 128.9 -2.6 128.9}
{384 484 160.7 2.29 160.7}
}}
shape {}
center {1024 778}
name Bezier21
selected true
xpos -3430
ypos 2954
}
Bezier {
inputs 0
opacity {{"int (random(frame/5)*1.6)" i}}
points {{
{476 1120 104.1 1.01 104.1}
{868 1260 104.1 -0.24 104.1}
{1160 952 106.1 -1.33 106.1}
{1072 444 128.9 -2.6 128.9}
{384 484 160.7 2.29 160.7}
}}
shape {}
center {1024 778}
name Bezier22
selected true
xpos -3582
ypos 2959
}
Dissolve {
inputs 0
which {{curve i x19 0 1 x29 1 x30 0 x54 0 x55 1}}
name Dissolve82
selected true
xpos -3508
ypos 2553
}
Read {
inputs 0
file "Q:/DIGITS/3/1.tga"
format "720 576 0 0 720 576 1.09 PAL"
colorspace sRGB
name Read18
selected true
xpos -3307
ypos 2361
}
set N1ba88180 [stack 0]
Dissolve {
which {{parent.Bezier22.opacity.main i}}
name Dissolve48
selected true
xpos -3393
ypos 2516
}
push $N1ba88180
Dissolve {
inputs 2
which {{parent.Dissolve82.which.main i x19 0 1 x29 1 x30 0 x35 0 x36 1}}
name Dissolve49
selected true
xpos -3353
ypos 2619
}
Read {
inputs 0
file "Q:/DIGITS/3/2.tga"
format "720 576 0 0 720 576 1.09 PAL"
colorspace sRGB
name Read19
selected true
xpos -3166
ypos 2224
disable {{curve i K x19 0 1 x70 1 x71 0}}
}
Dissolve {
which {{curve i x18 0 0.75 0}}
name Dissolve6
selected true
xpos -3166
ypos 2337
}
set N1ba88ab0 [stack 0]
Dissolve {
which {{parent.Bezier21.opacity.main i}}
name Dissolve50
selected true
xpos -3229
ypos 2543
}
push $N1ba88ab0
Dissolve {
inputs 2
which {{parent.Dissolve49.which.main i}}
name Dissolve51
selected true
xpos -3140
ypos 2615
}
Read {
inputs 0
file "Q:/3/3.tga"
format "720 576 0 0 720 576 1.09 PAL"
colorspace sRGB
name Read20
selected true
xpos -3025
ypos 2370
}
set N1ba893e0 [stack 0]
Dissolve {
which {{parent.Bezier24.opacity.main i}}
name Dissolve60
selected true
xpos -3093
ypos 2532
}
push $N1ba893e0
Dissolve {
inputs 2
which {{parent.Dissolve51.which.main i}}
name Dissolve61
selected true
xpos -3040
ypos 2604
}
Read {
inputs 0
file "Q://DIGITS/3/4.tga"
format "720 576 0 0 720 576 1.09 PAL"
colorspace sRGB
name Read21
selected true
xpos -2909
ypos 2235
disable {{curve i K x18 1 0}}
}
Dissolve {
which {{curve i x18 0 0.75 0}}
name Dissolve5
selected true
xpos -2909
ypos 2368
}
set N1baddb08 [stack 0]
Dissolve {
which {{parent.Bezier19.opacity.main i}}
name Dissolve52
selected true
xpos -2975
ypos 2553
}
push $N1baddb08
Dissolve {
inputs 2
which {{parent.Dissolve51.which.main i}}
name Dissolve53
selected true
xpos -2938
ypos 2629
}
Read {
inputs 0
file "Q:/DIGITS/3/5.tga"
format "720 576 0 0 720 576 1.09 PAL"
colorspace sRGB
name Read22
selected true
xpos -2779
ypos 2374
}
set N1bade438 [stack 0]
Dissolve {
which {{parent.Bezier23.opacity.main i}}
name Dissolve54
selected true
xpos -2860
ypos 2513
}
push $N1bade438
Dissolve {
inputs 2
which {{parent.Dissolve53.which.main i}}
name Dissolve55
selected true
xpos -2823
ypos 2620
}
push 0
Read {
inputs 0
file "Q:/DIGITS/3/6.tga"
format "720 576 0 0 720 576 1.09 PAL"
colorspace sRGB
name Read23
selected true
xpos -2643
ypos 2182
disable {{curve i K x18 1 0}}
}
Dissolve {
which {{curve i x18 0 0.75 0}}
name Dissolve4
selected true
xpos -2655
ypos 2306
}
set N1baded68 [stack 0]
Dissolve {
which {{parent.Bezier18.opacity.main i}}
name Dissolve56
selected true
xpos -2732
ypos 2559
}
push $N1baded68
Dissolve {
inputs 2
which {{parent.Dissolve55.which.main i}}
name Dissolve57
selected true
xpos -2677
ypos 2635
}
Read {
inputs 0
file "Q:/DIGITS/3/7.tga"
format "720 576 0 0 720 576 1.09 PAL"
colorspace sRGB
name Read24
selected true
xpos -2372
ypos 2418
}
set N1badf698 [stack 0]
Dissolve {
which {{parent.Bezier20.opacity.main i}}
name Dissolve58
selected true
xpos -2512
ypos 2567
}
push $N1badf698
Dissolve {
inputs 2
which {{parent.Dissolve57.which.main i}}
name Dissolve59
selected true
xpos -2489
ypos 2662
}
Merge2 {
inputs 7+1
name Merge10
selected true
xpos -2946
ypos 2864
}
Transform {
translate {0.200000003 0}
center {464.7999878 289.2000122}
name Transform20
selected true
xpos -2356
ypos 2877
}

Но так и не понял как вот это условие соблюсти:
"Есть тонкость, палочки загораются и гаснут не сразу ,а в три фазы "не горит - горит в пол силы - горит ярко".

P.S. За математику огромное спасибо :)

0

5

neiz написал(а):

Но так и не понял как вот это условие соблюсти:
"Есть тонкость, палочки загораются и гаснут не сразу ,а в три фазы "не горит - горит в пол силы - горит ярко".

Ок. В миксе мержа нужно прописать примерно следущее:

Значение 0.5 я подобрал так, чтобы "плавно" загорать табло в 3 кадра.

Код:
(sin(frame*.5)<0)*(sin(frame*.5)*-1)+(sin(frame*.5)>0)*sin(frame*.5)

это возвращает модуль при отрицательных значениях синуса.

ПС. Не нашел функцию модуля в мануале.((

UPD. Проще и правильней взять не модуль, а поднять значение синуса на единицу:

Код:
(sin(frame*.5)+1)/2

Осталось тока поженить это с

Код:
noise((frame+offset)*speed)>0.3

хотя как женить синусоиду с рандомом... :crazy:

Отредактировано perlinnoise (2010-07-23 16:14:15)

0

6

Спасибо Ром)

0

7

модуль:
abs(x)

0

8

jahamba написал(а):

модуль:
abs(x)

:idea:

0

9

а на языке Knob Math Expression

А где можно все команды языка найти? Желательно с примерами. Гугль молчит

0

10

Прямо все команды в одном месте найти вряд ли получится, да и надо ли оно

какие-то команды можно подсмотреть, если в нюке тыркнуть в Help/Documentation
и в открывшейся страничке выбрать Knob Math Expressions

но вообще, если честно, как-то обычно нужные инструкции и синтаксис догоняешь интуитивно
подчас одна и та же инструкция присутствует и в NukePython и в NukeTcl и в NukeMathExpression
разумеется только с разным синтаксисом

очень полезно, на мой взгляд, и если это интересно )))
ковыряться в архитектуре классов Нюка
она описывается в документации Python к Нюку
многие вещи становятся проще для понимания

уверен ещё более полезно изучить написание плагов под Нюк
но на это всё как-то времени нет, хотя задачи вроде даже конкретные стоят

Кстати, спасибо, за ветку про часики
она натолкнула меня на идейку о маленькой статейке
как вырву кусок времени, обязательно напишу и опубликую на форуме

0

11

neiz написал(а):

могу гасить их выключая ноды

научите как гасить ноды. извините за дебильный вопрос. начинающий.

0

12

wanderbra написал(а):

научите как гасить ноды. извините за дебильный вопрос. начинающий.

Если ещё актуально

пробиваешь 0 (включена) или 1(выключена) в
NodeName.disable

TCL
[set NodeName.disable 1]

Python
nuke.thisNode().knob("disable").setValue(1)

вроде как-то так должно работать

0


Вы здесь » Nuke forum » Экстренная помощь » Анимация часов