6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MayaAdvent Calendar 2018

Day 10

Maya Typeノードへ、Pythonから日本語文字入力

Posted at

Maya Advent Calendar 2018 に空きがございましたので
https://qiita.com/advent-calendar/2018/maya
参戦してみます


Maya Typeツールでも愛が生まれた
https://qiita.com/it_ks/items/7cfd0c3069b980be8d86

(▲)こちらの内容の続きのようなものを書いていきたいと思います。
「~~でも愛が生まれた」、懐かしいですね。


Maya 2016 Ext2らへんで登場したTypeツール(Typeノード)ですが、
Typeノードの textInput アトリビュートに set すればpythonからも文字入力できるのですが、
なんと
普通に文字をsetしても受け付けてくれません。
例えばこのような感じです

type001.png

set('a') とすれば「a」という文字が入ってくれてもよさそうなものですが、ダメです。
なにならいいのかというと、
先に挙げた記事でもやっているのですが、unicodeコードなら受け付けてくれます。

コード変換

「a」を入力したければ「a」のunicodeコード '61' を渡す必要があります。
これを得るには「ord」と「hex」を使います。

hex( ord(u'a') )

これで大丈夫かと思いきや、まだダメです

type002.png

アトリビュートエディタには「a」を入力できたのですが、
警告が出てTypeノード自体には反映されません。

接頭辞

よくみてみると、単に61が得られたのではなく、
16進数として扱うための接頭辞「0x」がついていることがわかります

type003.png

これで大丈夫

type004.png

…かと思いきや、まだダメです

複数文字対応

ordは一文字しか変換できず、複数文字あたえるとエラーになってしまいます

type005.png

もうちょっと気合みせてくれよ…

そんなわけで、forに渡して個別に処理します。
さらに、複数文字を textInput.set するときは、
文字ごとに 半角スペースで区切り ます。

これは実際に入力してみて確認しました。

type006.png

なるほどね。

できた

以上をまとめて、次のような関数にしてみました

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 ノードを選択していることを期待しています。

type007.png

これで愛が生まれた系の文言(?)を与えても大丈夫(大変にシュール)


参考

タイプ ツール(Type Tool)オプション
https://knowledge.autodesk.com/ja/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2018/JPN/Maya-Modeling/files/GUID-92112B70-161B-4D89-A1E5-BC3D58274EFB-htm.html

ポリゴン テキストを作成する
http://help.autodesk.com/view/MAYAUL/2018/JPN/?guid=GUID-5715F385-F27A-49E0-A624-CB376B669EDC

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?