Help us understand the problem. What is going on with this article?

OneDriveがXgenを困らせていた話

More than 1 year has passed since last update.

:santa: Mayaアドカレ :santa: 3日目が空いておりましたので書いてみます。

先日、xgenが起動しないという症状に出会いました。
とある方面からの相談だったのですが、いわく、いろいろ試してみたけどわからないとのこと。
なにしろ同じ症状がこちらには起きない(普通にxgen使える)ので、どう探ったものか困りました。

ある意味タイトルが全てなのですが、報告させていただく次第です。

事前情報

xgen:four_leaf_clover::seedling::herb:

XGen は、ポリゴン メッシュのサーフェスに任意の数のプリミティブを
ランダムまたは均一に設定するためのジオメトリ インスタンサです。

https://knowledge.autodesk.com/ja/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2015/JPN/Maya/files/GUID-47644337-40F0-4766-BD3B-4104F9F9B7E2-htm.html

Disneyが開発し、5年前くらいからMayaに同梱されています

OneDrive

先日時価総額でAppleを抜いたMicrosoft様のクラウドストレージサービスです

https://onedrive.live.com/

主訴

xgenが起動しません

ここまでの試行

以下は試したとのこと

  • プリファレンス削除
  • Mayaアンインストール、再インストール
  • 過去版を試す

確認

melコマンドxgen実行時に止まっているようでした。
さらに確認してみると、python関数_getXgProjectだかそういう名前のがこけている模様

パスに日本語は含まれてない

プロジェクトのパスを取得する関数でこけているので、
パスの中に文字列が含まれているのだろう、と思いました。

しかし確認してみると、プロジェクトフォルダの名前など含め、
日本語フォルダは含まれていないようでした。
あれ、思ったのと違う……

置き場所トリック

プロジェクトは ドキュメント以下 に置かれていましたが、
Explorer上で「ドキュメント」に見えてもローカライズ表示されているだけで
パスとしては実際は「Documents」な はずなので 問題にしませんでした。

なんと相談者より
「このドキュメントはOneDrive以下です」
と伺っていたにも関わらずです。
同じ挙動をすると思っていました :angel_tone2:

これによって、一旦保留して持ち帰るなどちょっと時間がかかってしまいました。

解決

原因

もうネタを明かしてしまったも同然ですが、
OneDrive以下のドキュメントフォルダは
ユーザフォルダ以下のドキュメント(=Documents)フォルダのようにはなっていません。
具体的には、
(Explorer上では「ドキュメント」、パスをみたら「Documents」、かと思っていたのですが)
OneDrive以下のドキュメントは本当に「~¥ドキュメント¥~」だったのです。

O_dOwmEA.jpg
(▲)OneDriveの「ドキュメント」

THwbtQ37.jpg
(▲)普通にみてる時(上段)と、パスをみてみたとき(下段)

トリック2

…というか、
そもそも2バイト文字をパスに含んでいると set project できません。
なのになぜ「そもそもそこに set project できてしまっていたのか」
という点が、事態をややこしくしていました。

原因はおそらくこれです。

Windows 10 は既定で OneDrive にファイルを保存する

ファイルを作成すると、第 1 候補は [OneDrive] の下の 
[デスクトップ]、[ドキュメント]、または [画像] フォルダーになります

という設定があるのですが、これが入っていたのかなぁと。
(そのうち手元でも試したいところです(解決しちゃったことですしやらずに忘れそう))

対応1

別のフォルダにプロジェクトセットしてもらうことで解決しました。

「『ドキュメント』はパス的にはDocumentsだから大丈夫」という思い込みが
対応を長引かせる結果となりました。
こうした思い込みには常々気をつけないとなと思いました…。

対応2

そもそもAutodesk様ともあろう開発力のある会社が
2バイト文字対応していないだなんて、いやいやそんなまさか

return str( projectpath.encode('cp932') )

u3cmhfQs.jpg

C:\Program Files\Autodesk\Maya{ver}\plug-ins\xgen\scripts\xgenm\
にあるxgGlobal.pyの 183行目を直せばいけるのではと思います。


まとめ

というわけで、xgenそのものは関係ない内容ではありましたが……
autodeskさん対応お願いします、またはpy3化お願いします、
またはMicrosoftさん凝ったことしないで!

明日は、執筆時点ではどなたも登録されてませんが、
ひとネタあるという方は是非どうぞー :bow_tone1: :thumbsup:

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away