まきゼミ技事録!

とあるゼミのプログラマー達が送る技術ブログのようなもの

Substance PainterのLiveLinkをUnityで使う

初めまして、ぴょんさんです(っ´ω`c)

私はエディタ拡張とかシェーダについての記事を書くつもりです。そのうちhoudiniの記事なんかも書けたらいいなと思ってます。

今回はSubstance Painter(以下SP)のLiveLinkをUnityで使用したことについてです。

 

使用している様子

f:id:MakiZemi:20180705170958g:plain

こんな感じで、SPでマテリアルを編集すると、Unity上で表示しているマテリアルのほうにも変更が反映されます。いちいち保存してインポートし直さなくても、すぐに見た目を確認できるので、効率よくマテリアルを作成できます。

 

環境

LiveLinkのプラグインSubstance Shareで配信されているので、そこからダウンロードしました。

share.allegorithmic.com

 

やりかた

  1. LiveLinkのプラグインをインポートします。形式はunitypackageなので、いつものようにインポートします。
  2. インポートしたモデルの設定を変更します。ImportSettings>Materials>Materialsの「Extract Materials」をぽちっと押します。

参考動画

youtu.be

さらに、この動画では、ImportSettings>Models>NormalsをCalculateに設定していたので、自分もそうしています。この設定自体が必要かどうかはよくわかっていないのですが、見た目が結構変わります。

設定が終わったらApplyを押して、変更を適用します。

  3.モデルを右クリックして「Send to Substance Painter」をクリックします。(あらかじめ、SPを起動しておく必要があります)

 f:id:MakiZemi:20180705191513p:plain

  4.これでSPにもモデルが表示され、LiveLinkでマテリアルを作成できるようになりました。

 

エディタ拡張

インポートしたモデルの設定を変更する作業は、いちいちやるのも面倒だと思ったので、Unityエディタ上で自動で行うようにしました。

OnPreprocessModel

で自動で変更を行うようにしています。

 

まとめ

UnityとSPのLiveLinkを紹介しました。適当にSPを操作しているだけでも、すぐにUnityに変更が反映される様子は見ていてとても楽しいので、興味があれば遊んでみてください。

 

参考にしたところ

Live Link in Unity - Substance Integrations - Allegorithmic Documentation

 

anchan828.github.io

 

kan-kikuchi.hatenablog.com

 

おわりー(*^-^*)

UnityのAttribute(属性)について

初めまして!ひろたか('Д')です。

現在、いろいろ忙しくて技術的な部分があまり勉強できていませんが、頑張っていきます。

今回はUnityのAttributeの中でもいくつか使えそうなものを紹介します。

SerializeFiled

[SerializeFiled]
private int serializeFiled;

まずはおなじみSerializeFiledです。privateやprotectedフィールドを強制的にシリアライズしてInspector上での編集を可能にします。

HideInInspector

[HideInInspector]
public int hideInInspector

こちらはSerializeFiledとは逆にpublicなどのシリアライズするフィールドをInspector上から隠します。
似たようなものにSystem.NonSerializebleというものがあります。こちらはシリアライズをしないように設定することでInspetor上から隠します。

HeaderAttribute

[Header("Title")]
public int header;

Inspector上のフィールドにタイトルが追加されます。

TooltipAttribute

[Tooltip("説明文")]
public int tooltip;

inspector上のフィールドにマウスカーソルを合わせると説明文が表示されます。

ExecuteInEditMode

[ExecuteInEditMode]
public class ExecuteInEditBehaviour:MonoBehaviour{
}

クラスの前に付けるAttributeです。これは付けるとエディタがプレイモードになっていなくてもMonoBehavioursのStartやUpdateなどのコールバック関数が呼ばれるようになります。

複数の属性を設定したい場合

Attributeは複数付けることもできます。

[SerializeFiled,Tooltip("説明文")]
public int hoge;

バランスWiiボードをUnityで使用

さんかくです。(/・ω・)/

はてなブログをゼミのプログラマーで始めることになりました。
お互いの技術共有による技術向上と、個人的には文章能力もつけていければと思います、、、(;´∀`)

ネット頼りなのでリンクばっかりになったらすみません、、、。

お品書き

  1. 実行環境
  2. ペアリング
  3. Unityとの接続

という順番になっています。

実行環境

バランスWiiボード
Bluetoothアダプタ(PCがBluetooth対応ならば不要)
・PC(Windows10 Home)
・Unity2017.4.0f1

バランスWiiボードとPCはBluetoothで接続できるので、PCにBluetooth接続がなければUSBアダプタで接続させます。
今回私は「PLANEX COMMUNICATIONS BT-Micro4」を使用しています。

注意:USBアダプタにドライブをインストールするCD-ROMがあるのですが、Windows10 の場合は使用しないです。インストールすると逆にできないです。
(私はインストールしてしまい接続できなくなりました、、)

ペアリング

コントロールパネル→ハードウェアとサウンド→デバイスの追加
で追加できます。
バランスボード裏にある赤いSYNCボタンを押すとNintendo RVL-WBC-01という名前で出てくるので選択、
その後コード入力せず次にいくと接続できます。
f:id:MakiZemi:20180621195335p:plain:w400
ここで注意なのが
設定→Bluetoothとその他のデバイス→デバイスを追加する
では接続できないということです。
バイスは出てくるのですが、PINを求められ、何も入力しないで次へ行くことができません。
f:id:MakiZemi:20180621194955p:plain:w400


Unityとの接続

Unityとの接続は自力では無理なのでこのサイトのプロジェクトを使用させていただきました。
machinemaker.hatenablog.com
BalanceBoardTest.zipをダウンロード、そこから必要な部分を取り出します。
WiimoteServer、アセットをプロジェクトにコピー

詳しい処理の内容はリンク先を読んでいただければ、、、、(丸投げ)

WiiBlanceBoardParent プレハブにBalanceBoardDataクラスを含んでいるスクリプトがあるのでそこから

  • 重さ
  • 重心
  • 各センサー(ボードにはセンサーが4か所ある)にかかっている重量

を取得することができます。

あとはこれらの値を自分好みに加工すれば使用できます。

エラー

Wiimotes found in HID device list
とエラーが出て接続できないときがあったり、普通に動くときなどまちまちなので怖いです、、、。
窓の杜 - 【NEWS】“バランスWiiボード”をパソコンに接続して体重計にできる「WBHealthMeter」
こちらのソフトで使用した後はちゃんと接続できたりします。
謎です、、。

おわりに

Unityの接続は丸投げで申し訳ないです、、、。
WiimoteLibを使用して接続などをしてみたかったのですが、時間かかりそうだったので諦めました('_')
実力がもっとつけばいろいろやっていきたいです。

バランスWiiボードの資料は少ないので接続に
時間かかりました(;´∀`)

なにかありがたいアドバイスや改善点などありましたらよろしくお願いします。