`
willzh
  • 浏览: 296446 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Shake表达式

    博客分类:
  • vfx
阅读更多

Apple Shake是非常强大的后期合成软件,在很多著名电影中都有应用,例如《金刚》等。Shake的表达式跟C语言很像,先贴个操作符、函数表格以供参考。

 

Arithmetic Operators

*

Multiply

/

Divide

+

Plus

-

Subtract

Relational Operators

<

Less than

>

Greater than

<=

Less than or equal to

>=

Greater than or equal to

==

Equal to

!=

Not equal to

Logical Operators

&&

And

||

Or

!

Not

Conditional Expression

expr1?expr2:expr3

If expr1 is true (non-zero), then to expr2, else do expr3

Global Variables

time

Current frame number

Image Variables

These are variables carried by each node.

parameterName

Value of parameterName from inside that node.

nodeName.parameterName

Value of parameterName in nodeName from outside of that node.

parameterName@@time

Allows you to access a value at a different frame. For example:

Blur1.xPixel@@(time-3) looks at the value from 3 frames earlier.

bytes

The number of bytes in that image. This takes the input bit-depth when called from inside of the node, and the output bit-depth when called from outside of the node.

width

Width of the image. Takes the input width when called from inside of the node, and the output width when called from outside of the node.

height

Height of the image. Takes the input height when called from inside of the node, and the output height when called from outside of the node.

_curImageName

Returns the name of the actual file being used for the current frame. Useful when plugged into a Text node:

{FileIn1._curImageName}

dod[0], dod[1], dod[2], dod[3]

The variable for the Domain of Definition xMin, yMin, xMax, yMax, respectively.

In-Node Variables

These are channel variables used in nodes such as ColorX , LayerX , Reorder , etc. Check the documentation for specific support of any variable.

nr, ng, nb, na, nz

New red, green, blue, alpha, Z channel

r, g, b, a, z

Original red, green, blue, alpha, Z channels

l

Luminance channel for Reorder

n

Null channel. Strips out the alpha in Reorder when used like this: rgbn

r2, g2, b2, a2, z2

Second image's channel for LayerX

Math Functions

abs(x)

Integer absolute value. abs(-4) = 4. Be careful, as this will return an integer, not a float. Use fabs for float.

biasedGain(value, gain, bias)

This gives a ContrastLum -like curve that gives rolloff between two values.

cbrt(x)

Cubic root. cbrt(8) = 2

ceil(x)

Truncates to next integer. ceil(5.3) = 6

clamp(x, lo, hi)

Clamps x to between lo and hi
clamp(1.5,0,1) = 1

exp(x)

Natural exponent. exp(0) = 1

fabs(x)

Float absolute value. fabs(-4.1) = 4.1

floor(x)

Truncates to next lowest integer. floor(5.8) = 5

fmod(x,y)

Float modulus. Returns the remainder in float.
fmod(11.45,3) = 2 , ie, (3x3+2.45 = 11.45)

log(x)

Natural log. log(1) = 0

log10(x)

Returns base 10 log. log10(10) = 1

M_PI

A variable set to pi at 20 decimal places

max(a,b)

Returns maximum between a and b
max(5,10) = 10

max3(a,b,c)

Returns maximum between a, b, and c.
max3(5,2,4) = 5

min(a,b)

Returns minumum between a and b.
min(5,10) = 10

min3(a,b,c)

Returns minumum between a, b, and c.
min3(5,2,4) = 2

a%b

Modulus. 27%20 = 7

pow(x,y)

Returns x to the y power. pow(2,4) = 16

round(x)

Rounds number off. Values below x.5 are rounded to x, values equal to or above x.5 are rounded to x+1. round(4.3) = 4

sqrt(x)

Square root. sqrt(9) = 3

Noise Functions

These are ideal for WarpX and ColorX.

noise(seed)

1 dimensional cubic spline interpolation of noise

noise2d(seed,seed)

2d noise

noise3d(seed,seed,seed)

3d noise

noise4d(seed,seed,seed,seed)

4d noise

lnoise(seed)

1d linear interpolation of noise

lnoise2d(seed,seed)

2d noise

lnoise3d(seed,seed,seed)

3d noise

lnoise4d(seed,seed,seed,seed)

4d noise

fnoise(x,xScale)

1d fractal noise based on noise()

fnoise2d(x,y,xScale,yScale)

fnoise3d(x, y, z, xScale, yScale, zScale)

turbulence(x, xScale)

A cheaper, rougher version of fnoise().

turbulence2d(x, y, xScale, yScale )

Continuous 2d noise

turbulence3d(x, y, z, xScale, yScale, zScale)

Continuous 3d noise

rnd(seed)

Hash-based pseudo-random numbers. Non-hash based RNG (like rand() or drand48()) should not be used in Shake because they can't be reproduced from one machine to another, and even on the same machine, repeated evaluations of the same node at the same time would produce different results.

rnd1d(seed, seed)

1d random value

rnd2d(seed,seed,seed)

2d random value

rnd3d(seed,seed,seed,seed)

3d random value

rnd4d(seed,seed,seed,seed,seed)

4d random value

Trig Functions (in radians)

M_PI

A variable set to pi at 20 decimal places.

acos(A)

Arc cosine in radians

asin(A)

Arc sine

atan(A)

Arc tangent

atan2(y,x)

Returns the radian verifying sin(a) = y and cos(a) = x.

cos(A)

Cosine

sin(A)

Sin

Trig Functions (in degrees)

Hmmm, yummy trigonometry! Welcome back. For those of you who may have forgotten, here is a helpful chart for some commonly used equations.

acosd(A)

arc cosine in degrees

asind(A)

arc sine in degrees

atand(A)

arc tangent in degrees

atan2d(y,x)

returns the angle verifying sin(a) = y and cos(a) = x.

cosd(A)

cosine in degrees

distance(x1,y1,x2,y2)

calculates the distance between two points, (x1,y1) and (x2, y2)

sind(A)

sin in degrees

tand(A)

tangent in degrees

String Functions

stringf( "xyz", ...)

Since you basically can write books on this, here is an example. Otherwise, it is recommended to purchase a book on C. There are also several examples under the Scripts documentation. This example takes the scriptName parameter and uses the system function echo to print it:

extern "C" int system(const char*);
const char *z= stringf("echo %s",scriptName);
system(z);

printf( "xyz", ...)

strlen("mystring")

Returns the length of the string

strsub(
const char *string,
int offset,
int length
)

Extracts a string from another string.

Curve Functions

The curve functions with implicit time ( Linear , CSpline , etc.) all assume that time is the first argument, so the following statements are identical:

LinearV(time,0,1@1,20@20)
Linear(0,1@1,20@20)

You can, however, adjust the time value explictly with the V version of each curve type. For more infomation on spline types, jump to About Splines .

These are the cycle type codes:

0 = KeepValue
1 = KeepSlope
2 = RepeatValue
3 = MirrorValue
4 = OffsetValue

biasedGain(x,gain,bias)

Gives a smoothly ramped interpolation between 0 and 1, similar to Shake's contrast curve. gain increase the contrast, and bias offsets the center.

Linear(cycle,
value@key1,
value@key2,
...)

Linear interpolation from value at key1 to value at key2, etc.

LinearV(time_value, cycle, value@key1,
value@key2,
...)

Linear interpolation from value at key1 to value at key2, etc.

CSpline(cycle,
value@key1,
value@key2,
...)

Cardinal-spline interpolation, a.k.a. Catmull-Rom splines

CSplineV(time_value, cycle, value@key1,
value@key2,
...)

Cardinal-spline interpolation, a.k.a. Catmull-Rom splines

JSpline(cycle,
value@key1,
value@key2,
...)

Jeffress-spline interpolation

JSplineV(time_value, cycle, value@key1,
value@key2,
...)

Jeffress-spline interpolation

NSpline(cycle,
value@key1,
value@key2,
...)

Natural-spline interpolation

NSplineV(time_value, cycle, value@key1, value@key2,...)

Natural-spline interpolation

Hermite(cycle,
[value,tangent1,tangent2]@key1,
[value,tangent1,tangent2]@key2,
...)

Hermite-spline interpolation

HermiteV(time_value, cycle,
[value,tangent1,tangent2]@key1,
[value,tangent1,tangent2]@key2,
...)

Hermite-spline

 

分享到:
评论

相关推荐

    Shake-Shake regularization.pdf

    本文介绍的Shake-Shake方法旨在帮助深度学习从业者面临过度拟合问题。 这个想法是在多分支机构中取代网络,具有随机仿射的并行分支的标准求和组合。 适用于3分支残差网络,摇动正则化改善了CIFAR-10和CIFAR-测试错误...

    SHAKE

    SHAKE

    SHAKE91.rar_shake 91_software SHAKE-91_地震 有限元_有限元 波动方程_有限元 地震

    国外的地震有限元程序,美国伯克利大学的,非常经典

    shake91软件使用说明

    shake91是很经典的一维土层地震反应计算软件

    阿里mongo同步工具mongo-shake

    阿里mongo同步工具mongo-shake

    shake,it舞蹈主持串词精选.doc

    shake,it舞蹈主持串词精选.doc

    shake 2.51.rar

    shake 2.51.rar

    redis-shake.rar

    Redis-shake是一个基于golang语言开发的,用于在两个redis之间同步数据的工具,满足用户非常灵活的同步、迁移需求。

    shake.js应用和资源

    var myShakeEvent = new Shake({ threshold: 15 }); myShakeEvent.start(); window.addEventListener('shake', shakeEventDidOccur, false); function shakeEventDidOccur () { var result = ...

    redis-shake 3.0.0最新版

    阿里云Redis&MongoDB团队开源的用于redis数据同步的工具 注意:v3 版本仍处于测试阶段,有些功能不支持或不兼容 v2 版本。如果您在使用 v3 版本时遇到问题,请返回 v2 版本

    Shake91 Input.rar

    一维土层地震反应计算软件

    SHAKEUP

    SHAKEUP

    Shake91.exe

    shake这是迄今为止最广泛使用的计算地震反应或水平层状土壤沉积物的程序。该程序计算了覆盖在均匀半空间上的半无限水平层状土层在垂直传播剪切波作用下的响应。

    阿里redis-shake同步工具

    阿里redis-shake同步工具

    Shake To Find.exe

    Shake to Find Cursor 是一款模仿 macOS 系统上晃动鼠标放大指针的 Windows 小工具,让你在大屏幕显示器上更容易找到自己的鼠标指针。

    前端开源库-shake

    前端开源库-shake震动,节点部署工具

    screen_shake.zip

    screen_shake.zip

    redis-shake-v2.0.3.tar.gz

    redis-shake是阿里云Redis&MongoDB团队开源的用于redis数据同步的工具。redis-shake是我们基于redis-port基础上进行改进的一款产品。它支持解析、恢复、备份、同步四个功能。 源码地址: ...

    shake教学资料 第二节 软件概述

    Shake是Nothing Real公司开发的一个高效且值得信赖的合成软件。最多可同时支持八个CPU运算(PC机)。目前除了NT平台外将来还会有Linux和OSX等各种不同版本。它的应用范围十分广泛,电影、广播、高清晰度电视、后期...

    Aero Shake

    Aero Shake – 让XP、Vista拥有Win7拖拽晃动最小化窗口的贴心功能

Global site tag (gtag.js) - Google Analytics