tyFlow Script運算子API中文翻譯文件

Jom發表於2024-12-05

tyFlow中的Script運算子使用 C# 提供對粒子的高階控制。但官方網頁文件並不提供詳細API細節,這是一份自用的翻譯文件,方便大家查閱(版本1.120)

/*
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
//////////                                   //////////
//////////   指令碼運算子文件                   //////////                 
//////////                                   //////////
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////

///////////// 內建鍵盤快捷鍵 /////////////                 
//
// [CTRL+E]                 = 評估指令碼
//
/////////////////////////////////////////

//////////////// 模擬屬性 ////////////////                  
//
// [tyFlow] tf                  = 當前tyFlow
// [INode]  node                = 當前tyFlow的場景節點
//
// [tfObj]  obj[XXX]            = 在操作員可指令碼化物件列表框中單獨訪問物件(例如:'obj001')
// [List]   objects             = 操作員列表框中所有物件的List<tfObj>(例如:'objects[0]')
//
// [tfTex]  tex[XXX]            = 在操作員可指令碼化紋理對映列表框中單獨訪問紋理對映(例如:'tex001')
// [List]   texmaps             = 操作員列表框中所有紋理對映的List<tfTex>(例如:'texmaps[0]')
//
// [float]  f                   = 當前幀
// [float]  frameStep           = 當前時間步(幀)
// [int]    t                   = 當前刻度
// [int]    tickStep            = 當前時間步(刻度)
// [int]    ticksPerFrame       = 每幀刻度數
//
// [int]    eventParticleCount      = 指令碼執行前該事件中的粒子數量
// [int]    totalParticleCount      = 指令碼執行前該模擬中的粒子總數,不包括已刪除的粒子
// [int]    rawTotalParticleCount   = 指令碼執行前該模擬中的粒子總數,包括已刪除的粒子
// [int]    eventTerrainCount       = 指令碼執行前該事件中的地形數量
//
// [List<int>] GetEventParticles(string eventName) = 獲取具有給定名稱(名稱不區分大小寫)的事件的粒子的模擬索引列表
//
///////////////////////////////////////////////////////

//////////////////// 雜項功能 ///////////////////
//
// [float]   GetFloat(string name)                          = 根據名稱(在幀0時)獲取'Floats'卷展開中的浮點值
// [float]   GetFloat(string name, float frame)             = 根據名稱(在指定幀)獲取'Floats'卷展開中的浮點值
//
// [float]   Lerp(float f1, float f2, float interp)         = 在兩個數值之間線性插值
// [Point3]  Lerp(Point3 f1, Point3 f2, float interp)       = 在兩個向量之間線性插值
// [Matrix3] Lerp(Matrix3 tm1, Matrix3 tm2, float interp)   = 在兩個矩陣之間線性插值
// [Quat]    Lerp(Quat tm1, Quat tm2, float interp)         = 在兩個四元數之間線性插值
//
// [Matrix3] Inverse(Matrix3 m)                             = 獲取逆矩陣
// [Matrix3] Matrix3.MatrixFromVector(Point3 v)             = 從向量生成正交矩陣,其中向量將是上軸
//
// [float]   Remap(float f1, float inMin, float inMax, float outMin, float outMax) = 在'in'範圍內重新對映浮點值到'out'範圍
//
// [void]    Print(object value)                            = 將值列印到maxscript監聽器(每步最多100次列印)
// [void]    PrintAll(object value)                         = 將值列印到maxscript監聽器(無限次列印/步 - 可能導致長時間超時!)
//
// [void]    DrawMarker(Point3 pos, int r, int g, int b)                = 在視口中的位置繪製彩色(rgb)標記(必須在[simulationStep]中呼叫)
// [void]    DrawLine(Point3 pos1, Point3 pos2, int r, int g, int b)    = 在視口中的位置繪製彩色(rgb)線(必須在[simulationStep]中呼叫)
// [void]    DrawTM(Matrix3 tm, float size)                             = 在視口中繪製三色Matrix3軸(必須在[simulationStep]中呼叫)
//
///////////////////////////////////////////////////////

////////////// [tyFlow] 類屬性 ////////////// 
//
// [void]    SetThreaded(bool val)          = 設定指令碼是否多執行緒(SimulationStepThreaded將由多個執行緒評估)
// [void]    SetThreadedIterations(int n)   = 設定SimulationStepThreaded將從頭到尾重新評估的次數
// [int]     GetThreadedIteration()         = 獲取正在處理的當前迭代(從SimulationStepThreaded內部呼叫)
//
// [int]     GetSimIndex(int eInx)      = 獲取當前事件中粒子的模擬索引
// [int]     GetSimIndexFromID(int ID)  = 根據其ID獲取粒子的模擬索引 [-1 == 已刪除]
//
// [int]     CopyParticle(int sInx)     = 複製模擬索引的粒子並獲取新粒子的事件索引 [警告:非執行緒安全!]
// [int]     NewParticle()              = 生成新粒子並獲取其事件索引 [警告:非執行緒安全!]
// [int]     NewParticles()             = 生成指定數量的新粒子並獲取第一個粒子的事件索引(比多次呼叫NewParticle更快)[警告:非執行緒安全!]
// [void]    DeleteParticle(int sInx)   = 透過模擬索引刪除粒子
//
// [void]    TestTrue(int eInx)         = 設定事件粒子的測試條件為真
// [void]    OutputParticle(int eInx)   = 等同於TestTrue(eInx)
//
// [int]     GetID(int sInx)            = 從模擬索引獲取粒子ID
// [int]     GetParentID(int sInx)      = 從模擬索引獲取父粒子ID
//
// [float]   GetAge(int sInx)           = 從模擬索引獲取粒子年齡(以幀為單位)
// [int]     GetAgeTicks(int sInx)      = 從模擬索引獲取粒子年齡(以刻度為單位)
// [float]   GetEventAge(int sInx)      = 從模擬索引獲取粒子事件年齡(以幀為單位)
// [int]     GetEventAgeTicks(int sInx) = 從模擬索引獲取粒子事件年齡(以刻度為單位)
//
// [Point3]  GetPos(int sInx)               = 從模擬索引獲取粒子位置
// [Quat]    GetRot(int sInx)               = 從模擬索引獲取粒子旋轉(四元數)值
// [Point3]  GetScale(int sInx)             = 從模擬索引獲取粒子縮放
// [Matrix3] GetTM(int sInx)                = 從模擬索引獲取粒子變換
// [Point3]  GetSpin(int sInx)              = 從模擬索引獲取粒子自旋
// [Point3]  GetVel(int sInx)               = 從模擬索引獲取粒子速度
// [int]     GetSimulationGroups(int sInx)  = 獲取粒子模擬組標誌(1 << [0-15])
// [int]     GetExportGroups(int sInx)      = 獲取粒子匯出組標誌(1 << [0-15])
// [int]     GetMatID(int sInx)             = 從模擬索引獲取粒子材料ID [範圍1-99] [0 == 未分配]
// [Point3]  GetUVW(int sInx, int channel)  = 從模擬索引和對映通道索引獲取粒子對映UVW [範圍0-99]
// [float]   GetMass(int sInx)              = 獲取粒子繫結質量
// [float]   GetRadius(int sInx)            = 從模擬索引獲取粒子半徑
// [float]   GetVolume(int sInx)            = 從模擬索引獲取粒子體積
//
// [tfMesh]  GetMesh(int sInx)                  = 獲取粒子形狀網格的tfMesh包裝器
// [void]    SetMesh(int sInx, tfMesh mesh)     = 從模擬索引和tfMesh設定粒子網格
// [int]     GetMeshID(int sInx)                = 獲取粒子形狀網格的ID
// [void]    SetMeshID(int sInx, int meshID)    = 設定粒子形狀網格ID
//
// [void]    SetPos(int sInx, Point3 pos)               = 從模擬索引設定粒子位置
// [void]    SetRot(int sInx, Quat rot)                 = 從模擬索引設定粒子旋轉(四元數)值
// [void]    SetScale(int sInx, Point3 scale)           = 從模擬索引設定粒子縮放
// [void]    SetTM(int sInx, Matrix3 tm)                = 從模擬索引設定粒子變換
// [void]    SetSpin(int sInx, Point3 spin)             = 從模擬索引設定粒子自旋
// [void]    SetVel(int sInx, Point3 vel)               = 從模擬索引設定粒子速度
// [void]    SetSimulationGroups(int sInx, int flags)   = 設定粒子模擬組標誌(1 << [0-15])
// [void]    SetExportGroups(int sInx, int flags)       = 設定粒子匯出組標誌(1 << [0-15])
// [void]    SetMatID(int sInx, int matID)              = 從模擬索引設定粒子材料ID [範圍1-99] [0 == 取消分配]
// [void]    SetUVW(int sInx, int channel, Point3 uvw)  = 從模擬索引和對映通道設定粒子對映UVW [範圍0-99]
// [void]    SetMass(int sInx, float mass)              = 從模擬索引設定粒子繫結質量
//
// [float]   GetCustomFloat(int sInx, string channel)   = 從模擬索引獲取粒子自定義浮點數
// [Point3]  GetCustomVector(int sInx, string channel)  = 從模擬索引獲取粒子自定義向量
// [Matrix3] GetCustomTM(int sInx, string channel)      = 從模擬索引獲取粒子自定義變換
//
// [void]    SetCustomFloat(int sInx, string channel, float val)        = 從模擬索引設定粒子自定義浮點數
// [void]    SetCustomVector(int sInx, string channel, Point3 val)      = 從模擬索引設定粒子自定義向量
// [void]    SetCustomTM(int sInx, string channel, Matrix3 val)     = 從模擬索引設定粒子自定義變換
//
// [float]   GetNoise(float x, float y, float z)                                = 從座標獲取隨機噪聲
// [Point3]  GetCurlNoise(int time, Point3 pos, float frequency, float scale, float phase)  = 從座標獲取捲曲噪聲
// [Point3]  GetTurbulence(int time, Point3 pos, float frequency, float scale, float lacunarity, int octaves, float phase)  = 從座標獲取湍流噪聲
//
// [void]    SetSeed(int sInx, int seed)                    = 從模擬索引設定粒子隨機種子
// [int]     GetRandInt(int sInx, int min, int max)         = 從模擬粒子獲取隨機整數 [>= min && < max]
// [float]   GetRandFloat(int sInx, float min, float max)   = 從模擬粒子獲取隨機浮點數 [>= min && <= max]
// [Point3]  GetRandVector(int sInx)                        = 從模擬粒子獲取單位球上的隨機向量
//
// [void]           SetBindsActive(int sInx, bool val)      = 設定粒子是否受其繫結影響
// [List<tfBind>]   GetBinds(int sInx)                      = 獲取粒子的繫結 [警告:非執行緒安全!]
// [void]           SetBinds(List<tfBind> binds)            = 對使用GetBinds檢索的粒子繫結應用更改 [警告:非執行緒安全!]
// [void]           NewBind(int sInx1, int sInx2, int id, float length, float stiffness) = 在它們的模擬索引之間建立兩個粒子的新繫結 [警告:非執行緒安全!]
//
// [void]       PrepNeighbors(bool addVelocities)                                   = 構建用於進行鄰居搜尋的資料結構,可選擇整合速度。必須在任何呼叫"GetNeighbors"之前呼叫此方法 [警告:在粒子迴圈外呼叫!]
// [void]       PrepNeighbors(bool addVelocities, List<int> neighborCandidates)     = 與上述'PrepNeighbors'相同,但您可以指定定義將新增到搜尋結構中的粒子的模擬索引列表
// [void]       PrepNeighbors(List<Point3> neighborPositions)                       = 與上述'PrepNeighbors'相同,但您可以指定定義將新增到搜尋結構中的點的位置列表
// [List<int>]  GetNeighbors(Point3 pos, float radius)                              = 獲取位置半徑內的粒子的模擬索引
// [int]        GetNearestNeighbor(Point3 pos, int excludeSInx)                     = 獲取最近的粒子的模擬索引,可以指定一個模擬索引在搜尋中被忽略(-1表示任何索引都可以)
//
// [void]   UpdatePhysXTM(int sInx)                                                 = 更新現有粒子的PhysX變換【警告:非執行緒安全!】
// [bool]   PhysXOverlapTest(int sInx1, Matrix3 tm1, int sInx2, Matrix3 tm2)        = 如果兩個PhysX粒子殼體重疊,返回true,根據模擬索引和變換
// [bool]   PhysXSweepTest(int sInx, Matrix3 tm, Point3 sweepVec, bool includeSelf) = 如果一個PhysX粒子殼體與另一個PhysX粒子重疊,返回true,根據模擬索引、變換和掃描向量【includeSelf == 掃描測試將包括查詢粒子】
//
// [tfObj]  GetObject(string name)  = 透過名稱獲取場景物件的tfObj包裝器
// [tfObj]  GetObject(int handle)   = 透過控制代碼獲取場景物件的tfObj包裝器
//
// [tfTerrain] GetTerrain(string name)  = 透過名稱獲取現有的tfTerrain
// [tfTerrain] GetTerrain(int inx)      = 透過索引獲取現有的tfTerrain
//
///////////////////////////////////////////////////////

///////////// [tfTex] 類屬性 ////////////////
//
// [float]   GetMonoVal(int t, Point3 uvw)              = 根據時間(以ticks為單位)和UVW座標(範圍:0.0 - 1.0)獲取紋理單色值
// [Point3]  GetColorVal(int t, Point3 uvw, bool gamma) = 根據時間(以ticks為單位)和UVW座標(範圍:0.0 - 1.0)獲取紋理顏色值(可選,伽馬校正)
//
///////////////////////////////////////////////////////

///////////// [tfBounds] 類屬性 ////////////////
//
// [Point3]  min    = 邊界框的最小範圍
// [Point3]  max    = 邊界框的最大範圍
//
///////////////////////////////////////////////////////

///////////// [tfMesh] 類屬性 ////////////////
//
// [int]     GetNumFaces()                          = 獲取tfObj中的網格面數
// [int]     GetNumVerts()                          = 獲取tfObj中的網格頂點數
// 
// [tfFace]  GetFace(int inx)                       = 從索引獲取面
// [Point3]  GetVert(int inx)                       = 從索引獲取頂點位置
//
// [Point3]  GetNormal(int vInx)                    = 從頂點索引獲取網格上的法線
// [Point3]  GetVel(int vInx)                       = 從頂點索引獲取網格上的速度
// [Point3]  GetUVW(int vInx, int channel)          = 從頂點索引和對映通道獲取網格上的UVW
//
// [Point3] GetRandPointOnMesh(int seed)            = 使用種子獲取網格上的隨機點
// [tfFace] GetRandFaceOnMesh(int seed)             = 使用種子獲取網格上的隨機面
// [int]    GetRandVertOnMesh(int seed)             = 使用種子獲取網格上的隨機頂點
//
// [tfBounds]   GetBounds()                         = 獲取網格的區域性邊界
// [Point3]     GetPosOffset()                      = 獲取網格的區域性樞軸位置偏移
//
///////////////////////////////////////////////////////

///////////// [tfObj] 類屬性 ////////////////
// 
// [tfMesh]  GetMesh()                              = 獲取tfObj的網格
//
// [Matrix3] GetTM()                                = 獲取tfObj的世界空間變換
// [Point3]  GetPos()                               = 獲取tfObj的世界空間位置
// [Quat]    GetRot()                               = 獲取tfObj的世界空間旋轉(四元數)
// [Point3]  GetScale()                             = 獲取tfObj的世界空間縮放
//
// [tfFace]  GetClosestFace(Point3 p)               = 從點獲取網格上最近的面(混合)
// [tfFace]  GetClosestFaceAccurate(Point3 p)       = 從點獲取網格上最近的面(精確)
// [int]     GetClosestVert(Point3 p)               = 從點獲取網格上最近的頂點索引
//
// [Point3]  GetClosestNormal(Point3 p)             = 從點獲取網格上最近的法線
// [Point3]  GetClosestPoint(Point3 p)              = 從點獲取網格上最近的點(混合)
// [Point3]  GetClosestPointAccurate(Point3 p)      = 從點獲取網格上最近的點(精確)
// [Point3]  GetClosestUVW(Point3 p, int channel)   = 從點和對映通道獲取網格上最近的UVW座標
// [Point3]  GetClosestVel(Point3 p)                = 從點獲取網格上最近的速度
// [Point3]  GetClosestBary(Point3 p)               = 從點獲取網格上最近的重心座標
//
// [RayHit] GetRaycastHit(Point3 p, Point3 dir)     = 向網格投射一條射線(從p沿dir方向)並返回命中資料
//
// [bool]   PointInside(Point3 p)                   = 測試點是否在網格內
// 
///////////////////////////////////////////////////////

///////////// [tfFace] 類屬性 ///////////////
//
// [int]    inx                 = 獲取面在其網格上的索引
//
// [int]    v1                  = 獲取面的頂點索引1
// [int]    v2                  = 獲取面的頂點索引2
// [int]    v3                  = 獲取面的頂點索引3
//
// [float]  area                = 獲取面的面積
// [Point3] normal              = 獲取面的法線
// [int]    matID               = 獲取面的matID
// [bool]   selected            = 獲取面的選擇狀態
//
/////////////////////////////////////////////////////// 

///////////// [tfBind] 類屬性 ///////////////
//
// [int]    Type()              = 獲取繫結的型別(1 = 拉伸,2 = 剪下,3 = 彎曲,4 = 體積)
//
// [int]    id                  = 獲取繫結的ID
// [int]    sInx1               = 獲取繫結第一個粒子的模擬索引
// [int]    sInx2               = 獲取繫結第二個粒子的模擬索引
//
// [float]  length              = 獲取繫結的靜止長度
// [float]  OrigLength()        = 獲取繫結的原始靜止長度
// [float]  CurrentLength()     = 獲取繫結的當前長度
//
// [float]  stiffness           = 獲取繫結的剛度
// [float]  OrigStiffness()     = 獲取繫結的原始剛度
//
// [bool]   enableCollisions        = 控制繫結是否由CCCS處理
// [bool]   enableObjectCollisions  = 控制繫結是否與物件碰撞
// [float]  collisionThickness      = 控制繫結的碰撞厚度
// [float]  collisionFriction       = 控制繫結的碰撞摩擦力
//
// [void]   Break()                 = 斷開繫結
// [void]   UnBreak()               = 取消斷開繫結
// [bool]   IsBroken()              = 返回繫結當前是否斷開
//
///////////////////////////////////////////////////////

///////////// [RayHit] 類屬性 ///////////////
//
// [bool]   hit                 = 如果命中有效,則為true
//
// [Point3] hitPoint            = 獲取命中點
// [int]    hitFace             = 獲取命中面在網格上的索引
// [Point3] hitBary             = 獲取命中點在命中面上的重心座標
//
///////////////////////////////////////////////////////

///////////// [tfTerrain] 類屬性 ////////////
//
// [string] name                = 獲取地形的名稱
//
// [int]        width           = 獲取地形的寬度單元數
// [int]        length          = 獲取地形的長度單元數
// [Matrix3]    tm              = 獲取地形的場景變換
//
// [Point3] GetColor(string colorChannel, int x, int y)                         = 獲取指定顏色通道中單元[x, y]的RGB值(作為Point3的XYZ分量)
// [void]   SetColor(string colorChannel, int x, int y, int r, int g, int b)    = 設定指定顏色通道中單元[x, y]的RGB值
// [float]  GetHeight(int x, int y)                 = 獲取地形在單元[x, y]的區域性高度
// [void]   SetHeight(int x, int y, float height)   = 設定地形在單元[x, y]的區域性高度
//
// [Point3] GetPos(int x, int y)    = 獲取地形在單元[x, y]的世界空間位置
// [Point3] GetNormal(int x, int y) = 獲取地形在單元[x, y]的世界空間法線
//
// [void]               UpdateNormals()         = 如果您需要在更改高度值後訪問地形的插值法線,請呼叫此方法
// [List<List<Point3>>] GetNormals()            = 快取所有法線到列表(使用列表[y][x]與單元座標訪問)
// [List<List<float>>]  GetHeights()            = 快取所有高度到列表(使用列表[y][x]與單元座標訪問)
//
///////////////////////////////////////////////////////

////////////// [Point2] 類屬性 //////////////
//
// [float]  x           = 獲取x值
// [float]  y           = 獲取y值
//
///////////////////////////////////////////////////////

////////////// [Point3] 類屬性 //////////////
//
// [float]  x                   = 獲取x值
// [float]  y                   = 獲取y值
// [float]  z                   = 獲取z值
//
// [Point3] normalized          = 獲取歸一化向量
// [float]  magnitude           = 獲取向量大小
// [float]  sqrMagnitude        = 獲取向量平方大小
//
// [void]   Normalize()         = 歸一化向量
// [void]   Scale(Point3 p)     = 按向量縮放
//
// [float]  Point3.Angle(Point3 p1, Point3 p2)              = 獲取向量之間的角度
// [Point3] Point3.ClampMagnitude(Point3 p1, float length)  = 透過最大長度限制向量
// [Point3] Point3.Cross(Point3 p1, Point3 p2)              = 獲取向量的叉積
// [float]  Point3.Distance(Point3 p1, Point3 p1)           = 獲取向量之間的距離
// [float]  Point3.Dot(Point3 p1, Point3 p2)                = 獲取向量的點積
// [Point3] Point3.Normalize(Point3 p1)                     = 獲取歸一化向量
// [Point3] Point3.ProjectOnPlane(Point3 p1, Point3 plane)  = 將向量投影到平面上
// [Point3] Point3.Reflect(Point3 dir, Point3 plane)        = 獲取反射向量
//
///////////////////////////////////////////////////////

////////////// [Point4] 類屬性 //////////////
//
// [float]  x           = 獲取x值
// [float]  y           = 獲取y值
// [float]  z           = 獲取z值
// [float]  w           = 獲取w值
//
///////////////////////////////////////////////////////

////////////// [Matrix3] 類屬性 /////////////
//
// [Point3]  row1       = 獲取矩陣的第一行(前向)
// [Point3]  row2       = 獲取矩陣的第二行(右向)
// [Point3]  row3       = 獲取矩陣的第三行(上向)
// [Point3]  row4       = 獲取矩陣的第四行(平移)
//
// [Matrix3] inverted   = 獲取逆矩陣
//
// [void] PreRotate(int axis, float ang)            = 沿(基於0的軸)預旋轉矩陣(角度為ang)
// [void] PostRotate(int axis, float ang)       = 沿(基於0的軸)後旋轉矩陣(角度為ang)
//
// [void]    Invert()                   = 逆轉矩陣
// [Point3]  Transform(Point3 p)        = 使用矩陣變換一個點
// [Point3]  VectorTransform(Point3 p)  = 使用矩陣變換一個點(不包括平移)
//
///////////////////////////////////////////////////////

////////////// [Quat] 類屬性 /////////////
//
// [float]   x      = 獲取四元數的x值
// [float]   y      = 獲取四元數的y值
// [float]   z      = 獲取四元數的z值
// [float]   w      = 獲取四元數的w值
//
// [Quat] normalized    = 獲取標準化四元數
// [Quat] conjugated    = 獲取共軛四元數
// [Quat] inverted      = 獲取逆四元數
//
// [void] Conjugate()   = 共軛四元數
// [void] Invert()      = 逆轉四元數
// [void] Normalize()   = 標準化四元數
//
///////////////////////////////////////////////////////

////////////// [AngAxis] 類屬性 /////////////
//
// [Point3]  axis   = 獲取AngAxis的軸
// [float]   angle  = 獲取AngAxis的角度
//
///////////////////////////////////////////////////////

//__END__
*/

  

相關文章