rpyc 모듈을 사용하여 외부 Python 인터프리터에서 Maya 작업

6060 단어 파이썬maya
이 기사는 Takumi Akashiro 혼자 Advent Calendar 2020의 23 일째 기사입니다.

처음에



이전 Houdini를 만졌을 때, 외부의 Python에서 Houdini의 hou 객체를 조작한다 hrpyc 모듈이 굉장하다…hrpyc 를 참고해, Maya에서 같은 것을 쓸 수 있을까 생각했기 때문에 만들어 보았습니다.

rpyc 모듈이란?



Remote Python Call, 즉 다른 프로세스의 Python 객체를 사용하기위한 모듈입니다. 1

호출자는 서버를 세우고 네트워크를 통해 호출자에게 객체의 프록시를 제공하여 다른 세션의 Python 객체를 사용할 수 있습니다.
자세한 것은 2 에 맡깁니다만, Houdini로 사용하는 hrpyc는 rpyc를 매우 간소하게 한 래퍼입니다.

사용법


  • pip install rpyc -t <mayaのScriptフォルダ> 에서 rpyc를 설치합니다. 바이너리는 없기 때문에 python2계라면 무엇이든 괜찮아…
  • 다음 파일을 Maya의 Script 폴더를 저장합니다.

  • mrpyc.py
    #! python2
    # encoding: utf-8
    
    import threading
    
    from rpyc.utils import classic
    from rpyc.core import SlaveService
    from rpyc.utils.server import ThreadedServer
    
    PORT = 18812
    
    def _start_server(port=PORT):
        t = ThreadedServer(
            SlaveService,
            hostname = '0.0.0.0', port = int(port),
            reuse_addr = True, authenticator = None,
            registrar = None, auto_register = False
            )
        t.start()
    
    
    def start_server(port=PORT):
        thread = threading.Thread(target=lambda: _start_server(port))
        thread.start()
        return thread
    
    
    def import_remote_maya_module(server="127.0.0.1", port=PORT):
        return classic.connect(server, port).modules['maya']
    
    

    3. Maya의 ScriptEditor 등에서 다음을 실행하여 Maya의 서버를 세운다.
    import mrpyc
    mrpyc.start_server()
    

    4. 외부 인터프리터에서 다음을 실행하여 Maya 모듈을 얻고 polyCube를 만듭니다.
    import mrpyc
    maya = mrpyc.import_remote_maya_module()
    
    maya.cmds.polyCube()
    

    rpyc · PyPI



    조임



    이외에 간단 수 있었어!

    그냥 실험한 느낌, 몇 분이 지나면 연결이 죽거나 Maya가 충돌하기 때문에,
    좀 더 hrpyc_RemoteHouAttrWrapper 를 참고하여 구현하면 안전하게 할 수 있을지도 모릅니다.



    굉장하다고 생각하는 것만으로 실제로 사용한 적은 없습니다만. 3

    제설이 있습니다.

    자신이 만진 느낌이라면 hrpyc.py에서 여분의 부분을 깎아 만들어 3시간 정도로 할 수 있었다.

    좋은 웹페이지 즐겨찾기