MRが楽しい

MRやVRについて学習したことを書き残す

Blender2.8でモデルのクリーンアップを行う その1

本日は Blneder2.8 の技術調査枠です。
Blender2.8でモデルのクリーンアップを行う機能について記事にします。
f:id:bluebirdofoz:20191215213642j:plain

クリーンアップ機能

Blender のクリーンアップはメッシュの様々な問題を解決するための機能です。
本機能を利用するとメッシュの穴を埋めたり、孤立した不要な点を削除するといったことできます。
docs.blender.org

クリーンアップは[編集モード]でヘッダーから メッシュ -> クリーンアップ で利用できます。
f:id:bluebirdofoz:20191215213705j:plain

孤立を削除

選択したメッシュの内、孤立した頂点/辺/面を削除します。
f:id:bluebirdofoz:20191215214210j:plain

頂点/辺/面のいずれかを削除するかはオプションで指定できます。
f:id:bluebirdofoz:20191215214221j:plain

形状のポリゴン数削減

選択したメッシュのポリゴン数を削減します。
f:id:bluebirdofoz:20191215213734j:plain

削減するポリゴンの比率はオプションで指定できます。
f:id:bluebirdofoz:20191215213746j:plain

[対称]をチェックして軸を指定すると、削減後のメッシュが指定軸で対称な形状になります。
f:id:bluebirdofoz:20191215213756j:plain

頂点グループの指定

頂点グループを指定する事でポリゴン削減の影響範囲を調整することができます。
[オブジェクトデータ]タブを開き、メッシュの頂点グループを作成します。
f:id:bluebirdofoz:20191215213807j:plain

頂点を選択し、頂点グループの[割り当て]を実行します。
これで選択した頂点が頂点グループに登録されます。
f:id:bluebirdofoz:20191215213816j:plain

この状態で改めて[形状のポリゴン数削減]を実行します。
f:id:bluebirdofoz:20191215213826j:plain

オプションで[頂点グループ]にチェックを入れると、頂点グループの範囲でポリゴン削減が実行されます。
f:id:bluebirdofoz:20191215213836j:plain

更に[反転]にチェックを入れると影響範囲が反転します。
f:id:bluebirdofoz:20191215213847j:plain

大きさ0を融解

面積が0の面や、長さが0の辺を1つの頂点にまとめます。
f:id:bluebirdofoz:20191215213858j:plain

オプションで結合する頂点の最大距離が指定できます。
f:id:bluebirdofoz:20191215213910j:plain

限定的融解

選択したメッシュを指定の角度によって融解して頂点をまとめます。
f:id:bluebirdofoz:20191215213921j:plain

オプションで融解する角度や、融解を区切る境界を指定できます。
デフォルトでは面の向きで境界が区切られます。
f:id:bluebirdofoz:20191215213932j:plain

[全境界]をチェックすると選択中の全頂点を区切り無しに融解します。
f:id:bluebirdofoz:20191215213940j:plain

面を平均化

選択した面を平らにします。面の歪みは4つ以上の頂点を持つ面で発生します。
f:id:bluebirdofoz:20191215213949j:plain

オプションで平坦化処理の係数や反復回数を指定できます。
f:id:bluebirdofoz:20191215214000j:plain

長くなったので記事を分けます。

MRTKv2を使ってiOS向けアプリを作成する その2(MRTK v2.2.0版)

本日は MRTKv2 の技術調査枠です。
MRTK v2 のバージョン 2.2.0 を使って iOS アプリを作成する方法について基本的な手順をまとめます。
f:id:bluebirdofoz:20191214110430j:plain

今回はプロファイルの設定からビルドまでをまとめます。
前回記事の続きです。
bluebirdofoz.hatenablog.com

カメラプロファイルの編集

MobileAR のカメラ設定をプロファイルから行います。
Hierarchy から MixedRealityToolkit ゲームオブジェクトを選択し、Inspector ビューを開きます。
プロファイルを編集するため、[Mixed Reality Toolkit]コンポーネントの[Copy & Customize]をクリックします。
f:id:bluebirdofoz:20191214110439j:plain

[Clone Profile]ダイアログが開きます。
[Profile Name]に作成する編集用プロファイルの名前を設定します。
[Clone]をクリックすると、プロファイルが生成されます。
f:id:bluebirdofoz:20191214110449j:plain

これでプロファイルが編集可能になりました。
プロファイルの[Camera]タブを開きます。
次はカメラプロファイルを編集するため、カメラプロファイル内の[Clone]をクリックします。
f:id:bluebirdofoz:20191214110458j:plain

[Clone Profile]ダイアログが開きます。
[Profile Name]に作成する編集用カメラプロファイルの名前を設定します。
[Clone]をクリックすると、カメラプロファイルが生成されます。
f:id:bluebirdofoz:20191214110507j:plain

これでカメラプロファイルが編集できるようになります。

カメラ設定プロバイダーの変更

カメラプロファイルに MobileAR 用の設定プロバイダーを追加します。
[Camera Settings Providers]内の[Add Cameara Settings Provider]をクリックします。
f:id:bluebirdofoz:20191214110519j:plain

[New Camear Settings 1]という名前のプロバイダーが追加されます。
f:id:bluebirdofoz:20191214110529j:plain

[Type]のプルダウンを開き、[Microsoft.MixedReality.Toolkit.Experimental.UnityAR]->[UnityARCameraSettings]を選択します。
f:id:bluebirdofoz:20191214110541j:plain

これでは MobileAR 用のカメラ設定プロバイダーが追加できました。
f:id:bluebirdofoz:20191214110550j:plain

プラットフォームの選択

アプリのビルドプラットフォームを iOS に切り替えます。
メニューから File -> Build Settings.. を選択します。
f:id:bluebirdofoz:20191214110602j:plain

Build Settings ダイアログが開きます。
[Add Open Scenes]をクリックして現在のシーンをビルド対象のシーンとして追加します。
[Platform]から[iOS]を選択して[Switch Platform]を実行します。
f:id:bluebirdofoz:20191214110615j:plain

これでビルド対象にシーンが追加され、プラットフォームが iOS に切り替わりました。
プラットフォームが切り替わると、[MRTK Project Configurator]ダイアログが表示されます。
切り替え時に設定のチェックが外れていれば、改めて[Apply]をクリックして設定を反映します。
f:id:bluebirdofoz:20191214110627j:plain

プロジェクトの設定

ビルドを行う前に、幾つかのプロジェクト設定を行います。
メニューから Edit -> Project Settings.. を開きます。
f:id:bluebirdofoz:20191214110637j:plain

[Projcect Settings]ダイアログが開きます。
[Player]タブを開き、[iOS] -> [Other Settings]のパネルを開きます。
f:id:bluebirdofoz:20191214110648j:plain

[Identification]にある[Bundle Identifier]の設定をデフォルトの[com.Company.ProductName]から変更しておきます。
これがデフォルトの場合、Xcodeのビルドで[Failed to register bundle identifier.]のエラーが発生します。
f:id:bluebirdofoz:20191214110658j:plain

[Optimization]にある[Strip Engine Code]のチェックを外します。
f:id:bluebirdofoz:20191214110710j:plain

ビルドの実行

再び[Build Settings]ダイアログを開き、[Build]を実行します。
保存設定のダイアログが表示されるので、[Save As]に出力プロジェクト名を入力します。
[Where]に出力先ディレクトリを指定し、[Save]を実行します。
f:id:bluebirdofoz:20191214110724j:plain

これで Unity プロジェクトがビルドされました。
出力先のディレクトリに *.xcodeproj ファイルが出力されています。
f:id:bluebirdofoz:20191214110733j:plain

iPadへのインストール

出力した *.xcodeproj ファイルを使って iPad にアプリをインストールする手順は以下の記事を参照ください。
bluebirdofoz.hatenablog.com
bluebirdofoz.hatenablog.com

アプリの動作確認

iPad にインストールしたアプリを起動してみます。
f:id:bluebirdofoz:20191214110807j:plain

HandInteractionExamples のサンプルシーンが iPad 上で動作します。
f:id:bluebirdofoz:20191214110817j:plain

iPad 上でタップ操作を行うと、ボタンの押下やピアノを弾くことができます。
f:id:bluebirdofoz:20191214110827j:plain

タップしたまま、カーソルを動かすとドラッグ可能なオブジェクトを移動することもできます。
f:id:bluebirdofoz:20191214110835j:plain

MRTKv2を使ってiOS向けアプリを作成する その1(MRTK v2.2.0版)

本日は MRTKv2 の技術調査枠です。
MRTK v2 のバージョン 2.2.0 を使って iOS アプリを作成する方法について基本的な手順をまとめます。
f:id:bluebirdofoz:20191213230114j:plain

今回は Unity プロジェクトの作成からパッケージのインポート手順までをまとめます。

iOS アプリの開発環境構築については以下の記事を参照ください。
bluebirdofoz.hatenablog.com
bluebirdofoz.hatenablog.com

Unity プロジェクトの作成

Unity の新規プロジェクトを作成します。
Unity Hub の[新規作成]を起動し、新規プロジェクトの作成を行います。
このとき、利用する Unity のバージョンは 2018.4.x, 2019.1.x または 2019.2.x を選択します。
f:id:bluebirdofoz:20191213230136j:plain

本記事では 2018.4.x を利用します。
以下の通りに設定を行い、[作成]ボタンをクリックしてプロジェクトを作成します。
・テンプレート:[3D]
・プロジェクト名:任意のプロジェクト名
・保存先:任意のディレクト
f:id:bluebirdofoz:20191213230145j:plain

これで新規プロジェクトが作成されました。
f:id:bluebirdofoz:20191213230152j:plain

パッケージのインポート

プロジェクトに MRTKv2 をインポートします。
最初に Microsoft.MixedReality.Toolkit.Unity.Foundation.2.2.0.unitypackage をインポートします。
Unity プロジェクトを開いた状態であれば unitypackage をダブルクリックでインポートできます。
f:id:bluebirdofoz:20191213230200j:plain

Import Unity Package ダイアログが開きます。
[Import]ボタンをクリックして、パッケージをインポートします。
f:id:bluebirdofoz:20191213230208j:plain

Foundation パッケージはインポート完了時に、[MRTK Project Configurator]ダイアログが表示されます。
[Apply]を選択すると、以下のデフォルト設定が行われます。
・現在のプラットフォームで VR Support を有効にする
レンダリングパスをシングルパスに設定する
・デフォルトの空間認識レイヤーを設定する
MSBuildをインポートする
特に指定がなければ[Apply]で自動設定する事が推奨されます。
f:id:bluebirdofoz:20191213230219j:plain

今回は iOS にインストールするアプリのシーンとして MRTKv2 のサンプルシーンを利用してみます。
Microsoft.MixedReality.Toolkit.Unity.Examples.2.2.0.unitypackage をインポートします。
Examples には MRTKv2 の機能を使った様々なサンプルシーンが含まれています。
f:id:bluebirdofoz:20191213230229j:plain

Import Unity Package ダイアログが開きます。
[Import]ボタンをクリックして、パッケージをインポートします。
f:id:bluebirdofoz:20191213230241j:plain

最後に MobileAR のサポートを利用するためのパッケージをインポートします。
Microsoft.MixedReality.Toolkit.Unity.Providers.UnityAR.2.2.0.unitypackage をインポートします。
f:id:bluebirdofoz:20191213230251j:plain

Import Unity Package ダイアログが開きます。
[Import]ボタンをクリックして、パッケージをインポートします。
f:id:bluebirdofoz:20191213230301j:plain

これでパッケージのインポートは完了です。
手順通りに実施していると、ここで以下のエラーが発生します。

System.IO.DirectoryNotFoundException: Could not find a part of the path ...

f:id:bluebirdofoz:20191213230314j:plain

本エラーを解消するには AR Foundation のパッケージをインストールする必要があります。

AR Foundationの取得

エラーを解消するため、AR Foundation のパッケージと ARKit のプラグインを取得します。
Unity プロジェクトが開いたら、メニューから Window -> Package Manager を開きます。
f:id:bluebirdofoz:20191213230327j:plain

パッケージマネージャが起動したら[Advanced]のプルダウンを開き、[Show preview packages]をクリックします。
AR Foundation は preview 版のパッケージであるため、これをチェックしないとパッケージの一覧に表示されません。
f:id:bluebirdofoz:20191213230336j:plain

一覧に表示された AR Foundation を選択します。
バージョン 1.5.0 - preview.6 を選択し、[Install]を行います。
f:id:bluebirdofoz:20191213230347j:plain

次に一覧に表示された AR Kit XR Plugin を選択します。
バージョン 2.1.2 を選択し、[Install]を行います。
f:id:bluebirdofoz:20191213230355j:plain

両パッケージをインストールすると、エラーが解消されます。
f:id:bluebirdofoz:20191213230405j:plain

Unity2019.x環境について

Unity2019.x 環境を利用する場合は AR Foundation はバージョン 2.1.4 を利用します。
AR Foundation はリリース版のパッケージになるため、[Show preview packages]のチェックも不要です。
また、Provider.UnityAR の UnityEngine.SpatialTracking 参照の追加が必要になります。

環境ごとの手順に関する詳細は以下のページで確認できます。
microsoft.github.io

サンプルシーンの利用

今回は様々なハンドインタラクションを試すサンプルシーンである HandInteractionExamples をサンプルシーンとして利用します。
Assets から MixedRealityToolkit.Examples\Demos\HandTracking\Scenes を開きます。
フォルダにある HandInteractionExamples.unity のシーンをダブルクリックで開きます。
f:id:bluebirdofoz:20191213230425j:plain

[TMP Essentials]のインポートを問うダイアログが表示されることがあります。
これはサンプルシーンで Text Mesh プラグインを利用しているためです。
[Import TMP Essentials]をクリックして、プラグインをインポートします。
f:id:bluebirdofoz:20191213230434j:plain

インポートが完了したら、再び HandInteractionExamples.unity のシーンをダブルクリックで開き直します。
f:id:bluebirdofoz:20191213230445j:plain

[再生]ボタンをクリックすると、シミュレーションが開始します。
シーンが再生され、シーン内のテキスト文字列が正常にレンダリングされていれば問題ありません。
f:id:bluebirdofoz:20191213230455j:plain

次はプロファイルの設定からビルドまでです。

参考ページ

microsoft.github.io

MRTKv2を使ってHoloLens1向けアプリを作成する ビルド手順編(MRTK v2.2.0版)

本日は HoloLens の技術調査枠です。
MRTK v2 のバージョン 2.2.0 を使ってのHoloLensアプリを作成する方法について基本的な手順をまとめます。
今回はUnityプロジェクトの新規作成からUWPアプリをビルドするまでの手順になります。
f:id:bluebirdofoz:20191212003451j:plain

以下の記事の続きです。
bluebirdofoz.hatenablog.com

Unity プロジェクトの作成

Unity の新規プロジェクトを作成します。
Unity Hub の[新規作成]を起動し、新規プロジェクトの作成を行います。
このとき、利用する Unity のバージョンは 2018.4.x, 2019.1.x または 2019.2.x を選択します。
f:id:bluebirdofoz:20191212003521j:plain

本記事では 2018.4.x を利用します。
以下の通りに設定を行い、[作成]ボタンをクリックしてプロジェクトを作成します。
・テンプレート:[3D]
・プロジェクト名:任意のプロジェクト名
・保存先:任意のディレクト
f:id:bluebirdofoz:20191212003530j:plain

これで新規プロジェクトが作成されました。
f:id:bluebirdofoz:20191212003538j:plain

パッケージのインポート

プロジェクトに MRTKv2 をインポートします。
最初に Microsoft.MixedReality.Toolkit.Unity.Foundation.2.2.0.unitypackage をインポートします。
Unity プロジェクトを開いた状態であれば unitypackage をダブルクリックでインポートできます。
f:id:bluebirdofoz:20191212003548j:plain

Import Unity Package ダイアログが開きます。
[Import]ボタンをクリックして、パッケージをインポートします。
f:id:bluebirdofoz:20191212003605j:plain

Foundation パッケージはインポート完了時に、[MRTK Project Configurator]ダイアログが表示されます。
[Apply]を選択すると、以下のデフォルト設定が行われます。
・現在のプラットフォームで VR Support を有効にする
レンダリングパスをシングルパスに設定する
・デフォルトの空間認識レイヤーを設定する
MSBuildをインポートする
特に指定がなければ[Apply]で自動設定する事が推奨されます。
f:id:bluebirdofoz:20191212003620j:plain

これで Foundation パッケージがインストールされました。
f:id:bluebirdofoz:20191212003631j:plain

[MRTK Project Configurator]ダイアログが表示され、全ての設定にチェックが入っていれば設定が完了しています。
f:id:bluebirdofoz:20191212003640j:plain

必要であれば他のオプションパッケージも同様の手順でインポートを行います。
f:id:bluebirdofoz:20191212003653j:plain

プラットフォームの選択

アプリのビルドプラットフォームを UWP に切り替えます。
メニューから File -> Build Settings.. を選択します。
f:id:bluebirdofoz:20191212003702j:plain

Build Settings ダイアログが開きます。
[Add Open Scenes]をクリックして現在のシーンをビルド対象のシーンとして追加します。
[Platform]から[Universal Windows Platform]を選択して[Switch Platform]を実行します。
f:id:bluebirdofoz:20191212003713j:plain

これでビルド対象にシーンが追加され、プラットフォームが UWP(Universal Windows Platform) に切り替わりました。
プラットフォームが切り替わると、[MRTK Project Configurator]ダイアログが表示されます。
切り替え時に VR Support のチェックが外れるので、改めて[Apply]をクリックして設定を反映します。
f:id:bluebirdofoz:20191212003722j:plain

処理が完了したら[MRTK Project Configurator]ダイアログで全ての設定が完了していることを確認します。
[MRTK Project Configurator]ダイアログはメニューから Mixed Reality Toolkit -> Utilities -> Configure Unity Project で開くことができます。
f:id:bluebirdofoz:20191212003732j:plain

シーンの設定

次にアプリのシーンを設定を行います。
今回は HoloLens1 向けのアプリシーンを作成します。

Foundation パッケージをインポート済みであれば[Mixed Reality Toolkit]メニューが追加されています。
そのメニューから Mixed Reality Toolkit -> Add to Scene and Configure.. を選択します。
f:id:bluebirdofoz:20191212003742j:plain

するとシーンの Hierarchy に以下のゲームオブジェクトが追加されます。
・MixedRealityToolkit
・MixedRealityPlayspace

Mixed Reality Toolkit:フレームワーク全体の中央構成エントリポイントを提供するツールキットの本体。
MixedRealityPlayspace:ヘッドセットの親オブジェクト。ヘッドセット/コントローラーおよびその他の必要なシステムを管理します。メインカメラはプレイスペースの子オブジェクトとして移動します。

f:id:bluebirdofoz:20191212003752j:plain

シーンを利用するデバイスに最適化するには、環境に合わせたプロファイルを設定する必要があります。
MixedRealityToolkit オブジェクトを選択し、Inspector ビューを開きます。
Mixed Reality Toolkit コンポーネントでプロファイルを選択できます。
HoloLens 向けのアプリシーンを作成する場合は[DefaultHoloLens1ConfigurationProfile]を選択します。
f:id:bluebirdofoz:20191212003801j:plain

これで HoloLens1 用のシーンが構成されました。
ゲーム画面を確認すると、シーンの背景が黒のベースカラーになった事が分かります。
これにより、HoloLens で背景が透過するようになります。
f:id:bluebirdofoz:20191212003809j:plain

プロファイルの詳細については以下を参照ください。
microsoft.github.io

サンプルシーンの作成

このままビルドして HoloLens にインストールすることも可能ですが、動作確認用にサンプルシーンを作ってみます。
Hierarchy 上で右クリックして で Cube オブジェクトを作成します。
f:id:bluebirdofoz:20191212003827j:plain

作成した Cube オブジェクトの[Transform]コンポーネントの値を以下の通り調整しました。

Position X:0, Y:0, Z:1
Rotation X:0, Y:0, Z:0
Scale X:0.2, Y:0.2, Z:0.2

これでアプリを実行すると、目の前に 20cm 四方の Cube オブジェクトが表示されます。
f:id:bluebirdofoz:20191212003837j:plain

[再生]ボタンをクリックすることで、[Game]画面上でアプリの動作を確認できます。
f:id:bluebirdofoz:20191212003848j:plain

プロジェクトのビルド

プロジェクトのビルドを行います。
メニューから File -> Build Settings.. を選択します。
f:id:bluebirdofoz:20191212003858j:plain

Build Settings ダイアログが開くので、[Build]を実行します。
ビルドでは出力先のディレクトリを指定する必要があります。
今回は App という名前のディレクトリを作成し、これを指定しました。
f:id:bluebirdofoz:20191212003907j:plain

ビルドが完了すると、指定ディレクトリに Visual Studio のソリューションファイルが出力されます。
f:id:bluebirdofoz:20191212003916j:plain

次回は HoloLens1 へのインストール手順に続きます。
bluebirdofoz.hatenablog.com

参考ページ

microsoft.github.io

Blender2.8で複数オブジェクトのUV展開を同時に行う

本日は Blender2.8 の技術調査枠です。
Blender2.8 で複数オブジェクトのUV展開を同時に行う手順を記事にします。
f:id:bluebirdofoz:20191211085119j:plain

Blender2.8の新機能

Blender2.79では複数オブジェクトを同時に編集することができず、UV展開を同時に行うことができませんでした。
しかし、Blender2.8 では複数オブジェクトの同時編集が可能になったため、UV展開も同時に行えるようになっています。
f:id:bluebirdofoz:20191211085150j:plain

同時UV展開の実施手順

同時にUV展開を行いたいオブジェクトをアウトライナーウィンドウから Shift+左クリック で複数選択します。
f:id:bluebirdofoz:20191211085159j:plain

この状態でモードを[編集モード]に切り替えます。
f:id:bluebirdofoz:20191211085209j:plain

これで選択中の複数オブジェクト全てが編集状態になります。
f:id:bluebirdofoz:20191211085222j:plain

[UV Editing]タブに切り替えて、UV展開を行う面を選択します。
今回は全ての面を対象にするので、ヘッダーから 選択 -> すべて を実行します。
f:id:bluebirdofoz:20191211085230j:plain

全ての面が選択状態になったら、ヘッダーから 展開 -> スマートUV投影 を実行します。
f:id:bluebirdofoz:20191211085238j:plain

詳細設定のダイアログが表示されるので、UV展開の設定を入力して[OK]ボタンをクリックします。
f:id:bluebirdofoz:20191211085248j:plain

これで複数のオブジェクトから同時に、一枚のUVマップを展開する事ができました。
f:id:bluebirdofoz:20191211085256j:plain

Blender2.79以前の手順について

Blender2.79以前の手順は以下の記事を参照ください。
bluebirdofoz.hatenablog.com

Blender2.8で面の裏表を修正する

本日は Blender2.8 の技術調査枠です。
Blender2.8 で面の裏表を確認して法線の向きを修正する手順を記事にします。
f:id:bluebirdofoz:20191210090431j:plain

面の裏表の確認

Blender2.8 で面の裏表を確認する方法は3つあります。

色で面の裏表を確認する

[オーバーレイ]のプルダウンを開き、[面の向き]にチェックを入れます。
面の表側は青色、裏側は赤色で表示されます。この機能を使うと、色で面の裏表が判断できます。
f:id:bluebirdofoz:20191210090441j:plain

裏面を非表示にする

[シェーディング]のプルダウンを開き、[裏面の非表示]にチェックを入れます。
裏返った面は描画されなくなるので、面の欠けで裏表の判断ができます。
f:id:bluebirdofoz:20191210090450j:plain

法線の向きを表示する

[編集モード]では法線の向きを表示することもできます。
モードを[編集モード]に切り替えます。
f:id:bluebirdofoz:20191210090500j:plain

この状態で[オーバーレイ]のプルダウンを開きます。
[Normal]の項目が追加されているので、[面]アイコンをチェックします。
すると面の法線の方向が青線で表示されます。
f:id:bluebirdofoz:20191210090511j:plain

青線の方向が法線の方向(表面)になります。
裏返っている面は青線が見えません。
サイズの設定値を変更すると、線の大きさを変更できます。
f:id:bluebirdofoz:20191210090520j:plain

法線の向きを修正する

面の裏表を修正する場合は、法線の方向を編集します。
Blender2.8 で法線の方向を修正する方法は2つあります。

どちらの手順も[編集モード]で作業を行う必要があります。
モードを[編集モード]に切り替えておきます。
f:id:bluebirdofoz:20191210090531j:plain

個々の面を反転する

指定の面の裏表を反転して、修正する手順についてです。
面を選択するため、ヘッダーの[面選択]アイコンをチェックします。
f:id:bluebirdofoz:20191210090542j:plain

これで面が選択できるようになるので、左クリックで反転したい面を選択します。
f:id:bluebirdofoz:20191210090551j:plain

Shift+左クリックで複数の面を選択することもできます。
f:id:bluebirdofoz:20191210090603j:plain

この状態でメニューから メッシュ -> ノーマル -> 反転 を実行します。
f:id:bluebirdofoz:20191210090613j:plain

これで指定の面の裏表が反転できました。
f:id:bluebirdofoz:20191210090625j:plain

面の方向を自動で修正する

完全な球体など、面が閉じたモデルは自動で面の裏表を修正することもできます。
メニューから 選択 -> すべて を実行して、全ての面を選択します。
f:id:bluebirdofoz:20191210090634j:plain

この状態でメニューから メッシュ -> ノーマル -> 面の向きを外側に揃える を実行します。
f:id:bluebirdofoz:20191210090645j:plain

これで全て面の裏表が自動で修正されます。
f:id:bluebirdofoz:20191210090653j:plain

Blender2.79以前の手順について

Blender2.79以前の手順は以下の記事を参照ください。
bluebirdofoz.hatenablog.com

Blender2.8でUIパネルの処理にエラーメッセージの表示を追加する

本日は Blender2.8 の python 利用の技術調査枠です。
Blender2.8でUIパネルの処理にエラーメッセージの表示を追加する方法を記事にします。
f:id:bluebirdofoz:20191209090115j:plain

前回記事の続きです。
bluebirdofoz.hatenablog.com

メッセージ例

例えば、追加UIの[execute]ボタンをクリックしたとき、画面に以下のようなエラーメッセージを表示します。
f:id:bluebirdofoz:20191209090126j:plain

サンプルスクリプトの内容は以下の通りです。
・AddMessagePanelTest.py

このメッセージ表示にはレポート機能を利用しています。

レポートの表示方法

レポートを表示するには以下の bpy.types.Operator.report の API を利用します。
docs.blender.org

ボタン実行時にレポートを表示するには以下のように、self.report に表示メッセージを設定します。

def execute(self, context):
    # メッセージ表示処理
    self.report({'ERROR'}, "error message !!")
    return{'FINISHED'}

レポートの種別には 'ERROR' の他に以下の 9 種類があります。
・DEBUG
・INFO
・OPERATOR
・PROPERTY
・WARNING
・ERROR
・ERROR_INVALID_INPUT
・ERROR_INVALID_CONTEXT
・ERROR_OUT_OF_MEMORY

表示したいメッセージのレベルや内容に合わせて種別を選択します。

種別ごとの表示例

・INFO(情報)
f:id:bluebirdofoz:20191209090207j:plain

・WARNING(警告)
f:id:bluebirdofoz:20191209090217j:plain

・ERROR_INVALID_INPUT(異常な入力エラー)
f:id:bluebirdofoz:20191209090225j:plain

・ERROR_INVALID_CONTEXT(異常なコンテクストエラー)
f:id:bluebirdofoz:20191209090234j:plain

・ERROR_OUT_OF_MEMORY(メモリ不足エラー)
f:id:bluebirdofoz:20191209090243j:plain