最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Houdini表達(dá)式學(xué)習(xí)筆記

2023-04-02 00:46 作者:光追映畫(huà)  | 我要投稿

EXPRESSION SYNTAX(表達(dá)式語(yǔ)法)

Here are some of the main syntax elements which you will encounter again and again when using expression functions:(以下是主要的語(yǔ)法元素,你會(huì)一次又一次地遇到一些使用表達(dá)式函數(shù):)

() Brackets ???Brackets are used in order to list all of the arguments that will be contained within a function. Whenever a function is used, there must be an open bracket and a closed bracket. One of the easiest mistakes to make when creating expressions is to accidentally have the incorrect number of brackets.

()括號(hào)???????? 括號(hào)的使用是為了列舉出所有的將要包含在函數(shù)中的參數(shù)。每當(dāng)使用一個(gè)函數(shù),必須有一個(gè)開(kāi)放的括號(hào)和一個(gè)封閉的括號(hào)。最簡(jiǎn)單的錯(cuò)誤之一就是當(dāng)你創(chuàng)建表達(dá)式時(shí),意外的有多個(gè)數(shù)目不正確的括號(hào)。

“”Quotation ???When a string must be used as an argument inside a function, it must be contained within quotation marks. This can include parameter names, and file paths.

“”引號(hào)?? ??????當(dāng)一個(gè)字符串必須被用作在一個(gè)函數(shù)的參數(shù),它必須包含在引號(hào)內(nèi)。這可以包括參數(shù)名,和文件路徑。

`` Back Ticks ?????When an HScript expression has been entered into a string type parameter, it must be enclosed in backticks in order to be evaluated as an expression. For example, if you are attempting to use an expression function inside a file path, you will need to include the backticks on either end of your function.

``返回標(biāo)記??????? 當(dāng)HScript表達(dá)式中已經(jīng)輸入了一個(gè)字符串類(lèi)型的參數(shù),它必須包含在返回標(biāo)記內(nèi),以便作為一個(gè)表達(dá)式的計(jì)算。例如,如果您正試圖使用在一個(gè)文件路徑表達(dá)式功能,您需要在您的函數(shù)結(jié)束包含一個(gè)返回標(biāo)記。

‘’ Apostrophe ??Text inside apostrophes are not expanded. It may be necessary at times to use these characters inside strings to prevent a variable from being recognized as a variable.

‘’單引號(hào)??????? 文本中的單引號(hào)不是大寫(xiě)的??赡苡斜匾谟械臅r(shí)候字符串內(nèi)使用這些字符,以防止一個(gè)變量被承認(rèn)為一個(gè)變量。

TYPES OF DATA(數(shù)據(jù)類(lèi)型)

There are four main types of data that exist within Houdini(在Houdini中存在有四個(gè)主要的數(shù)據(jù)類(lèi)型):

Float:????????? Floating point numbers are single numerical values which may contain decimals i.e.: 15.5. It is possible to break this down further into integers, which do not contain decimals. An Alpha attribute/channel would be a good example of a float value.

浮點(diǎn)????????? 浮點(diǎn)數(shù)單一數(shù)值可能包含小數(shù),即:15.5。很可能打破這種進(jìn)一步下降為整數(shù),不包含小數(shù)。一個(gè)Alpha屬性/通道是一個(gè)很好的float值的例子。

Vectors: ???????Three floating point values. These values can be used to represent positions, directions, normals or colors (RGB or HSV).

矢量(向量):?? 三浮點(diǎn)值。這些值可以用來(lái)代表的位置,方向,法線(xiàn)或顏色(RGB或HSV)。

Strings: ?????????Strings are data which are not numbers, but text. A number is not represented as numerical in a string but as a text symbol. You can enclose strings in double quotes (“) or apostrophes (‘). Variables inside double-quotes are expanded. Strings inside apostrophes are not expanded. It is possible to create custom variables which make use of strings.

字符串:??????? 字符串的數(shù)據(jù)不是數(shù)字,而是文字。一個(gè)數(shù)字并不表示為一個(gè)字符串中的數(shù)值,而是一個(gè)文本符號(hào)。你可以在雙引號(hào)(“)或單引號(hào)(')中放入字符串。內(nèi)雙引號(hào)內(nèi)的變量會(huì)被展開(kāi)。單引號(hào)內(nèi)的字符串是不會(huì)展開(kāi)的。它可以利用字符串創(chuàng)建自定義的變量。

Matrix: ???????????Sixteen floating point values representing a 3D transformation matrix.

矩陣:??????????? 16個(gè)浮點(diǎn)值描述了一個(gè)三維變化矩陣。

SIMPLE MATH

+ - ????????????Add, subtract(加,減)

* / % ?????????Multiply, Divide(乘,除)

% ????????????Modulo returns the remainder after division has occured i.e. 4%3=1, 4%20=4

百分號(hào)返回除法發(fā)生之后的剩余,即i.e. 4%3=1, 4%20=4

^ ???????????Raise to exponent i.e. 3^3=9(提高指數(shù),例如3^3=9)

e ???????????Exponential notation is a concise way of representing large numbers with a minimal amount of digits, for example 3.2e-5 (equivalent to 0.000032).

???????????? 指數(shù)符號(hào)是一個(gè)代表了最少量的數(shù)字的簡(jiǎn)潔方式,例如3.2e - 5(相當(dāng)于0.000032)。

() ??????????Grouping(群集)

COMPARISONS

< > ????????Less than, greater than(小于,大于)

== ????????inquire as to whether it is equal(詢(xún)問(wèn)它是否等于)

!= ????????not equal to(不等于)

|| ????????or(或)

&& ??????and(和)

GLOBAL VARIABLES(全局變量)

Data that is accessible in all contexts. There are different types of global variables, which have various purposes.

在任何情況下可訪(fǎng)問(wèn)的數(shù)據(jù)。不同的全局變量用于不同的目的。

Environment Variables: Useful for setting up your Houdini environment.(環(huán)境變量:用于設(shè)定你的Houdini環(huán)境。)

$HIP ????????This defaults to the directory containing the current Houdini file.(這個(gè)默認(rèn)值的目錄包含了當(dāng)前的Houdini文件。)

$HIPNAME ??The name of the current .hip file(當(dāng)前.hip文件的名稱(chēng))

$WEDGE ????The current wedge information(當(dāng)前的 wedge 信息)

$OS ????????Operator String - contains the current OP’s name(運(yùn)算符字符串 - 包含運(yùn)算符字符串的名稱(chēng))

$JOB????? ??A custom variable that determines where your jobs are located(自定義變量取決于您工作的位置)

$HOME ????Your Home environment variable - specify in OS environment variables(你的home環(huán)境變量 - 指定運(yùn)算符字符串的環(huán)境變量)

$ACTIVETAKE ???Contains the name of the current take(包含當(dāng)前的名稱(chēng))

$CH ????????Current channel name(當(dāng)前通道的名稱(chēng))

$TEMP???? ?Where temporary (crash) files are saved - specify in OS environment variables(臨時(shí)(崩潰)文件保存的位置-指定運(yùn)算符字符串環(huán)境變量)

PLAYBAR VARIABLES:There are various variables that are associated with time in Houdini:(播放條變量:一些與Houdini時(shí)間有關(guān)的各種變量:)

$F ????????The current frame.(當(dāng)前幀) This is very useful, especially for filename numbering.(這對(duì)于文件名的編號(hào)方式尤其有用。) It allows us to introduce the element of time into our expressions. (它允許我們的表達(dá)式可以引入到時(shí)間的元素中去。)In the case of file naming we can add padding to $F (因此我們能夠在文件的名稱(chēng)中添加到$F)

$F3 gives us a padding of 3 meaning that Frame 1 = 001(給我們提供了3個(gè)填充幀 1=001)

We can also use $F on a translation parameter tell it to move over time (我們還可以使用$F把翻譯參數(shù)告訴它移到那個(gè)時(shí)間)

We can offset $F with simple math. $F-1 tells frame 1 to return a value of 0(我們可以使用簡(jiǎn)單的數(shù)字補(bǔ)充$F. $F-1表示幀1的返回值為0)

Certain elements, work in units of “Time” which refers to seconds rather than frames:(在某些情況下,工作時(shí)所指的“時(shí)間”是秒而不是幀)

$FPS ???????Playback speed in frames/second (set in Global Animation Options)(播放速度 幀/秒(設(shè)定全局動(dòng)畫(huà)選項(xiàng)))

$T ????????Current time in seconds(當(dāng)前時(shí)間 秒)

We can use ($F-1)/$FPS to determine the current frame’s time in seconds. This can be useful to know when we see parameters like start time on a particle network and want to be able to determine the start frame. By telling the Start Time to be 40/$FPS, the particle simulation will begin on frame 40.(我們可以使用($F-1)/$FPS取決于當(dāng)前幀的時(shí)間是秒。當(dāng)我們看到類(lèi)似于在一個(gè)粒子網(wǎng)絡(luò)結(jié)構(gòu)上的起始時(shí)間,并希望可以確定起始幀,知道這些對(duì)我們是有用的。設(shè)定開(kāi)始時(shí)間為40/$FPS,粒子將以40FPS進(jìn)行模擬。)

?

Particle and dynamic networks use time rather than frames because we often need subframe data:(粒子和動(dòng)力學(xué)網(wǎng)絡(luò)的使用時(shí)間不是幀,因?yàn)槲覀兘?jīng)常需要子幀數(shù)據(jù):)

$FF ??????Floating point frame number(浮點(diǎn)幀數(shù))

$SF ??????Simulated frame number(模擬幀數(shù))

These become important variables to remember when we adjust the over sampling. i.e.: if collision geometry isn’t sampling between frames, we can have problems with accuracy therefore we want to over sample (sample more than once per frame).(謹(jǐn)記,當(dāng)我們調(diào)節(jié)超過(guò)采樣值,這些都成為重要的變量。換言之:如果一個(gè)碰撞幾何體之間沒(méi)有采樣值,我們會(huì)引起一個(gè)我們無(wú)法超過(guò)采樣值精確度的問(wèn)題(采樣值將多次超過(guò)每幀)。)

?

It is important to cache out simulations using $SF for DOPs and $FF in POPs so that we keep subframe data.(給DOP和POP做緩存 要使用$SF為DOPnetwork的子幀參數(shù),pop使用$FF floatframe為計(jì)算單位 這樣變量去儲(chǔ)存子幀數(shù)據(jù)。注:KID的解釋?zhuān)?/p>

It may also become essential when using longer expressions to use the Expression Editor (Alt + e) or right click menu on a parameter.(在表達(dá)式編輯器(ALT + e)或在右鍵菜單中的參數(shù)中使用長(zhǎng)的表達(dá)式時(shí),這是不可或缺的。)

?

OTHER PLAYBAR VARIRBLES(其他的播放條變量)

$NFRAMES ??????The number of frames in the animation(在動(dòng)畫(huà)中的幀數(shù))

$RFSTART ???????Frame number of the first frame shown in the playbar. The playbar can show a subset of the total number of frames, allowing you to focus on a particular section of a longer sequence(在播放條中顯示第一幀的幀數(shù)。播放條可以顯示所有總數(shù)幀的子幀,讓你專(zhuān)注較長(zhǎng)序列的單個(gè)部分)

$RFEND ????????Frame number of the last frame shown in the playbar(在播放條中顯示最后幀的幀數(shù))

$FSTART ????????Frame number of the first frame of animation (set in Global Animation Options)(在動(dòng)畫(huà)中第一幀的幀數(shù))

$FEND????????? ?Frame number of the last frame of animation (set in Global Animation Options)(在動(dòng)畫(huà)中最后幀的幀數(shù))

$RFSTART and $RFEND control the subset of frames shown in the playbar($RFSTART and $RFEND控制著在播放條中顯示的子幀)

$TLENGTH ??????Total length of animation in seconds(總長(zhǎng)度在幾秒鐘的動(dòng)畫(huà))

$TSTART ????????Start time of animation in seconds(動(dòng)畫(huà)在幾秒開(kāi)始)

$TEND?????????? End time of animation in seconds(動(dòng)畫(huà)在幾秒結(jié)束)

STANDARD VARIABLES(標(biāo)準(zhǔn)變量)

Commonly used variables that are unique to specific contexts, however are common enough that they may be recognized across multiple contexts. Note that some variables such as $CR, $CG, $CB, $CA are actually attributes: Cd and Alpha. Attributes are data that are easy to lock down, and you can see that they exist if you MMB onto a node.

$TX,$TY,$TZ ???????Point Position(點(diǎn)的位置)

$BBX,$BBY,$BBZ?? ?Point Position within bounding box (ranges 0-1)(在bounding box中的位置(范圍0-1))

$YMAX,$YMIN ????The max/min values of the geometry on the Y-Axis. Note this goes for X,Y, & Z(幾何體Y軸上的最大/最小值。注意標(biāo)記是X,Y,Z)

$CEX,$CEY,$CEZ ???Centroid of the input geometry(輸入幾何體的質(zhì)心)

$CR,$CG,$CB,$CA ??Diffuse Point Color, and Point Alpha(點(diǎn)的漫反射顏色和點(diǎn)的alpha)

$NX,$NY,$NZ ??????Point Normal Direction(點(diǎn)的法線(xiàn)方向)

$PT,$PR???????? ??Point Number or Primitive Number(點(diǎn)的數(shù)量或者面的數(shù)量)

$NPTS,$NPRIMS ???Total number of points or primitives(點(diǎn)或者面的總數(shù))

VOLUMES AS ATTRIBUTES(體積屬性)

Each volume primitive may be used to represent a set of data. This is important to note when working with fluid dynamics to understand what purpose the various fields serve.(每個(gè)幾何體的體積都有可能被用于說(shuō)明一組數(shù)據(jù)。用于流體動(dòng)力學(xué)中了解每組數(shù)據(jù)所對(duì)應(yīng)服務(wù)的記錄,這一點(diǎn)是尤為重要的。)

$X,$Y,$Z????????????? ?Bounding Box Information in Volumes(Bounding Box在體積中的信息)

PARTICLE VARIABLES(粒子變量)

There are some very commonly used Standard Variables that are usually associated with particles. Many of the standard variables can be found on the Point SOP.(有一些很常用的標(biāo)準(zhǔn)變量通常與粒子有關(guān)。許多標(biāo)準(zhǔn)變量可以在SOP下找到。)

$VX,$VY,$VZ ???????????????Point Velocity values(點(diǎn)的速度值)

$ID ???????????????????????Particle ID(粒子ID)

$PSCALE ??????????????????Particle Scale(粒子縮放)

$LIFE ?????????????????????Percent of total life used (from 0 to 1)(已使用生命總數(shù)的百分之一(從0到1))

LOCAL VARIABLES(局部變量)

Many variables that are common to one context are not necessarily common to another context. Not all variables are standard. In fact, some nodes have local variables, which will be listed in the help cards on a node-by-node basis.(~~~~~~~~~~~~~~~~~~~~~~~~~不是所有的變量都是標(biāo)準(zhǔn)的。事實(shí)上,一些節(jié)點(diǎn)有局部變量,將在一個(gè)節(jié)點(diǎn)上的幫助卡中列出了節(jié)點(diǎn)的基礎(chǔ)。)

We can also use functions designed specifically for accessing attributes: point() detail() vertex() or prim()

?

?

?

?

?

?

?

?

?

?

七、比較(邏輯運(yùn)算)
你經(jīng)常會(huì)發(fā)現(xiàn)自己想要對(duì)一些參數(shù)或?qū)傩宰鲆恍?duì)比,做一些簡(jiǎn)單的對(duì)比運(yùn)算是可行的,在這種情況下,判斷為真返回值為1,判斷為假返回值為0。這個(gè)特性用來(lái)做開(kāi)關(guān)很有用。
< > 小于 大于
!= 不等于
== 是否相等
|| 或
&& 且
表達(dá)式可以是指向指定數(shù)據(jù)的簡(jiǎn)單指針,它們使用別名對(duì)數(shù)據(jù)進(jìn)行訪(fǎng)問(wèn)。在使用變量時(shí)在前面加上$符號(hào)。有幾種不同類(lèi)型的變量:全局變量,標(biāo)準(zhǔn)變量,局部變量和自定義變量。
一、 全局變量
數(shù)據(jù)在整個(gè)環(huán)境中都可以使用,全局變量分為幾不同類(lèi)型,用于不同的用途。
1、 環(huán)境變量:用于設(shè)置Houdini工作環(huán)境
$HIP 默認(rèn)為當(dāng)前Houdini文件所在的文件目錄
$HIPNAME 當(dāng)前.hip文件的文件名
$WEDGE 當(dāng)前wedge信息
$OS 當(dāng)前節(jié)點(diǎn)名字(字符串)
$JOB 一個(gè)自定義變量,指定你的工作目錄
$HOME Home環(huán)境變量(這個(gè)變量是在操作系統(tǒng)指定的)
$ACTIVETAKE 包含當(dāng)前houdini文件中take名字
$CH 當(dāng)前通道名字
$TEMP 臨時(shí)(崩潰)文件保存的位置(這個(gè)變量是在操作系統(tǒng)指定的)
2、 播放(相關(guān))變量
在Houdini中有多種不同的跟時(shí)間相關(guān)的變量。
$F 當(dāng)前幀。這個(gè) 變量很有用,尤其在使用到文件序列時(shí)。它允許我們把時(shí)間變量引入到表達(dá)式中。在文件命名的時(shí)候,我們可以給$F添加占位符。
$F3 規(guī)定了三個(gè)占位符(數(shù)字位),第一幀為 001
我們也可以在位移參數(shù)中寫(xiě)入$F,這樣物體位移就能隨著時(shí)間的變化而變化。
我們也可以運(yùn)用簡(jiǎn)單的數(shù)學(xué)運(yùn)算偏移$F。$F-1這個(gè)表達(dá)式在第1幀的時(shí)候返回值為0。
有一些變量,以“時(shí)間”為單位——即以秒為單位而不是以幀。
$FPS 幀速率 單位為:幀/秒 (在Global Animation Options 中設(shè)置)
$T 當(dāng)前時(shí)間(以秒為單位)
我們可以使用($F-1)/$FPS 把當(dāng)前幀換算成‘當(dāng)前時(shí)間’($T)。這很有用,當(dāng)我們?cè)诹W幽K中看到一個(gè)參數(shù),比如start time(開(kāi)始時(shí)間),而我們想把它換算為start frame(開(kāi)始幀)。如果當(dāng)前粒子的start time(開(kāi)始時(shí)間)設(shè)置為 40/$FPS,粒子的模擬會(huì)在第40幀開(kāi)始。
$FF 當(dāng)前幀的浮點(diǎn)形式
$SF 模擬時(shí)使用的幀號(hào)
這些成為很重要的變量,當(dāng)我們調(diào)整采樣的時(shí)候。比如,如果碰撞的物體在幀與幀間的時(shí)間中沒(méi)有采樣,那么又可能會(huì)產(chǎn)生準(zhǔn)確性的問(wèn)題(發(fā)生穿插),因此,我們需要提高采樣次數(shù)。(一幀采樣多次)。
POP和DOP中,在模擬的時(shí)候使用變量$SF也是很重要的,這樣會(huì)保存子幀數(shù)據(jù)。
在使用長(zhǎng)的表達(dá)式時(shí),使用Expression Editor(表達(dá)式編輯器,快捷鍵 Alt+E)或者右鍵單擊參數(shù)選擇。
3、 其他播放變量
$NFRAMES 動(dòng)畫(huà)中的幀數(shù)($FEND-$FSTART+1)
$FSTART 動(dòng)畫(huà)的起始幀(在Global Animation Options 中設(shè)置)
$FEND 動(dòng)畫(huà)的結(jié)束幀(在Global Animation Options 中設(shè)置)
$RFSTART 在時(shí)間播放欄中顯示的第一幀。時(shí)間欄可以顯示總幀數(shù)的一部分,以允許你將精力放在很長(zhǎng)一段序列的一部分中。
$RFEND 在時(shí)間播放欄中顯示的最后一幀。$RFSTART和$RFEND控制在時(shí)間欄中顯示的幀。
$TLENGTH 動(dòng)畫(huà)的總長(zhǎng)度(以秒為單位)
$TSTART 動(dòng)畫(huà)的開(kāi)始時(shí)間(以秒為單位)
$TEND 動(dòng)畫(huà)的結(jié)束時(shí)間(以秒為單位)
在Flipbook窗口中,你會(huì)看到$RFSTART和$RFEND。用于對(duì)時(shí)間欄中的區(qū)域進(jìn)行拍屏。這些變量也是有用的,當(dāng)你想在渲染動(dòng)畫(huà)時(shí)想帶上當(dāng)前時(shí)間。
更多的變量在下面的文檔中:http://www.sidefx.com/docs/current/expressions/_globals
注意其中包含一些數(shù)學(xué)常量,CHOP,ROP,和COP變量。
二、 標(biāo)準(zhǔn)變量
變量一般是在指定的語(yǔ)境中起作用的,但有時(shí)它們?cè)诙嗾Z(yǔ)境中起作用也很常見(jiàn)。注意一些變量:$CR,$CG,$CB,$CA ,它們實(shí)際上是屬性Cd和Alpha。屬性是一些數(shù)據(jù),可以很容易的沿著節(jié)點(diǎn)向下傳遞。選中節(jié)點(diǎn),單擊鼠標(biāo)中鍵,你就可以看到一些屬性。
$TX,$TY,$TZ 點(diǎn)位置
$BBX,$BBY,$BBZ 點(diǎn)在邊界盒子(Bounding box)中的位置(范圍0-1)
$YMAX,$YMIN 幾何體在Y軸的最大/最小值。注意同樣使用于X,Z軸。

$CEX,$CEY,$CEZ 輸入幾何體的中心
$CR,$CG,$CB,$CA 點(diǎn)顏色,點(diǎn)Alpha
$NX,$NY,$NZ 點(diǎn)法線(xiàn)方向
$PT,$PR 點(diǎn)序號(hào),Primitive序號(hào)
$NPTS,$NPRIMS 點(diǎn)的總數(shù),Primitive總數(shù)
三、 體積物體的屬性(VOLUmES AS ATTRIBUTES)
一個(gè)體積基本體可能會(huì)用來(lái)表示一系列數(shù)據(jù)。注意這很重要,當(dāng)你想要搞明白在流體動(dòng)力學(xué)的模擬中各種不同的field的用途。
$X,$Y,$Z 體積基本體中邊界盒子(Bounding Box)信息
四、 粒子變量
這是一些在模擬粒子時(shí)很常用的標(biāo)準(zhǔn)變量。有好多可以可以在 Point SOP中看到。
$VX,$VY,$VZ 點(diǎn)的速度值
$ID 粒子ID
$PSCALE 粒子大小
$LIFE 當(dāng)前生命值占整個(gè)生命存活時(shí)間的百分比(0-1)
在Houdini的文檔中你會(huì)看到更多的標(biāo)準(zhǔn)變量:http://www.sidefx.com/docs/current/nodes/sop/standardvariables
五、 局部變量
許多變量可能在某一個(gè)語(yǔ)境中會(huì)用到,而其他語(yǔ)境不必要用到。并不是所有的變量都是標(biāo)準(zhǔn)變量。實(shí)際上,某些節(jié)點(diǎn)存在一些局部變量,這些你可以在這個(gè)節(jié)點(diǎn)的幫助中找到。
比如,在Transform節(jié)點(diǎn)中:
$GCX, $GCY, $GCZ 輸入組的中心

另起。。。。。
一、 屬性簽名(ATTRIBUTE SIGNATURES)
有時(shí)候變量也可以作為屬性存儲(chǔ)在幾何體中,在后面的數(shù)據(jù)流中你可以訪(fǎng)問(wèn)到它們。你經(jīng)常想訪(fǎng)問(wèn)一些跨語(yǔ)境的變量。但是這些變量的自身簽名不允許它們跨語(yǔ)境使用。我們可以使用Attribute Create節(jié)點(diǎn)創(chuàng)建我們自己的簽名,來(lái)處理這種情況。
我們也可以使用一些調(diào)用指定屬性的函數(shù):point (),detail(),vertex(),prim()。
二、 屬性類(lèi)(ATTRIBUTE CLASS)
屬性簽名可以區(qū)分屬性在不同語(yǔ)境是否可以使用,但我們還需要思考一下屬性類(lèi)。
屬性簽名是不可見(jiàn)的;
屬性類(lèi)可以通過(guò)在節(jié)點(diǎn)中中鍵單擊看到;
類(lèi)包括point,primitive,vertex,和detail;
我們可以使用AttribPromote節(jié)點(diǎn)把一個(gè)類(lèi)轉(zhuǎn)化為另一個(gè)類(lèi);
需找?guī)缀误w中最大或最小的值時(shí),我們一般會(huì)用detail類(lèi)的屬性。
三、 DOP中的自定義屬性
我們不但可以使用Attribute Create來(lái)給已經(jīng)存在的屬性創(chuàng)建正確的屬性簽名,Attribute Create也可以用于創(chuàng)建自定義屬性。
已經(jīng)存在的屬性被使用是因?yàn)楂@取方便,當(dāng)然,我們也可以創(chuàng)建新的屬性。通常一個(gè)自定義屬性被用到是因?yàn)橐呀?jīng)存在的屬性只能用于指定的屬性,不能用于其他用途。
有時(shí)在動(dòng)力學(xué)中創(chuàng)建新的屬性,會(huì)方便我們更靈活的控制。動(dòng)力學(xué)解算器中的很多變量都可以調(diào)用自定義屬性。
四、 VOPS中的自定義屬性
跟動(dòng)力學(xué)一樣,在VOPs中許多參數(shù)也可以使用自定義屬性。VOPs(VEX Operators)是一種在Houdini中處理幾何體的很強(qiáng)大的方法,在做幾何體置換貼圖,或創(chuàng)建自定義材質(zhì)時(shí)很有用。
變量在VOPs中很容易獲取,使用變量名就可以,比如:Alpha,而不需要在變量前加$符號(hào),比如$CA。
VOPs中的參數(shù)通常用于獲取屬性來(lái)創(chuàng)建shader。導(dǎo)入的屬性可以在VOPSOPs中使用,來(lái)獲得幾何體的屬性。同樣你也可以在VOPSOP中創(chuàng)建屬性,用于其他地方。
五、 自定義屬性
自定義屬性通常用來(lái)輔助其他效果,比如:縮放噪波,或者對(duì)融合變形的效果進(jìn)行調(diào)節(jié),或者觸發(fā)粒子的發(fā)射。

一、函數(shù)
函數(shù)是表達(dá)式的核心。它們是一小段文本,告訴Houdini根據(jù)你提供的參數(shù),執(zhí)行不同的任務(wù)。函數(shù)執(zhí)行的任務(wù)有可能是數(shù)據(jù)傳遞,數(shù)據(jù)修改,或者數(shù)學(xué)運(yùn)算。
你可以在Houdini的Textport中使用exhelp命令查看函數(shù),或者在幫助中:
www.sidefx.com/docs/current/expressions
如果上面的函數(shù)沒(méi)有你想要的,你也可以創(chuàng)建自己的函數(shù),當(dāng)你創(chuàng)建自己的函數(shù)時(shí),你可以使用Python來(lái)實(shí)現(xiàn)它。
看到這么多的函數(shù)需要學(xué)可能會(huì)嚇到你,但只有一小部分你會(huì)經(jīng)常反復(fù)的使用,學(xué)函數(shù)的一個(gè)很好的方法就是,拿出幾天時(shí)間,研究研究它們的功能。
有一些函數(shù)是相關(guān)的,同時(shí)研究這些相關(guān)的函數(shù)是一個(gè)很好的方法。函數(shù)分為不同的類(lèi),比如:有34個(gè)用于DOP的函數(shù)。如果你經(jīng)常使用DOPs,學(xué)學(xué)這些函數(shù),或想想這些函數(shù)用于什么用途,是一件很聰明的事情。
二、函數(shù)示例
dopobjscreatedby() 從DOPNET中取出物體
opinputpath() 獲得連接到當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)的名字
ch() 獲取某一個(gè)通道的值
constant(),bezier() 在關(guān)鍵幀動(dòng)畫(huà)中使用
trunc() 通過(guò)把小數(shù)部分截取掉,獲得整數(shù)部分
padzero() 可以添加幀的占位符,如果$F3(三個(gè)占位符)還不夠
fi(),fi01() 輸入一個(gè)數(shù)據(jù),會(huì)把它轉(zhuǎn)化為指定的范圍內(nèi)
rand() 產(chǎn)生隨機(jī)數(shù)值
if() 用于數(shù)值間復(fù)雜的比較
point(),vertex(), prim() 用于返回指定節(jié)點(diǎn)的屬性
distance() 用于計(jì)算節(jié)點(diǎn)間的距離
三、其他常用的函數(shù)
一定要看下面的函數(shù),因?yàn)樗鼈兒苡杏?。有了下面的函?shù),結(jié)合我們上面已經(jīng)用到的函數(shù),幾乎沒(méi)有達(dá)不到的。
1、 數(shù)據(jù)操作
abs() 返回絕對(duì)值。比如:abs(-7)=7
clamp() 防止數(shù)據(jù)超出指定范圍
ceil() 向上舍入取整
flor() 向下舍入取整
frac() 返回?cái)?shù)據(jù)中的小數(shù)部分,比如:frac(9.7)=0.7
2、 數(shù)學(xué)運(yùn)算
pow() 做冪運(yùn)算,比如:pow(2,5) = 2*2*2*2*2。
length() 返回矢量的長(zhǎng)度,比如length($VX,$VY,$VZ) = speed(速度)
cos(), sin(), tan() 余弦,正弦,正切函數(shù)。比如 sin($F)
noise(), turb() 用來(lái)產(chǎn)生噪波
3、 數(shù)據(jù)的獲取
pic() 根據(jù)UV,從一個(gè)合成節(jié)點(diǎn)中返回一個(gè)顏色值,比如 pic(“/img/img1/color1”, $MAPU, $MAPV, D_CLUM) 會(huì)返回圖像的明度信息。
opfullpath() 返回節(jié)點(diǎn)的完整路徑,比如:opfullpath(“../node”) = /obj/object1/node
chs() 返回函數(shù)中一個(gè)通道中的字符串
chramp() 返回ramp中的一個(gè)指定通道
bbox() 返回一個(gè)節(jié)點(diǎn)的邊界盒子的最大值、最小值或大小。比如 bbox(“../node”, D_YSIZE)
centroid() 返回給定節(jié)點(diǎn)的中心,比如centroid(“../node”, D_Y)
npoints() 返回指定節(jié)點(diǎn)中點(diǎn)的個(gè)數(shù),比如:npoints(“../node”)
4、 強(qiáng)制執(zhí)行
eval() 用于這種情況,當(dāng)一個(gè)變量它本身包含一個(gè)表達(dá)式,你需要運(yùn)行表達(dá)式,來(lái)獲取變量,比如:
set foo = 1+2 `eval($foo)`
這個(gè)我在Hscript Textport中輸入上面代碼,運(yùn)行了一下,
然后輸入 :
echo $foo
運(yùn)行的結(jié)果為:1+2 3
希望能幫助你們理解。
5、Copy Stamping
stamp() 最好用的函數(shù)之一。在使用copy節(jié)點(diǎn)后,用于對(duì)每個(gè)點(diǎn)執(zhí)行不同的任務(wù)。

根據(jù)你想要實(shí)現(xiàn)的功能,有時(shí)你會(huì)想要使用Detail屬性來(lái)創(chuàng)建字符串,之后我們可以把它作為表達(dá)式。這是一個(gè)很有用的半自動(dòng)的方法,否則可能會(huì)很難達(dá)到效果。
一個(gè)很好的例子就是選擇視圖中的粒子,然后根據(jù)存在的$ID屬性來(lái)刪除它們。


Houdini表達(dá)式學(xué)習(xí)筆記的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
石楼县| 清原| 淮安市| 宁夏| 手机| 石嘴山市| 茶陵县| 汉寿县| 永仁县| 金昌市| 眉山市| 许昌县| 灵石县| 前郭尔| 潜山县| 南宫市| 永胜县| 宜黄县| 壶关县| 改则县| 建昌县| 阿图什市| 鄂尔多斯市| 自治县| 曲靖市| 岳阳市| 凌海市| 韩城市| 郎溪县| 桃园县| 康乐县| 丽江市| 锦州市| 苏州市| 大竹县| 商都县| 古丈县| 吴忠市| 清新县| 庆城县| 忻城县|