koodev

'전체 글'에 해당되는 글 75건

  1. Blender Wavefront(obj) 모델의 정점 인덱스 출력하기
  2. Emacs Server setting
  3. ARM A32 명령어셋 VZIP

Blender Wavefront(obj) 모델의 정점 인덱스 출력하기

카테고리 없음

3D 모델의 정점 인덱스를 알아야 할 경우가 종종 있다. 그런 툴을 만들어 볼까도 생각했었는데, Blender의 디버그 모드에서 그런 기능을 제공해주고 있었다.

우선 Blender를 디버그 모드로 실행해야 한다. 커맨드 라인에서 -d 옵션을 주어 실행하면 디버그 모드로 실행된다. 예를 들어 macOS에서 아래와 같이 실행하면 된다.

/Applications/Blender/blender.app/Contents/MacOS/blender -d

그리고 원하는 모델을 임포트 하는데, 임포트 옵션 중에 'Keep Vertex Order' 라는 항목이 있다. 이를 반드시 체크해 준다. 그렇지 않으면 Blender 내부에서 원본 인덱스를 수정하게 된다.

모델을 로드한 다음 그 모델을 마우스로 선택한 다음 'TAB'을 누르거나 해서 Edit Mode 상태로 바꾼다.

그리고 'N' 키를 누르면 오른쪽에 뭐라고 하는지 잘 모르겠지만 선택된 모델에 대한 여러가지 정보같은게 나오는 창이 뜬다. 이 창의 좀 아랫부분에 보면 Mesh Display 그룹에 Edge Info 라는 항목이 있다. 여기에 Indices 체크박스를 체크하면 정점 인덱스 정보가 화면에 표시된다.

Emacs Server setting

Emacs

Emacs를 서버-클라이언트 서비스로 구성하는 과정에 대해 기록한다.

환경은 Ubuntu 18.04, Emacs 26.2 이다.

참고

Starting Emacs Deamon with systemd

Systemd 는 대부분의 리눅스 배포판에서 시작 프로그램을 관리하는 프로그램이다. 아래 emacs.service 파일은 emacs26.2 소스(emacs-26.2/etc/emacs.service)에 들어있는 것을 내 환경에 알맞게 수정한 것이다. 아래와 같이 수정하여~/.config/systemd/user/emacs.service 를 만들어 준다.

## If your Emacs is installed in a non-standard location, you may need
## to copy this file to a standard directory, eg ~/.config/systemd/user/ .
## If you install this file by hand, change the "Exec" lines below
## to use absolute file names for the executables.
[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/

[Service]
Type=simple
ExecStart=/usr/local/bin/emacs --fg-daemon
ExecStop=/usr/local/bin/emacsclient --eval "(kill-emacs)"
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
Restart=on-failure

[Install]
WantedBy=default.target

ExecStart 에 emacs 실행 경로와 함께 넣어준 --fg-daemon 인자는 포어그라운드 데몬으로 실행하라는 의미이다. 참고로 --bg-daemon 혹은 --daemon 은 백그라운드 데몬으로 실행하라는 의미이다.

그리고 터미널에서 아래와 같이 실행하여 이맥스 서버를 실행시킨다.

systemctl enable --user emacs
systemctl start --user emacs

Launcher 아이콘 생성

런처 아이콘 역시 Emacs 26.2 소스 코드에서 만들어 놓은 파일을 고쳐서 사용하면 된다. emacs26.2/etc/emacs.desktop 을 아래와 같이 수정하여 .local/share/applications/emacs.desktop 을 만들어준다.

[Desktop Entry]
Name=Emacs
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=emacsclient -c -a "emacs" %F
Icon=emacs
Type=Application
Terminal=false
Categories=Development;TextEditor;
StartupWMClass=Emacs
Keywords=Text;Editor;

emacsclient 의 -c 옵션은 새 이맥스 프레임을 생성하여 실행하라는 의미이고, -a 는 이맥스 데몬이 실행중이지 않을 경우 fallback 으로 할 액션에 대해 정의하는 것이다.

그리고 터미널에서 아래 명령어를 실행해 주면 finder 같은 곳에서 emacs를 검색하면 위에서 지정한 동작을 수행하는 아이콘이 뜰 것이다. 실행시켜주고 dock 에 고정하면 된다.

sudo desktop-file-install --dir=/usr/share/applications/ ~/.local/share/applications/emacs.desktop

'Emacs' 카테고리의 다른 글

Emacs - Python 문서 열람시 멈춤현상  (0) 2019.09.18
Emacs Wdired 모드  (0) 2019.06.29
macOS 에서 Emacs 데몬이 종료되지 않는 문제  (0) 2019.06.07
Create a new file in ido mode  (0) 2019.06.07
EIN and virtualenvwrapper  (0) 2018.07.22

ARM A32 명령어셋 VZIP

Programming

A32 명령어셋의 VZIP에 대해서 알아보자. 12.130 VZIP 을 참고했다.

이 명령어는 A64 버전의 ZIP1/ZIP2와 마찬가지로 두 벡터의 상위/하위 절반을 각각 떼어다가 뒤섞는다.

A32 버전의 VZIP은 특이하게도 Destination 피연산자가 따로 없다. 두 개의 피연산자를 갖는데 둘 다 상태가 변한다.

VZIP{cond}.size Qd, Qm
VZIP{cond}.size Dd, Dm
  • cond: 옵션. 조건처리.
  • size: 8 또는 16 또는 32.
  • Qd, Qm: 벡터 SIMD/FP 레지스터. Quadword.
  • Dd, Dm: 벡터 SIMD/FP 레지스터. Doubleword.

뒤섞는 방법은 아래 그림과 같다. 말하자면 A64 버전의 ZIP1ZIP2를 합쳐 놓은 것.