Unity Bolt Tips1.FlowGraph編集画面の使い方
UnityのBoltを触っていて、日本語の情報も少なく、編集画面の項目の意味がマニュアルにもちゃんと書かれてないので調べたメモ。
Bolt Tipsとして連続記事 になっています。
Asset Store Bolt | ビジュアルスクリプティング | Unity Asset Store
マニュアル Visual Scripting with Bolt | Bolt Visual Scripting | 1.4.12
ショートカット
ショートカットもうちょっと充実してくれるといいのですが、ここに一通り載っています。 Windows and Shortcuts | Bolt Visual Scripting | 1.4.12
だいたいは一般的なショートカットなのですが、覚えておくと便利なのが
- Ctrl +D で複製(これはUnityのお作法)
- Shift + Space で全画面表示On/Off (これもUnityのお作法)
- SuperUnit 上で Ctrl 押しながらダブルクリックで別WindowでFlowを開く
- Ctrl + ドラッグで複数のノードを選択すると、グループ化してコメントをつけることができます。
Unit 同士をつないだ線を消す
また、一度接続した Unit は、実行ピンを右クリックする事で 線を消すことができます。
複数から接続されている場合は、接続先を右クリックすることで、まとめてflowを消すことができます。
ヘッダメニュー
Lock
- チェックすると、表示するFlowGraphを固定できます。
- Projects で他のFlowAssetを選択しても、ロックしたFlowを表示し続けます。
- デバッグ時に特定のFlowを表示し続けたい時などに便利
Zoom
- 表示比率を拡大、縮小します。
- マウスホイールでも拡大、縮小可能
Relations
- ノード内のフローの流れを可視化します。 (下はチェックを入れた状態)
Values
- チェックを入れるとEditor上でPlay実行時に実際に流れている値を可視化できます。
Dim
チェックをいれると、他のノードとつながっていないなど無効なノードを薄暗く表示します
Unity Editor のPreferenceにも関連する項目があります。
Carry
- チェックを入れると、あるノードの場所を移動した際に、つながっているノードも一緒に移動します。
Align
- 複数のノードを選択して、整列させます (左寄せとか)
Distribute
- 複数のノードを選択して、ノード間の間隔をそろえます
Overview
- Flow全体が表示されるようにパンとZoomを自動調整します
FullScreen
- タブをフルスクリーン表示します
Unreal EngineのBPに比べるとまだまだ、機能が貧弱で、大規模コード作成は大変そう。 けど、UnrealModeもあるので、UE経験者は直観的には動かせるかも。ストレスは発生しそうですが。
また、いろいろ触ってみます。
続き
test schema
個人的なURLSchemaのテスト
MagicLeap の「Social」(オンラインミーティングアプリ)の使い方
MagicLeapOneにはオンラインミーティングができる「Social」というアプリがあります。 これを使うと、友達同士で、空間を生かしたオンラインミーティングができます。
使えるようにするために必要な内容をまとめてみました。 www.magicleap.com
事前準備
- OSを最新版にする(私は0.98.10で試しました)一応0.93.0から対応しているらしいですが、念のため、最新にしといた方が良いかも。
- Wifi等でインターネットに接続する
- 連携させるGoogleアカウントを準備しておく(必須ではありません)
- 広い場所。(オクルージョンがかかるので、広い場所がおすすめ 最低2x2m できれば3x3mくらいの床に何もない場所が欲しいかも)
「Social」の起動~初期設定(30分くらいはかかるかも)
Home 画面から、Socialを起動します。こんな感じのアイコンです。
空間にアプリを配置します。
利用規約等に同意します。
SocialのHome画面。右上の名前などの部分から、自分のNickName(ユーザID)やアバターの見た目を変更できます。 アバターの見た目は結構細かく変更できますが、時間がかかるのでほどほどに。 ランダムにアバターの見た目を切り替えることもできます。
自分のNickNameは最初はランダムな文字列が設定されていますが、人から探しにくいので、わかりやすい名前に変えておくと良いです。
Find Friends メニューから友達を探します。
- 設定したNickNameやメールアドレスから検索できます。
Googleアカウントの連携(必須では無い)
「Social」を使ったミーティングの開始
Start a meetingからミーティングを開始することができます。
ミーティング開始の方法は2種類あって
- 4桁のミーティングキーを発行して、参加者に通知する。
- 友達リストから選択して、ミーティングに招待する
という方法が使えます。
Meetingが開始される際に、部屋の中心になる位置を指定します。この位置を中心にメンバーが集まる感じです。
書き足したり、修正していく可能性があります。
ミーティング中にLandscapeのアプリを呼び出すと、コンテンツの共有ができます。
- Gallaryアプリの 2D画像や3Dモデル
- Helioブラウザのコンテンツ
が一応共有できました。(不安定ですが)
声も3Dサウンドで位置を特定できるので、実在感があります。
HoloLens2向けのカメラマウントの3Dプリントデータを作りました。
HoloLens2のセンサー上部(おでこ付近)にいろいろ載せれるアダプタを3Dプリントデータとして作成しました。
3つのパーツに分解可能。 真ん中のプレートは今後用途によって、いろいろカスタマイズ予定。 折りたたむことも可能です。 押し込むと、ツメでカチッと入るので、着脱も簡単。
RealSenseを載せた状態
3DプリントデータはThingverseでCreativeCommonsで無償公開しています。
MagicLeap用にUnity Native Pluginをビルドする(libjpeg-turbo)
Unity で作成したMagicLeapアプリでturbojpegライブラリを利用したくて、試行錯誤したのでメモ。
概要
- 高速jpegエンコード/デコ―ドができるlibjpeg-turboをWindows上でMagicLeap用にビルドして、Unityで使えた。
背景
- MagicLeapでNativePluginを利用するにはAArch64(ARM 64bit)でビルドした共有ライブラリ(.so)が必要となります。
- Third-Partyライブラリにおいてビルド済みバイナリが配流されていることはほぼないので、自分でビルドする必要があります。
- Android用として配布されているバイナリがそのまま使えることもあるが、ダメな場合もある(その辺よくわからない)
環境の説明
- Windows 10
- Unity 2019.1.14f
- MagicLeap SDK 0.21
- CMake 3.15.3
- make-3.81
- nasm-2.14.02 ※これはlibjpeg-turboが必要とするものなので、通常はいらないかも。
- libjpeg-turbo (実施時点では2.0.3 masterブランチ)
- WSLのUbuntu 18.4 LTS ※最後に確認に使ってるけど無くても良い
ビルド手順
- 環境は以下を想定.
名前 | 実際のパス(例) |
---|---|
{MLSDK_DIR} | C:\User\hoge\MagicLeap\mlsdk\0.21.0\ |
{libjpeg-turbo_DIR} | C:\GitHub\libjpeg-turbo\ |
- MINGW64 とコマンドを使い分けてるのでパス表記は適宜読み替えてください。
1. 「環境の説明」の内容を諸々インストールして準備する
- CMake とMakeはパスを環境変数に登録しておくと便利
2. magicleap.toolchain.cmake を作成する。
- Build and Link Libraries に書いてあるように、mabuでmagicleap.toolchain.cmakeを生成する
$ cd {MLSDK_DIR} $ ./mabu -t lumin --create-cmake-toolchain magicleap.toolchain.cmake mabu: Generated a cmake toolchain file to magicleap.toolchain.cmake. This toolchain is entirely independent of mabu, but, depends on the current SDK location; override the MLSDK cmake variable as needed. mabu: Example usage: del CMakeCache.txt cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=magicleap.toolchain.cmake [-DMLSDK=...] ...
3. CMakeの実行
- クローンしたリポジトリ配下に Build (任意の名前)フォルダを作成して、その中でCMakeを実行
#Buildフォルダを作成/移動 $ cd {libjpeg-turbo_DIR} $ mkdir Build $ cd Build #Cmake実行 $ cmake -G"Unix Makefiles" \ -DCMAKE_TOOLCHAIN_FILE="{MLSDK_DIR}magicleap.toolchain.cmake"\ "{libjpeg-turbo_DIR}"
4. CMakeCache.txt の調整
- これは通常必要ないかもですが、CMakeが生成した、CMakeCache.txtを一部編集しました。(必要ないと思います)
//Build static libraries ENABLE_STATIC:BOOL=OFF //静的ライブラリの生成をOFFに //Generate a fatal error if SIMD extensions are not available for // this platform (default is to fall back to a non-SIMD build) REQUIRE_SIMD:BOOL=OFF //SIMD extensionsをOFFに
5. Makeの実行
BuildフォルダにてMakeを実行する
C:\GitHub\libjpeg-turbo\builds\ARM64-lumin>make -- CMAKE_BUILD_TYPE = Release -- VERSION = 2.0.3, BUILD = 20191016 -- 64-bit build (arm64) -- CMAKE_INSTALL_PREFIX = /opt/libjpeg-turbo -- CMAKE_INSTALL_BINDIR = bin (/opt/libjpeg-turbo/bin) -- CMAKE_INSTALL_DATAROOTDIR = (/opt/libjpeg-turbo) -- CMAKE_INSTALL_DOCDIR = doc (/opt/libjpeg-turbo/doc) -- CMAKE_INSTALL_INCLUDEDIR = include (/opt/libjpeg-turbo/include) -- CMAKE_INSTALL_LIBDIR = lib64 (/opt/libjpeg-turbo/lib64) -- CMAKE_INSTALL_MANDIR = man (/opt/libjpeg-turbo/man) -- Shared libraries enabled (ENABLE_SHARED = 1) -- Static libraries disabled (ENABLE_STATIC = 0) -- 12-bit JPEG support disabled (WITH_12BIT = 0) -- Arithmetic decoding support enabled (WITH_ARITH_DEC = 1) -- Arithmetic encoding support enabled (WITH_ARITH_ENC = 1) -- TurboJPEG API library enabled (WITH_TURBOJPEG = 1) -- TurboJPEG Java wrapper disabled (WITH_JAVA = 0) -- In-memory source/destination managers enabled (WITH_MEM_SRCDST = 1) -- Emulating libjpeg API/ABI v6.2 (WITH_JPEG7 = 0, WITH_JPEG8 = 0) -- libjpeg API shared library version = 62.3.0 -- Compiler flags = -O3 -DNDEBUG -- Linker flags = -Wl,--start-group -Bdynamic -lc -lm -lc++_shared -landroid_support -Wl,--end-group --sysroot=C:/Users/hayas/MagicLeap/mlsdk/v0.21.0/lumin -pie -Wl,--gc-sections -Wl,-z,nocopyreloc -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--build-id -LC:/Users/hayas/MagicLeap/mlsdk/v0.21.0/lumin/stl/libc++/lib -- Compiler supports pointers to undefined structures. -- INLINE = __inline__ __attribute__((always_inline)) (FORCE_INLINE = 1) -- Linker supports GNU-style version scripts -- CMAKE_EXECUTABLE_SUFFIX = -- CMAKE_ASM_FLAGS = -O3 -DNDEBUG -- GAS is working properly -- SIMD extensions: arm64 (WITH_SIMD = 1) -- FLOATTEST = 64bit -- RPM architecture = aarch64, DEB architecture = arm64 -- Configuring done -- Generating done -- Build files have been written to: C:/GitHub/libjpeg-turbo/builds/ARM64-lumin Scanning dependencies of target simd
6. 生成されたライブラリをUnityにコピー
Buildフォルダに libturbojpeg.soが生成されていると思います。 これをUnityのPlugins フォルダにコピーしてLumin向けの設定にします。
尚、Androidもそうですが、C#呼び出す時、ライブラリの名称からlibは省略するので注意。 あと、この辺のC#からの呼び出し方法の記載は省略します。
[DllImport("turbojpeg")] //libturbojpegじゃないので注意!! public static extern IntPtr tjInitDecompress();
何度かライブラリを生成して入れ替えてmpkをビルドしていたら、mpk内の.soファイルが入れ替わってないときがあった。 同じmpkファイルに対して、ビルドする場合は注意。消した方が良いかも
7.プラットフォームの確認
- ちゃんと、目的としたプラットフォーム向けに、ライブラリが作成されているかは readelf コマンドで確認できます。Windowsで使えるのか知らないですが WSLでインストールしたUbuntu18.4で実行できます。
特に、Class ,OS/ABI, Machine: がどうなっているか確認してください。
- 以下のようになっていればOK。Machineが x86 とかだとダメです。
littlewing@:ARM64-lumin$ readelf -h libturbojpeg.so ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: DYN (Shared object file) Machine: AArch64 Version: 0x1 Entry point address: 0x2c30 Start of program headers: 64 (bytes into file) Start of section headers: 368824 (bytes into file) Flags: 0x0 Size of this header: 64 (bytes) Size of program headers: 56 (bytes) Number of program headers: 5 Size of section headers: 64 (bytes) Number of section headers: 25 Section header string table index: 22
- ちなみに、32bit-ARMのAndroid版だと、以下のようになります。
littlewing@:armeabi-v7a$ readelf -h libjpegturbo.so ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: DYN (Shared object file) Machine: ARM Version: 0x1 Entry point address: 0x0 Start of program headers: 52 (bytes into file) Start of section headers: 176736 (bytes into file) Flags: 0x5000200, Version5 EABI, soft-float ABI Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 9 Size of section headers: 40 (bytes) Number of section headers: 27 Section header string table index: 26
所感
- 最初Ubuntu上にAndroidNDKとか入れて、Android64bit版を作成してそれを使ってやろうとしたけど、だめで、 結局あきらめて、Windows上でやったらうまくいきました。
- こうやって書くと、簡単そうだけど、ここまでが大変だった。。
- こういうことするなら、Macのが楽だな。※MagicLeapSDKはWin/Mac用しかなくてLinux/Ubuntu用が無い
[おまけ] magicleap.toolchain.cmakeの中身はこんな感じだった。
- magicleap.toolchain.cmake
set(LUMIN TRUE) set(MLSDK "C:/Users/hoge/MagicLeap/mlsdk/v0.21.0" CACHE PATH "Path to Lumin SDK") # canonicalize string(REPLACE "\\" "/" LUMIN_SDK "${MLSDK}") set(LUMIN_SDK_SYSROOT "${LUMIN_SDK}/lumin/") set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_VERSION 1) SET(TOOL_OS_SUFFIX "") IF(CMAKE_HOST_WIN32) SET(TOOL_OS_SUFFIX ".cmd") ENDIF() set(CMAKE_SYSTEM_PROCESSOR "aarch64") set(CMAKE_SYSROOT "${LUMIN_SDK_SYSROOT}") set(CMAKE_MAKE_PROGRAM "${LUMIN_SDK}/tools/mabu/tools/mingw/msys/1.0/bin/make" CACHE PATH "make executable" FORCE) set(CMAKE_C_COMPILER "${LUMIN_SDK}/tools/toolchains/bin/aarch64-linux-android-clang${TOOL_OS_SUFFIX}" CACHE PATH "C compiler" FORCE) set(CMAKE_CXX_COMPILER "${LUMIN_SDK}/tools/toolchains/bin/aarch64-linux-android-clang++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler" FORCE) set(CMAKE_AR "${LUMIN_SDK}/tools/toolchains/bin/aarch64-linux-android-gcc-ar.exe" CACHE PATH "C/C++ archiver" FORCE) # Configure the behaviour of the find commands set(CMAKE_PROGRAM_PATH "${LUMIN_SDK}/tools/toolchains/bin") set(CMAKE_FIND_ROOT_PATH "${LUMIN_SDK}/lumin/") set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_CXX_FLAGS "--sysroot=${LUMIN_SDK}/lumin -march=armv8-a -mcpu=cortex-a57+crypto -fPIE -nostdinc++ -I${LUMIN_SDK}/lumin/stl/libc++/include" CACHE INTERNAL "" FORCE) set(CMAKE_EXE_LINKER_FLAGS "-Wl,--start-group -Bdynamic -lc -lm -lc++_shared -landroid_support -Wl,--end-group --sysroot=${LUMIN_SDK}/lumin -pie -Wl,--gc-sections -Wl,-z,nocopyreloc -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--build-id -L${LUMIN_SDK}/lumin/stl/libc++/lib" CACHE INTERNAL "" FORCE) set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--start-group -Bdynamic -lc -lm -lc++_shared -landroid_support -Wl,--end-group --sysroot=${LUMIN_SDK}/lumin -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--build-id -L${LUMIN_SDK}/lumin/stl/libc++/lib" CACHE INTERNAL "" FORCE) set(CMAKE_STATIC_LINKER_FLAGS "" CACHE INTERNAL "" FORCE) set(CMAKE_LIBRARY_PATH "${LUMIN_SDK}/lumin/stl/libc++/lib" CACHE INTERNAL "" FORCE) include_directories(SYSTEM )
参考
逆引きMeshLab
MeshLabの使い方をすぐ忘れるのでメモ
ウインドウ操作
操作内容 | 操作方法 |
---|---|
レイヤーパネル On/Off | Ctrl +L |
全画面表示 | Alt +Enter |
Quick ヘルプの表示 | F1 |
カメラ/視点の操作
操作内容 | 操作方法 |
---|---|
カメラの回転 | ドラッグ |
カメラの移動 | Ctrl+ドラッグ or 中ボタンドラッグ |
カメラのズーム | Shift+ドラッグorマウスホイール |
カメラの中心を移動 | ダブルクリック |
カメラのリセット | Ctrl+H |
パースの強弱 | Shift+マウスホイール |
光源の移動 | Ctrl+Shift+ドラッグ |
Near Clipの変更 | Ctrl+ドラッグ |
3Dモデル操作
操作内容 | 操作方法 |
---|---|
モデルのインポート | Ctrl +i |
個別のモデル(レイヤー)の移動 | Filters > [Normals,Curvatures and Orientation] > [Transform : Translate,Center, set Origin] |
個別のモデル(レイヤー)の回転 | Filters > [Normals,Curvatures and Orientation] > [Transform : Rotate] |
個別のモデル(レイヤー)の拡縮 | Filters > [Normals,Curvatures and Orientation] > [Transform : Scale,Normalize] |
メッシュ編集
Merge(結合)
操作内容 | 操作方法 |
---|---|
Mesh のレイヤーを結合する | Layerの上で右クリック > Flatten visible layers |
Filter (スキャンデータをきれいにする)
操作内容 | 操作方法 |
---|---|
穴埋め | Filters > [Remeshing simpleification and Reconstruction] > [Close Holoes] Manifoldのエラーが出る場合は事前に、[Cleaning and Repairing] > [Remove faces from Non Manifold Edges]などを実施 |
孤立したMeshを除去 | Filters > Cleaning and Repairing > Remove Isolated Pieces (Diameter) |
形状を保ったままメッシュの数を減らす | Filters > [Remeshing, Simplification and Reconstruction]-[Simplification: Quadric Edge Collapse Decimation] を実行 詳細1 詳細2 |
頂点と法線からMeshを生成する | Filters > [Remeshing simpleification and Reconstruction] > [Surface Reconstruction : Ball Pivoting] |
Scale変更 | Filters > [Normals,Curvatures and Orientation] > [Transform : Scale] ※1 |
※1 ScaleはXの値だけ変えれば倍率が変わる。Measure Tool の単位はUnityでいうと1 Unity( メートル)っぽい。
MeshLabで点群データ処理
位置合わせ
"Global Registration" というのが、MeshLab 2020.07から増えている。openGRを利用しているっぽい。
OpenGRを利用して Registrationするらしい。
— littlewing (@keshin_sky) 2020年10月26日
二つのオブジェクトを指定して位置合わせと、
変換マトリックスを出力してくれた。
精度はまだわからんけど、気軽に使えて便利そう。#MeshLab pic.twitter.com/on58CjQnOA
コマンドラインで利用する
- ply から daeへ変換
meshlabserver -i input.ply -o output.dae
- 変換時には含めるデータをオプションで指定可能
meshlabserver -i input.ply -o output.dae -m vc #頂点カラー付きで出力 [-m <opt>] the name of the file where to write the current mesh of the MeshLab document. If -m is specified the specified mesh attributes will be saved in the output file. the param <opt> can be a space separated list of the following attributes: vc -> vertex colors, vf -> vertex flags, vq -> vertex quality, vn-> vertex normals, vt -> vertex texture coords, fc -> face colors, ff -> face flags, fq -> face quality, fn-> face normals, wc -> wedge colors, wn-> wedge normals, wt -> wedge texture coords
- Windowsのバッチで連続して処理する(事前に作成したフィルター処理 filter.mlx をかける)
set PATH=%PATH%;C:\Program Files\VCG\MeshLab for %%V in (*.ply) do ( meshlabserver -i %%V -o %%~nV.obj -s filter.mlx ) pause
- コマンドのヘルプ全文
C:\Program Files\VCG\MeshLab>meshlabserver Usage: meshlabserver [logargs] [args] where logargs can be: -d filename dump on a text file a list of all the filtering functions -l filename log of the filters is ouput on a file where args can be: -p filename meshlab project (.mlp) to be loaded -w filename [-x] output meshlab project (.mlp) to be saved. If -x flag is specified a 3D model meshfile.ext contained in the input project will be overwritten, otherwise it will be saved in the same directory of input mesh as a new file called meshfile_out.ext. All the mesh attributes will be exported in the saved files -i filename mesh that has to be loaded -o filename [-m <opt>] the name of the file where to write the current mesh of the MeshLab document. If -m is specified the specified mesh attributes will be saved in the output file. the param <opt> can be a space separated list of the following attributes: vc -> vertex colors, vf -> vertex flags, vq -> vertex quality, vn-> vertex normals, vt -> vertex texture coords, fc -> face colors, ff -> face flags, fq -> face quality, fn-> face normals, wc -> wedge colors, wn-> wedge normals, wt -> wedge texture coords -s filename the script to be applied Examples: 'meshlabserver -i input.obj -o output.ply -m vc fq wt -s meshclean.mlx' the script contained in file 'meshclean.mlx' will be applied to the mesh contained into 'input.obj'. The vertex coordinates and the per-vertex-color, the per-face-quality and the per-wedge-texture attributes will be saved into the output.ply file 'meshlabserver -i input0.obj -i input1.ply -w outproj.mlp -x -s meshclean.mlx' the script file meshclean.mlx will be applied to the document composed by input0.obj and input1.ply meshes. The mesh input1.ply will become the current mesh of the document (e.g. the mesh to which the filters operating on a single model will be applied). A new output project outproj.mlp file will be generated (containing references to the input0.obj an input1.ply). The files input0.obj and input1.ply will be overwritten. 'meshlabserver -l logfile.txt -p proj.mlp -i input.obj -w outproj.mlp -s meshclean.mlx' the mesh file input.obj will be added to the meshes referred by the loaded meshlab project file proj.mlp. The mesh input.obj will become the current mesh of the document, the script file meshclean.mlx will be applied to the meshes contained into the resulting document. the project file outproj.mlp will be generated A 3D model meshfile.ext contained in the input project proj.mlp will be saved in a new file called meshfile_out.ext (if you want to overwrite the original files use the -v flag after the outproject filename) all the attributes of the meshes will be saved into the output files; the log info will be saved into the file logfile.txt. Notes: There can be multiple meshes loaded and the order they are listed matters because filters that use meshes as parameters choose the mesh based on the order. The format of the output mesh is guessed by the used extension. Script is optional and must be in the xml format saved by MeshLab.
参考
【OpenFOAM】点群処理や点群の編集をするには・・MeshLab、Meshmixerなどを使う【3D】
Magic Leap Remote を Wifi経由で利用する
すぐ、忘れちゃうのでメモ。 充電しながら開発するにはWifi経由で接続したい。
USBでつないだ状態で以下を実行
$ mldb wifi status ..... IpAddr=192.168.1.31 ..... $ mldb tcpip -p 5555 restarting in TCP mode port: 5555 $ mldb connect 192.168.1.31 connected to 192.168.1.31:5555 # 確認 $ mldb devices List of devices attached 192.168.1.31:5555 device # USBに戻す $ mldb usb