koodev

Blender Vertex ID 지정해서 선택하기

Computer

특정 Vertex ID(번호)에 해당하는 점이 모델에서 어디에 위치해 있는지 알아야 할 필요가 있어서 그런 툴을 만들어 봐야 하나 생각해 봤는데, Blender에서 파이썬 스크립트 사용하여 해결할 수 있었다. 이에 대한 내용을 정리해 보았다.

우선 정점 인덱스가 잘 선택되었는지 알아보기 위해 Blender를 디버그 모드로 띄웠다. https://koodev.tistory.com/39 참고. 그리고 대상 모델을 로드하자.

Blender의 좌상단 메뉴 막대 Help 옆에 보면 "Choose Screen layout." 콤보박스에 "Default" 가 선택되어 있다. 이것을 "Scripting" 으로 바꾸자.

그러면 위와 같이 3분할된 화면 구성으로 바뀔 것이다. 이 3분할에서 좌상단이 Text Editor 인데, "+ New" 버튼을 누른 다음 입력창에 아래 코드를 입력한다.

import bpy
import bmesh

def select(*args):
    obj = bpy.context.object
    me = obj.data
    bm = bmesh.from_edit_mesh(me)

    vertices= [e for e in bm.verts]
    oa = bpy.context.active_object

    for vert in vertices:
        if vert.index in args:
            vert.select = True
        else:
            vert.select = False

    bmesh.update_edit_mesh(me, True)

(참고로 이 코드는 하단의 "Console" 창에 입력하면 바로 사용할 수 있다. 그런데, 인터프리터에서 들여쓰기를 자동으로 해 주기 때문에 한 번에 붙여넣을 수 없고 한줄씩 붙여넣어야 한다.)

이제 텍스트 에디터의 코드를 하단의 콘솔로 가져와야 한다. 콘솔창에 아래 명령어를 차례로 입력한다.

import bpy
code = bpy.data.texts['Text'].as_string()
exec(code)

이제 준비가 완료되었다. 콘솔에서 select 함수를 실행하여 정점 번호를 지정해 주면 된다.

참고