feat(web): complete portable Blender feature gaps
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-09-06 19:33:50 +08:00
parent ed347098b4
commit 66d3f4e0f4
48 changed files with 58048 additions and 61 deletions

View File

@@ -17,6 +17,24 @@ export const meshAuthoringCommands = Object.freeze({
...(options.segments === undefined ? {} : { segments: options.segments }),
};
},
meshSubdivide(meshId: string, selectionMode: MeshElementMode, elementIndices: readonly number[], segments = 1): MeshCommand<"meshSubdivide"> {
return { type: "meshSubdivide", meshId, selectionMode, elementIndices: [...elementIndices], segments: Math.max(1, Math.min(64, Math.trunc(segments))) };
},
meshTriangulate(meshId: string, faceIndices: readonly number[]): MeshCommand<"meshTriangulate"> {
return { type: "meshTriangulate", meshId, faceIndices: [...faceIndices] };
},
meshRecalculateNormals(meshId: string, faceIndices: readonly number[]): MeshCommand<"meshRecalculateNormals"> {
return { type: "meshRecalculateNormals", meshId, faceIndices: [...faceIndices] };
},
meshBridgeLoops(meshId: string, edgeIndices: readonly number[]): MeshCommand<"meshBridgeLoops"> {
return { type: "meshBridgeLoops", meshId, edgeIndices: [...edgeIndices] };
},
meshDeleteElements(meshId: string, selectionMode: MeshElementMode, elementIndices: readonly number[]): MeshCommand<"meshDeleteElements"> {
return { type: "meshDeleteElements", meshId, selectionMode, elementIndices: [...elementIndices] };
},
meshUVProject(meshId: string, faceIndices: readonly number[], method: "PLANAR" | "CUBE" | "CYLINDER" | "SPHERE" = "PLANAR", seamEdgeIndices: readonly number[] = []): MeshCommand<"meshUVProject"> {
return { type: "meshUVProject", meshId, faceIndices: [...faceIndices], method, ...(seamEdgeIndices.length ? { seamEdgeIndices: [...seamEdgeIndices] } : {}) };
},
decimate(meshId: string, profile: SimplifyProfile): MeshCommand<"decimateMesh"> {
return { type: "decimateMesh", meshId, profile };
},