돌출을 원래대로 되 돌리는 방법
개체에 수행 한 돌출을 복구하는 가장 좋은 방법은 무엇입니까?

위는 예시 일뿐 사례를 설명해야합니다. 그리고 나는 다음과 같은 답을 찾고 있지 않습니다. 새로운 구체를 그립니다. 또한 "실행 취소 ( Ctrl+ Z)"는 옵션이 아닙니다 (설계 오류가 너무 늦게 인식됨).
지금까지 두 가지 옵션을 찾았습니다.
그 얼굴을 모두 선택하고 삭제합니다. 하지만 내 구체에 구멍이 생겼습니다. F또는 Alt+로 캡을 채울 수 F있지만 표면은 더 이상 동일하지 않습니다.
떠오르는 다른 옵션은 이것을 표면에 충분히 가깝게 낮춘 다음 병합 정점을 사용하는 것입니다. 그러나 6 개의면 가운데에있는 두 개의 정점은 어디로 든 녹아 내리지 않고 다시 표면이 올바르게 보이지 않습니다.
답변
스크립트 버전.

면 법선을 따라 돌출 해제
- 선택한 모든면의 평균 법선을 찾습니다.
- 돌출 된 모서리의 평균 모서리 길이를 찾습니다.
- 모든 정점을 다시 변환합니다.
- 복식을 제거합니다. (접힌 가장자리에서)
편집 모드에서 얼굴을 선택한 다음 스크립트를 실행합니다.
import bpy
import bmesh
from mathutils import Vector
ob = bpy.context.object
me = ob.data
bm = bmesh.from_edit_mesh(me)
faces = [f for f in bm.faces if f.select]
verts = set(v for f in faces for v in f.verts ) # or from selected verts
edges = [e for v in verts for e in v.link_edges
if not e.select ]
norm = (sum((f.normal for f in faces), Vector()) / len(faces)).normalized()
norm.negate()
d = sum(e.calc_length() for e in edges) / len(edges)
bmesh.ops.translate(
bm,
verts=list(verts),
vec=d * norm,
)
bmesh.ops.remove_doubles(
bm,
verts=[v for e in edges for v in e.verts],
dist=1e-5,
)
for f in faces:
f.select_set(True)
bmesh.update_edit_mesh(me)
노트
개선 된 점은 선택 영역 내에서 선택된 모든면 섬을 찾고 섬별로 섬에서 "xtrude"를 제거하는 것입니다.
이것은면 법선을 따라 돌출을 "압출 해제"하는 것입니다. 평균면 법선 대신 임의 (또는 모든 평균) 가장자리로 정의 된 벡터가 더 적합합니다.
어떤 방향으로도 돌출 해제

돌출 된 후 생성 된 돌출 된 모서리는 (AFAIK) 모두 돌출 벡터가됩니다.
import bpy
import bmesh
from mathutils import Vector
ob = bpy.context.object
me = ob.data
bm = bmesh.from_edit_mesh(me)
faces = [f for f in bm.faces if f.select]
verts = set(v for f in faces for v in f.verts ) # or from selected verts
edges = [e for v in verts for e in v.link_edges
if not e.select ]
v0, v1 = sorted(edges[0].verts[:], key=lambda v:v.select)
bmesh.ops.translate(
bm,
verts=list(verts),
vec=v0.co - v1.co,
)
bmesh.ops.remove_doubles(
bm,
verts=[v for e in edges for v in e.verts],
dist=1e-5,
)
for f in faces:
f.select_set(True)
bmesh.update_edit_mesh(me)

이것은 균일 한 돌출이며 스케일링이 없습니다. 그래서..
- Alt-생성 된 얼굴의 링을 선택하고 X삭제합니다.
- Hover- L분리 된 패치 선택
- Snap을 'Vertex', 'Active'로 설정하고 전체 패치를 선택하고 편리한 정점을 활성화 G하면 패치를 다시 제자리에 스냅합니다.
- 선택한 모든 verts, Mmerge> By Distance.
돌출을 삭제하고 구멍 가장자리 루프를 선택한 다음 CtrlF> 그리드 채우기를 누르면 구멍이 채워지고 토폴로지가 적용됩니다 ( 연산자 상자 에서 일부 매개 변수를 조정할 수 있음 ).

- 변형 방향을 "일반"으로 설정합니다.
- 돌출 된면 패치 선택
- G잡으려면 누르고 Z법선 방향으로 제한합니다.
- 안면 패치를 원래 위치로 되돌 리도록 최선을 다하십시오 (Snap이 도움이 될 수 있지만 제게 작동 할 수는 없습니다)
- 거리별로 정점을 병합합니다.