メッシュ面メソッド

次のメソッドは、メッシュ面への基本アクセスを提供します。

メソッド:

面の数

getNumFaces <mesh>

面の数を整数で返します。<mesh>.numfaces を使用する場合と同じです。

setNumFaces <mesh> <face_index_integer> [ <boolean> ]

面の数に指定値を設定します。オプションのブール値の引数が true の場合、既存のトポロジはそのままの状態を維持します。この引数が false の場合、またはこの引数を省略すると、トポロジは失われます。

新しい面の場合は、すべてについて次のように設定されます。

面の取得/設定

getFace <mesh> <face_index_integer>

インデックスで指定された面の頂点インデックスを Point3 として返します。Point3 値の各コンポーネントは、頂点インデックスを含みます。

setFace <mesh> <face_index_integer> <vert_indices_point3>

インデックスで指定された面の面頂点インデックスを Point3 から設定します。

setFace <mesh> <face_index_integer> <vert_index_integer> <vert_index_integer> <vert_index_integer>

インデックスで指定された面の頂点インデックスを 3 つの頂点インデックスから設定します。

面の削除/集約

deleteFace <mesh> <face_index_integer>

インデックスで指定された面をメッシュから削除し、面の番号を更新します。面の番号を更新します。

collapseFace <mesh> <face_index_integer>

インデックスで指定された面をメッシュから削除し、その 3 つの頂点をオリジナルの面の中心で結合させます。面の番号を更新します。

面の法線

getFaceNormal <mesh> <face_index_integer>

インデックスで指定された面の法線を Point3 として返します。

setFaceNormal <mesh> <face_index_integer> <point3>

インデックスで指定された面の法線ベクトルを設定します。メッシュで update() を実行すると、この値が上書きされます。

面マテリアル ID

getFaceMatID <mesh> <face_index_integer>

インデックスで指定された面のマテリアル ID を整数で返します。

setFaceMatID <mesh> <face_index_integer> <integer>

インデックスで指定された面のマテリアル ID を設定します。

面スムージング グループ

getFaceSmoothGroup <mesh> <face_index_integer>

インデックスで指定された面のスムージング グループを 32 ビットの整数で返します。スムージング グループには、32 種類あります。戻り値の各ビットは、1 つのスムージング グループに相当します。いずれかのビットがオンの場合、その面はスムージング グループの一部です。次の関数を使用すると、面のスムージング グループのリストを BitArray として取得できます。

スクリプト:

    fn getFaceSmoothGroupB obj face =
    (
    local sgroup_val=getFaceSmoothGroup obj face
    local sg_bitarray=#{}
    if sgroup_val < 0 do
    (
    sg_bitarray[32]=true
    sgroup_val -= 2^31
    )
    for i = 1 to 31 do
    (
    sg_bitarray[i]= (mod sgroup_val 2 > .5)
    sgroup_val /= 2
    )
    sg_bitarray
    )
setFaceSmoothGroup <mesh> <face_index_integer> <smoothing_group_integer>

インデックスで指定された面のスムージング グループを設定します。面の希望するスムージング グループを BitArray として取得すると、次の関数を使用して面のスムージング グループ データを設定できます。

スクリプト:

    fn setFaceSmoothGroupB obj face sg_bitarray =
    (
    local sgroup_val=0
    for i in sg_bitarray do sgroup_val += 2^(i-1)
    setFaceSmoothGroup obj face sgroup_val
    update obj
    )

面の選択

getFaceSelection <node> [ <modifier_or_index> ] [name:<name> ]

getFaceSelection <mesh>

面選択セットを取得します。オプションの name: パラメータが BitArray として指定されている場合は、指定された名前の選択セットを取得します。詳細は、getVertSelection() メソッドを参照してください。

setFaceSelection <node> [ <modifier_or_index> ] ( <sel_bitarray> | <sel_array> ) [name:<name> ] [keep:<boolean> ]

setFaceSelection <mesh> ( <sel_bitarray> | <sel_array> ) [keep:<boolean> ]

面の選択内容を編集可能メッシュ基本オブジェクト、メッシュ選択モディファイヤ、メッシュを編集モディファイヤ、ポリゴンを選択モディファイヤ、または TriMesh に設定します。 これらの関数は、既に述べた選択項目を取得する関数に対応しています。詳細は、setVertSelection() メソッドを参照してください。

deselectHiddenFaces <mesh>

メッシュ内で非表示の面の選択を解除します。このメソッドは TriMesh には適用されません。

面の押し出し

extrudeFace <mesh> ( <index> | <bitarray> | <integer_array> | #selection) <amount> <scale> [dir:(<point3> | #common | #independent) ]

押し出し面モディファイヤに相当する機能を提供します。この関数は、編集可能ノードにだけ作用します。2 番目の引数は、押し出す面を指定します。1 つの面インデックス、面インデックスの BitArray、面インデックスの整数配列、あるいは編集可能メッシュで現在選択されている面を意味するリテラル名 #selection のいずれかになります。<amount> 引数は押し出し距離を指定し、<scale> は個々の面集団をスケールする値をパーセントで指定します。

オプションの dir: キーワード引数を指定しない場合は、押し出し面モディファイヤと同様に、面集団の各頂点における平均法線に沿って頂点を個別に動かすことで面集団が押し出されます。キーワード引数 dir: を指定する場合、これはすべての頂点を移動する方向ベクトルを指定する Point3 か、既定値の方向と同じ値 #independent か、または各集団におけるすべての面法線の平均法線に沿って面集団を押し出す値 #common のいずれかになります。#common は編集可能メッシュでの[グループ法線](Group Normal)オプションに相当し、#independent は[ローカル法線](Local Normal)オプションに相当します。

例:

    s=sphere()
    convertToMesh s
    extrudeface s #{1..16} 10 100 dir:#independent
    update s

メッシュに関連するメソッドについては、以下を参照してください。

Editable_Mesh : GeometryClass および TriMesh : 値