DataModelMesh
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
データモデルメッシュは、メッシュクラスが派生する抽象クラスです。
メッシュクラスは、BaseParts に親になると、パーツの外観をプリデファインされたメッシュに変更するオブジェクトです。注: パーツの外観のみを変更し、パーツの物理/衝突境界は変更しません。パーツの衝突を変更する部分にメッシュを適用しようとする開発者は、MeshParts を使用する必要があります。
MeshPart と CharacterMesh クラスは、DataModelMeshから派生しないことに注意してください。
概要
プロパティ
メッシュのオフセットは、メッシュが表示される BasePart.Position の BasePart から相対位置を決定します。
メッシュのスケールは、オリジナルの寸法に対するメッシュのサイズを決定します。
FileMesh.TextureId で使用されるメッシュのテクスチャの色を変更します。
プロパティ
Offset
メッシュのオフセットは、メッシュが表示される BasePart.Position の距離を決定します。BasePart で表示されるメッシュ。
メッシュオフセットを使用する方法
オフセットプロパティは、メッシュがレンダリングされる相対位置を変更します。たとえば、オフセット 0、5、0 は、メッシュを BasePart の位置上に 5スタッド表示させます。
位置の BasePart は変更されず、部品の物理衝突ボックスは同じ場所に残ります。これは、下の画像で、緑の縁取り (a SelectionBox ) が BasePart の極限を示していることを示しています。
メッシュオフセットの他の使用法
メッシュオフセットプロパティには、多くの興味深い使用法があります。
- オフセットと DataModelMesh.Scale は、エンジンが物理/衝突計算を行う必要がないため、比較的低コストでアニメーション化できます。TweenService が移動しないため、BasePart は計算されません。
- メッシュとその衝突範囲の関係を変更する ( BasePart によって決定)
コードサンプル
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.Scale and DataModelMesh.Offset properties of the SpecialMesh are then animated using TweenService.
local TweenService = game:GetService("TweenService")
-- instance a part and a mesh
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false
local mesh = Instance.new("SpecialMesh")
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.Parent = part
-- selection box to show part extents
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
-- parent part to workspace
part.Parent = workspace
-- animate offset and scale with a tween
local tween = TweenService:Create(
mesh,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, true, 0),
{ Scale = Vector3.new(1, 1, 1), Offset = Vector3.new(0, 3, 0) }
)
tween:Play()
Scale
メッシュのスケールは、オリジナルの寸法に対するメッシュのサイズを決定します。
メッシュスケールを使用する方法
スケールプロパティは、使用されているメッシュの種類によって若干異なる動作をします。BasePart のサイズが変更されないことに注意してください。つまり、パーツの物理衝突ボックスは同じままです。
- SpecialMesh ファイルメッシュスケールとして、メッシュが Roblox にアップロードされたときのオリジナルディメンションに対して SpecialMesh.FileType 設定されたオブジェクト
- オブジェクトまたは オブジェクトは、親の に対して均等に「ブリック」、「ウェッジ」または「スフィア」スケールに設定されています
- CylinderMesh オブジェクト、または SpecialMesh オブジェクトで、SpecialMesh.FileType が親の BasePart.Size に対する「シリンダー」スケールに設定されています。円筒の高さ軸に対して均一で、円筒の長さと幅の比率を 1:1 に保ち、最も低い値を使用しています。
- SpecialMesh オブジェクトに SpecialMesh.FileType が設定されている '頭' 現在非標準の方法でスケーリングします。開発者はこの動作を変更する計画があるため、これに頼るべきではありません。
- SpecialMesh オブジェクトは、SpecialMesh.FileType 非標準な方法で「トルソ」スケールに設定されています。開発者は、このメッシュタイプを廃止する計画があるため、これに頼るべきではありません。
メッシュスケールデモ
上記の動作は、以下のデモレーション画像で見ることができます。
「ブリック」、「ウェッジ」、「スフィア」メッシュの部品サイズに対する線形スケーリング。
「ファイルメッシュ」メッシュのオリジナルアップロードされたメッシュに対する線形スケーリング
「円筒」メッシュの非制限スケーリング
メッシュスケールの他の使用法
メッシュオフセットプロパティには、多くの興味深い使用法があります。
- DataModelMesh.Offset とスケールは、エンジンが物理/衝突計算を行う必要がないため、比較的低コストでアニメーション化できます。TweenService が変更されないため、BasePart は変更されません。
- メッシュとその衝突範囲の関係を変更する ( BasePart によって決定)
コードサンプル
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.Scale and DataModelMesh.Offset properties of the SpecialMesh are then animated using TweenService.
local TweenService = game:GetService("TweenService")
-- instance a part and a mesh
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false
local mesh = Instance.new("SpecialMesh")
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.Parent = part
-- selection box to show part extents
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
-- parent part to workspace
part.Parent = workspace
-- animate offset and scale with a tween
local tween = TweenService:Create(
mesh,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, true, 0),
{ Scale = Vector3.new(1, 1, 1), Offset = Vector3.new(0, 3, 0) }
)
tween:Play()