posted by cimple 2015. 6. 3. 16:08

Read-the-docs 사용법


1. Read-the-docs 관련 패키지를 설치하고 환경변수에 등록해준다.

2. 내 파이썬 프로젝트에 docs 라는 폴더를 만든다.

3. sphinx-quickstart 를 하면 이런 저런 설정을 입력하면서 자동으로 환경을 구성해줌

4. make html 을 하면 빌드를 해줌(이 빌드과정은 read-the-docs 와는 상관없다. html 을 만들어 줌으로써 off-line 으로 확인해볼 수 있는 구조. read-the-docs 는 내 코드를 스스로 빌드한다.)

5. github 와 연동되어야 하므로 github repository 에 내 프로젝트 / Document 파일들을 push 해준다.

6. github 에 업로드하면 read the docs 사이트에서 import 해올 수 있음.


github 에 어떤 파일까지 올려야 하는가?

- read the docs 에 가면 내 document 의 관리 페이지에서 오른쪽 하단의 뱃지를 확인할 수 있다.

- 소스코드 / conf.py / index.rst / makefile 로는 no build 만 뜨는 상황.

- _build 폴더까지 같이 올리자 뱃지가 업데이트 되었다

- (하지만 build 는 필요 없을텐데?)


어떻게 소스코드와 연결할 수 있는가?

- 스핑크스가 모듈을 찾기 위해서, import 할 수 있어야 한다. 다시 말해, build 하는 system path 에 등록되어 있어야 한다는 이야기이다.


스핑크스의 작동원리

- Build 를 돌리면, doc 폴더 안에 내부적으로 document 가 생성되게 된다.

- 이 HTML 파일을 그대로 사용하면 바로 그것이 document 가 되는 것이다.

- 그런데 Read the Docs 웹사이트에서 이게 가능하려면, 그 사이트에서 내 document 코드를 빌드할 수 있어야 한다.

- 그렇다면 그 웹사이트 상에서 내 코드를 빌드할 수 있도록 path 를 등록해 주어야 한다. 상대적인 경로로...


Read the Doc 테마 적용방법

- conf.py 파일에서 html_theme 을 찾아서 코멘트시켜 버리고, 다음 코드를 추가한다.

# on_rtd is whether we are on readthedocs.org, this line of code grabbed from docs.readthedocs.org
on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
# only import and set the theme if we're building docs locally
if not on_rtd:
    import sphinx_rtd_theme
    html_theme = 'sphinx_rtd_theme'
    html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]

주석에 적혀있는 대로, online 에서 바로 테마를 가져오던가, 아니라면 local 에서 build 할때 테마를 적용할 수 있다.


C++ 의 사용

- autodoc 을 사용하기 위해서는 doxygen 과 sphinx 를 연결시켜주는 breathe 라는 도구를 활용하게 된다. 추후에 공부가 더 필요할 것.


외부 라이브러리의 import

- Read the Docs 문서에도 설명되어 있지만, RtD 는 사용자의 파이썬 코드를 한번 컴파일하면서 문서를 빌드하기 때문에 라이브러리 의존성이 있다. 따라서 numpy 와 같은 외부라이브러리를 사용한다면 빌드과정에서 에러가 생기게 된다.

여기에 대한 해결방식은 아래 RtD 문서에서 설명하고 있다. 

https://docs.readthedocs.org/en/latest/faq.html#i-get-import-errors-on-libraries-that-depend-on-c-modules

방식을 간단하게만 설명하면, import 하는 라이브러리들을 mock 모듈을 사용해서 가상으로 import 하는 것이다. 어차피 실제로 돌아갈 필요는 없으니까.

- 여기서 알수 있는건, 코드가 실제로 돌아가서는 안된다는 것이다. 즉, 업로드되는 코드가 클래스 및 함수 형태가 되어야지 __main__() 함수 실행같은것을 코드상에 포함시켜서 실제로 돌아가면 에러를 발생시키게 된다.


한글 사용

- conf.py 파일에서 language 옵션을 'ko' 로 주게되면 기본메뉴가 한글로 뜨게 되는데 큰 의미는 없다.

- Sphinx 는 유용한 Internationalization 기능을 지원하는데, 하나의 언어로 작성된 문서를 다른 언어로 번역하여 빌드할 수 있다. 

- 그러나, 사실 개인이 진행하는 소규모 프로젝트에서 이 정도로 문서를 구성하는 것은 무리한 일이 될 수 있어서, 기본적으로 영문이나 한글 둘중의 하나를 선택하여 작성하는 정도로 마무리하려고 한다.

- 한글을 꼭 사용하고 싶으면 python 소스파일 상단에는 

#-*- coding: utf-8 -*-

를 추가하고, conf.py 의 source_encoding 옵션을

source_encoding = 'cp949'

로 바꿔주면 한글 문서작성 및 autodoc 이 가능해진다.

- html 은 온라인빌드/오프라인 빌드 둘다 잘 되는데, pdf 빌드가 깨진다. 이 옵션도 conf.py 에서 잡아주면 될것 같은데 당장 꼭 필요한 옵션같지는 않다...

posted by cimple 2015. 6. 2. 16:06

자주 사용하게 되는 Numpy 테크닉들


1. 두 Numpy Array 비교


(A == B).all()


2. 똑같은 숫자로 Column vector 만들기


a = np.empty(5)  # create empty array with size 5

a.fill(2.0)   # fill it with 2.0

a.shape = (len(a),1)  #reshape as column vector


posted by cimple 2015. 5. 27. 15:20

FreeType 은 font 와 관련된 정보를 손쉽게 추출하고 render 하기 위한 라이브러리이다. 다양한 분야에 폭넓게 응용될 수 있는 라이브러리인데, 설치 및 Python 인터페이스를 설정하는 방법에 대해 설명하겠다.


1. Freetype 홈페이지에서 소스코드를 다운로드를 받는다.


[다운로드 페이지 링크]


링크에 들어가면 Freetype 소스코드 패키지를 받을 수 있는 링크와, Winodws 사용자를 위한 바이너리 링크가 준비되어 있다. 그런데 바이너리 배포판은 Python 인터페이스 연동이 잘 되지 않아서, 직접 컴파일해서 라이브러리를 만들어 사용하도록 하자.


2. 패키지를 다운로드 받은 후 압축을 풀면, builds 폴더에 다양한 플랫폼에 대한 빌드 환경을 제공한다. windows 폴더에 들어가 보면 VS 버전별로 솔루션 파일까지 제공하는 친절함을 보여준다. 필자는 Visual Studio 2010 버전을 사용하였다.


3. 솔루션을 연 다음 그대로 컴파일해도 .lib static library 파일을 생성해서 사용할 수 있다. 


4. 그러나 우리는 python 인터페이스를 사용하기 위해서 .dll dynamic library 파일을 생성해야 하는데, 몇 가지 사전 준비작업이 필요하다.

(도움 링크 : http://stackoverflow.com/questions/6207176/compiling-freetype-to-dll-as-opposed-to-static-library)


5. 먼저 프로젝트의 속성>일반에 들어가서 '구성 형식' 을 '동적 라이브러리(.dll)' 로 바꿔준다.

6. 다음 ftoption.h 파일을 열고, 다음 두 라인을 "DLL export compilation" 섹션 근처에 삽입해준다.


#define FT_EXPORT(x) __declspec(dllexport) x
#define FT_BASE(x) __declspec(dllexport) x


7. project configuration 을 'Release' 로 바꾸어준 후, 빌드한다.

8. freetype255.dll, freetype255.lib 등 'freetypeXXX' 형태로 라이브러리가 빌드된 것을 확인할 수 있다. 우리의 동적 라이브러리에서 숫자 부분을 지우고, 'freetype.dll' 형태로 파일명을 바꾼다.


9. 다음 링크에서 freetype-py 의 최신 버전을 다운로드 받을 수 있다. 오른쪽의 'Download ZIP' 으로 한꺼번에 다운로드 한다.


[다운로드 페이지 링크] 


10. 다운받은 패키지에서 freetype 폴더를 파이썬 라이브러리 패키지 폴더 (ex. C:\Python27\Lib\site-packages) 에 복사한다.


11. freetype.dll 파일을 현재 파이썬 스크립트가 있는 폴더에 복사한다.

Notice: Document 에는 윈도우즈 시스템 폴더(C:\Windows\System32) 에 복사하라고 되어 있는데 ctypes.util.find_library('freetype') 로 찾는 패스가 제대로 작동하지 않는 것 같다. 확인요함. 도큐먼트 오류인듯.


12. Python console 을 열고,


import freetype


을 입력한 후 정상적으로 import 되면 성공이다.


13. 다음 Documentation 을 참고하며 연습해보자.


http://freetype-py.readthedocs.org/en/latest/

posted by cimple 2015. 5. 22. 17:42

OpenCV Python 버전이 있습니다. Google Summer of Code 2013 에서 Alexander Mordvintsev 라는 사람의 지도하에 Abid Rahman K. 에 의해서 시작된 프로젝트라고 하네요. 

Computer Vision Problem 을 빠르게 Prototyping 해 보는데 좋은 도구인 것 같습니다.


튜토리얼 웹페이지는 아래와 같고요,


https://opencv-python-tutroals.readthedocs.org/en/latest/index.html


물론 Installation 가이드도 있지만 설치에 오류가 있는 부분도 있어서 다시 링크로 설명드립니다. 


Notice: 모든 인스톨 패키지는 32bit 기준으로 작성되었습니다. 64bit 버전으로 인스톨하고 싶으시다면 위 튜토리얼의 윈도우 인스톨 페이지를 참조하시기 바랍니다.






1. 아래에 있는 패키지들을 다운로드 받고, 기본 위치에 인스톨합니다. 


- Python-2.7.x

- Numpy

- Matplotlib (optional, but recommended)


Python 의 경우 C:\Python27\ 에 설치될 것입니다.

Numpy 의 경우 위 튜토리얼 페이지에 링크된 버전을 사용하면 이후에 OpenCV 를 설치할때 버전이 다르다는 오류메시지를 만나게 됩니다. 제가 링크한 버전을 사용하세요.

Matplotlib 는 필수는 아니지만, 위 튜토리얼 페이지에 있는 튜토리얼들을 따라할때 필요합니다.



2. 인스톨이 완료되면 Python IDLE 를 열고, 

import numpy

를 입력해서 numpy 가 정상적으로 import 되는지 확인합니다.



3. 아래 링크에서 최신 OpenCV 버전을 다운로드 받습니다. 


- OpenCV Release


실행 파일 형태로 되어있는데, 실행시키면 압축을 풀 수 있습니다.



4. 압축을 풀어놓은 폴더에서 opencv/build/python/2.7/x86 에 가면 cv2.pyd 파일이 있습니다. 이 파일을 C:/Python27/lib/site-packeges. 에 복사합니다.


5. Python IDLE 를 열고, 다음을 입력해서 정상적으로 설치되었는지 확인합니다.

import cv2
print cv2.__version__

OpenCV 버전이 잘 출력되면 성공적으로 인스톨 된 것입니다.


이후로는 위 튜토리얼 사이트를 참고하시면서 활용하세요!

posted by cimple 2015. 5. 8. 13:47

Jaewon Song


N5 2337, KAIST 291 Daehak-ro, Yuseong-gu, Daejeon 305-338

songjaewon_at_kaist.ac.kr



I'm interested in developing fundamental computer graphics/vision technologies and applying them to the real-world VFX and animation production. I obtained my M.S. from Visual Media Lab, KAIST, where my interest is well practiced under the supervision of Prof. Junyong Noh. I'm currently in the doctoral course at the same lab and my research topic is a motion capture and retargeting.





Education


2011-Pres. Doctoral Student in Culture Technology(Computer Graphics) - KAIST, Korea

2009-2011 M.S. in Culture Technology(Computer Graphics) - KAIST, Korea

2002-2008 B.S. in Digital Media - Ajou Univ., Korea




Publications


 


 Body Motion Retargeting to Rig-space (Domestic)

 Jaewon Song, Junyong Noh

 Journal of the Korea Computer Graphics Society, Volume 20,  Issue 3, Sep. 2014

 [Project Page]

 


 Characteristic Facial Retargeting

 Jaewon Song, Byungkuk Choi, Yeongho Seol, Junyong Noh

 The Journal of Computer Animation and Virtual World, Volume 22,  Issue 2-3, p.187-194,April-May 2011

 [Project Page]

 


 Facial Retargeting by Adding Supplemental Blendshapes

 Paul Hyunjin Kim, Yeongho Seol, Jaewon Song, Junyong Noh

 Conference Short Paper, Pacific Graphics 2011

 [Project Page]





Projects


 


 Pipeline Management and On-stage Pre-visualization Technical  Development for Effective Production with High Quality 3D  Images

 Funding Agency - KOCCA(Korea Creative Content Agency)

 Total Budget - $ 4.9 million

 Role - R&D (Maya automatic rigging tool, Unity3D real-time facial  animation tool)

 [Project Page]

 


 Photo-projection Mattepainting Toolkit Development Project

 Funding Agency - Digital Idea(Korea’s largest and leading visual  effects studio)

 Total Budget - $ 27,000

 Role - R&D(V-ray shader implementation)

 [Project Page]

 


 Mohm and Naht Project

 Funding Agency - Studio KAI(Korea digital contents production)

 Total Budget - $ 9,000

 Role - R&D(Motion capture and character rig-space retargeting,  Pose library tool)

 [Project Page]

 


 Digital Creature Software Development Project

 Funding Agency - KOCCA(Korea Creative Content Agency)

 Total Budget - $ 1.2 million

 Role - R&D(Maya automatic rigging tool)

 [Project Page]






Film and Animation Credits


 


 `Feel Good Music' - MFBTY Music Video Teaser(2014)

 Role - R&D (Facial Capture and Retargeting)

 [Link]

 


 Captain Banana(2010)

 SIGGRAPH ASIA 2010 Computer Animation Festival (2010)

 Role - Character Rigging, Character Animation

 [Link]

 


 The Life(2009)

 Korea Visual Arts Festival - Grand prize in student section (2009)

 On & Off 4 Short Films Creative Festival (Spain) - Invited  competition (2009)

 Anim'est 2009 (Romania) - Invited student competition (2009)

 CARTOON CLUB 2009 (Italy) - Invited non-competition (2009)

 Role - Overall Character Animation, Prop Modeling

 [Link]

 


 Mr.Vending Machine(2008)

 Yubari International Fantastic Film Festival (Japan) - Invited(2009)

 Rochester International Film Festival (USA) - Participation Award  (2009)

 Big Bear Lake International Film Festival (USA) - Invited  competition (2009)

 Role - Character Animation

 [Link]





Others


 




 'Robot on the Road'

 Robot randomly travels with sensing the environment, and  expresses it's feeling on Twitter based on the words of famous  novel, 'The Road'.


 [Making&Demo Video]










posted by cimple 2014. 12. 31. 03:02

옛날 'Maya2014에서 numpy 사용하기' 라는 글에서 약간 얼렁뚱땅 Maya2014 의 Python library 사용문제를 넘어갔었는데, 결국 언젠가는 굴러굴러 문제로 닥칠수밖에 없는 일. 하루를 모두 소진해서야 문제를 해결할 수 있었다.


욕을 하지 않으려고 해도 지랄맞은(...) 마야의 Python 시스템 때문에 정말 수도없는 테스트와 테스트 끝에 해결을 하고 나니 진이 다 빠지는 느낌이지만, 정리를 하지 않으면 누군가가 또 고생할 것이고 인간은 망각의 동물이니 나도 고생할 수 있기 때문에....


단지 Maya2014 에서 python nlopt 를 사용하는 문제뿐만 아니라, python library 를 사용하는데 있어 비슷한 문제가 발생했을 때에 해결하는 단초를 찾았다는 생각이다.





시간없는 사람들을 위해


먼저 일단 차치하고 Maya2014 에서 사용할수 있는 nlopt 라이브러리


nlopt_maya2014.7z


기존처럼 C:\Program Files\Autodesk\Maya2014\Python\Lib\site-packages 에 복사해 넣으면 된다.

(물론 Numpy 도 설치되어 있어야 돌아간다. Numpy 는 위 링크글 참조...)





1. 문제의 유형 및 발생원인


Maya2012 까지는 간편하게 Numpy 와 nlopt 를 설치할 수 있다. 비공식이긴 하지만 64bit python 컴파일된 binary 를 distribute 하기 때문이다. 이걸 설치하고 Maya 의 python 의 site-package 폴더에 복사만 해주면 된다.


numpy 링크

http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy


nlopt 링크

http://www.lfd.uci.edu/~gohlke/pythonlibs/#nlopt



그런데 이게 Maya2013 부터 numpy 부터 시작해서 라이브러리들이 import 가 잘 안되기 시작했는데, 그 이유가 Maya 의 Python 을 빌드한 컴파일러 문제이다. 이것을 알아보기 위해서 다음 명령어를 

import sys
print sys.version

각각 다른 버전의 Maya Script Editor 에 쳐서 확인해보면 다음과 같은 결과를 얻을 수 있다.


Maya2012


Maya2013


Maya2014


보다시피 Maya2013 부터 Python 컴파일러를 MSC v.1600, 즉 VS2010 compiler 로 컴파일했다는 사실을 알 수 있다. 


이게 아주 쓰레기같은게 뭐냐면 우리가 Python 홈페이지에서 받을 수 있는 파이선 2.x 버전들을 체크 해보면 MSC v.1500 로 컴파일되어 있다. 즉 VS2008 에서 컴파일한 버전을 배포하고 있다. v.1600 은 Python 3.x 버전 이후부터이다.


그런데 이 샹늠의 Maya 는 뭐가 잘났다고 혼자 독특하고 고고하게 VS2010 에서 컴파일한 파이선 2.x 버전을 사용하고 있다. 그것도 Maya2014 부터는 Python 2.7 버전을 사용한다. 아마도 추후에는 Python 3.x 버전으로 업그레이드를 할 목적이긴 하겠지만, 이것이 문제를 발생시키는 가장 큰 원인이었다.


이 문제 때문에 어렵사리 컴파일한 nlopt 를 사용할 수가 없었다. 가장 고생한 에러메시지는 바로 이것일 것이다.


ImportError: DLL load failed: %1은(는) 올바른 Win32 응용 프로그램이 아닙니다.


이걸 해결하기 위해서, 'Python2.7 자체를 VS2010 컴파일러로 다시 컴파일' 해야만 했다. 왜 그래야만 했는지는 아래에 설명...



2. python nlopt 컴파일하기


일단 내 입맛에 맞는 python nlopt 라이브러리의 binary 버전은 없다. 애초에 Window 에서 쓰라고 만든것도 아니고 Python nlopt 는 Wrap 해서 배포할 뿐이지 원래 c++ 라이브러리다. 직접 만들어 써야 한다고 보면 된다. 찾으려고 괜히 애쓰지 말고 컴파일 하는 것이 오히려 이득이다.


다음과 같은 순서를 따르면 된다.


1) 일단 nlopt 소스파일을 다운로드 받아서 압축을 풀어놓는다. 위치는 상관없다. 어차피 필요한건 컴파일한 다음 라이브러리 파일이다.

http://ab-initio.mit.edu/wiki/index.php/NLopt#Download_and_installation


2) 다음은 아래 페이지에서

http://ab-initio.mit.edu/wiki/index.php/NLopt_on_Windows


nlopt-2.4.2-dll64.zip (64-bit) 압축파일을 받아서 압축을 푼다. 미리 컴파일해둔 win64 용 .dll 파일이 있고 어쩌고 하는데 어차피 못쓴다. MinGW 로 컴파일한것이기 때문이다. 어차피 MSVC 로 다시 컴파일해야 한다. 이 압축파일의 용도는, nlopt 의 라이브러리파일 .lib 가 만들어지면, python 으로 컴파일할 수 있는 setup.py 파일이 포함되어 있기 때문이다.


3) 위 2) 의 링크 NLopt on Windows 페이지에서 CMake 관련파일 2개를 받는다. CMakeLists.txt 와 config.cmake.h.in 이다. 이것들을 1) 의 압축 풀어놓은 폴더에 넣는다.


cmake 로 VS 프로젝트를 생성-> 컴파일해서 Shared library (.dll) 생성 -> 이걸 Python 으로 컴파일 하는 것이 전체적인 얼개이다.


4) Cmake 로 해당 폴더를 Configure 하면 설정을 잘 잡아주는데, 주의해야 할 것은 

BUILD_SHARED_LIBS 옵션을 체크해 주어야 한다는 것이다. 여기서 컴파일된 .dll 파일을 가지고 python 에서 다시 컴파일한다.


5) Cmake 에서 Generate 하면 VS2010 프로젝트가 생성된다. 열어서 빌드하면 nlopt-0.dll 이라는 dll 이 생성될 것이다.


6) 이제 이것을 2) 에서 받았던 폴더에 넣는데, 원래 있던 dll 인 libnlopt-0.dll 을 지우고 그 이름으로 넣는다.


7) 이제 dll 을 가지고 lib 를 만들 차례이다. (사실 컴파일 자체는 해당 폴더의 README-WINDOWS 를 읽으면 있는 내용이다.) 명령 프롬프트를 써야 하는데, Visual Studio Win64 명령 프롬프트(x64) 를 실행시킨 다음 해당 폴더로 찾아들어간다. 그리고 아래 명령어 입력.


lib /def:libnlopt-0.def


8) 그럼 libnlopt-0.lib 파일이 만들어진다. 이제 python 으로 컴파일한다.


python setup.py build_ext --inplace


위 명령어로 컴파일하면 되는데, 여기가 지랄맞다!!!! 그 이유는, 여기서 python 으로 컴파일하는 것은 내가 환경변수에 등록된 python 으로 컴파일하는데, 이 python 이 처음에 말했지만 흔히 배포되는 Python2.x 의 MSC v.1500 컴파일된 python 을 사용하면 maya 에서 이 nlopt 를 쓸 수가 없다.


따라서 MSC v.1600 으로 컴파일된 python 으로 이 라이브러리를 빌드해야 한다. 그러기 위해서는 VS2010 에서 컴파일된 python2.x 버전을 사용해야 하는데, 나를 도와준 고마운 링크는 아래...


http://www.p-nand-q.com/python/building-python-27-with-vs2010.html


그냥 여기서 주는 python2.7 다운받아 썼다....지만 근데 site-package 를 뭔 이렇게 쓸데없이 깔아서 배포했는지 너무 무겁다; python 직접 컴파일하셔도 됨. 시간많으시면.


어쨌든 이 MSC v.1600 으로 컴파일된 python 으로 위 명령어를 통해 python 으로 컴파일하면, _nlopt.pyd 파일이 생성된다.


9) _nlopt.pyd, nlopt.py, nlopt-0.dll 3개의 파일을 maya 의 site-package 폴더에 넣으면 Maya 에서 잘 돌아가는 nlopt 를 감상할 수 있다.






써놓고 보니 간단해 보이는데 정말 python/라이브러리/심지어 Maya2014 까지 다시깔고, 컴파일 이런 저런 옵션 찾아가며 또해보고, document 읽고 또 읽고... 


해결은 했지만 이거 정말 Maya 문제 있다는 생각이다....





덧붙임1. NLopt 의 installation guide 에서 python_plugin 파트를 읽어보면


http://ab-initio.mit.edu/wiki/index.php/NLopt_Installation#Python_plugins


'Shared library 로 컴파일을 하면 자동으로 python plugin 을 설치해 줍니다!' (오오??) 라고 하는데 Windows 사용자들은 헛된기대 하지 말자... Linux make 파일에서 제공해주는 설정들이다. 실제로 make 파일과 configure 파일을 뜯어보면 python version 의 site-package 에 설치해주는 부분들이 있어서 한참 들여다봤지만 결국 Windows 에서 CMake 로 만든 VS Project 로 컴파일하는 유저들에게는 그런거 없는거로.....



posted by cimple 2014. 12. 30. 17:34

Numpy 를 설치할 때 멀쩡히 Python 2.7 버전이 설치되어 있음에도 Python version 2.7 required, which was not found in the registry" 오류가 뜰 때가 있다.


원인은 여러 가지가 있는데 기존 2.6버전이 설치되어 있을 경우, 또는 Python 2.7 버전의 설치파일에 문제가 있다는 원인(...?) 등등이 예상되는데


해결방법은 윈도우 레지스트리 수정을 통해서 해결할 수 있다.


http://belitino.tistory.com/132


해결은 위 링크의 도움을 받아서 해결할 수 있었고...


요약하면 


HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath


라는 키를 생성해서 데이터를 


HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.7\InstallPath


안에 있는 패스 데이터 값으로 지정해 주면 된다. (아마 C:\Pyton27\ 일 것임)



Wow6432Node 가 뭐지.... 신기하다.

posted by cimple 2013. 11. 29. 12:45

아래 Python Script 를 다운로드 받으시면 됩니다.


simpleMayaVoxelize.py





Simple Maya Voxelize Tool



Maya 에서 손쉽게 Mesh Voxelization 을 수행할 수 있는 툴입니다.


UI 는 다음과 같습니다.



1. Mesh 를 선택하고 (여러개의 Mesh 를 동시에 Voxelize 할 수도 있으나 속도가 느립니다)


2. Voxel Size 를 선택한 후


3. 원하는 Voxelize 방법으로 만드시면 됩니다.


Make Full Voxel Cubes : 내부까지 Voxel 로 꽉 차있는 Voxelized 된 모델을 만듭니다.


Make Surface Voxel Cubes : 겉표면만 Voxel 로 되어 있는 모델을 만듭니다. 속도가 상대적으로 빠르고 가볍습니다.


Make Shape Carving Voxels : 오브젝트의 겉표면대로 Voxel 을 깎습니다. 내부에도 Voxel 이 차 있습니다.




Shape Carving Voxels 기능을 이용한 데모 동영상입니다.





※ Surface Voxelization 은 다음 링크에 공개된 소스코드를 상당부분 활용하였습니다.

http://zoomy.net/2010/02/25/voxelize-meshes-script-v2/

posted by cimple 2013. 11. 20. 21:23

특정 List 에서 어떤 member 가 있는지를 찾아보는 계산에서는 set 이 더 유용하다.


예를 들어


a = []
for i in range(10000):
    a.append(i)


이렇게 list 를 만들었다고 했을때, 특정 member 가 list 에 있는지 찾아보는 방법에는


if 22 in a : print "True"


와 같은 방식으로 찾을 수 있을 것이다. 그러나 이러한 "x in list" 계산은 O(n) 의 complexity 를 갖는다. 이럴 경우 set() 을 사용하면 O(1) 의 time complexity 로 검색이 가능하다.


aSet = set(a)
if 22 in aSet : print "True"


이렇게 해주면 좀더 효율적으로 검색할 수 있다. (그런데 실제적으로 이 예제에서는 계산시간을 눈에 띄게 확인하기는 어렵다..)

posted by cimple 2013. 11. 20. 16:41

Maya Python 에서 Numpy 를 사용하는 방법이 이전 버전에서는 비교적 간단했다.


Numpy Install -> numpy site-package 를 Maya Python site-package 에 복사


그런데 Maya가 2014 버전이 되면서 Python 2.7 을 기본으로 사용하게 되는 것이 문제였는지, Maya2014 에서는 위 방식대로 해도 동작이 잘 되지 않는 것이다.


Python 2.7 설치 -> Python 2.7 용 numpy 설치 -> numpy site-package 복사


를 했는데도 말이다.



구글링을 좀 해도 아직 충분한 정보는 나오지 않고... 


http://forums.cgsociety.org/archive/index.php/t-1121162.html


여기에서 Python 을 다시 컴파일 해 주어야 한다는 정보를 얻었다. 첫 답변이 해당 방식을 알려주는 것 같은데, 사실 잘 못알아듣겠다;;; 다른 유저가 컴파일된 numpy 를 올려두어 numpy 는 어떻게어떻게 활용할 수 있을것 같다.


아래 링크에서 Maya2014 64bit (어차피 Maya2014 부터는 64bit 만 지원한다) numpy 를 다운로드 받을 수 있다.

https://dl.dropboxusercontent.com/u/236059522/numpy.zip




하지만 다른 라이브러리, 특히 nlopt 를 사용해야 하는데... 다른 라이브러리를 활용할 수 있으려면 Windows 환경에서 numpy 등 파이썬 라이브러리들을 컴파일하는 방법을 배워야 할 것 같다.





몇 개의 링크에 따르면...


http://forums.autodesk.com/t5/Programming/Adding-Python-modules-scipy-numpy/td-p/4304367


http://around-the-corner.typepad.com/adn/2012/06/maya-compiler-versions.html

http://around-the-corner.typepad.com/adn/2013/06/maya-compiler-versions-update.html


Maya2013 부터 VS2010 컴파일러를 사용했기 때문에, VS2008 로 컴파일된 라이브러리들은 다시 컴파일해 주어야 제대로 동작한다는 것이다. (MSVC 가 또 나를 괴롭히는구나)