EditableMesh
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
EditableMesh เปลี่ยนแปลงเมชรุกของวิดีโอเมื่อเชื่อมต่อกับ MeshPart สามารถใช้เพื่อสอบถามและแก้ไขเมชได้ทั้งใน Studio และในประสบการณ์
EditableMesh สามารถสร้างจาก Datatype.Content ที่มีอยู่ของ Class.MeshPart หรือเ
EditableMesh ปรากฏขึ้นเมื่อมีการเชื่อมโยงไปยัง MeshPart ใหม่ผ่าน AssetService:CreateMeshPartAsync() คุณสาม
การเรียก AssetService:CreateMeshPartAsync() จะคำนวณความสามัคคีและความเป็นปรปักษ์ด้วยการปรับแต่งใด ๆ และอัปเดต MeshPart ที่มีอยู่ It ไ
เปิดใช้งาน EditableMesh สำหรับประสบการณ์ที่เผยแพร่
สำหรับวัตถุประสงค์ด้านความปลอดภัย การใช้ EditableMesh ล้มเหลวโดยปกติสำหรับประสบการณ์ที่เผยแพร่ เพื่อเปิดใช้งาน
สิทธิ
เพื่อป้องกันการใช้งานผิดปกติ AssetService:CreateEditableMeshAsync() จะอนุญาตให้คุณโหลดและแก้ไขเท่านั้น:
- นั่นเป็นของผู้สร้างประสบการณ์ (ถ้าประสบการณ์เป็นของบุคคล)
- นั่นเป็นของกลุ่ม (หากประสบการณ์เป็นของกลุ่ม)
- นั่นเป็นของผู้ใช้ Studio ที่ล็อกอินแล้ว (หากไฟล์สถานที่ยังไม่ได้บันทึกหรือเผยแพร่ไปยัง Roblox)
หากใช้ API เพื่อโหลดสินทรัพย์ที่ไม่ตรงตามเกณฑ์ด้านบน
รหัสผู้อ้างอิง/หน้าที่เสถียร
หลายวิธี EditableMesh ใช้ เวิร
หมายเหตุว่าไอดีไม่ได้รับประกันว่าจะอยู่ในลำดับและอาจมีช่องว่างในการจัดเลข ดังนั้นเมื่อเริ่มต้นใช้งานผ่านเวิร์ดหรือหน้า คุณควรเริ่มต้นใช้งานผ่า
สแปลตรีคแอททริบ
เวิร์ท เป็นมุมของใบหน้า เป็นส่วนหนึ่งของใบหน้า และเชื่อมต่อด้านบนของหน้า เวิร์ทสามารถมีลักษณะอยู่ได้หลายอย่าง: ตำแหน่ง ปกติ ความสว่างของดวงอาทิตย์ สี และความโปร่งใส
บางครั้งก็มีประโยชน์สำหรับใบหน้าทั้งหมดที่สัมผัสกับเวิร์ดเพื่อใช้ค่าละคริสต์เดียวกัน แต่บางครั้งคุณอาจต้องการใบหน้าที่แตกต่างกันใช้ค
เมื่อสร้างใบหน้า ทุกเหลี่ยมจะมีลักษณะละหนึ่งของแต่ละคุณสมบัติ: หนึ่งปกติ, หนึ่งUV คอร์ด, และหนึ่งสี/ความโปร่งใส หากคุณต้องการสร้างการเรียน คุณควรสร้างลักษณะใหม่และตั้งพวกเ
local AssetService = game:GetService("AssetService")
-- ให้ 4 รหัสผืนตัว, เพิ่ม 2 เหลี่ยมมุมใหม่, ทำให้เป็น quad ที่แหลมคม
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- นี้สร้างรหัสประจำตัวประชาชนที่ได้รับการคํานวณโดยอัตโนมัติ
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
หมุน
ใบหน้ามีด้านหน้าและด้านหลัง เมื่อวาดเมช เฉพาะด้านหน้าของใบหน้าเท่านั้นที่ถูกวาดโดยปกติ แม้ว่าคุณจะเปลี่ยนสิ่งนี้ได้โดยการตั้งค่าสมบัติของเมช Class.MeshPart.DoubleSided|DoubleSided</
ย้อนกลับด้านหน้าของหน้าจะปรากฏเมื่อเหลี่ยมผืนผ้าไปทางด้านข้าง
ข้อจํากัด
EditableMesh ขณะนี้มีขีดจำกัด 60,000 เหลี่ยมและ 20,000 เหลี่ยม พยายามเพิ่มจำนวนเหลี่ยมมากเกินไปจะทำให้เกิดข้อผิดพลาด
สรุป
วิธีการ
เพิ่มสีใหม่ให้กับภาพวาดและส่ง ID สีที่เสถียร
เพิ่มค่าปกติใหม่ให้กับภาพรวมและสร้างรหัสปกติที่เสถียร
เพิ่มมุมใหม่ในตาข่ายและส่ง ID หน้าที่เสถียร
เพิ่ม UV ใหม่ในโครงสร้างและส่งคืน ID ของ UV ที่เสถียร
เพิ่มมุมใหม่ในภาพรวมและรีเทิร์นรหัสมุมที่เสถียร
ค้นหาจุดที่ใกล้ที่สุดบนพื้นผิวของเมช
ค้นหาเหลี่ยมผืนที่ใกล้ที่สุดกับจุดหนึ่งในพื้นที่
ค้นหาเหลี่ยมทั้งหมดภายในเหลี่ยมเฉพาะ
กลับรายการหน้าที่อยู่ติดกับหน้าที่ให้ไว้
กลับรายการของเหลี่ยมผืนผ้าที่อยู่ใกล้เคียงกับเหลี่ยมผืนผ้าที่ให้ไว้
กลับสีสำหรับ ID สีที่กำหนด
กลับสี alpha (ความโปร่งใส) ที่ให้ไว้ที่ ID สี
กลับสีทั้งหมดของเมช
กลับรหัสสีหน้าสำหรับเหลี่ยมของหน้า
กลับรหัสปกติของหน้าสำหรับเหลี่ยมบนหน้า
กลับรหัส UV ของหน้าสำหรับเหลี่ยมบนหน้า
กลับรหัส верชันใบหน้า
กลับหน้าทั้งหมดของเมช
กลับรายชื่อหน้าที่ใช้รหัสละครอัตริกาที่กำหนด
กลับสู่เวกเตอร์ปกติสำหรับ ID ที่กำหนด
กลับค่าปกติของเมช
รับตำแหน่งของเวิร์ด
กลับรหัส UV ที่ให้ไว้
กลับสีทั้งหมดของเมช
กลับรายการเหลี่ยมของ ID เหลี่ยมที่เสถียร
กลับรายการของเหลี่ยมที่ใช้รหัสลักษณะที่ให้
กลับสตริงที่อธิบาย ID ที่เสถียร ใช้สำหรับวัตถุประสงค์ในการดีบั๊ก
ผสานเหลี่ยมที่สัมพันธ์กัน
ลบหน้าโดยใช้รหัสหน้าที่เสถียรของมัน
ลบเหลี่ยมมุมทั้งหมด การปกติ รังสีอัลตราไวโอเรล และสีที่ไม่ได้ถูกใช้งานออกจากรายการ และส่งคืน ID ที่ลบออก
รีเซ็ตรหัสปกตินี้เพื่อให้คำนวณอัตโนมัติ
ตั้งสีสำหรับรหัสสี
ตั้งค่าสีอัลฟา (ความโปร่งใส) สำหรับรหัสสี
ตั้งค่าสีเหลี่ยมของหน้าให้เป็น ID สีใหม่
ตั้งค่าค่าความปกติของเวิร์ดโฉมให้เป็น ID ปกติใหม่
ตั้งค่ารัศมี UV ของหน้าใหม่เป็นรหัส UV
ตั้งค่าด้านบนใบหน้าให้เป็น ID ด้านบนใหม่
ตั้งค่าปกติสำหรับรหัสปกติ
ตั้งตำแหน่งเหลี่ยมของเมชในพื้นที่เครื่องมือ
ตั้งค่าตำแหน่ง UV สำหรับรหัส UV
แบ่งหน้าทั้งหมดในเมชเป็นสามเหลี่ยม
คุณสมบัติ
วิธีการ
AddColor
เพิ่มสีใหม่ให้กับภาพวาดและส่ง ID สีที่เสถียร
พารามิเตอร์
ส่งค่ากลับ
รหัสสีที่เสถียรของสีใหม่
AddNormal
เพิ่มค่าปกติใหม่ในโครงสร้างและส่งค่าปกติที่เสถียรกลับไป หากค่าปกติไม่ได้ระบุไว้ค่าปกติจะถูกคำนวณโดยอัตโนมัติ
พารามิเตอร์
เวกเตอร์ปกติ หากไม่ระบุค่าปกติจะถูกคำนวณโดยอัตโนมัติ
ส่งค่ากลับ
รหัสปกติที่เสถียรของคนใหม่
AddTriangle
เพิ่มมุมใหม่ในตาข่ายและส่ง ID หน้าที่เสถียร
พารามิเตอร์
รหัสของเหลี่ยมมุมตัวแรก
รหัสของเหลี่ยมมุมที่สอง
รหัสของเหลี่ยมมุมที่สาม
ส่งค่ากลับ
รหัสหน้าที่เสถียรของใบหน้าใหม่
AddUV
เพิ่ม UV ใหม่ในโครงสร้างและส่งคืน ID ของ UV ที่เสถียร
พารามิเตอร์
คู่มือใหม่ของ UV
ส่งค่ากลับ
รหัส UV ที่เสถียรของ新的 UV
AddVertex
เพิ่มมุมใหม่ในภาพรวมและรีเทิร์นรหัสมุมที่เสถียร
พารามิเตอร์
ตําแหน่งในพื้นที่วัตถุท้องถิ่นของเมช
ส่งค่ากลับ
รหัสดาดฟ้าของเซิร์ฟเวกซ์ใหม่
Destroy
ส่งค่ากลับ
FindClosestPointOnSurface
ค้นหาจุดที่ใกล้ที่สุดบนพื้นผิวของเมช. กลับ ID หน้า, ชี้ไปที่เมชในพื้นที่วัตถุท้องถิ่น, และค่า barycentric ของตำแหน่งในหน้า. ดู RaycastLocal() สำหรับข้อมูลเพิ่ม
พารามิเตอร์
ตําแหน่งจุดในพื้นที่วัตถุท้องถิ่นของเมช
ส่งค่ากลับ
Tpulple ของ ID หน้า, ชี้ที่เมชในพื้นที่วัตถุท้องถิ่น, และความเส้นทาง barycentric ของตำแหน่งในหน้า.
FindClosestVertex
ค้นหาเหลี่ยมผืนที่ใกล้ที่สุดกับจุดหนึ่งในพื้นที่และส่ง ID เหลี่ยมผืนที่เสถียร
พารามิเตอร์
ตําแหน่งจุดในพื้นที่วัตถุท้องถิ่นของเมช
ส่งค่ากลับ
รหัสดาดฟีเจอร์ที่ใกล้ที่สุดที่เป็นรุ่นที่มั่นคงที่สุดในช่องว่าง
FindVerticesWithinSphere
ค้นหาเหลี่ยมภายในทั้งหมดและสร้างรายการของไอดีเหลี่ยมที่เสถียร
พารามิเตอร์
ส่งค่ากลับ
รายการของ ID เวรดัลที่มีอยู่ในรูปสี่เหลี่ยมผืนที่ต้องการ
GetAdjacentFaces
ให้รหัสหน้าที่เสถียร, กลับรายการของหน้าที่อยู่ติดกัน
พารามิเตอร์
ส่งค่ากลับ
รายการหน้า ID ที่อยู่ใกล้หน้าที่ให้
GetAdjacentVertices
ให้รหัสผู้อ้างอิงที่เสถียร กลับรายการของเหลี่ยมมุมที่อยู่ใกล้เคียง
พารามิเตอร์
รหัส Vertex รอบ ๆ ที่จะได้รับเหลี่ยมมุม
ส่งค่ากลับ
รายการ ID ของเหลี่ยมมุมต่อไปรอบ ID เหลี่ยมมุมที่ให้
GetColor
กลับสีสำหรับ ID สีที่กำหนด
พารามิเตอร์
รหัสสีที่ต้องการเพื่อรับสี
ส่งค่ากลับ
สีสำหรับรหัสสีที่ร้องขอ
GetColorAlpha
กลับสี alpha (ความโปร่งใส) ที่ให้ไว้ที่รหัสสี
พารามิเตอร์
รหัสสีสำหรับการรับ alpha
ส่งค่ากลับ
สี alpha ที่รหัสสีเสถียร
GetColors
กลับสีทั้งหมดของเมชเป็นรายการของรหัสสีที่เสถียร
ส่งค่ากลับ
รายการของรหัสสีที่เสถียร
GetFaceColors
กลับรหัสสีหน้าสำหรับเหลี่ยมของหน้า
พารามิเตอร์
หน้า ID สำหรับการรับ ID สี
ส่งค่ากลับ
รายการ ID สีที่ใช้สำหรับเหนือกากบนใบหน้าที่ให้
GetFaceNormals
กลับรหัสปกติของหน้าสำหรับเหลี่ยมบนหน้า
พารามิเตอร์
หน้า ID สำหรับการรับ ID ปกติ
ส่งค่ากลับ
รายการของ ID ปกติที่ใช้สำหรับเหลี่ยมมุมบนใบหน้าที่ให้
GetFaceUVs
กลับรหัส UV ของหน้าสำหรับเหลี่ยมบนหน้า
พารามิเตอร์
หน้าสำหรับการรับ ID ของ UV
ส่งค่ากลับ
รายการของ UV ID ที่ใช้สำหรับเหลี่ยมมุมบนใบหน้าที่ให้
GetFaceVertices
กลับรหัส верชันใบหน้า
พารามิเตอร์
ส่งค่ากลับ
รายการของรหัสผู้อ้างอิงรอบหน้าที่ให้
GetFaces
กลับหน้าทั้งหมดของเมชเป็นรายการของ ID หน้าที่เสถียร
ส่งค่ากลับ
รายการของรหัสหน้าที่เสถียร
GetFacesWithAttribute
กลับรายการหน้าที่ใช้รหัสผู้คุมของผู้ให้, รหัสปกติ, ID ของผู้ใช้ทั่วไปหรือสีของผู้ใช้
พารามิเตอร์
รหัสลักษณะที่ต้องการค้นหาใบหน้าที่ใช้มัน
ส่งค่ากลับ
รายการหน้าที่ใช้ ID ลักษณะที่ให้
GetNormal
กลับสู่เวกเตอร์ปกติสำหรับ ID ที่กำหนด
พารามิเตอร์
รหัสปกติสำหรับการรับเวกเตอร์ปกติ
ส่งค่ากลับ
เป็นเวกเตอร์ปกติที่มี ID ปกติ
GetNormals
กลับรายการของค่าตัวปกติทั้งหมดของเมชเป็นรายการของ ID ปกติที่เสถียร
ส่งค่ากลับ
รายการของรหัสปกติที่เสถียร
GetPosition
รับตำแหน่งของเวิร์ดในพื้นที่เวชรุกของเมช
พารามิเตอร์
รหัสผู้อนุญาตสถานที่ที่ต้องการรับตำแหน่ง
ส่งค่ากลับ
ตําแหน่งของเวิร์ดในพื้นที่วัตถุท้องถิ่นของเมช
GetUV
กลับรหัส UV ที่ให้ไว้
พารามิเตอร์
รหัส UV สำหรับการรับค่า coordinated ของ UV
ส่งค่ากลับ
UV คอร์ดิเนต์ที่ร้องขอได้ที่รหัส UV
GetUVs
กลับรายการของ UV ทั้งหมดของเมชเป็นรายการของ ID ของ UV ที่เสถียร
ส่งค่ากลับ
รายการของรหัส UV ที่เสถียร
GetVertices
กลับรายการเหลี่ยมของ ID เหลี่ยมที่เสถียร
ส่งค่ากลับ
รายการของ ID เวร์เนลที่มั่นคง
GetVerticesWithAttribute
กลับรายการของเหลี่ยมที่ใช้ ID หน้าที่กำหนด รหัสปกติ รหัส UV หรือรหัสสี
พารามิเตอร์
รหัสลักษณะที่ต้องการค้นหาเหลี่ยมจุดที่ใช้มัน
ส่งค่ากลับ
รายการของ ID เวิร์ดที่ใช้ ID ละครที่ให้
IdDebugString
กลับสตริงที่อธิบาย ID ที่เสถียร, มีประโยชน์สำหรับการดีบั๊ก, เช่น f17 หรือ v12, พิมพ์, หมายเลข ID และเวอร์ชัน
พารามิเตอร์
รหัสสำหรับการกลับมาขอข้อมูลสตริงการดีบั๊ก
ส่งค่ากลับ
สตริงที่อธิบาย ID ในรูปแบบที่อ่านได้โดยมนุษย์
MergeVertices
ผสานเหลี่ยมที่สัมพันธ์กันเพื่อใช้รหัสเหลี่ยมเดียว แต่เก็บรหัสลักษณะที่เป็นต้นฉบับไว้
พารามิเตอร์
ระยะที่ผู้สูงสุดจะพิจารณาและสัมผัสกัน
ส่งค่ากลับ
แผนที่ของเก่าไอดีเวอร์สู่ไอดีเวอร์ใหม่สำหรับเวงงงที่ได้รวมกัน
RaycastLocal
สร้างลำแสงและส่งค่าตรวจสอบจุดสัมพันธ์หน้า รหัสใบหน้า และค่าตำแหน่งเหนือศีนของตรวจสอบ การใช้งานนี้ใช้ในพื้นที่ตัวแก้วของเมช
barycentric coordinate เป็นวิธีการระบุจุดภายในใบหน้าเป็นคอมโบแรงของ 3 ด้านของใบหน้า นี่เป็นวิธีที่มีประโยชน์ในการผสานลักษณะลูกศรของด้านข้างเพื่อให้เป็นเรื่องทั่วไปในการผสานลักษณะ
พารามิเตอร์
ส่งค่ากลับ
ค่าความสัมพันธ์ของจุดสัมพันธ์ รหัสหน้า และตำแหน่งศูนย์กลาง
ตัวอย่างโค้ด
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
RemoveUnused
ลบรูปสีทั้งหมด รูปปกติ รังสีอัลตราไวโอเนล และสีที่ไม่ได้ใช้ในใบหน้าใด ๆ และส่งคืน ID ที่ลบออก
ส่งค่ากลับ
รวมทุกรหัสสถานะที่ลบออก
ResetNormal
รีเซ็ตรหัสปกตินี้เพื่อให้คำนวณอัตโนมัติตามรูปร่างของเมชโกรเตอร์โดยไม่ต้องการการตั้งค่าอย่างชัดเจน
พารามิเตอร์
รหัสปกติที่เสถียรเพื่อรีเซ็ต
ส่งค่ากลับ
SetColor
ตั้งสีสำหรับรหัสสี
พารามิเตอร์
ส่งค่ากลับ
SetColorAlpha
ตั้งค่าสีอัลฟา (ความโปร่งใส) สำหรับรหัสสี
พารามิเตอร์
ส่งค่ากลับ
SetFaceColors
ตั้งค่าสีเหลี่ยมของหน้าให้เป็น ID สีใหม่
พารามิเตอร์
รหัสใบหน้าสำหรับการปรับปรุงสีของเวิร์ด
รายการ ID สีใหม่ที่เสถียรสำหรับเหลี่ยมมุมของใบหน้า
ส่งค่ากลับ
SetFaceNormals
ตั้งค่าค่าความปกติของเวิร์ดโฉมให้เป็น ID ปกติใหม่
พารามิเตอร์
หน้า ID สำหรับการปรับปรุงค่าปกติของเวิร์ด
รายการ ID ปกติใหม่ที่จะใช้สำหรับเหลี่ยมมุมของใบหน้าที่ให้
ส่งค่ากลับ
SetFaceUVs
ตั้งค่ารัศมี UV ของหน้าใหม่เป็นรหัส UV
พารามิเตอร์
รหัสใบหน้าสำหรับการปรับปรุง UV ของเวิร์ด
รายการใหม่ของ UV ID ที่เสถียรสำหรับเหลี่ยมมุมของใบหน้า
ส่งค่ากลับ
SetFaceVertices
ตั้งค่าด้านบนใบหน้าให้เป็น ID ด้านบนใหม่
พารามิเตอร์
รหัสใบหน้าสำหรับการปรับปรุงเหลี่ยมมุม
รายการ ID เหลี่ยมมุมใหม่ที่เสถียรที่จะใช้สำหรับใบหน้าที่ให้
ส่งค่ากลับ
SetNormal
ตั้งค่าปกติสำหรับประจำตัวปกติ นี่จะเปลี่ยนค่าปกติสำหรับแต่ละมุมมองที่ใช้ประจำตัวปกติ
พารามิเตอร์
ส่งค่ากลับ
SetPosition
ตั้งตำแหน่งเหลี่ยมของเมชในพื้นที่เครื่องมือ
พารามิเตอร์
ส่งค่ากลับ
SetUV
ตั้งค่าตำแหน่ง UV สำหรับรหัส UV
พารามิเตอร์
ส่งค่ากลับ
Triangulate
แบ่งหน้าทั้งหมดในเมชเป็นสามเหลี่ยมเพื่อให้เป็นสามเหลี่ยม ตอนนี้ไม่ได้ทำอะไรเนื่องจากสามเหลี่ยมเท่านั้นที่สามารถสร้างได้ แต่ถ้าโค้ดของคุณใช้สามเหลี่ยม ก็แนะนำให้คุณเร