Engine Class
EditableMesh
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
สรุป
วิธีการ
สมาชิกที่ได้รับทอด
สมาชิก 6 คนที่รับทอดมาจาก Object
เอกสารอ้างอิงเกี่ยวกับ API
คุณสมบัติ
วิธีการ
AddBone
พารามิเตอร์
ส่งค่ากลับ
AddColor
AddTriangle
BatchAdd
พารามิเตอร์
ส่งค่ากลับ
BatchGetFaceAttributes
พารามิเตอร์
ส่งค่ากลับ
BatchGetVertexAttributes
พารามิเตอร์
ส่งค่ากลับ
BatchGetVertexFaceAttributes
EditableMesh:BatchGetVertexFaceAttributes(
พารามิเตอร์
ส่งค่ากลับ
BatchSetFaceAttributes
BatchSetValues
BatchSetVertexFaceAttributes
Clear
EditableMesh:Clear():()
ส่งค่ากลับ
()
Destroy
EditableMesh:Destroy():()
ส่งค่ากลับ
()
FindClosestPointOnSurface
FindClosestVertex
FindVerticesWithinSphere
GetAdjacentFaces
GetAdjacentVertices
GetBoneByName
GetBoneCFrame
GetBoneIsVirtual
GetBoneParent
GetColorAlpha
GetFaceNormals
GetFacesWithAttribute
GetFacesWithColor
GetFacesWithNormal
GetFaceVertices
GetFacsCorrectivePose
GetFacsPose
พารามิเตอร์
ส่งค่ากลับ
GetNormal
GetPosition
GetVertexBones
GetVertexBoneWeights
GetVertexColors
GetVertexFaceColor
GetVertexFaceNormal
GetVertexFaces
GetVertexFaceUV
GetVertexNormals
GetVertexUVs
GetVerticesWithAttribute
GetVerticesWithColor
GetVerticesWithNormal
GetVerticesWithUV
MergeVertices
RaycastLocal
ส่งค่ากลับ
ตัวอย่างโค้ด
EditableMesh:RaycastLocal()
local AssetService = game:GetService("AssetService")
local Workspace = game:GetService("Workspace")
-- เริ่มต้น EditableMesh ในพื้นที่
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
warn(errorMsg)
end
-- ฟังก์ชันที่จะยิงรังสีจากจุดที่กำหนด คืนค่าจุดในโลกของการชนและพิกัด UV
local function castRayFromCamera(meshPart: MeshPart, editableMesh: EditableMesh, viewportPoint: Vector3)
if not meshPart then
return
end
-- คำนวณว่ามีการปรับขนาดวัตถุในแต่ละมิติเท่าไหร่
local renderScale = meshPart.Size / meshPart.MeshSize
-- สร้างรังสีจากกล้องตามทิศทางของจุดที่คลิก
local ray = Workspace.CurrentCamera:ViewportPointToRay(viewportPoint.X, viewportPoint.Y)
-- แปลงเป็นพื้นที่วัตถุเพื่อใช้กับ RaycastLocal()
local relativeOrigin = meshPart.CFrame:PointToObjectSpace(ray.Origin) / renderScale
local relativeTarget = meshPart.CFrame:PointToObjectSpace(ray.Origin + ray.Direction * 100) / renderScale
local relativeDirection = relativeTarget - relativeOrigin
local faceId, point, barycentricCoordinate, vertId1, vertId2, vertId3 =
editableMesh:RaycastLocal(relativeOrigin, relativeDirection)
if not faceId then
-- ไม่ได้ชนกับหน้าใด ๆ
return
end
-- คำนวณจุดที่ชนในพื้นที่โลก
local worldHitPoint = meshPart.CFrame:PointToWorldSpace(point * renderScale)
-- รับ UVs บนหน้า
local uvId1 = editableMesh:GetVertexFaceUV(vertId1, faceId)
local uvId2 = editableMesh:GetVertexFaceUV(vertId2, faceId)
local uvId3 = editableMesh:GetVertexFaceUV(vertId3, faceId)
local uv1 = editableMesh:GetUV(uvId1)
local uv2 = editableMesh:GetUV(uvId2)
local uv3 = editableMesh:GetUV(uvId3)
-- ทำการประมาณค่า UVs ภายในหน้าตามพิกัด barycentric
local u = (barycentricCoordinate.x * uv1.x) + (barycentricCoordinate.y * uv2.x) + (barycentricCoordinate.z * uv3.x)
local v = (barycentricCoordinate.x * uv1.y) + (barycentricCoordinate.y * uv2.y) + (barycentricCoordinate.z * uv3.y)
return worldHitPoint, Vector2.new(u, v)
endSetBoneCFrame
SetBoneIsVirtual
SetBoneName
SetBoneParent
SetColor
SetColorAlpha
SetFaceColors
SetFaceNormals
SetFaceUVs
SetFaceVertices
SetFacsBonePose
พารามิเตอร์
ส่งค่ากลับ
()
SetFacsCorrectivePose
SetFacsPose
พารามิเตอร์
ส่งค่ากลับ
()
SetNormal
SetPosition
SetVertexBones
SetVertexBoneWeights
SetVertexFaceColor
SetVertexFaceNormal
SetVertexFaceUV
Triangulate
EditableMesh:Triangulate():()
ส่งค่ากลับ
()