Klasa silnika
EditableMesh
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Podsumowanie
Metody
Członkowie odziedziczeni
6 odziedziczonych od: Object
Materiały referencyjne dotyczące interfejsów API
Właściwości
Metody
AddBone
Parametry
Zwroty
AddColor
AddTriangle
Destroy
EditableMesh:Destroy():()
Zwroty
()
FindClosestPointOnSurface
FindClosestVertex
FindVerticesWithinSphere
GetAdjacentVertices
GetBoneIsVirtual
GetFacesWithAttribute
GetFacesWithColor
GetFacesWithNormal
GetFacsCorrectivePose
GetFacsPose
Parametry
Zwroty
GetVertexBoneWeights
GetVertexColors
GetVertexFaceColor
GetVertexFaceNormal
GetVertexFaceUV
GetVertexNormals
GetVerticesWithAttribute
GetVerticesWithColor
GetVerticesWithNormal
MergeVertices
RaycastLocal
Zwroty
Przykłady kodu
EditableMesh:RaycastLocal()
local AssetService = game:GetService("AssetService")
local Workspace = game:GetService("Workspace")
-- Inicjalizuj EditableMesh w przestrzeni
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
-- Funkcja, która rzuci promień z podanego punktu, zwracając światowy punkt trafienia i współrzędną UV
local function castRayFromCamera(meshPart: MeshPart, editableMesh: EditableMesh, viewportPoint: Vector3)
if not meshPart then
return
end
-- Oblicz, jak bardzo obiekt jest skalowany w każdym wymiarze
local renderScale = meshPart.Size / meshPart.MeshSize
-- Utwórz promień z kamery w kierunku klikniętego punktu
local ray = Workspace.CurrentCamera:ViewportPointToRay(viewportPoint.X, viewportPoint.Y)
-- Przekształć do przestrzeni obiektu, aby użyć z 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
-- Nie trafił w żadne ściany
return
end
-- Oblicz punkt trafienia w przestrzeni świata
local worldHitPoint = meshPart.CFrame:PointToWorldSpace(point * renderScale)
-- Pobierz UV na ścianie
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)
-- Interpoluj UV w obrębie ściany na podstawie współrzędnej barycentrycznej
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
Parametry
Zwroty
()
SetFacsCorrectivePose
SetFacsPose
Parametry
Zwroty
()
SetNormal
SetPosition
SetVertexBones
SetVertexBoneWeights
SetVertexFaceColor
SetVertexFaceNormal
SetVertexFaceUV
Triangulate
EditableMesh:Triangulate():()
Zwroty
()