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 に設定することで、メッシュの後面をデフォルトで描画できます。

顔の周りの垂直の順序は、あなたが正面を見ているか、それとも戻る面を見ているかを決定します。顔の前側は、垂直がその周りに反時計回りに移動するときに表示されます。

Order of the vertices around the face

制限

EditableMesh 現在、60,000個のベース、20,000個のトライアングルの制限があります。ベースを多く追加すると、エラーが発生します。

概要

プロパティ

方法

プロパティ

FixedSize

読み取り専用
複製されていません
並列読み取り
Robloxのセキュリティ

SkinningEnabled

並列読み取り

方法

AddColor

ジオメトリに新しい色を追加し、安定した色の ID を返します。

パラメータ

color: Color3

新しい色。

alpha: number

色のアルファ (透明度)。


戻り値

新しい色の安定した色 ID。

AddNormal

新しい正常をギオメトリに追加し、安定した正常な ID を返します。正常値が指定されていない場合は、正常が自動的に計算されます。

パラメータ

normal: Vector3

通常のベクトル。通常の値が指定されていない場合は、通常が自動的に計算されます。


戻り値

新しい正常なID の安定した正常なID。

AddTriangle

メッシュに新しい三角形を追加し、安定した顔のIDを返します。

パラメータ

vertexId0: number

三角形の最初のノードの ID。

vertexId1: number

三角形の second vertex の ID。

vertexId2: number

三角形の三角形の ID。


戻り値

新しい顔の安定した顔ID。

AddUV

新しい UV を追加して、ジオメトリに返します。

パラメータ

新しい UV コーディネート。


戻り値

新しい UV の安定した UV ID。

AddVertex

ジオメトリに新しいベクトルを追加し、安定したベクトル ID を返します。

パラメータ

メッシュのローカルオブジェクトスペースに位置する。


戻り値

新しいベクストの安定したベクスト ID。

Destroy

void

戻り値

void

FindClosestPointOnSurface

メッシュの表面で最も近いポイントを見つけます。返回する面 ID、ローカルオブジェクトスペースのメッシュにポイント、および顔の位置の barycentric コーディネートを見つけます。メッシュのコーディネートに関する詳細は、RaycastLocal() を参照してください。

パラメータ

point: Vector3

メッシュのローカルオブジェクトスペースでポイントの位置。


戻り値

顔のIDの柱、ローカルオブジェクトスペースのメッシュにポイントし、顔内の位置のベリシティコーディネート。

FindClosestVertex

特定のポイントに最も近いベクトルを見つけ、安定したベクトル ID を返します。

パラメータ

toThisPoint: Vector3

メッシュのローカルオブジェクトスペースでポイントの位置。


戻り値

スペースの指定されたポイントに最も近い安定したバースデーを持つベクトル ID を指定します。

FindVerticesWithinSphere

特定の球内のすべてのベクトルを見つけ、安定したベクトル ID のリストを返します。

パラメータ

center: Vector3

メッシュのローカルオブジェクトスペースの中心。

radius: number

球の範囲。


戻り値

リクエストされた球内の安定したベクトル ID リスト。

GetAdjacentFaces

安定した顔 ID を与えると、隣接する顔のリストが返されます。

Adjacent faces indicated around requested face

パラメータ

faceId: number

戻り値

指定された顔と隣接する顔のIDをリストします。

GetAdjacentVertices

安定したベクスト ID を与えると、隣接するベクストのリストが返されます。

Adjacent vertices indicated around requested vertex

パラメータ

vertexId: number

隣接するベクトルを取得するテクスチャ ID の周り。


戻り値

指定されたベースの ID 周辺の隣接する垂直の ID リスト。

GetCenter


戻り値

EditableMesh のバインドボックスの中心。

GetColor

指定された色の ID の色を返します。

パラメータ

colorId: number

色を取得するための色 ID。


戻り値

リクエストされた安定色の ID に色を設定します。

GetColorAlpha

指定された安定色の ID に色のアルファ (透明度) を返します。

パラメータ

colorId: number

アルファを取得するための色 ID。


戻り値

リクエストの安定した色 ID でカラーアルファ。

GetColors

メッシュのすべての色を安定した色の ID のリストとして返します。


戻り値

安定色のID のリスト。

GetFaceColors

顔の垂直の色を返します。

パラメータ

faceId: number

色を取得するための顔ID。


戻り値

指定された顔の垂直に使用される色 ID のリスト。

GetFaceNormals

顔の垂直に対する顔の正常な ID を返します。

パラメータ

faceId: number

正常なIDを取得するための顔ID。


戻り値

指定された顔の垂直に使用される通常の ID のリスト。

GetFaceUVs

顔の垂直に対する顔の UV アイデンティフを返します。

パラメータ

faceId: number

UV アイデンティフィケーションを取得するための顔のID。


戻り値

指定された顔の垂直に使用される UV アイデンティフィケータのリスト。

GetFaceVertices

顔のベクトル ID を返します。

パラメータ

faceId: number

戻り値

指定された顔の周りのバーチャルIDのリスト。

GetFaces

メッシュのすべての顔を安定した顔の ID のリストとして返します。


戻り値

安定した顔のID のリスト。

GetFacesWithAttribute

指定されたベース ID、通常の ID、UV イデンティファイアー ID または色の ID を使用する顔のリストを返します。

パラメータ

id: number

それを使用する顔を見つけるためのアトリビュート ID。


戻り値

指定された属性 ID を使用する顔の ID リスト。

GetNormal

入力した正常な ID のベクトルを返します。

パラメータ

normalId: number

通常のベクトルを取得するための正常な ID。


戻り値

要求された正常な ID のベクトル。

GetNormals

メッシュのすべてのノーマルを安定した正常な ID のリストとして返します。


戻り値

安定した正常なID のリスト。

GetPosition

メッシュのローカルオブジェクトスペース内のベクトルの位置を取得します。

パラメータ

vertexId: number

位置を取得するための安定したベクスト ID。


戻り値

メッシュのローカルオブジェクトスペース内のベクトルの位置。

GetSize


戻り値

サイズの EditableMesh

GetUV

指定された UV ID でUV座標を返します。

パラメータ

uvId: number

UV コーデットを取得するための UV ID。


戻り値

要求された UV ID の UV 座標。

GetUVs

メッシュのすべての UV をステイブルな UV ID のリストとして返します。


戻り値

安定した UV アイデンティファイターのリスト。

GetVertices

すべてのベクトルを安定したベクトル ID のリストとして返します。


戻り値

安定したバーチャル空間ID のリスト。

GetVerticesWithAttribute

指定された顔 ID、通常の ID、UV のID または色の ID を使用するベクトルのリストを返します。

パラメータ

id: number

使用する垂直を見つけるためのアトリビュートID。


戻り値

指定された属性 ID を使用するベースの ID リスト。

IdDebugString

デバッグ用の目的で便利な安定したIDを記述する文字列を返します。例えば、f17 または、v12 など、タイプ、ID入力号、およびバージョンを含む。

パラメータ

id: number

デバッグ情報のストリングを返す ID。


戻り値

人間に読み取り可能な形式で ID を記述する文字列。

MergeVertices

Map

接触する垂直をマージして、単一の垂直 ID を使用し、他のオリジナル属性 ID を保持します。

パラメータ

mergeTolerance: number

距離があるときに、垂直が互いに接触することを検討する距離。


戻り値

Map

マージされた垂直に新しい垂直 ID をマップする。

RaycastLocal

レイを投げ、交差点、顔 ID 、およびバリセントリックコーディネートを返します。このメソッドの入力と出力は、メッシュのローカルオブジェクトスペースにあります。

barycentric コーディネートは、顔の 3 つのベクトルの重量付きのコンビネーションとして、顔内のポイントを指定する方法です。これは、一般的な方法で顔のベクトル属性をブレンドする方法の一つです。このメソッドのコードサンプルは、 barycentric coordinate というタイトルのコードサンプルを参照してください。

パラメータ

origin: Vector3

メッシュのローカルオブジェクトスペース内のレイのオリジン。

direction: Vector3

レイの方向。


戻り値

接点の位置、顔のID、および barycentric 座標のトリプル。

コードサンプル

EditableMesh:RaycastLocal()

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

RemoveFace

void

その安定した顔 ID を使用して、顔を削除します。

パラメータ

faceId: number

戻り値

void

RemoveUnused

顔で使用されないすべてのベクトル、ノーマル、UV、および色をすべて削除し、削除された ID を返します。


戻り値

すべての削除された安定したID。

ResetNormal

void

このノーマル ID をリセットして、メッシュの形状に基づいて自動的に計算されるようになり、手動で設定する必要はありません。

パラメータ

normalId: number

リセットする安定した正常なID。


戻り値

void

SetColor

void

色のID の色を設定します。

パラメータ

colorId: number

色を設定するための安定した色 ID。

color: Color3

設定する色。


戻り値

void

SetColorAlpha

void

色のID の色のアルファ (透明度) を設定します。

パラメータ

colorId: number

色アルファを設定するための安定した色 ID。

alpha: number

アルファを設設定する。


戻り値

void

SetFaceColors

void

顔のベクトルの色を新しい色のIDに設定します。

パラメータ

faceId: number

ベクトルの色を更新するための顔ID。

ids: Array

指定された顔の垂直に使用する新しい安定した色の ID リスト。


戻り値

void

SetFaceNormals

void

顔のノーマルを新しいノーマル ID に設定します。

パラメータ

faceId: number

ベクトルノーマルを更新するための顔ID。

ids: Array

指定された顔の垂直に使用する新しい安定した正常なIDのリスト。


戻り値

void

SetFaceUVs

void

顔の垂直の UV を新しい UV ID に設定します。

パラメータ

faceId: number

ベクトルの UV を更新するための顔のID。

ids: Array

与えられた顔の垂直に使用する新しい安定した UV アイデンティフィケーションのリスト。


戻り値

void

SetFaceVertices

void

顔の垂直を新しいベクトル ID に設定します。

パラメータ

faceId: number

垂直を更新するための顔ID。

ids: Array

顔に使用する新しい安定した垂直 ID のリスト。


戻り値

void

SetNormal

void

通常のIDに設定します。これにより、通常のIDを使用するすべての顔の垂直に対する通常の値が変更されます。

パラメータ

normalId: number

通常のベクトルを設定するための安定した正常な ID。

normal: Vector3

設定するベクトルをノーマル化します。


戻り値

void

SetPosition

void

メッシュのローカルオブジェクトスペースにバースデーを設定します。

パラメータ

vertexId: number

位置するベクトルの安定したベクトル ID。

メッシュのローカルオブジェクトスペースに位置する。


戻り値

void

SetUV

void

UV ID のUV座標を設定します。

パラメータ

uvId: number

UV コーデックスを設定するための UV ID。

UV 座標。


戻り値

void

Triangulate

void

メッシュのすべての顔をトライアングルに分割するためにスプリットします。現在、これはトライアングルのみを作成できるため、何もしません。しかし、コードがトライアングルを基にしている場合は、 AssetService:CreateEditableMeshAsync() を呼び出した後にこのメソッドを呼び出すことをお勧めします。


戻り値

void

イベント