EditableMesh

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง

EditableMesh เปลี่ยนเมชภาพที่ใช้เมื่อเชื่อมโยงกับ MeshPart ทำให้สามารถสอบถามและแก้ไขเมชได้ทั้งใน Studio และในประสบการณ์

เปิดใช้งานสำหรับประสบการณ์ที่เผยแพร่

เพื่อวัตถุประสงค์ด้านความปลอดภัยการใช้ EditableMesh จะล้มเหลวโดยค่าเริ่มต้นสำหรับประสบการณ์ที่เผยแพร่เพื่อเปิดใช้งานการใช้งานคุณต้องมีอายุ 13+ และตรวจสอบไอดีแล้วหลังจากที่คุณได้รับการยืนยันแล้ว เปิดการตั้งค่าเกมของ Studio , เลือก ความปลอดภัย และเปิดใช้งานสวิตช์ อนุญาตให้ใช้ API เมช/รูปภาพ

สิทธิ์

เพื่อป้องกันการใช้งานผิดพลาด AssetService:CreateEditableMeshAsync() จะอนุญาตให้คุณโหลดและแก้ไขทรัพยากรเมชเท่านั้น:

  • ที่เป็นเจ้าของโดยผู้สร้างประสบการณ์ (ถ้าประสบการณ์เป็นของบุคคล)
  • ที่เป็นเจ้าของโดยกลุ่ม (หากประสบการณ์เป็นเจ้าของโดยกลุ่ม)
  • ที่เป็นเจ้าของโดยผู้ใช้ Studio ที่ล็อกอินแล้ว (หากไฟล์สถานที่ยังไม่ถูกบันทึกหรือเผยแพร่ไปยัง Roblox)

ขีดจํากัดความทรงจํา

สินทรัพย์ที่สามารถแก้ไขได้มีราคาแพงสำหรับการใช้หน่วยความจําในปัจจุบันเพื่อลดผลกระทบต่อประสิทธิภาพของไคลเอนต์ EditableMesh มีงบประมาณหน่วยความจำของไคลเอนต์อย่างเคร่งครัด แม้ว่าเซิร์ฟเวอร์ สตูดิโอ และปลั๊กอินจะทำงานด้วยหน่วยความจำไม่จำกัดการใช้ FixedSize อาจช่วยให้คุณอยู่ภายในงบประมาณหน่วยความจำและในบางสถานการณ์การเชื่อมโยงหนึ่ง EditableMesh กับหลาย MeshParts (การอ้างอิงหลายครั้ง) สามารถช่วยเพิ่มประสิทธิภาพของหน่วยความจำได้

การสร้างและแสดง

สามารถสร้าง EditableMesh จาก Content ที่มีอยู่แล้วของ MeshPart หรือ ID เมชที่ใช้ AssetService:CreateEditableMeshAsync() หรือ EditableMesh ว่างเปล่าสามารถสร้างได้ด้วย AssetService:CreateEditableMesh()จากนั้นสามารถแสดง ปรับแต่ง และอัปเดตโมเดลการชนกันได้ไม่ใช่ทุกขั้นตอนที่จำเป็น; ตัวอย่างเช่นคุณอาจต้องการสร้าง EditableMesh เพียงเพื่อส่งรังสีโดยไม่แสดงมันเลย


local AssetService = game:GetService("AssetService")
-- สร้าง EditableMesh ว่างเปล่า
local editableMesh = AssetService:CreateEditableMesh()
-- สร้าง EditableMesh จาก ID สินทรัพย์
local editableMeshFromAsset = nil
local success, errorMessage = pcall(function()
editableMeshFromAsset = AssetService:CreateEditableMeshAsync(Content.fromAssetId(ASSET_ID))
end)
-- สร้าง EditableMesh จาก EditableMesh อื่น
local editableMeshFromAnother = nil
local success, errorMessage = pcall(function()
editableMeshFromAnother = AssetService:CreateEditableMeshAsync(Content.fromObject(OTHER_EDITABLE_MESH))
end)
-- สร้าง EditableMesh จาก MeshPart
local editableMeshFromMeshPart = nil
local success, errorMessage = pcall(function()
editableMeshFromMeshPart = AssetService:CreateEditableMeshAsync(MESH_PART.MeshContent)
end)

An EditableMesh จะแสดงเมื่อเชื่อมโยงกับ MeshPart ใหม่ผ่าน AssetService:CreateMeshPartAsync()คุณสามารถสร้าง instance เพิ่มเติม ที่อ้างอิงถึงเดียวกัน หรือเชื่อมโยงไปยัง instance ที่มีอยู่แล้ว ผ่าน


local AssetService = game:GetService("AssetService")
local Workspace = game:GetService("Workspace")
-- สร้าง EditableMesh จาก ID สินทรัพย์
local editableMeshFromAsset = nil
local success, errorMessage = pcall(function()
editableMeshFromAsset = AssetService:CreateEditableMeshAsync(Content.fromAssetId(ASSET_ID))
end)
-- สร้าง MeshPart ใหม่ที่เชื่อมโยงกับ EditableMesh
local newMeshPart = nil
local success, errorMessage = pcall(function()
newMeshPart = AssetService:CreateMeshPartAsync(Content.fromObject(editableMeshFromAsset))
end)
-- หรือเชื่อมโยง MeshPart ใหม่ที่สร้างขึ้นข้างต้นไปยัง MeshPart ที่มีอยู่
local existingMeshPart = Workspace:FindFirstChild("EXISTING_MESH_PART")
existingMeshPart:ApplyMesh(newMeshPart)

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

เมชขนาดคงที่

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


local AssetService = game:GetService("AssetService")
-- สร้าง EditableMesh โดยไม่มีขนาดคงที่เริ่มต้น
local editableMeshFromAsset = nil
local success, errorMessage = pcall(function()
editableMeshFromAsset = AssetService:CreateEditableMeshAsync(Content.fromAssetId(ASSET_ID), {FixedSize = false})
end)

ระยะเวลาแนวโน้ม/รหัสใบหน้าที่เสถียร

หลายวิธี 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(editableMesh, vid0, vid1, vid2, vid3)
local nid = editableMesh:AddNormal() -- สิ่งนี้สร้าง ID ปกติซึ่งคำนวณโดยอัตโนมัติ
local fid1 = editableMesh:AddTriangle(vid0, vid1, vid2)
editableMesh:SetFaceNormals(fid1, {nid, nid, nid})
local fid2 = editableMesh:AddTriangle(vid0, vid2, vid3)
editableMesh:SetFaceNormals(fid2, {nid, nid, nid})
end
-- สร้างลูกบาศก์ที่มีขอบบานระหว่าง 6 ด้าน
local function makeSharpCube()
local editableMesh = AssetService:CreateEditableMesh()
local v1 = editableMesh:AddVertex(Vector3.new(0, 0, 0))
local v2 = editableMesh:AddVertex(Vector3.new(1, 0, 0))
local v3 = editableMesh:AddVertex(Vector3.new(0, 1, 0))
local v4 = editableMesh:AddVertex(Vector3.new(1, 1, 0))
local v5 = editableMesh:AddVertex(Vector3.new(0, 0, 1))
local v6 = editableMesh:AddVertex(Vector3.new(1, 0, 1))
local v7 = editableMesh:AddVertex(Vector3.new(0, 1, 1))
local v8 = editableMesh:AddVertex(Vector3.new(1, 1, 1))
addSharpQuad(editableMesh, v5, v6, v8, v7) -- ด้านหน้า
addSharpQuad(editableMesh, v1, v3, v4, v2) -- กลับ
addSharpQuad(editableMesh, v1, v5, v7, v3) -- ซ้าย
addSharpQuad(editableMesh, v2, v4, v8, v6) -- ขวา
addSharpQuad(editableMesh, v1, v2, v6, v5) -- ด้านล่าง
addSharpQuad(editableMesh, v3, v7, v8, v4) -- ด้านบน
editableMesh:RemoveUnused()
return editableMesh
end

พัน

ใบหน้าเมชมีด้านหน้าและด้านหลังเมื่อวาดเมช จะวาดด้านหน้าของใบหน้าเท่านั้นโดยค่าเริ่มต้น แม้ว่าคุณจะสามารถเปลี่ยนได้โดยการตั้งค่าคุณสมบัติเมช DoubleSided เป็น true

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

Order of the vertices around the face

ท่าทาง FACS

หัวที่เคลื่อนไหวได้ใช้ระบบการเขียนโค้ดการกระทําใบหน้า (FACS)ดูที่ ตัวอ้างอิงท่าทาง FACS สำหรับข้อมูลที่เป็นประโยชน์เมื่อใช้ GetFacsPoses() และวิธีการที่คล้ายกัน

แต่ละโพสต์ของ FACS จะระบุโดยค่า Enum.FacsActionUnit ค่าสำหรับท่าทาง FACS กระดูกเสมือนสามารถแต่ละมี CFrame ที่เปลี่ยนกระดูกเริ่มต้น CFrame ในท่าทางผูกของเมชให้เป็น CFrame สำหรับท่าทางของหน่วยการกระทำของ FACS นั้นกระดูกทั้งหมด CFrames อยู่ในพื้นที่ท้องถิ่นของเมช

ท่าทาง FACS เหล่านี้จะผสมผสานกันในระหว่างการแอนิเมชั่นบางครั้งการผสมผสานของท่าเบสจะให้ผลลัพธ์ที่ไม่ดีในกรณีเหล่านั้น คุณสามารถยกเลิกการผสมผสานของคอมโบที่เฉพาะเจาะจงของท่ายืนพื้นด้วยท่าแก้ไขที่เป็นที่น่าพอใจมากขึ้น ท่าแก้ไขท่าแก้ไขจะระบุโดย 2 หรือ 3 ค่า Enum.FacsActionUnit ค่าเช่นท่าทาง FACS ฐาน, สำหรับท่าทางแก้ไข, กระดูกเสมือนแต่ละอันสามารถมี CFrame ที่เปลี่ยนกระดูกเริ่มต้น CFrame ในท่าทางผูกของเมชให้เป็น CFrame สำหรับการแก้ไข FACS นั้น

ข้อจํากัด

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

สรุป

คุณสมบัติ

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

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

วิธีการ

  • AddColor(color : Color3,alpha : number):number

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

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

  • AddTriangle(vertexId0 : number,vertexId1 : number,vertexId2 : number):number

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

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

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

  • Destroy():()

    ทำลายเมทช์

  • ค้นหาจุดที่ใกล้ที่สุดบนพื้นผิวของเมช

  • ค้นหาเวกเซลล์ที่ใกล้ที่สุดไปยังจุดเฉพาะในพื้นที่

  • ค้นหาเวอร์ติกทั้งหมดภายในทรงกลมเฉพาะ

  • ส่งคืนรายการใบหน้าที่อยู่ติดกับใบหน้าที่กำหนดแล้ว

  • ส่งคืนรายการของจุดเชิงเส้นที่อยู่ติดกับจุดที่กำหนด

  • GetColor(colorId : number):Color3?

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

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

  • ส่งคืนสีทั้งหมดของเมทช์

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

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

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

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

  • คืนใบหน้าทั้งหมดของเมทช์

  • GetNormal(normalId : number):Vector3?

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

  • คืนค่าปกติทั้งหมดของเมทช์

  • รับตำแหน่งของvertex

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

  • คืนยูวีทั้งหมดของเมทช์

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

  • คืนสตริงที่อธิบายถึงรหัสเสถียรที่มีประโยชน์สำหรับการดีบัก

  • MergeVertices(mergeTolerance : number):Map

    รวมเหลี่ยมที่สัมผัสกัน

  • RaycastLocal(origin : Vector3,direction : Vector3):Tuple
  • RemoveFace(faceId : number):()

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

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

  • ResetNormal(normalId : number):()

    รีเซ็ต ID ปกตินี้เพื่อคำนวณโดยอัตโนมัติ

  • SetColor(colorId : number,color : Color3):()

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

  • SetColorAlpha(colorId : number,alpha : number):()

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

  • SetFaceColors(faceId : number,ids : Array):()

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

  • SetFaceNormals(faceId : number,ids : Array):()

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

  • SetFaceUVs(faceId : number,ids : Array):()

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

  • SetFaceVertices(faceId : number,ids : Array):()

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

  • SetNormal(normalId : number,normal : Vector3):()

    ตั้งค่าปกติสำหรับรหัสปกติ

  • SetPosition(vertexId : number,p : Vector3):()

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

  • SetUV(uvId : number,uv : Vector2):()

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

  • แยกใบหน้าทั้งหมดบนเมทช์ให้เป็นสามเหลี่ยม

คุณสมบัติ

FixedSize

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

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

วิธีการ

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 เวอร์ติกที่กำหนดไว้

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 ใบหน้าที่เสถียร

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 ที่เสถียร

GetVertices

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


ส่งค่ากลับ

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

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

RemoveFace

()

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

พารามิเตอร์

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

ส่งค่ากลับ

()

RemoveUnused

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


ส่งค่ากลับ

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

ResetNormal

()

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

พารามิเตอร์

normalId: number

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

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

ส่งค่ากลับ

()

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 เวอร์ซิสเสถียรใหม่ที่จะใช้สำหรับใบหน้าที่กำหนด

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

ส่งค่ากลับ

()

SetNormal

()

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

พารามิเตอร์

normalId: number

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

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

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

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

ส่งค่ากลับ

()

SetPosition

()

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

พารามิเตอร์

vertexId: number

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

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

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

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

ส่งค่ากลับ

()

SetUV

()

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

พารามิเตอร์

uvId: number

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

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

พิกัด UV

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

ส่งค่ากลับ

()

Triangulate

()

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


ส่งค่ากลับ

()

อีเวนต์