EditableMesh
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
EditableMesh は、MeshPart にリンクされたビジュアルメッシュを変更し、Studio とエクスペリエンスの両方でメッシュを変更できるようにします。
Class.MeshPart のメッシュ ID から、Content を作成するか、MeshPart
EditableMesh は、MeshPart にリンクされた新しい AssetService:CreateMeshPartAsync() を参照するようになります。1>Class.MeshPart1> インスタンスをより多く作成するために
Class.AssetService:CreateMeshPartAsync() を呼び出すと、コリジョンと液体ジオメトリを任意の編集で再計算し、既存の MeshPart を更新します。コンセプト編集オペーションの終わりにこれを行うのが一般的に推奨されます。Class.MeshPart:
安定したベクトル/フェイス ID
多くの EditableMesh メソッドは vertex 、<
ID はオーダーであることを保証していません。数値の番号に空きがあり、垂直または顔の間でイテレートするときに、GetVertices() または GetFaces() から返されるテーブルをイテレートする必要があります。
分割されたベクストリアトリビューション
vertex は顔のコーナーで、上下に顔を接続します。位置、正常、1>UVコーディネート1>、4>色4>、7>透明7>のいくつかの属性を持つことができます。
ときには、垂直に触れるすべての顔で同じアトリビュート値を使用するのが便利ですが、他の顔が同じアトリビュート値を使用する必要がある場合もあります。たとえば、滑らかな球体の場合、各顔には 1つの通常のみがあります。一方、キューブの隅にある場合、各��
顔を作成すると、すべてのベクトルにデフォルトで 1つのアトリビュートがあります: 1つの通常の、1つの UV コーディネート、および 1つの色/透明度。如果、あなたがシームを作成したい場合は、新しいアトリビュートを作成し、顔に設定する必要があります。たとえば、このコードは鋭いキューブを作成します:
local AssetService = game:GetService("AssetService")
-- 4つのベクトル ID を与え、新しい 2つの三角形を追加し、シャープな四角を作成します
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- これは、自動的に計算される正常な ID を作成します
local fid1 = eMesh:AddTriangle(vid0, vid1, vid2)
eMesh:SetFaceNormals(fid1, {nid, nid, nid})
local fid2 = eMesh:AddTriangle(vid0, vid2, vid3)
eMesh:SetFaceNormals(fid2, {nid, nid, nid})
end
-- 6つの側面の間に凹状のあるキューブを作成します
local function makeSharpCube()
local eMesh = AssetService:CreateEditableMesh()
local v1 = eMesh:AddVertex(Vector3.new(0, 0, 0))
local v2 = eMesh:AddVertex(Vector3.new(1, 0, 0))
local v3 = eMesh:AddVertex(Vector3.new(0, 1, 0))
local v4 = eMesh:AddVertex(Vector3.new(1, 1, 0))
local v5 = eMesh:AddVertex(Vector3.new(0, 0, 1))
local v6 = eMesh:AddVertex(Vector3.new(1, 0, 1))
local v7 = eMesh:AddVertex(Vector3.new(0, 1, 1))
local v8 = eMesh:AddVertex(Vector3.new(1, 1, 1))
addSharpQuad(eMesh, v5, v6, v8, v7) -- 前
addSharpQuad(eMesh, v1, v3, v4, v2) -- 戻る
addSharpQuad(eMesh, v1, v5, v7, v3) -- 左
addSharpQuad(eMesh, v2, v4, v8, v6) -- 右
addSharpQuad(eMesh, v1, v2, v6, v5) -- 下
addSharpQuad(eMesh, v3, v7, v8, v4) -- トップ
eMesh:RemoveUnused()
return eMesh
end
終わりに
メッシュの顔には、前面と後面があります。メッシュを描画すると、メッシュの前面のみがデフォルトで描画されますが、メッシュの DoubleSided プロパティを true に設定することで、メッシュの後面をデフォルトで描画できます。
顔の周りの垂直の順序は、あなたが正面を見ているか、それとも戻る面を見ているかを決定します。顔の前側は、垂直がその周りに反時計回りに移動するときに表示されます。
制限
EditableMesh 現在、60,000個のベース、20,000個のトライアングルの制限があります。ベースを多く追加すると、エラーが発生します。
概要
方法
ジオメトリに新しい色を追加し、安定した色の ID を返します。
ジオメトリに新しいノーマルを追加し、安定したノーマル ID を返します。
メッシュに新しい三角形を追加し、安定した顔のIDを返します。
新しい UV を追加して、ジオメトリに返します。
ジオメトリに新しいベクトルを追加し、安定したベクトル ID を返します。
メッシュの表面で最も近いポイントを見つけます。
特定のポイントに最も近いベクトルを見つけます。
特定の球の内のすべてのベクトルを見つけます。
指定された顔と隣接する顔のリストを返します。
指定されたベースの隣にあるベクトルのリストを返します。
指定された色の ID の色を返します。
指定された色の ID で色のアルファ (透明度) を返します。
メッシュのすべての色を返します。
顔の垂直の色を返します。
顔の垂直に対する顔の正常な ID を返します。
顔の垂直に対する顔の UV アイデンティフを返します。
顔のベクトル ID を返します。
メッシュのすべての顔を返します。
指定したアトリビュートID を使用する顔のリストを返します。
入力した正常な ID のベクトルを返します。
メッシュのすべてのノーマルを返します。
垂直の位置を取得します。
指定された UV ID でUV座標を返します。
メッシュのすべての UV を返します。
すべてのベクトルを安定したベクトル ID のリストとして返します。
指定されたアトリビュート ID を使用するベクトルのリストを返します。
デバッグ用途に使用できる安定したIDを記述する文字列を返します。
隣接するベクトルをマージします。
その安定した顔 ID を使用して、顔を削除します。
使用されていないすべてのベクトル、ノーマル、UV、および色を削除し、削除された ID を返します。
このノーマルIDをリセットして自動的に計算されるようにします。
色のID の色を設定します。
色のID の色のアルファ (透明度) を設定します。
顔のベクトルの色を新しい色のIDに設定します。
顔のノーマルを新しいノーマル ID に設定します。
顔の垂直の UV を新しい UV ID に設定します。
顔の垂直を新しいベクトル ID に設定します。
通常のID のために通常を設定します。
メッシュのローカルオブジェクトスペースにバースデーを設定します。
UV ID のUV座標を設定します。
メッシュのすべての顔をトライアングルに分割します。
プロパティ
方法
AddColor
ジオメトリに新しい色を追加し、安定した色の ID を返します。
パラメータ
戻り値
新しい色の安定した色 ID。
AddNormal
新しい正常をギオメトリに追加し、安定した正常な ID を返します。正常値が指定されていない場合は、正常が自動的に計算されます。
パラメータ
通常のベクトル。通常の値が指定されていない場合は、通常が自動的に計算されます。
戻り値
新しい正常なID の安定した正常なID。
AddTriangle
メッシュに新しい三角形を追加し、安定した顔のIDを返します。
パラメータ
三角形の最初のノードの ID。
三角形の second vertex の ID。
三角形の三角形の ID。
戻り値
新しい顔の安定した顔ID。
AddVertex
ジオメトリに新しいベクトルを追加し、安定したベクトル ID を返します。
パラメータ
メッシュのローカルオブジェクトスペースに位置する。
戻り値
新しいベクストの安定したベクスト ID。
Destroy
戻り値
FindClosestPointOnSurface
メッシュの表面で最も近いポイントを見つけます。返回する面 ID、ローカルオブジェクトスペースのメッシュにポイント、および顔の位置の barycentric コーディネートを見つけます。メッシュのコーディネートに関する詳細は、RaycastLocal() を参照してください。
パラメータ
メッシュのローカルオブジェクトスペースでポイントの位置。
戻り値
顔のIDの柱、ローカルオブジェクトスペースのメッシュにポイントし、顔内の位置のベリシティコーディネート。
FindClosestVertex
特定のポイントに最も近いベクトルを見つけ、安定したベクトル ID を返します。
パラメータ
メッシュのローカルオブジェクトスペースでポイントの位置。
戻り値
スペースの指定されたポイントに最も近い安定したバースデーを持つベクトル ID を指定します。
FindVerticesWithinSphere
特定の球内のすべてのベクトルを見つけ、安定したベクトル ID のリストを返します。
パラメータ
戻り値
リクエストされた球内の安定したベクトル ID リスト。
GetAdjacentFaces
安定した顔 ID を与えると、隣接する顔のリストが返されます。
パラメータ
戻り値
指定された顔と隣接する顔のIDをリストします。
GetAdjacentVertices
安定したベクスト ID を与えると、隣接するベクストのリストが返されます。
パラメータ
隣接するベクトルを取得するテクスチャ ID の周り。
戻り値
指定されたベースの ID 周辺の隣接する垂直の ID リスト。
GetColor
指定された色の ID の色を返します。
パラメータ
色を取得するための色 ID。
戻り値
リクエストされた安定色の ID に色を設定します。
GetColorAlpha
指定された安定色の ID に色のアルファ (透明度) を返します。
パラメータ
アルファを取得するための色 ID。
戻り値
リクエストの安定した色 ID でカラーアルファ。
GetFaceNormals
顔の垂直に対する顔の正常な ID を返します。
パラメータ
正常なIDを取得するための顔ID。
戻り値
指定された顔の垂直に使用される通常の ID のリスト。
GetFaceUVs
顔の垂直に対する顔の UV アイデンティフを返します。
パラメータ
UV アイデンティフィケーションを取得するための顔のID。
戻り値
指定された顔の垂直に使用される UV アイデンティフィケータのリスト。
GetFacesWithAttribute
指定されたベース ID、通常の ID、UV イデンティファイアー ID または色の ID を使用する顔のリストを返します。
パラメータ
それを使用する顔を見つけるためのアトリビュート ID。
戻り値
指定された属性 ID を使用する顔の ID リスト。
GetNormal
入力した正常な ID のベクトルを返します。
パラメータ
通常のベクトルを取得するための正常な ID。
戻り値
要求された正常な ID のベクトル。
GetPosition
メッシュのローカルオブジェクトスペース内のベクトルの位置を取得します。
パラメータ
位置を取得するための安定したベクスト ID。
戻り値
メッシュのローカルオブジェクトスペース内のベクトルの位置。
GetUV
指定された UV ID でUV座標を返します。
パラメータ
UV コーデットを取得するための UV ID。
戻り値
要求された UV ID の UV 座標。
GetVerticesWithAttribute
指定された顔 ID、通常の ID、UV のID または色の ID を使用するベクトルのリストを返します。
パラメータ
使用する垂直を見つけるためのアトリビュートID。
戻り値
指定された属性 ID を使用するベースの ID リスト。
IdDebugString
デバッグ用の目的で便利な安定したIDを記述する文字列を返します。例えば、f17 または、v12 など、タイプ、ID入力号、およびバージョンを含む。
パラメータ
デバッグ情報のストリングを返す ID。
戻り値
人間に読み取り可能な形式で ID を記述する文字列。
MergeVertices
接触する垂直をマージして、単一の垂直 ID を使用し、他のオリジナル属性 ID を保持します。
パラメータ
距離があるときに、垂直が互いに接触することを検討する距離。
戻り値
マージされた垂直に新しい垂直 ID をマップする。
RaycastLocal
レイを投げ、交差点、顔 ID 、およびバリセントリックコーディネートを返します。このメソッドの入力と出力は、メッシュのローカルオブジェクトスペースにあります。
barycentric コーディネートは、顔の 3 つのベクトルの重量付きのコンビネーションとして、顔内のポイントを指定する方法です。これは、一般的な方法で顔のベクトル属性をブレンドする方法の一つです。このメソッドのコードサンプルは、 barycentric coordinate というタイトルのコードサンプルを参照してください。
パラメータ
戻り値
接点の位置、顔のID、および barycentric 座標のトリプル。
コードサンプル
local AssetService = game:GetService("AssetService")
-- Initialize EditableMesh in space
local success, editableMesh = pcall(function()
return AssetService:CreateEditableMeshAsync(Content.fromUri("rbxassetid://ASSET_ID"))
end)
local meshPart = nil
if success then
local initialSize = Vector3.new(1, 1, 1)
meshPart = editableMesh:CreateMeshPartAsync(initialSize)
meshPart.Parent = workspace
end
local function castRayFromCamera(position)
if not meshPart then return end
-- Create ray from camera along the direction of a clicked point
local camera = workspace.CurrentCamera
local ray = camera:ScreenPointToRay(position.X, position.Y)
-- Convert to object space to use with RaycastLocal()
local relativeOrigin = meshPart.CFrame:PointToObjectSpace(ray.Origin)
local relativeDirection = meshPart.CFrame:VectorToObjectSpace(ray.Direction)
local triangleId, point, barycentricCoordinate
triangleId, point, barycentricCoordinate = editableMesh:RaycastLocal(relativeOrigin, relativeDirection * 100)
if not triangleId then
-- Didn't hit any triangles
return
end
-- Interpolate UVs within the triangle
local vert1, vert2, vert3 = editableMesh:GetTriangleVertices(triangleId)
local uv0 = editableMesh:GetUV(vert1)
local uv1 = editableMesh:GetUV(vert2)
local uv2 = editableMesh:GetUV(vert3)
local u = (barycentricCoordinate.x * uv0.x) + (barycentricCoordinate.y * uv1.x) + (barycentricCoordinate.z * uv2.x)
local v = (barycentricCoordinate.x * uv0.y) + (barycentricCoordinate.y * uv1.y) + (barycentricCoordinate.z * uv2.y)
return Vector2.new(u, v)
end
ResetNormal
このノーマル ID をリセットして、メッシュの形状に基づいて自動的に計算されるようになり、手動で設定する必要はありません。
パラメータ
リセットする安定した正常なID。
戻り値
SetColorAlpha
色のID の色のアルファ (透明度) を設定します。
パラメータ
戻り値
SetFaceColors
顔のベクトルの色を新しい色のIDに設定します。
パラメータ
戻り値
SetFaceNormals
顔のノーマルを新しいノーマル ID に設定します。
パラメータ
戻り値
SetFaceUVs
顔の垂直の UV を新しい UV ID に設定します。
パラメータ
戻り値
SetFaceVertices
顔の垂直を新しいベクトル ID に設定します。
パラメータ
戻り値
SetNormal
通常のIDに設定します。これにより、通常のIDを使用するすべての顔の垂直に対する通常の値が変更されます。
パラメータ
戻り値
SetPosition
メッシュのローカルオブジェクトスペースにバースデーを設定します。
パラメータ
戻り値
Triangulate
メッシュのすべての顔をトライアングルに分割するためにスプリットします。現在、これはトライアングルのみを作成できるため、何もしません。しかし、コードがトライアングルを基にしている場合は、 AssetService:CreateEditableMeshAsync() を呼び出した後にこのメソッドを呼び出すことをお勧めします。