ロボットを組み立ててみた
Cyberpunk 2077でLogicoolマウスの中ボタンが反応しない
Cyberpunk 2077でロジクールのM720マウスの中ボタンが反応しなかったので調べたら、対策が紹介されていました。
1. マウスの設定ファイルを開く
C:\Users\UserName\AppData\Roaming\Logishrd\LogiOptions\devices\6b023
VSCodeとかで良さそう。
2. divert="0"というエレメントを追加する
<controlid rawxy="1" actiongroup7="win8nav2" actiongroup8="win8nav2" rawwheel="0" group="2" groupmask="3" id="0x0052" reprogrammable="true" type="mouse" taskidlist="middleButtonTaskList" gestureidlist="othersGestureidList" actiongrouplist="win8NavList" actiongroup="virtualdesktop">
<task divert="0" id="0x003a" class="mouseclick">
middleButtonTaskListで検索して、直下にあるtaskタグに追加します。
3. Logicoolサービスを再起動
タスクマネージャを開き、上の3つのサービスを終了した後に、Logicool Optionsオプションズを再起動すれば設定が反映されます。よくわからなければPCごと再起動でも良さそう。
私の場合は、この対策を入れてCyberpunk 2077を起動したら、無事に中ボタンを使えるようになりました。この対策をしないとチュートリアルをクリアできないので、公式で対策してほしいですね…
シェーダーグラグでクロマキー合成
Unityのシェーダーで背景を抜く方法は各所で紹介されていますが、シェーダーグラフで実装する方法を知らなかったので自分で作ってみました。
以下のような流れで作成します。
- ベースのテクスチャのRGBAをCombineノードとColor Maskノードに分岐
- CombineノードでRGBを合成
- Color MaskノードでMask Colorで指定した色でマスクをかける
- Color MaskノードをInvert Colorsノードに接続してRedのみを反転
- CombineノードをUnlit MasterノードのColor入力へ接続
- Invert ColorsノードをUnlit MasterノードのAlphaに接続
Color MaskノードのRange、Fuzinessパラメータから、色を抜く領域を調整することができます。Color Maskノードの出力は1チャンネルのみなので、Invert Colorsノードでは、Redチャンネルのみ反転させています。
テクスチャをRenderTextureにすれば、動画の背景を抜くこともできます。
RigidBodyの自由落下を再現してみる
Unityの物理エンジンを使わずに、自前で簡単な物理演算を実装しようと思い、 まずはRigidBodyの自由落下を再現してみました。
using UnityEngine; public class MyRigidBody : MonoBehaviour { // 重力加速度[m/s/s] [SerializeField] private float _graviry = 9.80665f; // 速度[m/s] private Vector3 _velocity; private void FixedUpdate() { // [m/s] = [m/s/s] * [s] _velocity.y += -_graviry * Time.fixedDeltaTime; var p = transform.position; // [m] = [m/s] * [s] p += _velocity * Time.fixedDeltaTime; transform.position = p; } }
物理演算を行う時は、Update関数よりも、更新間隔が安定しているFixedUpdate関数で行うのが望ましいです。 加速度と速度の両方にfixedDeltaTimeを掛けるのが重要なポイントです。単位を考えながら計算するとわかりやすいです。
時間が経つと徐々にRightBodyと差が出てきますが、概ね同じ挙動になりました。 この誤差の原因を調べると深みにはまりそうなので、またそのうち…
VCI/VRMよくばりパック
UniVRMとUniVCIを一緒に入れるとGUIDが重複してエラーになるので、エラーを修正したパッケージを作成しました。本家の方で対応されたら無用の長物になる予定です。
UniVCI0.29、UniVRM0.58とTMPの日本語アセットが入っています。
https://github.com/fumobox/VCI/releases
GUIDかぶり問題はこちらが参考になりました。