DataModelMesh
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
DataModelMesh เป็นคลาสที่เป็นนามธรรมจากซึ่งคลาสเมชจะลงมา
คลาสเมชจะเป็นวัตถุที่เมื่อถูกผูกกับ BaseParts เปลี่ยนรูปลักษณ์ของส่วนให้เป็นรูปลักษณ์ที่กําหนดไว้ล่วงหน้าโปรดทราบว่าพวกเขาเปลี่ยนรูปลักษณ์ของชิ้นส่วนเท่านั้นและไม่ใช่ขอบเขตฟิสิกส์/การชนกันของชิ้นส่วนนักพัฒนาที่ต้องการใช้เมชในส่วนที่เปลี่ยนการชนกันของส่วนควรใช้ MeshParts
โปรดทราบว่าคลาส MeshPart และ CharacterMesh ไม่ได้ลงจาก DataModelMesh
สรุป
คุณสมบัติ
ค่าส่วนลบของเมชจะกำหนดตำแหน่งที่สัมพันธ์จาก BasePart.Position ของเมชที่จะแสดงที่ BasePart ซึ่งเมชจะแสดงที่
ขนาดของเมชจะกำหนดขนาดของเมชเมื่อเทียบกับขนาดเดิมของมัน
เปลี่ยนสีของเทกเจอร์ของเมชที่ใช้กับ FileMesh.TextureId
คุณสมบัติ
Offset
ออฟเซ็ตของเมชจะกำหนดระยะห่างจาก BasePart.Position ของเมชที่จะแสดง BasePart ที่เมชจะแสดง
วิธีใช้การเลื่อนเมช
คุณสมบัติ Offset เปลี่ยนตำแหน่งที่เครือข่ายจะแสดงในเชิงเปรียบเทียบตัวอย่างเช่น การเลื่อน 0, 5, 0 จะทำให้เมชถูกแสดง 5 สตัดข้างตำแหน่งของ BasePart
ตำแหน่งของ 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
ขนาดของเมชจะกำหนดขนาดของเมชเมื่อเทียบกับขนาดเดิมของมัน
วิธีใช้เครือข่าย mesh
คุณสมบัติขนาดทำงานแตกต่างเล็กน้อยขึ้นอยู่กับประเภทของเมชที่ใช้สังเกตขนาดของ BasePart ยังคงไม่เปลี่ยนแปลงซึ่งหมายความว่ากล่องการชนกันทางกายภาพของชิ้นส่วนจะยังคงเหมือนเดิม
- SpecialMesh วัตถุที่มี SpecialMesh.FileType ตั้งค่าเป็นขนาด 'FileMesh' เมื่อเทียบกับขนาดเดิมของเมชเมื่ออัปโหลดไปยัง Roblox
- BlockMesh วัตถุหรือ SpecialMesh วัตถุที่มี SpecialMesh.FileType ตั้งค่าเป็น 'Brick', 'Wedge' หรือ 'Sphere' ในเชิงเดียวกันกับ BasePart.Size ของพ่อแม่
- CylinderMesh วัตถุหรือ SpecialMesh วัตถุที่มี SpecialMesh.FileType ตั้งค่าเป็นระดับ 'ทรงกระบอก' เมื่อเทียบกับ BasePart.Size ของพ่อแม่อย่างเท่าเทียมกันสำหรับแกนความสูงของทรงกระบอกและรักษาอัตราส่วน 1:1 สำหรับความยาวและความกว้างของทรงกระบอกโดยใช้ค่าต่ำสุด
- SpecialMesh วัตถุที่มี SpecialMesh.FileType ตั้งค่าเป็น 'หัว' ขณะนี้มีขนาดในแบบไม่มาตรฐานนักพัฒนาไม่ควรพึ่งพาสิ่งนี้เนื่องจากมีแผนที่จะเปลี่ยนพฤติกรรมนี้
- SpecialMesh วัตถุที่มี SpecialMesh.FileType ตั้งค่าเป็นเครื่องชั่ง 'Torso' พิมพ์
การสาธิตเครือข่ายขนาดเล็ก
พฤติกรรมดังกล่าวสามารถเห็นได้ในภาพสาธิตต่อไปนี้
การขยายเชิงเส้นเมื่อเทียบกับขนาดชิ้นส่วนสำหรับเมช 'Brick', 'Wedge' และ 'Sphere'
การขยายเชิงเส้นเมื่อเทียบกับเมชที่อัปโหลดเดิมสำหรับเมช 'FileMesh'
การขยายขนาดที่ไม่สม่ำเสมอสำหรับเมช 'ทรงกระบอก'
การใช้งานอื่นๆ สำหรับเครื่องชั่งเมช
มีจำนวนมากของการใช้งานที่น่าสนใจสำหรับคุณสมบัติการเลื่อนเมช
- 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()
VertexColor
VertexColor กำหนดการเปลี่ยนแปลงสีของ Texture ของ FileMeshโปรดทราบว่าคุณสมบัตินี้เป็น Vector3 มากกว่าที่จะเป็น Color3 เพื่อแปลงใช้คุณสมบัติ Color3.R , Color3.G และ Color3.B
แม้ว่าคุณสมบัตินี้จะอนุญาตการแก้ไขพื้นฐานของเทกเจอร์ แต่การเปลี่ยนเทกเจอร์ทั้งหมดจะให้การควบคุมมากขึ้น ดู MeshPart สำหรับรายละเอียดเพิ่มเติม