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

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

HExp12-2|Houdini Expression functions全集之向量矩陣類:

2023-06-05 21:12 作者:RMT的學(xué)習(xí)筆記  | 我要投稿

RMT對向量矩陣的理解:數(shù)字成組為向量(數(shù)組),向量成組為矩陣(行列式)。

1、創(chuàng)建向量

創(chuàng)建一個(gè)向量的幾種方法
  • vector vector (string pattern)

    由一個(gè)數(shù)組構(gòu)成為向量。該變量是方括號包括數(shù)字形式的字符串,例如:

    > vector v = vector("[1,2,3,4,5]")

    > float? f = v[0]; # f is 1(調(diào)取向量中的第一個(gè)元素值)

  • vector?vector3 (float x,?float?y,?float?z)

    將三個(gè)值轉(zhuǎn)換為三分量向量。該變量是三個(gè)數(shù)

  • vector?vector4?(float?x,?float?y,?float?z,?float?w)

    將四個(gè)值轉(zhuǎn)換為四分量向量。該變量是四個(gè)數(shù)

  • vector?vset (float size,?float?value)

    創(chuàng)建一個(gè)向量,<size>為向量的維數(shù),<value>為每一維的值,也就意味著該向量的各維值相同。

2、向量計(jì)算

  • float?origin?(string?obj1,?string?obj2,?string?constant_type)

    獲取一個(gè)值,該值為將obj1轉(zhuǎn)換為obj2所需的TX、TY、TZ、RX、RY、RZ、SX、SY、SZ值中的一個(gè),具體取決于類型參數(shù)(TX,TY,TZ,RX,RY,RZ,SX,SY或SZ)。如果為obj1或obj2指定了空字符串,則表示為零值,計(jì)算方式如下所示:

    (obj2-obj1)/(0-obj1)/(obj2-0)

  • float?originoffset?(string?obj1,?vector?pos1,?string?obj2,?vector?pos2,?string?constant_type)

    獲取一個(gè)值,該值為將對象obj1空間中的點(diǎn)pos1轉(zhuǎn)換為對象obj2空間中的點(diǎn)pos2所需的TX、TY、TZ、RX、RY、RZ值之一,具體取決于類型參數(shù)(TX、TY,TZ,RX、RY或RZ)。這也可以被認(rèn)為是obj2中pos2相對于obj1中pos1的位置。

  • vector vorigin (string obj1, string obj2)

    計(jì)算對象2相對于對象1的平移量和旋轉(zhuǎn)量。

  • vector vtorigin (string obj1, string obj2)

    計(jì)算對象2相對于對象1的平移量。

  • vector?vrorigin?(string?obj1,?string?obj2)

    返回一個(gè)向量,該向量包含將obj1轉(zhuǎn)換為obj2空間所需的旋轉(zhuǎn)。這也可以被認(rèn)為是obj2相對于obj1的方向。

  • float?vsize?(vector?vec)

    返回向量的維數(shù)。即一個(gè)數(shù)組的元素個(gè)數(shù)。

  • vector?vscale?(vector?vec,?float?scale)

    將向量的各維值乘以一個(gè)數(shù),即縮放該向量。

  • float vlength (vector vec)

    計(jì)算向量的長度。A.K.A. sqrt (dot (vec, vec))。

  • float vlength2 (vector vec)

    計(jì)算向量長度的平方。A.K.A.?dot(vec, vec)。

  • float vangle (vector v0, vector v1)

    計(jì)算兩個(gè)向量夾角的度數(shù)。A.K.A.?acos (dot (normalize(a),normalize(b)))。

  • float boneangle (string bone1, string bone2)

    返回兩個(gè)骨骼對象之間關(guān)節(jié)處的夾角度數(shù)。

  • float dot (vector v0, vector v1)

    向量點(diǎn)乘。返回?cái)?shù)值,值為|v0||v1|cos<v0,v1>,也等于v0 [0]* v1 [0]+ v0 [1]* v1 [1]+ v0 [2]* v1 [2]。

  • vector cross (vector v1, vector v2)

    向量叉乘。返回向量,長度為|v1||v2|sin<v1,v2>,也有|cross|^2= |v1|^2*|v2|^2- dot^2,方向與v1,v2所在平面垂直(遵循右手法則)。

  • float normal (string surface_node, float prim_num, float u, float v, float index)

    返回曲面物體指定面與UV坐標(biāo)下法線向量的某一維的值。u和v是單位值,定義在[0,1]區(qū)間內(nèi)。如果物體是mesh類型,則u和v是根據(jù)其行數(shù)和列數(shù)定義的。index取值如下:

    0?——?X

    1?——?Y

    2?——?Z

  • vector normalize (vector v)

    對向量進(jìn)行規(guī)格化,即轉(zhuǎn)化為單位向量,實(shí)際上就是將各維的數(shù)值等比縮小至0~1之間。

3、建立矩陣帝國

  • matrix?identity (float size)

    創(chuàng)建一個(gè)單位矩陣。<size>為行列數(shù),行數(shù)與列數(shù)相同。

  • matrix matrix (string pattern)

    由一組數(shù)組構(gòu)成為矩陣。<pattern>是一組方括號包括數(shù)字形式的字符串再由方括號包括而成,示例如下:

    > matrix m = matrix("[[1,2,3][2,3,5][-3,2,-3]]")

    > vector v = m[0];? ? # v is [1,2,3](調(diào)取矩陣中的第一組數(shù)組)

    > float? f = m[0][2]; # f is 3(調(diào)取矩陣中第一組數(shù)組中的第三個(gè)數(shù))

  • matrix translate (float tx,?float ty,?float? tz)

    獲取X、Y和Z平移值,并返回平移矩陣。平移矩陣是4*4矩陣,存儲物體的平移信息。

  • matrix rotate?(float angle,?string axis)

    從一個(gè)角度和一個(gè)軸返回一個(gè)4×4的旋轉(zhuǎn)矩陣。axis為X/Y/Z軸,以"X"、"Y"、"Z"形式填寫。旋轉(zhuǎn)矩陣是4*4矩陣,存儲物體的旋轉(zhuǎn)信息。

  • matrix?rotaxis (float angle,?vector axisv)

    從一個(gè)角度和一個(gè)向量返回一個(gè)4×4的旋轉(zhuǎn)矩陣。該向量代表旋轉(zhuǎn)軸的任一性,不像rotate中那樣僅以坐標(biāo)軸為旋轉(zhuǎn)軸。<angle>以度為單位,圍繞3*3向量<axisv>指定的軸旋轉(zhuǎn)一個(gè)角度。旋轉(zhuǎn)矩陣應(yīng)該出現(xiàn)在向量矩陣乘法的右側(cè)。例如,要將向量[1,2,3]繞Y軸旋轉(zhuǎn)10度,請執(zhí)行以下操作:

    > vector("[1, 2, 3]") * rotaxis(10, "[0, 1, 0]")

  • matrix?scale (float sx, float sy, float sz)

    獲取三個(gè)縮放值并返回一個(gè)縮放矩陣??s放矩陣是4*4矩陣,存儲物體的縮放信息。

4、矩陣計(jì)算

  • float mcols (matrix mat)

    返回矩陣中的列數(shù)。

  • float?mrows? (matrix?mat)

    返回矩陣中的行數(shù)。

  • matrix?mzero (matrix?mat)

    返回一個(gè)所有值都設(shè)置為0的矩陣。即將輸入的矩陣轉(zhuǎn)化為0矩陣。

  • matrix morient (vector zaxis,?vector yaxis)

    根據(jù)給定的z、y軸獲取新的坐標(biāo)軸??梢岳斫鉃?span id="s0sssss00s" class="color-purple-02">由單位矩陣經(jīng)過計(jì)算獲取一個(gè)新的3*3矩陣,該矩陣由三個(gè)行向量組成且兩兩垂直,分別表示XYZ軸。<zaxis>與<yaxis>叉乘獲得x軸,若<zaxis>與<yaxis>不垂直,則結(jié)果會自動調(diào)整<yaxis>的方向,且最終各向量經(jīng)規(guī)格化。

  • matrix mlookat (vector v1, vector v2)? ? ? ??

    獲取一個(gè)3*3旋轉(zhuǎn)矩陣??梢岳斫鉃?span id="s0sssss00s" class="color-purple-02 font-size-16">單位矩陣的Z軸指定為<v1>-<v2>從而構(gòu)成新的坐標(biāo)軸(三個(gè)軸兩兩垂直且規(guī)格化)。

  • matrix?mlookatup?(vector?v1, vector?v2, vector?upv)

    獲取一個(gè)3*3旋轉(zhuǎn)矩陣??梢岳斫鉃?span id="s0sssss00s" class="color-purple-02 font-size-16">單位矩陣的Z軸指定為<v1>-<v2>,Y軸指定為<upv>從而構(gòu)成新的坐標(biāo)軸(三個(gè)軸兩兩垂直且規(guī)格化)。

  • vector?objlookat (string?base_node, string?target_node, vector?upv)

    計(jì)算視點(diǎn)從一個(gè)對象到另一個(gè)對象的旋轉(zhuǎn)矢量。

  • matrix?mobjlookat?(string?base_node,?string target_node,?vector upv)

    獲取從一個(gè)對象到另一個(gè)對象的變換矩陣。該矩陣為4*4矩陣,計(jì)算方式同mlookatup。

  • matrix?dihedral (vector?v0,?vector?v1)

    返回一個(gè)旋轉(zhuǎn)矩陣,該3*3矩陣將把向量v0旋轉(zhuǎn)到向量v1(v0*dihedral=v1)。

  • float?determinant (matrix?mat)

    返回矩陣的行列式。說明:這只對4×4或3×3矩陣有效。如果矩陣大于4×4,將返回4×4的行列式。如果矩陣小于3×3,則在計(jì)算行列式之前,矩陣將被轉(zhuǎn)換為3×3。向上轉(zhuǎn)換的結(jié)果不能得到保證。

5、矩陣轉(zhuǎn)換

  • vector matrixtoquat (matrix m)

    將旋轉(zhuǎn)矩陣轉(zhuǎn)換為四元數(shù)。

  • matrix?quattomatrix (vector?q)

    將四元數(shù)轉(zhuǎn)換為3×3的旋轉(zhuǎn)矩陣。

  • matrix?transpose (matrix?mat)

    返回轉(zhuǎn)置矩陣,即行列互換。

  • matrix?invert (matrix?mat)

    返回逆矩陣。說明:只有當(dāng)矩陣是4×4或3×3矩陣時(shí),這才有效。如果矩陣大于4×4,則矩陣將在反轉(zhuǎn)之前轉(zhuǎn)換為4×4矩陣。如果矩陣小于3×3,則在反轉(zhuǎn)之前,矩陣將被放大為3×3矩陣。將矩陣放大到3×3的結(jié)果是不能保證的。

  • float explodematrix (matrix mat, string trs, string xyz, string component)?

    可以理解為解讀一個(gè)矩陣:她是由單位矩陣如何變換而來?;蛘哒f:將3×3或4×4的單位矩陣沿著XYZ軸進(jìn)行平移、旋轉(zhuǎn)、縮放獲得指定的矩陣。該表達(dá)式返回平移、旋轉(zhuǎn)、縮放的值,該值相當(dāng)于transform節(jié)點(diǎn)里的Translate、Rotate、Scale值。3×3矩陣無平移信息。<mat>是指定的矩陣,<trs>和<xyz>給出了變換的模式,在trs中,t表示平移、r旋轉(zhuǎn)和s縮放,xyz是指旋轉(zhuǎn)的軸,相當(dāng)于transform節(jié)點(diǎn)里的Transform Order,<component>是一個(gè)字符串,用于描述要提取的通道,它是[trs]與[xyz]的組合(例如“tx”或“ry”)。一個(gè)簡單的示例如下:

    > explodematrix(identity(3)*2, "RST", "XYZ", "SZ")

    (返回值為2,表示將單位矩陣縮放2倍獲得指定的矩陣)

  • float?explodematrixp?(matrix?mat,?vector p,?string?trs,?string?xyz,?string?component)

    同“explodematrix”,額外指定中心點(diǎn)位置<p>,該值相當(dāng)于transform節(jié)點(diǎn)里的Pivot Translate。如下示例標(biāo)明了各項(xiàng)的含義:

    > explodematrixp (optransform ("/obj/geo1"),?vector3 (ch("/obj/geo1/px"),ch ("/obj/geo1/py"), ch ("/obj/geo1/pz")), "RST", "XYZ", "RZ")

  • float?explodematrixpr?(matrix?mat,?vector?p,?vector?pr,?string?trs,?string?xyz,?string?component)

    同“explodematrix”,額外指定中心點(diǎn)位置<p>和中心點(diǎn)旋轉(zhuǎn)<pr>,該值相當(dāng)于transform節(jié)點(diǎn)里的Pivot?Translate和Pivot Rotate。Pivot?Translate和Pivot Rotate指定了對象的中心點(diǎn)和相對坐標(biāo),使得對象不再以世界坐標(biāo)進(jìn)行變換。如下示例標(biāo)明了各項(xiàng)的含義:

    > explodematrixpr (optransform ("/obj/geo1"),vector3 (ch ("/obj/geo1/px"), ch ("/obj/geo1/py"), ch ("/obj/geo1/pz")),vector3 (ch ("/obj/geo1/prx"), ch ("/obj/geo1"/pry), ch ("/obj/geo1/prz")), "RST", "XYZ", "RZ")

RMT血書:本章涉及大量高等代數(shù)內(nèi)容,關(guān)于矩陣、四元數(shù)、歐拉旋轉(zhuǎn)等概念,up主專門拜訪了B站上各路大神的講解視頻,包括清華大學(xué)的課堂教學(xué)視頻,老師講解生動有趣,深感受益匪淺,然智力有限,只得皮毛,實(shí)難領(lǐng)會其中深意,望各位讀者諒解。up主會再接再厲,逐步將其消化并將收獲分享給大家,一起享受知識得樂趣。


HExp12-2|Houdini Expression functions全集之向量矩陣類:的評論 (共 條)

分享到微博請遵守國家法律
清镇市| 酒泉市| 黄山市| 广东省| 江西省| 大厂| 东至县| 东辽县| 宁都县| 芷江| 呼玛县| 宜春市| 区。| 夹江县| 灵台县| 裕民县| 视频| 岳西县| 嘉义县| 灌云县| 楚雄市| 大名县| 南溪县| 定边县| 黄浦区| 伊金霍洛旗| 云安县| 防城港市| 达日县| 探索| 平顺县| 耒阳市| 安多县| 凤庆县| 泸定县| 沙坪坝区| 丰宁| 陆良县| 湘潭市| 安庆市| 甘德县|