Creative Technology Ltd Audioドライバ更新でVLC起動不可&Resolve不具合、ロールバックで解決
Creative Technology Ltdのドライバ更新で発生した不具合と解決法
Windows Updateを通じてCreative Technology Ltdのドライバを更新したところ、以下のような問題が発生しました。
この問題は非常に手間がかかるものでしたが、次の方法で解決することができました。
解決方法
参考情報
同様の問題に関する情報が以下のフォーラムで紹介されています:
After downloading Creative Technology Ltd, my sound stopped working, VLC won’t open
不具合に悩まされている方は、上記リンクも参考にしてみてください。
問題が解決したら、快適な作業環境が戻りました。
nDisplayを用いて、TVモニタでインカメラ VFXを行う
TVモニタで、インカメラ VFXを行いたかったので、UE5のnDisplayを使ってみました。 nDisplayが、実世界に配置されたTVモニタのサイズとカメラとの位置を定義するツールで、 インカメラ VFXのInnerFrustumの計算を行ってくれること。 Switchboardが、nDisplayで設定した仮想モニタを描画管理するツール(複数モニタへの分割表示も可能) の2点のイメージを持って進めるとスムーズです。
nDisplayと、Switchboardと、Live Linkのプラグインをインストールする

コンテンツブラウザで、nDisplay configを新規作成する

新規作成したnDisplay configを開いて、nDisplayscreenのモニタサイズを指定する

ICVFXcameraのActorを新規追加する

Clusterを新規追加して、解像度やIPアドレスを指定する

Clusterのprojection policy設定で、meshとnDisplayscreenを設定するとスクリーンに背景が描画される

ICVFXcameraの位置と、nDisplayscreenを調整し、InnerFrustumが描画できることを確認する

レベル画面に戻って、nDisplay configをレベルにドラッグアンドドロップする

ドラッグアンドドロップしたnDisplayのActorに、ICVFXCameraのActorが紐づけてあるので、そこにレベル上のメインカメラとするCinem Camera Actorを紐づける

紐づけたCinem Camera Actorの位置を調整すると、ドラッグアンドドロップしたnDisplayのActor画面上で、InnerFrustumが連動するようになる

ここまでレベルの準備は出来たので、スクリーン描画設定をSwitchboardで行っていく。まずSwitchboardを立ち上げる

ディスクトップのショートカットからも、SwitchboardとSwitchboard Lisnerを立ち上げることが可能

Switchboardで、先ほど作成したレベルのプロジェクトと、起動したいレベル名を紐づける

Switchboardで、nDisplayを紐づける(このnDisplayからフルスクリーン描画を起動できるようになる)

Switchboardで、nDisplayと接続し、フルスクリーン描画を起動する

レベルに配置したnDisplayの画面が、フルスクリーンで描画される

参考文献
Unreal Engine 4.27 In-Camera VFX Tutorials | 3: nDisplay Config - YouTube
AccuRIGを使ってアニメーションをつけてみた
AccuRIGの自動リギングが良さそうだったので、Blenderと組み合わせてアニメーションつけてみました。その手順です。
人型のFBXをAccuRIGにインポートすると、自動でBodyRigを設定してくれます。(キャラクターなど厳密には人型でない場合は、自動でBodyRigを設定してもらった後、不要なRigをMaskします)

HandRigも自動で設定してくれます。気になるところがあれば微調整します。

リグが組めた状態になるので、「Upload to Actor core」ボタンをおして、AccuRIGが提供しているクラウドサービスにUploadします。(デフォルトは非公開設定)合わせて、Exportボタンも押して、リグありモデルをBlender用としてFBX保存しておきます。

AccuRIGが提供しているクラウドサービスで無料のアニメーションをカートに入れて購入、先ほどUploadしたモデルに適応します。

Download(Motion)ボタンを押すと、使うプラットフォーム(今回はBlender)等を指定してFBXでアニメーションをダウンロードできます。

Blenderに、リグありモデルをインポートします。(先のExportボタンでダウンロードしたもの)

Blenderに、アニメーションFBXをインポートします。(先のDownload(Motion)ボタンでクラウドサービスからダウンロードしたもの)

blender-animation-retargeting(https://github.com/Mwni/blender-animation-retargeting) を利用してアニメーションをリターゲットします。

blender-animation-retargetingでBake in Animationボタンをおせば、アニメーションをターゲットに転写できます。

AccuRIGだけでアニメーションも管理できればよかったのですが、アニメーションはクラウドサービスを利用しないとだめそうでした。またAccuRIGのBlenderプラグインでアニメーションの転写も試したのですが上手くいかなかったので、 blender-animation-retargeting(https://github.com/Mwni/blender-animation-retargeting) を利用してアニメーションをリターゲットしました。便利そうで便利でもないですがせっかく使ったので手順を残しました。
参考文献
IK Retargeterの使い方を理解すれば、UE5のmetahumanにアニメーションを転写するのは簡単
IK Retargeterの使い方を理解すれば、UE5のmetahumanにアニメーションを転写するのは簡単でした。書きます。
[Animation (アニメーション)] > [IK Rig (IK リグ)] > [IK Retargeter (IK リターゲッタ)] を選択

アニメーションをリターゲティングする元の IK リグを選択(今回はIK_metahuman)

(今回は)SK_manekin用に作られたアニメーションをmetahumanに転写するので、「Source IKRig Asset」と「Source Preview Mesh」をSK_manekinに対応したものに変更する

続いて、「Target IKRig Asset」と「Target Preview Mesh」をmetahumanに対応したものに変更する(m_tal_unw_body_previewで良い。男性ならば。女性は似たような名前で別のMeshがある)

2つのMeshが見やすいように、Targetの位置をずらす

ここが重要!結局のところアニメーション転写で失敗するのは、SourceからTargetに写す時に、対応するリグのありなしに依存する。metahumanは指と連動した手首のところに複数のリグ(HOGEmetacarpal)があり、SK_manekinやその他からアニメーションを転写する場合、ここに間違ったRigが自動で対応づけされてしまい指のアニメーションが滅茶苦茶になる。なので、この手首のところに複数のリグ(HOGEmetacarpal)の対応づけを「None」にして対応させなければ良い。結局は、異なるリグ同士の対応づけを調整すれば良いだけ。という基本を理解しておけばその他問題にも対応しやすい。

右手側にも、手首のところに複数のリグ(HOGEmetacarpal)があるので、None」にして対応づけを外す

Asset Browserのところに、SK_manekinに対応づけられたすべてのアニメーション一覧があるので、好きなものを選ぶ

Export Selected Animetionで、metahumanにアニメーションを転写したアニメーションを書き出すことができる

問題なく、metahumanでアニメーションすることができた

IK Retargeterについて説明しました。結局のところ、異なるリグ同士の対応づけを調整すれば良いだけ。という基本を理解しておけばその他問題にも対応しやすいので、ぜひそれを念頭に置いてトライしてみてください。
参考文献
UE5でComposureを使って、BlenderのCycleみたいにShadow Catcher(影をレンダリングする)を作り、背景画像プレートに影を落とす
BlenderのCycleでレンダリングすれば、Shadow Catcher(影をレンダリングする)は簡単なのですが、UE5で同じようなことをやる方法が、Composureを使うと良かった(それ以外にまともな方法がなかった)ので書きます。
(Blenderでも同じですが)影を落とすためには、床が必要なので作ります

ComposureだとAplhaチャネルを作るために、壁も必要なのでそれも作ります。Planeを選択して「Eキー」を押して、「Altキー」を押しながら回転すると複製が簡単です

CineCameraActorを配置しておきます(後工程で、Composureと連動させるためです)

Windows -> Virtual Production -> Composure Compositingと選択して、Composureを設定するWindowを開きます

Windows -> Layersと選択して、Layerを設定するWindowを開きます (ImageやCGのレイヤをこれで作れます)

空のPlaneに任意の画像テクスチャを貼り付けて、CineCameraActorと親子関係にすることで、カメラの向きと連動したPlateを作ります

Create New Compで、Composureにレイヤーを作っていきます

ComposureにMedia Plateのレイヤーをつくり、「media_plate1」として画像テクスチャを貼り付けます。これが合成画像の背景となります。

Composureに3つ、CG Layerを作ります。前景CGを定義する「FG」、影を描画する床と壁を定義する「Floor」、「FG」と「Floor]の差分を取って影を定義する「Shadow」とし、この群が合成画像の前景となります。

Layersに3つ、Layerを作ります。(Composureに設定するためのレイヤーです)前景CGを定義する「FG」、影を描画する床と壁を定義する「Floor」、「FG」と「Floor]の差分を取って影を定義する「Shadow」とし、この群が合成画像の前景となります。(LayerはそのActorを選択した状態で、作れます。「Floor」と「Shadow」は同じActor群で良いです)

Composureに戻り、上記で作成した「FG」「Floor」「Shadow」のレイヤーをInputに紐づけます

「Shadow」は、Inputに「FG」「Floor」の2つを紐づける必要があります。これは影を差分として取得するためです

上記までのレイヤー作成とComposureのinputへの紐づけて、合成画像を作るための素材は揃いましたが、合成画像を完成させるためには、ComposureのTransform Compositing Passesに、各素材(レイヤーをComposureのinputへの紐づけるとTexture2Dとして扱える)をどう合成するかをBluePrintで記述したMatelialを作成し、紐づける必要があります。そのためにまずM_Compositeという名で空のMaterialを作ります

M_Compositeと名付けたマテリアルを開き、Material DomainをPost Processにします。これはこのマテリアルが合成用であるためです(Material Domainについては参考文献をお読みください)

M_Compositeと名付けたマテリアルで、前景に「FG」、後景に「media_plate1」と、「FG」&「Shadow」の差分から得た影成分を合成するBulePrintを記述します。(詳細は参考文献をお読みください)

M_Compositeと名付けたマテリアルを、ComposureのTransform Compositing Passesに紐づけます

以上の工程を得て、前景「FG」と後景に「media_plate1」と、「FG」&「Shadow」の差分から得た影成分を合成した画像が生成できました

ComposureのOutputを設定することで、今回生成した合成画像をどこに出力するかを選択できます。今回はViewPortに出力する設定を行いました

ComposureとCineCameraActorを紐づけることで、カメラと連動して動かせます

無事、ViewPortにComposureで合成した画像が出力できました!

UE5でComposureを使って、BlenderのCycleみたいにShadow Catcher(影をレンダリングする)を作り、背景画像プレートに影を落とせる様にするためには、UE5におけるMaterial、BluePrint、Texture、Project settingの知識といった総合的な知見が必要で、UE5の文法がなにもわからないまま、Composureを扱うのは難しいと思います。まずは、CGのみでMaterial、BluePrint、Texture、Project settingの知識をそれぞれ蓄えてからトライすると良いと思います。
参考文献
UE5でNDIを受信して、ImagePlateに貼る
UE5のImagePlateは、CineCameraActorの画角と連動するので便利です。このImagePlateにNDI映像を貼る手順について書きます。
ImagePlateのプラグインをONにする(UE5を再起動する)

NDIのプラグインをONにする(UE5を再起動する)※NDIのインストール方法は参考文献を参照ください。

ImagePlateをレベルに配置する

ImagePlateをCineCameraActorに紐づける。ImagePlateの位置と回転をカメラと正対するように調整する

NDI Media Reciverを作成する(受信するNDIデータと参照するDI Media Texture 2Dをこれで指定できる。名前は任意でOK)

NDI Media Texture 2D を作成する(これにNDI映像が画像テクスチャとして貼られる)

NDI Media ReciverにNDI Media Texture 2D を指定する

ImagePlateに貼り付けるための空のMaterialを作る(名前は任意でOK)

上記で作った空のMaterialに先に作ったNDI Media Texture 2Dを紐づける(ImagePlateは通常のMaterialしか貼れないので、NDI Media Texture 2Dを貼りなおす感じ)

NDIはRGBAにも対応しているので、Material設定で「Output Alpha」をONにしておく。そうするとOpacity(AplhaCHの繋ぎ先)が出来る

Material設定は、Material Domain -> Post process, Blend mode -> Translucent, Shading model -> unit, Two Sided=onにしておく。これでRGBAを受けられるので、RGBをEmmisive colorに、AlphaをOpacityに繋ぐ

ImagePlateに上記で作ったMaterialを紐づける(参考画像では、NDI_Materialという名前にしている)

(手続き的な事実として) NDI Receive Actorをレベル上に配置しておかないとNDIが上手く受信できないので、配置する

NDI Receive ActorをCineCameraActorの画角外の遠いところに置いておく(NDIを上手く受信するために手続き的な事実として置いているだけなので)

Game Playすると、NDI受信した映像が正しくImagePlateに反映される

ImagePlateの位置Xを前後させれば、CineCameraActorの位置からとある距離にImagePlateを置くことが出来、それが2D映像の位置となる

ビューポートの解像度を1080以上に設定することも忘れずにやっておく

以上で、UE5でNDIを受信して、ImagePlateに貼ることが出来る。
[追記] NDI UnrealEngine SDKをインストールして、NDIIOのプラグインをProjectのPluginに置いてビルドする
- 最新のNDI UnrealEngine SDKインストーラーをダウンロードするhttps://ndi.video/for-developers/ndi-unreal-engine-sdk/



参考文献
THETA Z1で撮影したHDRI(exr形式)は, BlenderでHDRI(hdr形式)に変換して,UE5で色々設定すればいい感じに使える
THETA Z1で撮影したHDRI(exr形式)は、そのままではUE5にインポート出来ません。HDRI(hdr形式)に変換する必要があるのですが、BlenderでHDRI(hdr形式)に変換すると簡単だったので、手順を紹介します。
BlenderでHDRIを使う時と同じ手順で、 THETA Z1で撮影したHDRI(exr形式)を「環境テクスチャ」として開く

レンダープロパティ>レンダーエンジン>Cycles に設定

カメラのオブジェクトデータプロパティ>タイプ>パノラマ状に設定、カメラのオブジェクトデータプロパティ>パノラマタイプ>正距円筒図に設定。

出力プロパティ>フォーマット>解像度X,Y を設定( THETA Z1のHDRI撮影モードで撮影したexrデータは,4096x2048とすると取り回しがラク)

HDRIの正面向きを任意に合わせるため、カメラの向きを調整(位置 - X:0,Y:0,Z:0, 回転 - X:90,Y:0,Z:180)

UE5で使う時は、保存したHDRI(hdr形式)をUE5にインポートした後、テクスチャエディタで、[Maximum Texture Size] を、インポートした HDR 画像の解像度の大きい値 (この例では 4096) に一致させ、 [Mip Gen Settings] を [NoMipmaps] に設定する

HDRI backdropのプラグインをONにして、UE5を再起動したのち、HDRI backdropにマテリアル選択で先ほどの、HDRI(hdr形式)を設定する

HDRI backdropにマテリアルを設定するだけでは、ライティングがActorに反映されないのでHDRI backdropのサイズを「1500」以上にする

HDRIを使う場合、Lumenは正しく機能しないのでプロジェクト設定でGIとReflectionをNoneにする(PostProcessVolumeでLumenのGIとReflectionをNoneにしても良い)

レベルに配置したHDRI backdropのDetailsの中に、「SkyLight」があるのでそれを選択して、Light->sourse Typeを「SLS Specified Cubemap」に変更する。

上記のHDRI backdropのDetailsの中に、「SkyLight」にもcubemapを設定できるので、こちらにも先ほどの、HDRI(hdr形式)を設定する。これでライティングが正確にActorに反映される!「SkyLight」の強度を使用してシーンを照らすことができる!

パス トレースを実行しているときに白い点が目立つ場合がある。それを最小限に抑えるには、PostProcessVolumeが必要なのでレベルに配置して、PostProcessVolumeの影響がレベル全体に効くようにInfinite Extent (unbound)にチェックをいれる

パス トレースを実行しているときに白い点が目立つ場合がある。それを最小限に抑えるには、PostProcessVolumeで「max path exposure」を3.0程度に減らす

以上で、THETA Z1で撮影したHDRI(exr形式)は, BlenderでHDRI(hdr形式)に変換して,UE5で色々設定すればいい感じに使えます。


