Maya Type 노드에 Python에서 일본어 문자 입력

6044 단어 파이썬maya
Maya Advent Calendar 2018에 빈 공간이 있기 때문에
htps : // 코 m / 아 d
참전해 보겠습니다.

Maya Type 도구에서도 사랑이 태어났습니다.
htps : // m / t_ks / ms / 7cfd0c3069b980 8d86

(▲)이쪽의 내용의 계속과 같은 것을 써 가고 싶습니다.
「~~하지만 사랑이 태어났다」, 그리운군요.

Maya 2016 Ext2등에 등장한 Type 툴(Type 노드)입니다만,
Type 노드의 textInput 속성에 set하면 python에서 문자를 입력 할 수 있습니다.
무려
보통 문자를 set해도 받아들이지 않습니다.
예를 들면 이런 느낌


set('a') 그렇다면 「a」라고 하는 문자가 들어 주어도 좋은 것 같습니다만, 안 됩니다.
무엇이 좋은가 하면,
앞서 언급한 기사에서도 하고 있습니다만, 유니코드 코드라면 접수해 줍니다.

코드 변환



'a'를 입력하려면 'a' 유니코드 코드 '61'을 전달해야 합니다.
이것을 얻으려면 "ord"와 "hex"를 사용하십시오.
hex( ord(u'a') )

이것으로 괜찮을 것 같아, 아직 안돼.



속성 편집기에 "a"를 입력 할 수 있었지만,
경고가 발생하고 Type 노드 자체에는 반영되지 않습니다.

접두사



잘 보면 단순히 61을 얻은 것이 아니라,
16진수로 취급하기 위한 접두사 「0x」가 붙어 있는 것을 알 수 있습니다



이것으로 괜찮습니다.



…라고 생각했는데, 아직 좋지 않습니다.

다중 문자 대응


ord 는 1문자 밖에 변환할 수 없고, 복수문자 붙이면 에러가 되어 버립니다



좀 더 기합시켜줘…

그런 이유로 for에 전달하여 개별적으로 처리합니다.
또한, 여러 문자를 textInput.set 할 때,
각 문자에 대해 반각 공백으로 구분하십시오.

이것은 실제로 입력해 보았습니다.



알겠습니다.

할 수 있었다



이상을 정리해, 다음과 같은 함수로 해 보았습니다
import pymel.core as pm

def set_type_node_text( target_str ):
    # unicode型で来なかったら変換
    if not isinstance(target_str,unicode):
        target_str = unicode( target_str,'cp932' )

    # unicodeコードに変換、リストにためる
    input_str = []
    for c in target_str:
        input_str.append( hex(ord(c))[2:] )

    # 半角スペース区切りにして textInput.set
    pm.selected()[0].textInput.set( u' '.join(input_str) )

target_str = "かきくけこ"
set_type_node_text( target_str )

런타임에 Type 노드를 선택하고 있기를 기대합니다.



이것으로 사랑이 태어난 계의 문언(?)을 주어도 괜찮다(힘들게 초현실적)

참고



유형 도구 옵션
https://knowledge.autodesk.com/ko/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2018/JPN/Maya-Modeling/files/GUID-92112B70-161B-4D89-A1E5-BC3D58274EFB-h html

다각형 텍스트 작성
htp // // lp. 어쨌든 sk. 코 m/ゔぃえw/마야우 L/2018/JP응/? gu d = gu D-5715F385-F27 A-49 0-A 624-CB376B669 DC

좋은 웹페이지 즐겨찾기