EditableMesh
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
EditableMesh เปลี่ยนเมชภาพที่ใช้เมื่อเชื่อมโยงกับ MeshPart ทำให้สามารถสอบถามและแก้ไขเมชได้ทั้งใน Studio และในประสบการณ์
สามารถสร้าง EditableMesh จาก Content ที่มีอยู่แล้วของ MeshPart หรือ ID เมชที่ใช้ AssetService:CreateEditableMeshAsync() หรือ EditableMesh ว่างเปล่าสามารถสร้างได้ด้วย AssetService:CreateEditableMesh()จากนั้นสามารถแสดง ปรับแต่ง และอัปเดตโมเดลการชนกันได้ไม่ใช่ทุกขั้นตอนที่จำเป็น; ตัวอย่างเช่นคุณอาจต้องการสร้าง EditableMesh เพียงเพื่อส่งรังสีโดยไม่แสดงมันเลย
An EditableMesh จะแสดงเมื่อเชื่อมโยงกับ MeshPart ใหม่ผ่าน AssetService:CreateMeshPartAsync()คุณสามารถสร้าง instance เพิ่มเติม ที่อ้างอิงถึงเดียวกัน หรือเชื่อมโยงไปยัง instance ที่มีอยู่แล้ว ผ่าน
เพื่อคำนวณการชนกันและภาคภูมิศาสตร์ของของไหลอีกครั้งหลังการแก้ไขคุณสามารถโทร AssetService:CreateMeshPartAsync() และ MeshPart:ApplyMesh() อีกครั้งเพื่ออัปเดต MeshPart ที่มีอยู่โดยทั่วไปแนะนำให้ทำเช่นนี้ในตอนท้ายของการแก้ไขแนวคิด ไม่ใช่หลังจากการโทรแยกกันไปยังวิธีการที่จัดการเรขาคณิตการเปลี่ยนแปลงทางภาพกับเมชจะสะท้อนได้ทันทีโดยเครื่องยนต์เสมอโดยไม่จำเป็นต้องเรียก AssetService:CreateMeshPartAsync()
เปิดใช้งาน EditableMesh สำหรับประสบการณ์ที่เผยแพร่
เพื่อวัตถุประสงค์ด้านความปลอดภัยการใช้ EditableMesh ตรวจสอบยืนยันตัวตน, EditableMesh , คุณต้องมีอายุ 13+ และตรวจสอบไอดีแล้วหลังจากที่คุณได้รับการยืนยันแล้ว เปิดการตั้งค่าเกมของ Studio , เลือก ความปลอดภัย และเปิดใช้งานสวิตช์ อนุญาต API เมชและภาพ อย่าลืมตรวจสอบ เงื่อนไขการใช้งาน ก่อนเปิดใช้งานสลับ
สิทธิ์
เพื่อป้องกันการใช้งานผิดพลาด AssetService:CreateEditableMeshAsync() จะอนุญาตให้คุณโหลดและแก้ไขทรัพยากรเมชเท่านั้น:
- ที่เป็นเจ้าของโดยผู้สร้างประสบการณ์ (ถ้าประสบการณ์เป็นของบุคคล)
- ที่เป็นเจ้าของโดยกลุ่ม (หากประสบการณ์เป็นเจ้าของโดยกลุ่ม)
- ที่เป็นเจ้าของโดยผู้ใช้ Studio ที่ล็อกอินแล้ว (หากไฟล์สถานที่ยังไม่ถูกบันทึกหรือเผยแพร่ไปยัง Roblox)
API จะโยนข้อผิดพลาดหากใช้เพื่อโหลดสินทรัพย์ที่ไม่ตรงตามเกณฑ์ด้านบน
เมชขนาดคงที่
เมื่อสร้างเมช EditableMesh จากแอสเซทเมชที่มีอยู่แล้ว (ผ่าน AssetService:CreateEditableMeshAsync() ) เมชที่แก้ไขได้จะมีขนาดคงที่โดยค่าเริ่มต้นเมชขนาดคงที่มีประสิทธิภาพมากขึ้นในเรื่องของหน่วยความจํา แต่คุณไม่สามารถเปลี่ยนจํานวนเวอร์ซิส ใบหน้า หรือคุณสมบัติได้เฉพาะค่าของคุณสมบัติเวอร์เท็กซ์และตําแหน่งที่สามารถแก้ไขได้
ระยะเวลาแนวโน้ม/รหัสใบหน้าที่เสถียร
หลายวิธี EditableMesh ใช้ vertex , ปกติ , UV , สี และ ใบหน้า IDเหล่านี้จะถูกแทนที่เป็นจํานวนเต็มใน Luau แต่ต้องใช้การจัดการพิเศษความแตกต่างหลักคือตัวระบุมีความเสถียรและยังคงเหมือนเดิมแม้ว่าส่วนอื่นๆ ของเมทริกซ์จะเปลี่ยนแปลงตัวอย่างเช่น หาก EditableMesh มีเหลี่ยมมุมห้า {1, 2, 3, 4, 5} และคุณลบเหลี่ยมมุม 4 เหลี่ยมมุมใหม่จะเป็น {1, 2, 3, 5}
โปรดทราบว่าไอดีไม่ได้รับประกันว่าจะอยู่ในลำดับและอาจมีช่องว่างในการจัดเรียงตัวเลขดังนั้นเมื่อตรวจสอบผ่านเวอร์ติกหรือใบหน้าคุณควรตรวจสอบผ่านตารางที่ส่งคืนโดย GetVertices() หรือ GetFaces()
แยกลักษณะเวอร์เท็กซ์
เวอร์เท็กซ์ เป็นมุมของใบหน้า และเชื่อมต่อใบหน้าร่วมกันทางทฤษฎีจุดสามารถมีคุณสมบัติหลายอย่างได้ เช่น ตำแหน่ง ปกติ พิกัด UV สี และความโปร่งใส
บางครั้งมันมีประโยชน์สำหรับใบหน้าทั้งหมดที่สัมผัสเวอร์เน็กซ์เพื่อใช้ค่าคุณสมบัติเดียวกัน แต่บางครั้งคุณจะต้องการใบหน้าที่แตกต่างกันใช้ค่าคุณสมบัติที่แตกต่างกันบนเวอร์เน็กซ์เดียวกันตัวอย่างเช่นบนทรงกลมที่เรียบเนียนแต่ละเวกเซลจะมีเพียงเวกเดียวเท่านั้นในทางกลับกันที่มุมของลูกบาศก์เวอร์เน็กซ์จะมี 3 ปกติที่แตกต่างกัน (หนึ่งสำหรับใบหน้าที่อยู่ติดกันแต่ละอัน)คุณยังสามารถมีรอยต่อในพิกัด UV หรือการเปลี่ยนแปลงอย่างกะทันหันในสีเวอร์เน็กซ์ได้
เมื่อสร้างใบหน้า ทุกเหลี่ยมจะมีค่าเริ่มต้นของแต่ละคุณสมบัติหนึ่ง: หนึ่งปกติ, หนึ่งคอร์ด UV และหนึ่งสี/ความโปร่งใสหากต้องการสร้างรอยต่อ คุณควรสร้างคุณสมบัติใหม่และตั้งค่าไว้บนใบหน้าตัวอย่างเช่น โค้ดนี้จะสร้างลูกบาศก์ที่แหลมคม:
local AssetService = game:GetService("AssetService")
-- ให้ 4 ไอดีเหลี่ยม เพิ่มเหลี่ยมใหม่และ 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 เหลี่ยม การพยายามเพิ่มเหลี่ยมหรือเหลี่ยมมากเกินไปจะทําให้เกิดข้อผิดพลาด
สรุป
คุณสมบัติ
ส่งคืน true หากเมชมีขนาดคงที่
วิธีการ
เพิ่มสีใหม่ให้กับเรขาคณิตและส่งคืน ID สีที่เสถียร
เพิ่มปกติใหม่ให้กับรูปร่างและส่งคืน ID ปกติที่เสถียร
เพิ่มสามเหลี่ยมใหม่ในเมชและส่งคืน ID ใบหน้าที่เสถียร
เพิ่ม UV ใหม่ให้กับเรขาคณิตและส่งคืน ID UV ที่เสถียร
เพิ่มเวกเซลใหม่ให้กับรูปร่างและส่งคืน ID เวกเซลที่เสถียร
ทำลายเมทช์
ค้นหาจุดที่ใกล้ที่สุดบนพื้นผิวของเมช
ค้นหาเวกเซลล์ที่ใกล้ที่สุดไปยังจุดเฉพาะในพื้นที่
ค้นหาเวอร์ติกทั้งหมดภายในทรงกลมเฉพาะ
ส่งคืนรายการใบหน้าที่อยู่ติดกับใบหน้าที่กำหนดแล้ว
ส่งคืนรายการของจุดเชิงเส้นที่อยู่ติดกับจุดที่กำหนด
คืนสีสำหรับรหัสสีที่กำหนดไว้
ส่งคืนสีอัลฟา (ความโปร่งใส) ที่ ID สีที่กำหนด
ส่งคืนสีทั้งหมดของเมทช์
ส่งคืนรหัสสีใบหน้าสำหรับจุดบนใบหน้า
ส่งคืนรหัสปกติของใบหน้าสำหรับเหลี่ยมบนใบหน้า
ส่งคืน UV ID ของใบหน้าสำหรับจุดบนใบหน้า
restores ไอดีเวกเซลของใบหน้า
คืนใบหน้าทั้งหมดของเมทช์
คืนเวกเตอร์ปกติสำหรับรหัสปกติที่กำหนดไว้
คืนค่าปกติทั้งหมดของเมทช์
รับตำแหน่งของvertex
ส่งค่าพิกัด UV ที่ ID UV ที่กำหนด
คืนยูวีทั้งหมดของเมทช์
คืนเวอร์ติกทั้งหมดเป็นรายการของ ID เวอร์ติกที่มีความเสถียร
คืนสตริงที่อธิบายถึงรหัสเสถียรที่มีประโยชน์สำหรับการดีบัก
รวมเหลี่ยมที่สัมผัสกัน
ลบใบหน้าโดยใช้ ID ใบหน้าที่มั่นคง
ลบเวอร์ติกทั้งหมดที่ไม่ได้ใช้, ปกติ, UV และสี และส่งคืนรหัสที่ถูกลบออก
รีเซ็ต ID ปกตินี้เพื่อคำนวณโดยอัตโนมัติ
ตั้งสีสำหรับรหัสสี
ตั้งสีอัลฟา (ความโปร่งใส) สำหรับรหัสสีไว้
ตั้งสีเวกเซลของใบหน้าเป็น ID สีใหม่
ตั้งค่าเวกเตอร์ปกติของใบหน้าเป็น ID ปกติใหม่
ตั้ง UV ขอบเขตของใบหน้าเป็น UV ID ใหม่
ตั้งค่าเหลี่ยมของใบหน้าเป็น ID เหลี่ยมใหม่
ตั้งค่าปกติสำหรับรหัสปกติ
ตั้งตำแหน่งเวอร์เท็กซ์ในพื้นที่วัตถุท้องถิ่นของเมช ที่
ตั้งค่าพิกัด UV สำหรับรหัส UV
แยกใบหน้าทั้งหมดบนเมทช์ให้เป็นสามเหลี่ยม
คุณสมบัติ
วิธีการ
AddColor
เพิ่มสีใหม่ให้กับเรขาคณิตและส่งคืน ID สีที่เสถียร
พารามิเตอร์
ส่งค่ากลับ
รหัสสีคงที่ของสีใหม่
AddNormal
เพิ่มค่าปกติใหม่ให้กับรูปทรงและส่งคืน ID ปกติที่เสถียร หากค่าปกติไม่ได้ระบุ ปกติจะถูกคำนวณโดยอัตโนมัติ
พารามิเตอร์
เวกเตอร์ปกติ หากไม่ระบุค่าปกติ ค่าปกติจะถูกคำนวณโดยอัตโนมัติ
ส่งค่ากลับ
ID ปกติที่เสถียรของความปกติใหม่
AddTriangle
เพิ่มสามเหลี่ยมใหม่ในเมชและส่งคืน ID ใบหน้าที่เสถียร
พารามิเตอร์
ID ของเหลี่ยมมุมแรก
ID ของจุดยอดที่สองของสามเหลี่ยม
ID ของเหลี่ยมมุมที่สามของสามเหลี่ยม
ส่งค่ากลับ
ID ใบหน้าคงที่ของใบหน้าใหม่
AddUV
เพิ่ม UV ใหม่ให้กับเรขาคณิตและส่งคืน ID UV ที่เสถียร
พารามิเตอร์
พิกัด UV ใหม่
ส่งค่ากลับ
รหัส UV คงที่ของ UV ใหม่
AddVertex
เพิ่มเวกเซลใหม่ให้กับรูปร่างและส่งคืน ID เวกเซลที่เสถียร
พารามิเตอร์
ตำแหน่งในพื้นที่วัตถุท้องถิ่นของเมช
ส่งค่ากลับ
ID เวกเตอร์ที่เสถียรของเวกเตอร์ใหม่
Destroy
ทำลายเนื้อหาของเมทช์โดยทันที และเรียกคืนหน่วยความจําที่ใช้แล้วทันที
ส่งค่ากลับ
FindClosestPointOnSurface
ค้นหาจุดที่ใกล้ที่สุดบนพื้นผิวของเมชคืนรหัสใบหน้า, ชี้ไปที่เมชในพื้นที่วัตถุท้องถิ่น, และพิกัดบาริเซนตริกของตำแหน่งภายในใบหน้าดู RaycastLocal() สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพิกัดศูนย์กลาง
พารามิเตอร์
ตําแหน่งจุดในพื้นที่วัตถุท้องถิ่นของเมช
ส่งค่ากลับ
คู่ของรหัสรูปหน้า, ชี้ไปที่เมชในพื้นที่วัตถุท้องถิ่น, และพิกัดบาริเซนตริกของตำแหน่งภายในใบหน้า
FindClosestVertex
ค้นหาเวกเซลล์ที่ใกล้เคียงที่สุดกับจุดเฉพาะในพื้นที่และส่งคืน ID เวกเซลล์ที่เสถียร
พารามิเตอร์
ตําแหน่งจุดในพื้นที่วัตถุท้องถิ่นของเมช
ส่งค่ากลับ
ID เวอร์ซิสเสถียรที่ใกล้เคียงที่สุดกับจุดที่ระบุในพื้นที่
FindVerticesWithinSphere
ค้นหาเวอร์ติกทั้งหมดภายในสเฟียร์ที่กำหนดและส่งคืนรายการของไอดีเวอร์เสถียร
พารามิเตอร์
ศูนย์กลางของทรงกลมในพื้นที่วัตถุท้องถิ่นของเมช
รัศมีของทรงกลม
ส่งค่ากลับ
รายการ ID เวกเตอร์ที่มีความเสถียรภายในทรงกลมที่ร้องขอ
GetAdjacentFaces
ให้ ID ใบหน้าที่เสถียร, ส่งคืนรายการใบหน้าที่อยู่ติดกัน

พารามิเตอร์
ส่งค่ากลับ
รายการไอดีใบหน้าที่อยู่ติดกับใบหน้าที่กำหนด
GetAdjacentVertices
ให้ ID เวกซ์ที่เสถียร, ส่งคืนรายการของเวกซ์ที่อยู่ติดกัน

พารามิเตอร์
ID เวอร์เท็กซ์รอบซึ่งจะได้รับเวอร์เท็กซ์ที่อยู่ติดกัน
ส่งค่ากลับ
รายการไอดีของเหลี่ยมใกล้เคียงรอบ ID เวอร์ติกที่กำหนดไว้
GetColor
คืนสีสำหรับรหัสสีที่กำหนดไว้
พารามิเตอร์
ID สีสำหรับที่จะได้รับสี
ส่งค่ากลับ
สีสำหรับรหัสสีเสถียรที่ร้องขอ
GetColorAlpha
ส่งคืนสีอัลฟา (ความโปร่งใส) ที่ ID สีคงที่ที่กำหนด
พารามิเตอร์
ID สีที่จะได้รับอัลฟา
ส่งค่ากลับ
สีอัลฟาที่ ID สีคงที่ที่ร้องขอ
GetFaceColors
ส่งคืนรหัสสีใบหน้าสำหรับจุดบนใบหน้า
พารามิเตอร์
ID ใบหน้าสำหรับที่จะได้รับ ID สี
ส่งค่ากลับ
รายการรหัสสีที่ใช้สำหรับเหลี่ยมในใบหน้าที่กำหนด
GetFaceNormals
ส่งคืนรหัสปกติของใบหน้าสำหรับเหลี่ยมบนใบหน้า
พารามิเตอร์
ID ใบหน้าสำหรับที่จะได้รับ ID ปกติ
ส่งค่ากลับ
รายการ ID ปกติที่ใช้สำหรับจุดบนใบหน้าที่กำหนด
GetFaceUVs
ส่งคืน UV ID ของใบหน้าสำหรับจุดบนใบหน้า
พารามิเตอร์
ID ใบหน้าสำหรับที่จะได้รับ UV ID
ส่งค่ากลับ
รายการของรหัส UV ที่ใช้สำหรับจุดบนใบหน้าที่กำหนด
GetFaceVertices
restores ไอดีเวกเซลของใบหน้า
พารามิเตอร์
ส่งค่ากลับ
รายการ ID เวอร์เน็กซ์รอบใบหน้าที่กำหนด
GetFaces
คืนใบหน้าทั้งหมดของเมทริกซ์เป็นรายการของ ID ใบหน้าที่เสถียร
ส่งค่ากลับ
รายการของ ID ใบหน้าที่เสถียร
GetNormal
คืนเวกเตอร์ปกติสำหรับรหัสปกติที่กำหนดไว้
พารามิเตอร์
ID ปกติสำหรับที่จะได้รับเวกเตอร์ปกติ
ส่งค่ากลับ
เวกเตอร์ปกติที่ ID ปกติที่ร้องขอ
GetNormals
คืนค่าปกติทั้งหมดของเมทช์เป็นรายการของ ID ปกติที่มีความเสถียร
ส่งค่ากลับ
รายการของ ID ปกติที่มีความเสถียร
GetPosition
รับตำแหน่งของvertex ในพื้นที่วัตถุท้องถิ่นของเมช
พารามิเตอร์
ID เวกเตอร์ที่เสถียรสำหรับที่จะได้รับตำแหน่ง
ส่งค่ากลับ
ตำแหน่งของเวอร์ซิสในพื้นที่วัตถุท้องถิ่นของเมช
GetUV
ส่งค่าพิกัด UV ที่ ID UV ที่กำหนด
พารามิเตอร์
รหัส UV สำหรับที่จะได้รับพิกัด UV
ส่งค่ากลับ
พิกัด UV ที่ UV ID ที่ร้องขอ
GetUVs
คืน UV ทั้งหมดของเมทริกซ์เป็นรายการของ UV ID ที่มีความเสถียร
ส่งค่ากลับ
รายการของ UV ID ที่เสถียร
GetVertexFaceColor
พารามิเตอร์
ส่งค่ากลับ
GetVertexFaceNormal
พารามิเตอร์
ส่งค่ากลับ
GetVertexFaceUV
พารามิเตอร์
ส่งค่ากลับ
GetVertices
คืนเวอร์ติกทั้งหมดเป็นรายการของ ID เวอร์ติกที่มีความเสถียร
ส่งค่ากลับ
รายการ ID เวอร์ซิสที่มีเสถียรภาพ
IdDebugString
คืนสตริงที่อธิบายไอดีที่เสถียรที่มีประโยชน์สำหรับการดีบักเช่น f17 หรือ v12 ที่มีประเภท ID และรุ่น
พารามิเตอร์
ID สำหรับการส่งคืนสตริงข้อมูลการแก้ไขข้อผิดพลาด
ส่งค่ากลับ
สตริงที่อธิบายรหัสในรูปแบบที่อ่านได้โดยมนุษย์
MergeVertices
รวมเหลี่ยมที่สัมผัสกันเพื่อใช้ ID เหลี่ยมเดียว แต่เก็บ ID คุณสมบัติเดิมอื่นๆ ไว้
พารามิเตอร์
ระยะที่เหลี่ยมมุมถือว่าสัมผัสกันได้
ส่งค่ากลับ
การแมพ ID เวอร์เน็กซ์เก่าไปยัง ID เวอร์เน็กซ์ใหม่สำหรับเวอร์เน็กซ์ที่ถูกรวม
RaycastLocal
โค้งรังสีและส่งคืนจุดแยกทศนิยม, ID ใบหน้า,และพิกัดศูนย์กลางอินพุตและเอาต์พุตของวิธีนี้อยู่ในพื้นที่วัตถุท้องถิ่นของเมช
A พิกัดศูนย์กลาง เป็นวิธีการระบุจุดภายในใบหน้าเป็นการรวมน้ำหนักของ 3 เหลี่ยมของใบหน้านี่เป็นประโยชน์ในฐานะวิธีทั่วไปในการผสมลักษณะเวิร์กซ์ดูตัวอย่างโค้ดของวิธีนี้เป็นภาพประกอบ
พารามิเตอร์
ต้นกำเนิดของรังสีในพื้นที่วัตถุท้องถิ่นของเมช
ทิศทางของรังสี
ส่งค่ากลับ
คู่ของจุดแยกทาง, รหัสใบหน้า, และพิกัดศูนย์กลาง
ตัวอย่างโค้ด
This code finds the position and UV coordinates of the closest point on an EditableMesh to the input point.
local AssetService = game:GetService("AssetService")
-- Initialize EditableMesh in space
local editableMesh = nil
local success, errorMsg = pcall(function()
editableMesh = AssetService:CreateEditableMeshAsync(Content.fromUri("rbxassetid://ASSET_ID"))
end)
local meshPart = nil
if success and editableMesh then
meshPart = AssetService:CreateMeshPartAsync(
Content.fromObject(editableMesh),
{ CollisionFidelity = Enum.CollisionFidelity.Hull }
)
meshPart.Parent = workspace
else
print(errorMsg)
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
ลบเวอร์ติกทั้งหมด, ปกติ, UV และสีที่ไม่ได้ใช้ในใบหน้าใด ๆ และส่งคืนรหัสที่ถูกลบออก
ส่งค่ากลับ
ID คงที่ทั้งหมดที่ถูกลบ
ResetNormal
รีเซ็ต ID ปกตินี้เพื่อคำนวณโดยอัตโนมัติตามรูปร่างของเมช แทนที่จะตั้งค่าด้วยตนเอง
พารามิเตอร์
ID ปกติที่เสถียรเพื่อรีเซ็ต
ส่งค่ากลับ
SetBoneIsVirtual
พารามิเตอร์
ส่งค่ากลับ
SetBoneParent
พารามิเตอร์
ส่งค่ากลับ
SetColor
ตั้งสีสำหรับรหัสสี
พารามิเตอร์
ID สีคงที่สำหรับการตั้งสีที่จะตั้งสี
สีที่จะตั้งค่า
ส่งค่ากลับ
SetColorAlpha
ตั้งสีอัลฟา (ความโปร่งใส) สำหรับรหัสสีไว้
พารามิเตอร์
ID สีคงที่สำหรับการตั้งค่าอัลฟาสี
อัลฟาเพื่อตั้งค่า
ส่งค่ากลับ
SetFaceColors
ตั้งสีเวกเซลของใบหน้าเป็น ID สีใหม่
พารามิเตอร์
ID ใบหน้าสำหรับการอัปเดตสีเวอร์เท็กซ์
รายการ ID สีเสถียรใหม่ที่จะใช้สำหรับจุดยอดของใบหน้าที่กำหนด
ส่งค่ากลับ
SetFaceNormals
ตั้งค่าเวกเตอร์ปกติของใบหน้าเป็น ID ปกติใหม่
พารามิเตอร์
รหัสหน้าสำหรับการอัปเดตค่าปกติของเวอร์ซิส
รายการ ID ปกติใหม่ที่เสถียรสำหรับใช้สำหรับจุดยอดของใบหน้าที่กำหนด
ส่งค่ากลับ
SetFaceUVs
ตั้ง UV ขอบเขตของใบหน้าเป็น UV ID ใหม่
พารามิเตอร์
ID ใบหน้าสำหรับการอัปเดต UV เวอร์ซิส
รายการของ UV ID เสถียรใหม่ที่จะใช้สำหรับเหลี่ยมมุมของใบหน้าที่กำหนด
ส่งค่ากลับ
SetFaceVertices
ตั้งค่าเหลี่ยมของใบหน้าเป็น ID เหลี่ยมใหม่
พารามิเตอร์
ID ใบหน้าสำหรับการอัปเดตเวอร์ติคอล
รายการ ID เวอร์ซิสเสถียรใหม่ที่จะใช้สำหรับใบหน้าที่กำหนด
ส่งค่ากลับ
SetFacsBonePose
พารามิเตอร์
ส่งค่ากลับ
SetFacsCorrectivePose
พารามิเตอร์
ส่งค่ากลับ
SetFacsPose
พารามิเตอร์
ส่งค่ากลับ
SetNormal
ตั้งค่าปกติสำหรับรหัสปกติ ค่าปกติจะเปลี่ยนสำหรับจุดยอดของใบหน้าที่ใช้รหัสปกติทั้งหมด
พารามิเตอร์
ID ปกติที่เสถียรสำหรับการตั้งค่าเวกเตอร์ปกติ
เวกเตอร์ปกติที่จะตั้งค่า
ส่งค่ากลับ
SetPosition
ตั้งตำแหน่งเวอร์เท็กซ์ในพื้นที่วัตถุท้องถิ่นของเมช ที่
พารามิเตอร์
ID เวกเตอร์ที่เสถียรของเวกเตอร์ไปยังตำแหน่ง
ตำแหน่งในพื้นที่วัตถุท้องถิ่นของเมช
ส่งค่ากลับ
SetUV
ตั้งค่าพิกัด UV สำหรับรหัส UV
พารามิเตอร์
ส่งค่ากลับ
SetVertexBoneWeights
พารามิเตอร์
ส่งค่ากลับ
SetVertexFaceColor
พารามิเตอร์
ส่งค่ากลับ
SetVertexFaceNormal
พารามิเตอร์
ส่งค่ากลับ
SetVertexFaceUV
พารามิเตอร์
ส่งค่ากลับ
Triangulate
แยกใบหน้าทั้งหมดบนเมทช์ให้เป็นสามเหลี่ยมขณะนี้ไม่ทำอะไรเนื่องจากสามเหลี่ยมเท่านั้นที่สามารถสร้างได้ แต่ถ้ารหัสของคุณขึ้นอยู่กับสามเหลี่ยมก็แนะนำให้คุณเรียกวิธีนี้หลังจากเรียก AssetService:CreateEditableMeshAsync()