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

ลําดับของจุดยอดรอบใบหน้าจะกำหนดว่าคุณกําลังมองที่ด้านหน้าหรือด้านหลังด้านหน้าของใบหน้าจะเห็นได้เมื่อเหลี่ยมมุมไปในทิศทางตรงกันข้ามรอบๆ มัน

Order of the vertices around the face
ข้อจํากัด

EditableMesh ขณะนี้มีขีดจํากัดของ 60,000 เหลี่ยมและ 20,000 เหลี่ยม การพยายามเพิ่มเหลี่ยมหรือเหลี่ยมมากเกินไปจะทําให้เกิดข้อผิดพลาด

สรุป

คุณสมบัติ

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    การรักษาความปลอดภัยของ Roblox
    อ่านพร้อมๆ กัน

    ส่งคืน true หากเมชมีขนาดคงที่

  • อ่านพร้อมๆ กัน

วิธีการ

คุณสมบัติ

FixedSize

อ่านอย่างเดียว
ไม่ซ้ำ
การรักษาความปลอดภัยของ Roblox
อ่านพร้อมๆ กัน

ตาข่ายขนาดคงที่สามารถเปลี่ยนค่าของคุณสมบัติเวอร์เท็กซ์ได้ แต่ไม่อนุญาตให้เพิ่มหรือลบเหลี่ยมและสามเหลี่ยม

SkinningEnabled

อ่านพร้อมๆ กัน

วิธีการ

AddBone

พารามิเตอร์

boneProperties: Dictionary
ค่าเริ่มต้น: ""

ส่งค่ากลับ

AddColor

เพิ่มสีใหม่ให้กับเรขาคณิตและส่งคืน ID สีที่เสถียร

พารามิเตอร์

color: Color3

สีใหม่

ค่าเริ่มต้น: ""
alpha: number

สีอัลฟา (ความโปร่งใส)

ค่าเริ่มต้น: ""

ส่งค่ากลับ

รหัสสีคงที่ของสีใหม่

AddNormal

เพิ่มค่าปกติใหม่ให้กับรูปทรงและส่งคืน ID ปกติที่เสถียร หากค่าปกติไม่ได้ระบุ ปกติจะถูกคำนวณโดยอัตโนมัติ

พารามิเตอร์

normal: Vector3

เวกเตอร์ปกติ หากไม่ระบุค่าปกติ ค่าปกติจะถูกคำนวณโดยอัตโนมัติ

ค่าเริ่มต้น: ""

ส่งค่ากลับ

ID ปกติที่เสถียรของความปกติใหม่

AddTriangle

เพิ่มสามเหลี่ยมใหม่ในเมชและส่งคืน ID ใบหน้าที่เสถียร

พารามิเตอร์

vertexId0: number

ID ของเหลี่ยมมุมแรก

ค่าเริ่มต้น: ""
vertexId1: number

ID ของจุดยอดที่สองของสามเหลี่ยม

ค่าเริ่มต้น: ""
vertexId2: number

ID ของเหลี่ยมมุมที่สามของสามเหลี่ยม

ค่าเริ่มต้น: ""

ส่งค่ากลับ

ID ใบหน้าคงที่ของใบหน้าใหม่

AddUV

เพิ่ม UV ใหม่ให้กับเรขาคณิตและส่งคืน ID UV ที่เสถียร

พารามิเตอร์

พิกัด UV ใหม่

ค่าเริ่มต้น: ""

ส่งค่ากลับ

รหัส UV คงที่ของ UV ใหม่

AddVertex

เพิ่มเวกเซลใหม่ให้กับรูปร่างและส่งคืน ID เวกเซลที่เสถียร

พารามิเตอร์

ตำแหน่งในพื้นที่วัตถุท้องถิ่นของเมช

ค่าเริ่มต้น: ""

ส่งค่ากลับ

ID เวกเตอร์ที่เสถียรของเวกเตอร์ใหม่

Destroy

()

ทำลายเนื้อหาของเมทช์โดยทันที และเรียกคืนหน่วยความจําที่ใช้แล้วทันที


ส่งค่ากลับ

()

FindClosestPointOnSurface

ค้นหาจุดที่ใกล้ที่สุดบนพื้นผิวของเมชคืนรหัสใบหน้า, ชี้ไปที่เมชในพื้นที่วัตถุท้องถิ่น, และพิกัดบาริเซนตริกของตำแหน่งภายในใบหน้าดู RaycastLocal() สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพิกัดศูนย์กลาง

พารามิเตอร์

point: Vector3

ตําแหน่งจุดในพื้นที่วัตถุท้องถิ่นของเมช

ค่าเริ่มต้น: ""

ส่งค่ากลับ

คู่ของรหัสรูปหน้า, ชี้ไปที่เมชในพื้นที่วัตถุท้องถิ่น, และพิกัดบาริเซนตริกของตำแหน่งภายในใบหน้า

FindClosestVertex

ค้นหาเวกเซลล์ที่ใกล้เคียงที่สุดกับจุดเฉพาะในพื้นที่และส่งคืน ID เวกเซลล์ที่เสถียร

พารามิเตอร์

toThisPoint: Vector3

ตําแหน่งจุดในพื้นที่วัตถุท้องถิ่นของเมช

ค่าเริ่มต้น: ""

ส่งค่ากลับ

ID เวอร์ซิสเสถียรที่ใกล้เคียงที่สุดกับจุดที่ระบุในพื้นที่

FindVerticesWithinSphere

ค้นหาเวอร์ติกทั้งหมดภายในสเฟียร์ที่กำหนดและส่งคืนรายการของไอดีเวอร์เสถียร

พารามิเตอร์

center: Vector3

ศูนย์กลางของทรงกลมในพื้นที่วัตถุท้องถิ่นของเมช

ค่าเริ่มต้น: ""
radius: number

รัศมีของทรงกลม

ค่าเริ่มต้น: ""

ส่งค่ากลับ

รายการ ID เวกเตอร์ที่มีความเสถียรภายในทรงกลมที่ร้องขอ

GetAdjacentFaces

ให้ ID ใบหน้าที่เสถียร, ส่งคืนรายการใบหน้าที่อยู่ติดกัน

Adjacent faces indicated around requested face

พารามิเตอร์

faceId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

รายการไอดีใบหน้าที่อยู่ติดกับใบหน้าที่กำหนด

GetAdjacentVertices

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

Adjacent vertices indicated around requested vertex

พารามิเตอร์

vertexId: number

ID เวอร์เท็กซ์รอบซึ่งจะได้รับเวอร์เท็กซ์ที่อยู่ติดกัน

ค่าเริ่มต้น: ""

ส่งค่ากลับ

รายการไอดีของเหลี่ยมใกล้เคียงรอบ ID เวอร์ติกที่กำหนดไว้

GetBoneByName

พารามิเตอร์

boneName: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetBoneCFrame

พารามิเตอร์

boneId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetBoneIsVirtual

พารามิเตอร์

boneId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetBoneName

พารามิเตอร์

boneId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetBoneParent

พารามิเตอร์

boneId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetBones


ส่งค่ากลับ

GetCenter


ส่งค่ากลับ

ศูนย์กลางของกล่องผูกของ EditableMesh .

GetColor

คืนสีสำหรับรหัสสีที่กำหนดไว้

พารามิเตอร์

colorId: number

ID สีสำหรับที่จะได้รับสี

ค่าเริ่มต้น: ""

ส่งค่ากลับ

สีสำหรับรหัสสีเสถียรที่ร้องขอ

GetColorAlpha

ส่งคืนสีอัลฟา (ความโปร่งใส) ที่ ID สีคงที่ที่กำหนด

พารามิเตอร์

colorId: number

ID สีที่จะได้รับอัลฟา

ค่าเริ่มต้น: ""

ส่งค่ากลับ

สีอัลฟาที่ ID สีคงที่ที่ร้องขอ

GetColors

คืนสีทั้งหมดของเมทริกซ์เป็นรายการของรหัสสีที่เสถียร


ส่งค่ากลับ

รายการ ID สีเสถียร

GetFaceColors

ส่งคืนรหัสสีใบหน้าสำหรับจุดบนใบหน้า

พารามิเตอร์

faceId: number

ID ใบหน้าสำหรับที่จะได้รับ ID สี

ค่าเริ่มต้น: ""

ส่งค่ากลับ

รายการรหัสสีที่ใช้สำหรับเหลี่ยมในใบหน้าที่กำหนด

GetFaceNormals

ส่งคืนรหัสปกติของใบหน้าสำหรับเหลี่ยมบนใบหน้า

พารามิเตอร์

faceId: number

ID ใบหน้าสำหรับที่จะได้รับ ID ปกติ

ค่าเริ่มต้น: ""

ส่งค่ากลับ

รายการ ID ปกติที่ใช้สำหรับจุดบนใบหน้าที่กำหนด

GetFaceUVs

ส่งคืน UV ID ของใบหน้าสำหรับจุดบนใบหน้า

พารามิเตอร์

faceId: number

ID ใบหน้าสำหรับที่จะได้รับ UV ID

ค่าเริ่มต้น: ""

ส่งค่ากลับ

รายการของรหัส UV ที่ใช้สำหรับจุดบนใบหน้าที่กำหนด

GetFaceVertices

restores ไอดีเวกเซลของใบหน้า

พารามิเตอร์

faceId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

รายการ ID เวอร์เน็กซ์รอบใบหน้าที่กำหนด

GetFaces

คืนใบหน้าทั้งหมดของเมทริกซ์เป็นรายการของ ID ใบหน้าที่เสถียร


ส่งค่ากลับ

รายการของ ID ใบหน้าที่เสถียร

GetFacesWithColor

พารามิเตอร์

colorId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetFacesWithNormal

พารามิเตอร์

normalId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetFacesWithUV

พารามิเตอร์

uvId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetFacsCorrectivePose

พารามิเตอร์

actions: Array
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetFacsCorrectivePoses


ส่งค่ากลับ

GetFacsPose

พารามิเตอร์

ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetFacsPoses


ส่งค่ากลับ

GetNormal

คืนเวกเตอร์ปกติสำหรับรหัสปกติที่กำหนดไว้

พารามิเตอร์

normalId: number

ID ปกติสำหรับที่จะได้รับเวกเตอร์ปกติ

ค่าเริ่มต้น: ""

ส่งค่ากลับ

เวกเตอร์ปกติที่ ID ปกติที่ร้องขอ

GetNormals

คืนค่าปกติทั้งหมดของเมทช์เป็นรายการของ ID ปกติที่มีความเสถียร


ส่งค่ากลับ

รายการของ ID ปกติที่มีความเสถียร

GetPosition

รับตำแหน่งของvertex ในพื้นที่วัตถุท้องถิ่นของเมช

พารามิเตอร์

vertexId: number

ID เวกเตอร์ที่เสถียรสำหรับที่จะได้รับตำแหน่ง

ค่าเริ่มต้น: ""

ส่งค่ากลับ

ตำแหน่งของเวอร์ซิสในพื้นที่วัตถุท้องถิ่นของเมช

GetSize


ส่งค่ากลับ

ขนาดของ EditableMesh .

GetUV

ส่งค่าพิกัด UV ที่ ID UV ที่กำหนด

พารามิเตอร์

uvId: number

รหัส UV สำหรับที่จะได้รับพิกัด UV

ค่าเริ่มต้น: ""

ส่งค่ากลับ

พิกัด UV ที่ UV ID ที่ร้องขอ

GetUVs

คืน UV ทั้งหมดของเมทริกซ์เป็นรายการของ UV ID ที่มีความเสถียร


ส่งค่ากลับ

รายการของ UV ID ที่เสถียร

GetVertexBoneWeights

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetVertexBones

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetVertexColors

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetVertexFaceColor

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""
faceId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetVertexFaceNormal

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""
faceId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetVertexFaceUV

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""
faceId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetVertexFaces

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetVertexNormals

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetVertexUVs

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetVertices

คืนเวอร์ติกทั้งหมดเป็นรายการของ ID เวอร์ติกที่มีความเสถียร


ส่งค่ากลับ

รายการ ID เวอร์ซิสที่มีเสถียรภาพ

GetVerticesWithColor

พารามิเตอร์

colorId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetVerticesWithNormal

พารามิเตอร์

normalId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetVerticesWithUV

พารามิเตอร์

uvId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

IdDebugString

คืนสตริงที่อธิบายไอดีที่เสถียรที่มีประโยชน์สำหรับการดีบักเช่น f17 หรือ v12 ที่มีประเภท ID และรุ่น

พารามิเตอร์

id: number

ID สำหรับการส่งคืนสตริงข้อมูลการแก้ไขข้อผิดพลาด

ค่าเริ่มต้น: ""

ส่งค่ากลับ

สตริงที่อธิบายรหัสในรูปแบบที่อ่านได้โดยมนุษย์

MergeVertices

Map

รวมเหลี่ยมที่สัมผัสกันเพื่อใช้ ID เหลี่ยมเดียว แต่เก็บ ID คุณสมบัติเดิมอื่นๆ ไว้

พารามิเตอร์

mergeTolerance: number

ระยะที่เหลี่ยมมุมถือว่าสัมผัสกันได้

ค่าเริ่มต้น: ""

ส่งค่ากลับ

Map

การแมพ ID เวอร์เน็กซ์เก่าไปยัง ID เวอร์เน็กซ์ใหม่สำหรับเวอร์เน็กซ์ที่ถูกรวม

RaycastLocal

โค้งรังสีและส่งคืนจุดแยกทศนิยม, ID ใบหน้า,และพิกัดศูนย์กลางอินพุตและเอาต์พุตของวิธีนี้อยู่ในพื้นที่วัตถุท้องถิ่นของเมช

A พิกัดศูนย์กลาง เป็นวิธีการระบุจุดภายในใบหน้าเป็นการรวมน้ำหนักของ 3 เหลี่ยมของใบหน้านี่เป็นประโยชน์ในฐานะวิธีทั่วไปในการผสมลักษณะเวิร์กซ์ดูตัวอย่างโค้ดของวิธีนี้เป็นภาพประกอบ

พารามิเตอร์

origin: Vector3

ต้นกำเนิดของรังสีในพื้นที่วัตถุท้องถิ่นของเมช

ค่าเริ่มต้น: ""
direction: Vector3

ทิศทางของรังสี

ค่าเริ่มต้น: ""

ส่งค่ากลับ

คู่ของจุดแยกทาง, รหัสใบหน้า, และพิกัดศูนย์กลาง

ตัวอย่างโค้ด

This code finds the position and UV coordinates of the closest point on an EditableMesh to the input point.

EditableMesh:RaycastLocal()

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

RemoveBone

()

พารามิเตอร์

boneId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

RemoveFace

()

ลบใบหน้าโดยใช้ ID ใบหน้าที่มั่นคง

พารามิเตอร์

faceId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

RemoveUnused

ลบเวอร์ติกทั้งหมด, ปกติ, UV และสีที่ไม่ได้ใช้ในใบหน้าใด ๆ และส่งคืนรหัสที่ถูกลบออก


ส่งค่ากลับ

ID คงที่ทั้งหมดที่ถูกลบ

ResetNormal

()

รีเซ็ต ID ปกตินี้เพื่อคำนวณโดยอัตโนมัติตามรูปร่างของเมช แทนที่จะตั้งค่าด้วยตนเอง

พารามิเตอร์

normalId: number

ID ปกติที่เสถียรเพื่อรีเซ็ต

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetBoneCFrame

()

พารามิเตอร์

boneId: number
ค่าเริ่มต้น: ""
cframe: CFrame
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetBoneIsVirtual

()

พารามิเตอร์

boneId: number
ค่าเริ่มต้น: ""
virtual: boolean
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetBoneName

()

พารามิเตอร์

boneId: number
ค่าเริ่มต้น: ""
name: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetBoneParent

()

พารามิเตอร์

boneId: number
ค่าเริ่มต้น: ""
parentBoneId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetColor

()

ตั้งสีสำหรับรหัสสี

พารามิเตอร์

colorId: number

ID สีคงที่สำหรับการตั้งสีที่จะตั้งสี

ค่าเริ่มต้น: ""
color: Color3

สีที่จะตั้งค่า

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetColorAlpha

()

ตั้งสีอัลฟา (ความโปร่งใส) สำหรับรหัสสีไว้

พารามิเตอร์

colorId: number

ID สีคงที่สำหรับการตั้งค่าอัลฟาสี

ค่าเริ่มต้น: ""
alpha: number

อัลฟาเพื่อตั้งค่า

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetFaceColors

()

ตั้งสีเวกเซลของใบหน้าเป็น ID สีใหม่

พารามิเตอร์

faceId: number

ID ใบหน้าสำหรับการอัปเดตสีเวอร์เท็กซ์

ค่าเริ่มต้น: ""
ids: Array

รายการ ID สีเสถียรใหม่ที่จะใช้สำหรับจุดยอดของใบหน้าที่กำหนด

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetFaceNormals

()

ตั้งค่าเวกเตอร์ปกติของใบหน้าเป็น ID ปกติใหม่

พารามิเตอร์

faceId: number

รหัสหน้าสำหรับการอัปเดตค่าปกติของเวอร์ซิส

ค่าเริ่มต้น: ""
ids: Array

รายการ ID ปกติใหม่ที่เสถียรสำหรับใช้สำหรับจุดยอดของใบหน้าที่กำหนด

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetFaceUVs

()

ตั้ง UV ขอบเขตของใบหน้าเป็น UV ID ใหม่

พารามิเตอร์

faceId: number

ID ใบหน้าสำหรับการอัปเดต UV เวอร์ซิส

ค่าเริ่มต้น: ""
ids: Array

รายการของ UV ID เสถียรใหม่ที่จะใช้สำหรับเหลี่ยมมุมของใบหน้าที่กำหนด

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetFaceVertices

()

ตั้งค่าเหลี่ยมของใบหน้าเป็น ID เหลี่ยมใหม่

พารามิเตอร์

faceId: number

ID ใบหน้าสำหรับการอัปเดตเวอร์ติคอล

ค่าเริ่มต้น: ""
ids: Array

รายการ ID เวอร์ซิสเสถียรใหม่ที่จะใช้สำหรับใบหน้าที่กำหนด

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetFacsBonePose

()

พารามิเตอร์

ค่าเริ่มต้น: ""
boneId: number
ค่าเริ่มต้น: ""
cframe: CFrame
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetFacsCorrectivePose

()

พารามิเตอร์

actions: Array
ค่าเริ่มต้น: ""
boneIds: Array
ค่าเริ่มต้น: ""
cframes: Array
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetFacsPose

()

พารามิเตอร์

ค่าเริ่มต้น: ""
boneIds: Array
ค่าเริ่มต้น: ""
cframes: Array
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetNormal

()

ตั้งค่าปกติสำหรับรหัสปกติ ค่าปกติจะเปลี่ยนสำหรับจุดยอดของใบหน้าที่ใช้รหัสปกติทั้งหมด

พารามิเตอร์

normalId: number

ID ปกติที่เสถียรสำหรับการตั้งค่าเวกเตอร์ปกติ

ค่าเริ่มต้น: ""
normal: Vector3

เวกเตอร์ปกติที่จะตั้งค่า

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetPosition

()

ตั้งตำแหน่งเวอร์เท็กซ์ในพื้นที่วัตถุท้องถิ่นของเมช ที่

พารามิเตอร์

vertexId: number

ID เวกเตอร์ที่เสถียรของเวกเตอร์ไปยังตำแหน่ง

ค่าเริ่มต้น: ""

ตำแหน่งในพื้นที่วัตถุท้องถิ่นของเมช

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetUV

()

ตั้งค่าพิกัด UV สำหรับรหัส UV

พารามิเตอร์

uvId: number

รหัส UV สำหรับการตั้งค่าพิกัด UV

ค่าเริ่มต้น: ""

พิกัด UV

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetVertexBoneWeights

()

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""
boneWeights: Array
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetVertexBones

()

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""
boneIDs: Array
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetVertexFaceColor

()

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""
faceId: number
ค่าเริ่มต้น: ""
colorId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetVertexFaceNormal

()

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""
faceId: number
ค่าเริ่มต้น: ""
normalId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetVertexFaceUV

()

พารามิเตอร์

vertexId: number
ค่าเริ่มต้น: ""
faceId: number
ค่าเริ่มต้น: ""
uvId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

Triangulate

()

แยกใบหน้าทั้งหมดบนเมทช์ให้เป็นสามเหลี่ยมขณะนี้ไม่ทำอะไรเนื่องจากสามเหลี่ยมเท่านั้นที่สามารถสร้างได้ แต่ถ้ารหัสของคุณขึ้นอยู่กับสามเหลี่ยมก็แนะนำให้คุณเรียกวิธีนี้หลังจากเรียก AssetService:CreateEditableMeshAsync()


ส่งค่ากลับ

()

อีเวนต์