やらなイカ?

たぶん、iOS/Androidアプリの開発・テスト関係。

Blender 的なテンキー操作で視点操作できる Unityエディタ拡張

Blender 的なテンキー操作で視点操作できる Unityエディタ拡張 Blender-like SceneView Hotkeys を公開しました。 Unity 2018.3 以降で動くので VRChat SDK 向けの作業にも使えます。

3Dモデリングツール Blender の 3D Viewport では、マウス操作のほか、テンキーによって視点などを操作できます。 使ってみるととても便利で手放せなくなったので、これを Unity のシーン・ビューでも使えるよう、エディタ拡張として移植したものです。

機能

v0.2 時点で実装している機能を紹介します。

以下、スクリーンショットのモデルには火村ユウヤ氏製作の 大神ルゥ さんを使用しています。

視点の方向

テンキー 1 で正面ビュー

f:id:nowsprinting:20200926185347p:plain:w400

テンキー 3 で側面(右)ビュー

f:id:nowsprinting:20200926185629p:plain:w400

テンキー 7 で上面ビュー

f:id:nowsprinting:20200926185642p:plain:w400

また、 control + 1 で背面、 control + 3 で左面、 control + 7 で下面からのビューになります。

透視投影/ 正投影 切り替え

テンキー 5 で透視投影 (perspective) と正投影 (orthographic もしくは isometric) が切り替わります。

f:id:nowsprinting:20200926190059p:plainf:id:nowsprinting:20200926190021p:plain

視点の回転

テンキー 8 2 4 6 で、上下左右に15°づつ軸を中心に視点を回転します。 また、 9 で現在の視点から180°回転した視点に切り替わります。

f:id:nowsprinting:20200926190357p:plain:w400

Roll

shift + テンキー 4 で左まわり、 6 で右まわりに、視点方向を軸に回転します。

f:id:nowsprinting:20200926185715p:plain:w400

Pan

control + テンキー 8 2 4 6 で、上下左右に視界を移動します。

f:id:nowsprinting:20200926190419p:plain:w400

Zoom

control + テンキー + でズームイン、 - でズームアウトします。

f:id:nowsprinting:20200926190433p:plain:w400

エディタ拡張のインポート方法

unitypackage ファイルからインポート

簡単なのは、 OpenUPM から installer.unitypackage をダウンロードしてインポートする方法です。

openupm.com

上のリンクを開き、ページ右の "Download installer.unitypackage" (下図の四角)をクリックします。

f:id:nowsprinting:20200926190459p:plain:w400

.unitypackage ファイルがダウンロードできますので、Unityエディタでプロジェクトを開いてインポートできます。

なお、通常の .unitypackage とは異なり、ファイルの実体は Assets フォルダ下には入らず、 Package Manager によって管理されます。 Window | Package Manager を開くと表示され、ここからアップデートも可能です。

その他の方法でインポート

その他、下記 GitHub リポジトリを直接 git URL として指定するなど、お好みの方法でインポートできます。

github.com

設定

テンキーを模倣 (Emulate Numpad)

テンキーが無い場合、文字キー上部にある数字キーを使う設定が可能です。

Preferences ウィンドウを開いて "Blender-like SceneView Hotkeys" を選択、 "Emulate Numpad" を on にするだけです。 この設定は、UnityプロジェクトではなくPCごとに保持されます。

f:id:nowsprinting:20200926190522p:plain:w500

ただし、数字キーの 2 には別のホットキーが割り当てられています。 Unity 2019 以降であれば、ショートカットマネージャでこれを無効にするなどして競合を回避してご使用ください。

参考

Blender www.blender.org

Blender の 3Dビューポート操作マニュアル docs.blender.org

使用モデル booth.pm

#yokohamaunity in #cluster 会場ができるまで

昨晩開催された『yokohama.unity 実質4回目』会場として cluster のワールドを構築・提供しました。

meetup.unity3d.jp

ワールドは横浜の「大さん橋」屋上を 再現 模したもので、遠景に全天球画像、アーチ状の構造物などはフォトグラメトリで作ったハイポリモデルをリトポロジーしてローポリ化したものを配置。

f:id:nowsprinting:20200801042833p:plain:w400

少しでも横浜っぽさを感じ、楽しんでいただけたのであれば幸いです。

以下、製作の流れなどを紹介します。

会場の選定

前回(4/末)のオンライン開催の後、「横浜っぽい会場を作ろうか*1」ということで心当たりを何箇所かロケハンした結果、大さん橋に決まりました。

大さん橋は、みなとみらい*2ベイブリッジ山下公園といったスポットに囲まれており、まさに全天球写真向き。 ちなみに、大さん橋ホールは数多のビアフェスの会場になっていたりします。

遠景

全天球写真はRICOH THETA Sで撮影。ただし、撮影の主目的はフォトグラメトリ(後述)だったので、撮影に行くのはフォトグラメトリ日和つまり曇天。 7月に入って、そろそろ本番撮影をしなければと思うものの、ずっと天候悪く、曇天画像のまま当日を迎えました。

撮影した全天球画像は、@warapuriさんが公開されているライセンスフリーICO球 (Sphere100.fbx) の内側に貼り付けて使用しています。

UnityのSkyboxにそのまま貼って使うこともできましたが、撮影が雑で画像が大さん橋の中央でなく北に寄っていたため、うまく足元の構造物を隠せる上記方式をとりました。

構造物のモデリング

大さん橋屋上の構造物、大さん橋ホール入り口のアーチ(上のスクショでスクリーンの後ろにあるもの)と、南北にある階段状の客席をそれぞれフォトグラメトリ、リトポロジーして使用することを予定していました。

しかし残念ながら客席はリトポロジーが間に合わず、今回は単なる斜面に。

撮影

曇天*3の早朝、 iPhoneで動くマニュアルカメラアプリで、 北側客席は下側を東西に平行移動しながらヨーとピッチ変えつつ撮影。 エントランスも下側から南北に並行移動しながらヨーとピッチ変えつつ撮影。

南側に人がいたので北側を撮影したのですが、背景にランドマークタワーなどのビルが写ったためフォトグラメトリの像を結ぶのにプラスに働いたはず。

フォトグラメトリ処理に使う3DF Zephyr Liteにソース写真500枚制限があるため、客席とエントランスはあえて別々に撮影しています。

フォトグラメトリ

使用ソフトは3DF Zephyr Lite。2年前にSteamのセールで買ったものですが先日バージョン5にアップデートされました。最近は買い切り珍しくてお得感。

store.steampowered.com

北側客席は231枚中231枚が有効。設定はプリセットのカテゴリーを「市街地」、ほかはデフォルト。 奥のほうはエントランスの影があったこともあって暗く、そのせいか湾曲してしまっています。WBくらいオートにしてもよかったのかもしれません。 メッシュ生成の後、周囲のバリ取りを行なってテクスチャ付きメッシュを生成。

f:id:nowsprinting:20200801052744j:plain:w400

エントランスは54枚中53枚が有効。こちらもカテゴリー「市街地」、ほかはデフォルト。 こちらもバリ取りをしますが、出入り口正面の床は残し気味にし(後工程で水平を取りやすくするため)、客席部分は邪魔なので削ってしまいます。

f:id:nowsprinting:20200801052510j:plain:w400

加工したら、テクスチャ付きメッシュをobj形式で出力。fbxでも出力できますが、(恐らくLite版の制限で)テクスチャが出力できません。 テクスチャは後工程で捨ててしまうのですが、リトポロジーの際にテクスチャがあるほうが見やすいです。

なお、方向合わせは3DF Zephyrで無理に行わず、後からBlenderで行います。

スケールは、フォトグラメトリで作られたモデルの寸法を本当に信じていいのか未だ半信半疑。 今回は大きすぎると思って縮小して合わせたものの、終盤になって、どうも合っていたのかも? と…。

トポロジー

トポロジー (retopology) とは、フォトグラメトリやスカルプトで作られたハイポリモデルのメッシュの流れ(トポロジー)を組み直すこと。

自動でリトポロジーを行なってくれるツールもありますが、今回はcluster会場用にローポリモデルにしたいのでハイポリメッシュに沿って手作業で面を貼っていく作業をします。

今回はこちらの記事のワークフローに従い*4、販売されているBlenderアドオンを使用して貼っていきました。

bookyakuno.com

gumroad.com

エントランスのアーチ下側の部分。このようにハイポリメッシュに頂点を吸着させつつ面を貼っていきます。 ちなみにアーチ下の階段に横たわっている白と黒の物体は、寝ているおじさんです。

f:id:nowsprinting:20200801060603p:plain:w400

貼り終えたら、原点をホール入口中央の床面に合わせておきます。Unityでの位置合わせが楽なように、Blenderでやるのが一番良さそう。 その後、ローポリメッシュをUV展開してfbxエクスポート。Unityに取り込みます。

大さん橋屋上の床面

床面は、Blender大さん橋の平面図を下絵として取り込み、モデリングしていきます。 ここでも原点をホール入口中央の床面に、スケールはフォトグラメトリモデルから測定したものに合わせます。

f:id:nowsprinting:20200801060210p:plain:w400

実際はもっとカーブが多く、さらに南北でアシンメトリーなのですが、かなり単純化して面を貼っています。画像が南半分なのはミラーモディファイア使用のため。 平面図にあらわれないアップダウンは現地の記憶と写真で補いつつ進めます。

また、全天球画像の足元を見えなくするために、実際の床面より広く外に張り出しています(Unity上でコライダによって端まで行けないようにします)。

こちらもUV展開してfbxエクスポートします。本来は芝生部分の塗り分けがあるのですが、今回は一律、木目調のテクスチャをタイリング。

なお、当初、床面はUnity上でPro Builderで作りかけたのですが、大きなオブジェクトの位置合わせが大変で断念しました。 最終的にスタッフルーム(大さん橋ホール)の箱だけPro Builder製に。

小道具

小道具として、横浜のアイデンティティ(箱)をモデル化。 Cluster Creator KitのGrabbable Itemコンポーネントを入れて、持ったり投げたりできるように。みんな遊んでくれてよかった。

f:id:nowsprinting:20200801031042p:plain:w400

また、登壇者に cluster ゲームワールドコンテスト 2020 大賞受賞の@yunoda_3DCGさんがいらっしゃったので、急遽、大賞作『1min. Hockey』に飛べるWorld Gateを設置。

cluster.mu

所感

既知のノウハウのつなぎ合わせで作ったものなのですが、屋外の構造物をまともにフォトグラメトリ&リトポロジーするのははじめてで、色々勝手がわからず試行錯誤しました。

ここに挙げただけでも様々な妥協の産物なのですが、なんとか形にはなったかと。 今回妥協・見送りしたものは、次回yokohama.unity開催までに仕上げたいところ。

なお、大さん橋には撮影に関する規約があり、今回は個人撮影の範囲で利用しています。従って、イベントは限定公開、ワールド非公開、リポジトリも非公開となっています。ご了承願います。

参考

www.nowsprinting.com

*1:オフライン開催の頃から地域.unityのアイデンティティ確立は主催者が意識されていて、オンラインだとそれ無くなってしまうねという話が発端

*2:港町は海側が顔なので海から見るべき、という話があります

*3:多くの写真を撮っていくので、強い影が出ると時間経過で影が変わってしまうことを避けるため

*4:記事中でMatcap表示を勧められていますが、今回の作例ではフォトグラメトリで得られたテクスチャのほうがやりやすい

Unityプロジェクトのディレクトリ構成と .gitignore

Twitterで話題に上がっていたので、自分なりのやり方を。

ディレクトリ構成

Assets/下

自分で作るものはAssets/下にディレクトリ (Folder) を作り、そこにまとめています。

  • Assets
    • MY_PROJECT_NAME
      • Scripts
      • Tests
      • とか

Editor/の置き場所は、MY_PROJECT_NAME/の直下だったり、MY_PROJECT_NAME/Scripts/下だったり、毎回定まっていません*1

Assets外

主にビルドスクリプト*2で以下のように指定しています。いずれも.gitignore(後述)で除外指定されているところ。

  • ビルド成果物は Builds/
  • ログは Logs/
  • テスト結果も Logs/
  • コードカバレジ*3も Logs/

.gitignore

giboでベースを生成

.gitignoreファイルはgiboで生成したベースに、プロジェクトごとの設定を追加しています。

github.com

私はIDEにJetBrains Riderを使っているので、次のように。

$ gibo dump Unity JetBrains >> .gitignore

これで、以下2つの定義が連結された.gitignoreができます。

Rider以外のIDEを使用する場合は JetBrainsVisualStudioVisualStudioCode に置き換えます。

なお、OSごとの定義はあらかじめグローバルの.gitignoreに設定されている前提ですが、gitに不慣れなメンバーもいる状況では macOSWindows を加えてもいいでしょう。

プロジェクト固有の定義を追加

必要に応じて、.gitignoreに追加していきます。

まず極端な例。公開 or 納品するプロジェクトなど、3rd partyのアセットをすべて除外したい場合は、以下のようにMY_PROJECT_NAME以外をすべてトラックしないようにします*4

/Assets/*
!/Assets/MY_PROJECT_NAME*

なお、スラッシュを含めず*を書いているのは、ディレクトリの.metaファイルも含めるためです。

すべてではない場合、シートライセンスのエディタ拡張など、リポジトリに含めたくないものを個別に指定していきます。例えば、

/Assets/ConsolePro*

同様に、Assets/下に生成されるファイルでトラックしたくないものも追加します。代表的なものは以下。

Play Mode tests実行時に作られて、まれによく残ってしまうScene

/Assets/InitTestScene*.unity*

Build Report Inspector

/Assets/BuildReports*

VRCSDKがアップロード用にプロジェクトルートに作るファイル

/*.unitypackage

UniVRMで生成する中間ファイル

/Assets/*.vrm
/Assets/*.vrm.meta

Code Coverage packageの設定ファイル*5

/ProjectSettings/Packages/com.unity.testtools.codecoverage/

アセット提供側が気をつけたいこと

アセット提供側としても、自身のアセットはAssets/直下に置くのでなくディレクトリを切るべきです(以下MY_ASSET_NAMEとします)。

また、再配布可能な他者のアセットを同梱する場合は、MY_ASSET_NAMEの下ではなく、オリジナルのディレクトリに置くと、他のアセットとの競合を避けられます。

アセットの設定ファイルをAssets/MY_ASSET_NAME/下に置いてパス指定で読み書きしてしまうと、ユーザがディレクトリを変更できなくなり不便です。 設定は、 Settings Manager package を使用してProjectSettings/下に保存するようにすると使いやすくなります(Unity 2018.3 以降)。

*1:Editor/は、Assets/直下でなくどこにあってもEditor扱いされますし、asmdefファイルを置けばEditorという名前でないディレクトリをEditor扱いすることも可能です

*2:Makefile老人会なのでMakefile

*3:Code Coverage packageの場合、設定で出力先を変更できます

*4:ただし、エディタ拡張だけでなくランタイムのスクリプトその他も除外するのは、納品には良いのですがCIで不便です。Gitはこの設定で、CIはignore定義が別のUnity Collaborateにするという手もあります

*5:0.3.0-previewからここに保存されるようになったが、出力先をフルパスで保存してしまうので除外

リモート時代のモブプログラミング(モブワーク)勉強会でmob IntelliJ pluginをお披露目 #モブLOVE #モブプロ #MobProgramming #RemoteMobProgramming

リモートモブプログラミングにフォーカスした勉強会(もちろんオンライン開催)のLT募集があったので、作っているリモートモブプロ支援IntelliJ pluginの紹介をしてきました。

moblove.connpass.com

勉強会冒頭のアンケートでは、リモートモブプロをやたことはある人は多いものの、単発であったり、うまくできていないという人が2/3くらい。

終盤の 銀の弾丸ラジオ 公開収録では寄せられたお悩み相談に、及部さんたちだけでなくZoomのチャットにも色々知見が寄せられて*1、たいへん有意義な会でした。

そんな中、オンラインあみだくじによってLTのトリで発表させていただきました。Visual Studio CodeのLive Share機能を使っている事例がいくつかあったので、JetBrains派の方々に向けてバランス取れたのではないでしょうか。

プラグインは JetBrains Plugins Repository で公開されています。

plugins.jetbrains.com

ただしまだEAP Channelのみなので、IntelliJ の Preferences | Plugins にチャネルを設定しないと出てきません。 もしくはplugin pageからファイルをダウンロードしてインストールすることも可能です。

EAP Channelの設定その他はGitHub repositoryのREADMEを参照してください。

github.com

チームの事情等でIntelliJが使えないという方は、移植元である mob コマンドをお試しください。こちらの記事でも紹介しています。 www.nowsprinting.com

はじめてのIntelliJ plugin開発でしたが、得られた知見は今後も当ブログで記事にしていく予定です。下のリンクから記事一覧が見られます。 www.nowsprinting.com

*1:Zoomのチャットは残らないのがつらいところですね

#yokohamaunity (cluster開催)で『Rider plugin の作りかた』をLTしてきました

yokohama.unity初のオンライン開催である「yokohama.unity ~オンラインDEハジメテユルクヤッテミル#0~」で、IntelliJ Rider plugin 開発についてのLTをしてきました。

f:id:nowsprinting:20200424225918p:plain

meetup.unity3d.jp

今回は初のオンライン、clusterでの開催でした。clusterはオーディエンスのリアクションが見られるのがとても良いですね*1

ただ、ものすごく贅沢を言うと、

  • 音声がやや聞き取りづらかった(うちの回線の問題だとは思いますが*2
  • スライドの登壇者ビューが小さめ(解像度低め)なので、スライドにキーワードを散りばめておいて話すスタイルだと厳しい

みたいなところは気になりました。

あと個人的に、うっかり他のアカウントにTwitterアカウントを紐付けてしまったため、cluster内で打ったコメントをTwitterに流せないのです*3。連携解除機能とか実装されてほしい。

登壇資料

以下、今回のスライドと、その中で紹介している過去記事です。

www.slideshare.net

www.nowsprinting.com

www.nowsprinting.com

www.nowsprinting.com

説明をだいぶ端折ってしまったSettings/Preferencesなど、また改めて単発のブログ記事を書き起こすつもりです。 今後の追加も含め、下のリンクから記事一覧が見られます。

www.nowsprinting.com

また、製作途中なものを晒したIntelliJ プラグインは、次のイベントでお披露目できる見込み…?

moblove.connpass.com

[5/18追記] 無事リリースされました!

plugins.jetbrains.com

懇親会

懇親会はRemoでという話だったのですが、重すぎてつながらず、急遽Zoomへ。 人数少なくなってしまった寂しさと、少人数だからZoomで会話が成立したので結果オーライ感と。

トータルで楽しかったので、ぜひまたやりましょう!

関連

仮面ライダーゼロワン RKF 仮面ライダーランペイジバルカン

仮面ライダーゼロワン RKF 仮面ライダーランペイジバルカン

  • 発売日: 2020/04/25
  • メディア: おもちゃ&ホビー

*1:なぜ壇上からのスクショを撮っていないのか…

*2:自分の音声どうだったのだろう、というのは気になるので教えてほしいです

*3:ZoomやDiscordのテキストチャットで盛り上げることもできますが、ログがそのサービスに閉じてしまいます。その点、clusterはコメントをTwitterにも流せるのが良いところなのですが

IntelliJ plugin から他のプラグインを使用する

IntelliJ (JetBrains IDE) ファミリー向けのプラグイン開発において、他のプラグイン(例えばGitを操作するための Git4Idea *1 など)や、Riderなど言語別IDEの機能を使う設定について。

基本的なことは公式ドキュメントの下記ページに載っており、それに沿って補足していきます。

プラグイン依存関係 / IntelliJ プラットフォーム SDK プラグイン開発ガイド

build.gradle

build.gradleの intellij ブロック内に plugins の設定を追加します。

Git4Ideaを使用する例 (Kotlin) :

intellij {
  version = "2020.1"
  setPlugins("git4idea")
}

Gradleでビルドおよび runIde タスクを実行するとき、この設定が使われます。 このとき、ここで記述したプラグインの依存関係については自動的に解決されます。

しかし、 test タスクでユニットテストを実行するときは、プラグインの依存関係が解決されないという制限があります。 上例の git4idea には依存先がないのですが、例えば android を使用する場合は次のように android が依存するすべてのプラグインを書く必要があります。

intellij {
  version = "2020.1"
  setPlugins("android", "junit", "Groovy", "gradle")
}

詳しくは下記 Issue を参照してください。この問題が修正される気配は無さそうに見えます。

Install plugin dependencies transitive dependencies automatically for tests. · Issue #38 · JetBrains/gradle-intellij-plugin · GitHub

plugin.xml

plugin.xml には <depends> で依存するプラグインを宣言する必要があります。 com.intellij.modules.platform の下に追加していきましょう。

<depends>com.intellij.modules.platform</depends>
<depends>Git4Idea</depends>

これはランタイムで使用される設定です。ここに書く名称についてはコード補完が効きます。

なお、プラグインの依存を必須にしない場合、 <depends>optional 属性を指定できます。 これは試していないので、公式ドキュメントを参照してください。

classpath

以上でプラグインのビルド・配布はできるのですが、IntelliJ IDEA上で開発を進めるにはclasspathも設定する必要があります。

File > Project Structure... を開き、SDKs > 11(使用しているJDKバージョンによりますが、ここではAmazon Corretto 11)を選択、classpathタブの"+"クリックで必要なjarファイルを選択します。

f:id:nowsprinting:20200419195750p:plain

jarファイルは、IntelliJ IDEAインストールディレクトリ/plugins/下にあります。 Git4Ideaの場合、plugins/git4idea/lib/下に4つのjarファイルがありますが、ディレクトリごと選択すれば大丈夫です*2

参考

プラグイン開発に関しては、公式ドキュメントにある程度の情報が載っています。日本語版もちゃんと更新されています*3

IntelliJ プラットフォーム SDK / IntelliJ プラットフォーム SDK プラグイン開発ガイド

IntelliJ Platform SDK / IntelliJ Platform SDK DevGuide

少し込み入った話になると、ヘルプセンターがヒットしたりはします。

IDEs Support (IntelliJ Platform) | JetBrains

本稿のclasspathの件はここにありました。

How to build and use git4idea as a library in plugin – IDEs Support (IntelliJ Platform) | JetBrains

*1:Git4Ideaはビルトインされているのでインストール不要なプラグインですが、プラグインから使用するための設定は必要です

*2:はじめgit4idea.jarだけを選択していたところ、中途半端な解決しかされず悩みました…

*3:が、翻訳には限界があるので検索で探し当てるのは難しいです

IntelliJ plugin からのログ出力

IntelliJ (JetBrains IDE) ファミリー向けのプラグイン開発をしていて、ログ出力まわりが少々わかりにくかった*1のでメモ。

プラグインからのログ出力

プラグインからログを出力するには、 com.intellij.openapi.diagnostic.Logger を使います。

Javaの場合

Logger log = Logger.getInstance(getClass());
log.trace("trace!!!");
log.debug("debug!!!");
log.info("info!!!");
log.warn("warn!!!");
log.error("error!!!");
log.error("例外を渡すことも可能", new Throwable());

Kotlinの場合*2

val log = Logger.getInstance(javaClass)
log.trace("trace!!!")
log.debug("debug!!!")
log.info("info!!!")
log.warn("warn!!!")
log.error("error!!!")
log.error("例外を渡すことも可能", Throwable())

サンドボックス実行環境のログ出力先

Gradle > runIde で実行すると起動するサンドボックスでは、ログはプロジェクトのルートディレクトリ下 /build/idea-sandbox/system/log/idea.log に出力されます。

idea.logは、Runウィンドウで見られるようにしておくと便利です。 Run > Edit Configurations... を開き、Gradle > runIde の"Logs"タブで"+"アイコンをクリックしてidea.logのパスを追加します。

f:id:nowsprinting:20200418183403p:plain

すると、Runウィンドウにタブが追加されるようになり、そこで idea.log を確認できます。

f:id:nowsprinting:20200419094611p:plain

なお、タブの右方にあるテキストフィールドでログの絞り込み、その左隣のドロップダウン(上図では"all")で表示するログレベルの変更ができます。

実際のログ出力先

プラグインをビルドした後、正規のルートでIntelliJ IDEAなどにインストールして使用するとき、ログはmacOSでは ~/Library/Logs/JetBrains/IntelliJIdea2020.1/idea.log に出力されます。

IDEをJetBrains TOOLBOXからインストールしていれば、TOOLBOXを開いて目的のIDEの右の六角形 > Settings にある "Show logs directory" ボタンで idea.log の場所がFinderで開きます。

なお、2020.1から、ログだけでなく、設定、キャッシュ、プラグインの格納場所が変更になっています。 2019.3以前の情報も含めてまとめられたページを教えていただきました。

ログレベルの変更

Diagnostic loggerのログ出力レベルのデフォルトは INFO です。 DEBUG まで出力するには、 Help > Diagnostic Tools > Debug Log Settings… を開き、改行区切りで # + パッケージ名もしくはクラスのFQCNを設定します*3

f:id:nowsprinting:20200418190423p:plain

ダイアログに書いてあるとおり、TRACE まで出力するにはパッケージ名もしくはFQCNの後ろに :trace を付けます。

なお、いずれも、開発中のサンドボックス実行環境の場合、runIdeで起動された側(サンドボックス側)のIDEで設定する必要があります。

参考

プラグイン開発に関しては、公式ドキュメントにある程度の情報が載っています。日本語版もちゃんと更新されています*4

IntelliJ プラットフォーム SDK / IntelliJ プラットフォーム SDK プラグイン開発ガイド

IntelliJ Platform SDK / IntelliJ Platform SDK DevGuide

少し込み入った話になると、ヘルプセンターがヒットしたりはします。

IDEs Support (IntelliJ Platform) | JetBrains

*1:バージョンの変わり目にはじめてのプラグイン開発をしたからというのが最大の理由ですが

*2:KotlinのパッケージレベルでjavaClassの代替手段がほしい。どなたか知っていたら教えて下さい

*3:ワイルドカードではないので、特定のパッケージ以下をすべて有効にしたければ画像のように書けばok。後ろに*をつけると無効になります

*4:が、翻訳には限界があるので検索で探し当てるのは難しいです