次のメソッドは、メッシュ面への基本アクセスを提供します。
面の数
面の数を整数で返します。<mesh> .numfaces を使用する場合と同等です。
setNumFaces <mesh> <face_index_integer> [ <boolean> ]
面の数に指定値を設定します。オプションのブール値の引数が true の場合、既存のトポロジはそのままの状態を維持します。この引数が false の場合、またはこの引数を省略すると、トポロジは失われます。
新しい面の場合は、すべてについて次のように設定されます。
-
スムージング グループが 1 に設定されます
-
頂点は、[1,1,1]に設定されます(基数が 1。更新時に頂点数が 0 の場合クラッシュします。このクラッシュは、この時点で予想される状況です)
-
マテリアル ID は 1 に設定されます(基数 1)
-
使用中のマップ チャンネルは、それぞれ次のように設定されます
面の取得/設定
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
は編集可能メッシュでの[グループ法線]オプションに相当し、
#independent
は[ローカル法線]オプションに相当します。
例
|
s=sphere()
convertToMesh s
extrudeface s #{1..16} 10 100 dir:#independent
update s
|
|