トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

BlenderとUnityのMCPをClaudeとClineから使ってみた

MCPなる物を使ってみる

Blender

Claude環境

公式見る

github.com

uv入れる。

brew install uv

を打っても

zsh: command not found: brew

って出る

homebrew入れる

www.kikagaku.co.jp

どこかのサイトにはpython入れるって書いてたけど私入れてない気がする。入れなくてもいけそう

zenn.dev

Claude Desktopダウンロード

claude.ai

設定の開発者で構成を編集

これを書く

{"mcpServers": {
  "blender": {
    "command": "uvx",
    "args": ["blender-mcp"]
  }
}
}

www.youtube.com


Blender側にこのアドオン追加
github.com

スタートサーバーする

ClaudeでなんかUIでた!!

作る

指示してみた。Clineみたいに操作していいか聞いてくる

暖炉。え、なんか思ったよりクオリティ低い・・・マテリアルもないよね・・・?

お城

途中でpolyheavenで素材取ろうとしてたけど失敗してた。私何かしないといけないのか?

あ、Blender側にチェックボックスあった

設定できた。


画像を与えてやってもらったけど、途中で失敗する。

制限とかなのかと思ったが、2回やっても途中で止まる

Hyper3dのfree api keyボタンも押すだけでゲットできたから試したけど、

1回も使えなかった

Cline

Claudeは品質低いけど、Geminiはいい感じ!だって。Clineでもやっぱりできるんだ。

会社ではCline使ってるからClineからやりたい。いまいちそのやり方もわからない。

qiita.com

zenn.dev

まずClineを自分の環境で設定する。無料でAPI使う方法のツイートあったからやってみた

Gemini2.5proにしてみた

その後サーバーマークを押してmcp設定を編集を押して、Claudeに書いたのと同じやつを書いた

そしたら使えた!

でもすごい頻度でエラーになる。再試行したらできる時もある。

別のAPIモデルにしたら動くようになった

トマシープちゃん

相変わらずマテリアルに色をつけるのは上手くやってくれない。

Unity

Unityもクオリティ低いってツイート見たけど一応やるか・・・

zenn.dev

github.com

Unityにパッケージマネージャーでアセット追加

Windowのメニューから

ここからAutoで例のJSONを自動追加できるらしい

Clineの方は上手く行ってなかったっぽいので、Manualを押して表示されたものを、Blenderの時と同じ場所に追加

 

でもClineの方はなんか上手くいかなかった

Claudeの方はAutoで自動で追加されてた。Claudeを再起動して操作

シーン作成とスクリプト作成はできたけど、それ以外は色々上手くいかなかった

同じエラーの人いる

github.com

最後に

Clineの方が自動で承認にチェック入れるだけでいいからやりやすいかも

ここにmcp集みたいなのがある。Figmaとかもあった。

cline.bot

でももはやワークフロー的にFigmaでデザインする必要があるのかはよくわからない。結局どこかに実装するなら、そこに直接AIが実装した方がいい気もするし。ポスターとか作ればいいのかな

 

 

PolySpatialでVRMをカメラ目線にするなど【LookAt、まばたき】

こっち見て〜

LookAt

VRMにこれを付ける。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class VRM10LookAt : MonoBehaviour
{
public Transform target; // インスペクターでセットするターゲットオブジェクト
public Animator animator; // Animatorコンポーネントへの参照
private bool isEnabled = true; // Flag to enable or disable look-at behavior

void OnAnimatorIK(int layerIndex)
{
if (isEnabled && target != null) // ターゲットが設定されているかチェック
{
animator.SetLookAtPosition(target.position); // ターゲットの位置を設定
animator.SetLookAtWeight(1.0f, 0.8f, 1.0f, 0.0f, 0f);// ターゲットへの向きの重みを設定
}
}

public void SetEnabled(bool enabled)
{
isEnabled = enabled;
}
}

VRMに設定しているAnimatorのIKPassをオンにする

VRM10という名前にしているがHumanoidモデルだったらなんでも動いた気がする

PolySpatialのカメラ

TargetにつけるカメラをVolumeCameraにしても、実機だと原点の方向を見てしまい、こっちを見てくれない。

結論から言うと、XROriginがない場合はそれを追加して、その下のMainCameraをTargetにしたらいい

この記事スレッドが詳しい。Unboundedモードである必要もある。

https://discussions.unity.com/t/lookat-in-polyspatial/315013/6

私は今回のシーンをPolySpatialのManipulationを元に改変していたのでXROrigineがなかった。

ImageTrackingとかのサンプルシーンにはXROrigineがあるのでそれをコピーしてきて、不要なものを切り取った。

右クリックからも作れるからこれでもいいのかも

 

その他

「PolySpatial LookAt」でググったら、「VisionOS は通常はプライバシー保護の観点からカメラの位置をDeveloper には通知しません」と言う記事が出てきてできないのかと思い焦ったが、これはboundedモードの時だけかな?

qiita.com

 

あとSceneCameraはUnityEditor上だけでしか使わないのかな〜?これをTargetにしても確かLookAtしなかったはず

 

そういえばXROriginを追加したら、UnityEditorのGame画面でクリック操作ができなくなった。XROriginかScenecameraを非アクティブにしたら操作できる。

ScenecameraとXROrigineの下のカメラ二つあるのがいけないのかも。

おまけ 環境光を受けるVRM用シェーダー

こちらのシェーダーを使った!

qiita.com

openUPMというの初めて使った気がする。

zenn.dev

シーンにあるVRMへの適用が一発でできる方法があるのかよくわからなかったので手動でシェーダーを変えてテクスチャを付けた。

これで確かに現実の環境光の影響は受けるようになったが、シーンにあるポイントライトなどの影響は受けない・・・

ちょっと全体的に暗いので明るくしたいがどうしたらいいかわからない。

諦めてUnlitのほうがいいだろうか・・・

Unlit/TextureはいけるけどUnlit/Transparentはダメだった。

前やった時はURP/Unlitか

bibinbaleo.hatenablog.com



おまけ VRM10でのまばたき

ググった時VRM10でのまばたきスクリプトが見当たらなかったので貼っておく

using UnityEngine;
using UniVRM10; // Add this line

public class VRM10AutoBlink : MonoBehaviour
{
[SerializeField] private Vrm10Instance vrm;
private Vrm10RuntimeExpression vrm10RuntimeExpression;
private float blinkTime = 0f;
private float blinkInterval = 3f; // Interval in seconds
private float blinkIntervalMin = 2f; // Minimum interval in seconds
private float blinkIntervalMax = 5f; // Maximum interval in seconds

// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
vrm10RuntimeExpression = vrm.Runtime.Expression;
blinkInterval = Random.Range(blinkIntervalMin, blinkIntervalMax); // Set initial random interval
}

// Update is called once per frame
void Update()
{
blinkTime += Time.deltaTime;
if (blinkTime >= blinkInterval)
{
Blink();
blinkTime = 0f;
blinkInterval = Random.Range(blinkIntervalMin, blinkIntervalMax); // Set next random interval
}
}

private void Blink()
{
vrm10RuntimeExpression.SetWeight(ExpressionKey.Blink, 1f);
Invoke("ResetBlink", 0.1f); // Reset blink after 0.1 seconds
}

private void ResetBlink()
{
vrm10RuntimeExpression.SetWeight(ExpressionKey.Blink, 0f);
}
}

おまけ Input Field

UnityのInputFieldも概ね動いた。

視線を合わせてクリックするとOSのキーボードがちゃんと出てくる

ひな人形MR作った🎎

昔構想していたMR作ったよ

bibinbaleo.hatenablog.com

Questで動く。apkはここ

github.com

内容

最初ランダムな位置で人形が置かれる

並び変える

正解すると光って花びらが出る

Bボタンを押しても正解配置に一発でなる

 

ボタン操作
A:UI、効果音オンオフ切替
B:正しい場所に配置
X:ライトオンオフ
Y:台座持てるか持てないか切り替え←重要

台座をいい感じの位置に置いたら、Yを押して台座がつかみに反応しないようにしてください。
ハンドトラッキングモードでも配置などはできます。

アセット

こちら使った!

booth.pm

すごい高精細なモデル。買うか迷ったけど、ひな人形がついてないから今回は使わなかった。AVP対応とかするならこちら使いたい。反射とか絶対きれい

booth.pm

高精細なひな人形モデルは見つけられなかった。tripoで作ってみたが顔怖くなった

www.tripo3d.ai

桜っぽいパーティクル

assetstore.unity.com

効果音:ポケットサウンド – https://pocket-se.info/

pocket-se.info

All-in-one metaを使った

assetstore.unity.com

ひな人形について。こことGeminiとそれでもわからなかったとこは個別で調べた。

ajioka.net

作る

過去の自分の記事やkorinさんの記事を見ながら作っていった。なんだかんだ1日かかった・・・

今まで使ったことのない要素もいくつか使ったのでそこを中心にメモ

PalmMenu

これのサンプルシーンどこにあるんだろう;;見当たらない

と思ったが、palmで検索して出てきたpalm関連のオブジェクトをSearch In Projectしたら出してくれた

PalmMenuプレハブも用意されている

これで手のひらに表示はできたが、操作は結局できなかった。pokeXXみたいなのをHandの下に入れたりしたんだけどな~

まあいいや。

正解画像だけ表示した。小さくて全円見えないけど

オクルージョン(Depth API)

なんかいろいろ記事に書いてるけど、BuildingBlockのこれを追加して、

シェーダーを専用のにしたらできた。今回はマテリアル4つしかなかったからいいけど、いろいろアセットあるときに全部専用のに置き換えるのしんどすぎないか・・・?

影にもオクルージョンできてた。まあ初めて使ったので今までできなかったのを知らなかったが

 

developers.meta.com

qiita.com

空間メッシュ

ぼんぼりに光をともしたら現実世界にも光が反映できるようにしたい。

昔やったサンプルシーンがそんな感じ。

部屋のメッシュ構成するのEffectMeshかな?

zenn.dev

EffectMeshのビルディングブロックを追加して、サンプルシーンと同じマテリアルを設定したらうまくできた。

Editorでも見れる。ライトは結構明るくして、部屋も暗くしないとわかりずらいかも

ポイントライトつけてもアセットのぼんぼり自体が明るくなってる感じがしなかったのでマテリアルの色を変えようと思ったら、おひなさまたちと同じマテリアルだった;;

tooltip(できなかった)

このビルディングブロックでコントローラーに対してtooltip表示できるのかと思ったけど違った><

ボタンの入力に対してイベント追加できるだけだった;;

アイコン

アイコン設定しても、提供元不明apkだとここにしか表示されないか~ライブラリにサムネ付きで表示されたらテンション上がるのにな~

フォント

このフォント使いたくてFontAsset生成したのになんかうまくいかなかった

Kaisei Decol - Google Fonts

そんな時この記事が流れてきて、Notosansでフォントアセット配布しているという情報を得たのでそれを使った。そういえば前も聞いたかもしれない。とてもうれしいね

zenn.dev

その他

Unity6000便利

でもこのAI時代にUIを使っていろいろ配置設定するのキツイ~~

できなかったこと

台座ごと大きさ変えたかった。transformというサンプルに大きさ変えるサンプルがあった。このプレハブを自分のシーンにもっていったらこれ単体は動いた。

でも台座に同じような設定をしたつもりだが、動かなかった・・・

にゃーん

あとひな人形たちを重力聞かせて配置するようにしようと思ったけど、それもなんかうまくいかなかった。接触判定とも絡んできそうだし考えるのめんどくさくなった。

こちらの記事の図はとても分かりやすい。

qiita.com

 

来年

・人形側にも説明UIつける

・正解の場所の時ひな人形側のUIが光る

・フォント変える

・全体の大きさ変えれるようにする

・重力入れる

・AVP対応

最後に

500億年ぶりにプライベートワークした。えらい。

めっちゃひな人形について詳しくなった。この知識を持ってひな祭り行けばよかった。

 

 

 

PolySpatialでUnbounded状態でURLを叩く

UIを押したらURLを開くという動作をしたら、どうなるのかな〜と思ってやってみた。

作っているアプリはUnboundedなので他のアプリと共存できない。

 

結果としては

 Application.OpenURL(Url);を叩くと

自分のアプリが消えて、SafariでちゃんとWebページは開いた。

アプリに戻るにはもう一度、アプリ一覧からアプリアイコンを選ぶ必要がある。

そしたら直前の状態でアプリが再開された。

 

ちなみにProcess.Start(Url);というのでURLを叩くと、アプリが完全に消えて、safariは開くがWebページは開かない。しかもアプリを再開させると完全に最初からになる。

 

 

アプリに戻る動作がもう少し簡単にできたら使ってもいいかな・・・

Unityでシーンを再生したら、なぜかSEが順番に流れ続ける→VideoPlayerのAudio Output ModeをDirectからNoneに変えたら止まった

事象

ばらばらにAudioSourceに設定して、スクリプトなどから再生しているSEたちが、シーンを実行するとカシャ→バーン→キラキラ→チーンと一つずつ順番になっていく。

同時になるわけではない。

UnityEditorでも発生した。

Unity2022.3.32

解決?

VideoPlayerのAudio Output ModeをDirectからNoneに変えたら止まった。

今回はAudio使わないからこれでよかったけど、どういう事象なんだ

マジでびっくりした。

 

Unity×QuestでRenderTextureの写真をQuestローカルに保存する

RenderTextureの写真をQuestローカルに保存する

Copilotが作ってくれた。

 

    public RenderTexture renderTexture; // 保存するRenderTexture
    public Camera camera; // カメラオブジェクト

 

    void Update()
    {

        // デバッグ用にPキーを押したら撮影
        if (Input.GetKeyDown(KeyCode.P))
        {
            SaveRenderTextureToFile();
        }
    }

   public void SaveRenderTextureToFile()
    {
        // 現在の時間を使ってファイル名を作成
        string fileName = $"SavedImage_{System.DateTime.Now:yyyyMMdd_HHmmss}.png";

        // RenderTextureの内容をTexture2Dにコピー
        RenderTexture currentRT = RenderTexture.active;
        RenderTexture.active = renderTexture;
        Texture2D texture = new Texture2D(renderTexture.width, renderTexture.height, TextureFormat.RGB24, false);
        texture.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);
        texture.Apply();
        RenderTexture.active = currentRT;

        // Texture2DをPNG形式でエンコード
        byte[] bytes = texture.EncodeToPNG();
        Destroy(texture);

        // ファイルに保存
        string path = Path.Combine(Application.persistentDataPath, fileName);
        File.WriteAllBytes(path, bytes);
        Debug.Log($"Saved RenderTexture to {path}");
    }

 

Editorだと C:\Users\<ユーザー名>\AppData\LocalLow\<会社名>\<製品名>

に写真が保存される。

docs.unity3d.com

ビルドしてQuest本体で実行すると、Quest内部のファイルアプリやDeveloperHubのFileManagerから見ても見つからない!!って思っていたが、Windowsのエクスプローラーで表示したら見つけた

PC\Quest 3\内部共有ストレージ\Android\data\アプリ名\files



そもそもWindowsのエクスプローラーにQuestの内部ストレージが表示されなくてそちら方面から見るのをあきらめていたが、PCにつないだ後Quest内の通知を押してそこから許可したらいい

detail.chiebukuro.yahoo.co.jp


本当はVRChatみたいに、Quest内部でもアプリ名のフォルダの下に保存されると嬉しいがまあいったんこれでいいや。

teratail.com

 

関係ないけどQuest本体のスクショ機能で縦横比が変えれるようになってる!!正方形は使いづらかったので嬉しい!

Metaの公式UIコンポーネントみる【Horizo​​n OS UI Set】

おお~

ドキュメント

developers.meta.com

Figma

Figmaもある!

https://www.figma.com/community/file/1425877250001997196

ボタンとかもまあうれしいけどアイコンとか手とか背景の素材ある!!!!神!!!!

アイコンもAR.VRならではの物もある。

一番欲しかったパススルーモードのUIはなさそう;;なんでないんだ

フィードバックしたら入れてくれるだろうか。

Unity

v69のIntaractionSDK内に入っているらしい。

触れるサンプルシーン

サンプルシーンをここから追加

動かせた。

カスタムテーマおもしろい。

UI自体

サンプルシーン以外にもUISetシーンなどがPackageの中にある。Assetsの下に移動させたらシーンが開ける

こっちはカメラとかないので実行できるようなものではなさそう。

グラデーションはシェーダーを使っている。

Rの設定もできる。

(アップデートエラー)

All-in-oneをv65からv69にあげたら

Assembly with name 'Oculus.Interaction.OVR.Samples' already exists (Packages/com.meta.xr.sdk.interaction.ovr.samples/Runtime/Oculus.Interaction.Samples.asmdef)

Assembly with name 'Oculus.Interaction.OVR.Samples' already exists (Packages/com.meta.xr.sdk.interaction.ovr/Runtime/Sample/Scripts/Oculus.Interaction.OVR.Samples.asmdef)

のエラーが出た。

com.meta.xr.sdk.interaction.ovr.samples

というパッケージを入れていたが、それはv64のままでそこら辺の関係っぽい。

そのパッケージをリムーブしたらそのえエラーは治った。

別だったサンプルパッケージはInteractionのほうに内包されたからもう入れる必要はない。

assetstore.unity.com

ただ今度は、

NullReferenceException: Object reference not set to an instance of an object

UnityEngine.Rendering.Universal.UniversalAdditionalCameraData.get_cameraStack

が永遠に出る。実行してないのに出続ける。

これだ!

結局どうしたらいいかわからず、別のプロジェクトでやった;;

久しぶりのVisionOS開発【主にUnity】

Lab向けに作ってた時以来、8ヶ月ぶりにVisionPro向けの開発する〜

VisionPro

os2.0を使用。

ちなみにbetaしかなかったころは設定のソフトウェアダウンロードで、有料開発アカウントを入力したら、実機のVisionOS内で直接betaのVisionOS2.0をインストールできた。

VisionOSのメインのアカウントと違っていい。

17日に正式リリースされた後、betaから正式にする方法がわからなかったが、いつの間にか正式版に置き換わってたっぽい・・・?

corriente.jp

ちなみにOS2で一番変わったのはコントロールパネルの出し方。目線上じゃなくて指で出す。

あとゲストモードに30日記憶機能とか、平面画像の3D化とか

OS1.0をそんなに触ってないので細かい違いはわからない・・・

Xcode

まずXcodeと実機を繋ぐには同じWiFi同じiCloudが必要らしい

ペアリング

最初VisionPro側でコードが表示されなかったが、何回か状況変えてやったら表示された。

あとは普通にビルドできた。

 

サンプル

久しぶりに見たら色々サンプル追加されてた

developer.apple.com

前回触ったのはこの記事bibinbaleo.hatenablog.com

ロボットかわいかった。

 

--

テーブルキットも気になる

1planet.co.jp

ここからサンプルダウンロードできた。サイコロ投げたりコマを置いたりカードを並べたりできたけど、ルールはわからない・・・

developer.apple.com

--

手を使ってキューブを倒すもの。これも昔からあるがシミュレーターでは試せないので、Labで試した気がする

developer.apple.com

--

360度世界を表示するサンプル。画像じゃなくて3D空間っぽい。

developer.apple.com

Unity

Unity6を使う。少しでも新しいもの使ってみたいだけで特に理由はない。

テンプレート

前やった時はテンプレートプロジェクトから作るのがうまくいったようなのでそれをする。

bibinbaleo.hatenablog.com

 

ここからダウンロード

docs.unity3d.com

PolySpatial2.0が入ってる

VisionOSにSwitchPlatform

そのままだとビルドがうまくいかなかったが調べたらEnable Burst Complicationをオフにしたらいい。

https://discussions.unity.com/t/visionos-0-7-1-unity-2022-3-16f1-xcode-build-error/322262/3

 

壁などの平面をを認識して、タップしたらそこにこのオブジェクトが出た

Tutorialもあったがあまりよくわからなかった。Unityでこういうチュートリアル出せるようになったということが驚き。初めて見た。

Play to device

以前うまくいかなかったPlay to device

docs.unity3d.com

testflightをVisionProに入れて起動はできた。

UnityでVisionProで表示されているIP入れて設定した

だがStatusが繋がらない。UnityEditorでプレイしても何も起こらない

https://discussions.unity.com/t/play-to-device/309359

 

翌日試したらできた。でもまたすぐできなくなった。

不安定・・・

動きももっさりしてた。

サンプル

サンプルもある

docs.unity3d.com

テンプレートプロジェクトに入れていく。

ここから入れるはず

なのも変わらないから入ってないのかと思ったが、Assetsの下にあった。元から入ってたのかな・・・?

SwiftUIのサンプル気になる

docs.unity3d.com

何か作る

MetaXRSDKでできたような手でオブジェクト掴むというのをやりたい。床に落ちた時は床にとどまって欲しい。

手で掴む

物理の働いてるものを手で掴むのはサンプルの中のManipulationが該当

XRIバージョンとノーマルバージョンがあった。

今回はノーマルバージョンにしてみる。

 

用意したオブジェクトに同じようにコライダーとリジッドボディをつけてみたけどそれだけだと手で掴めない。

 

これをつける必要があった。

リスポーンはこれか

ちなみにビルドしなくてもUnityで実行したらマウスで掴めるので、設定がうまく言ってるかはEditorだけでわかる!

Vision OS  Hover Effectは目線で見た時の影響。今回はなくていいので外した。

 

あとマテリアルは現実の反射を入れたい。

Smoothnessをいっぱいにしたら普通に反映された。

部屋Mesh

部屋へのメッシュはMeshingというサンプルが対応している

このシーンにさっきのものたちを移植してきた

これで一応ものを掴んで落としたら床に落ちるというのはできた。

ただものを持ってる感があんまりない。手が認識されてるわけではなく、OSのUI操作と同じように目線で認識して指のピンチで掴んでいるだけ。

遠くからでも操作できるし、指が視界に入ってなくても操作できる。

 

落ちないもの

動かせるけど落ちないものは、RigidbodyのUseGravityをオフにするだけで良さそう。ただしそのままだと何か別のコライダーとかにぶつかるとフワーって移動する。

このスクリプトを改変するといい。

ものを掴んだ時だけisKinematicがオンになっているので、常にオンになるようにしたらいい。

つまむのではなく掴みたい(できてない)

指先でつまむ仕草ではなく、MetaXRSDKみたいにオブジェクト掴みたい。今のは掴んでる感がない・・・

あと手のひらの上に乗せたりしたい。

そういうサンプル見当たらなかった。

手の形にcubeが表示されるのはPortalとかのサンプルにあった。

これがあればいいのかな?

これやっても変わらなかった。

 

ちなみに全然関係ないけどポータルの仕組みはこんな感じ。AR>BasicOcclusionというシェーダーを使えばいいのか〜

 

色々アプリ触ってもあんまり持つって感じのないし無理なのかな・・・

zenn.dev

ボタン

適当な空中ボタンが欲しい

サンプルの戻るボタンを置いてみたが、普通のボタンイベントみたいな口になってない

めっちゃとりあえずだけど、サンプルシーン改造する時は、HubButtonというのを継承した上で、以下のように書いたものをくっ付ければ反応した

public override void Press()
{
base.Press();
ボタン押された時の処理>
}

LoadLevelButton.cs参照

ただせっかく作ったけど、親オブジェクトにコライダーがついている状態で、子にこのボタンを置いたら、親のコライダーをクリックした時にボタンが反応する・・・

ボタンの意味がない。

 

uGUIのボタン(うまくいかない)

サンプルシーンにあるものを持ってきてEventSystemも持ってきてそのままだと動いたけど、要素を少なくしていくと動かなくなる・・・コライダーっぽい緑の枠が見えるけどあれが何に紐づいてるのかわからない

note.com

Particle(微妙)

サンプルシーンにある炎はプレハブ化したものは動いた。

今パーティクルは3種類のモードがある

docs.unity3d.com

Particle System Mode

デフォルトはReplicare Properties

大きさが変わる。実際UnityEditorでは普通なのに、実機だとなんか変。大きくなってるだけとは思えない・・・

BaketoTextureをしたら大きさはいい感じになったけど、透過のパーティクルが透過される時とされない時がある。ビルドごとに変わるとかじゃなくて、きっかけはわからないが同じ実行の中で変わる。

あとサンプルの炎が表示されなくなる><

VisionOSのLTでも話があったが、モードによって動くパーティクルと動かないパーティクルがあるんだよね・・・そしてモードはプロジェクト単位でしか設定できない

AudioSourceの3D

AudioSourseのSpatial blendを3Dにしても、音の方向は合わない。距離の減衰はする。

完全にはサポートされてないと書いてあった。

ライティング

影を落とすには?

docs.unity3d.com

一番したのにしたら影落ちた。

でも部屋のメッシュのオクルージョンモードだとそのオクルージョンのシェーダーに対しては影落ちなかった。

仮想物体同士は落ちる。

staticのせいで動かなかった【Meta XR SDK】

Grab Interaction

MetaXRSDKのGrab Interactionでオブジェクトをつかんで動かそうとするとき、ほとんどの物はこのCubeどおりに設定したら動いたが、とあるアセットのオブジェクトだけ動かない。

シーンで見ているとColliderは動いているがMesh部分が追従しない。

なんでかわからなくてめっちゃ悩んだけど、Staticがオンになっているせいだった・・・

なるほどね・・・

 

ちなみにHandGrabできるようにするには、オブジェクトにコライダーとRigidbodyをつけて、その子のBuildingBlockのHandGrabの4か所を変更する必要がある。

ColliderはisTriggerにチェック入れる

Touch Hand Grab

Touch Hand Grabという物理が効いているほうはまた少し設定が違う。

 

RigidbodyのuseGrabityはオン、isKinematicはオフ。ColliderはBoxとMeshの二つ付いてる。ColliderのisTriggerは切る。isTriggerがあると床にぶつかって止まるということをしてくれない。

そしてこのTouch Hand Grab InteractableにはMeshColliderとそうじゃないコライダーをそれぞれ設定する必要がある。

これはInspectorをPropartyとして開いて横に並べて直接コンポーネントをドラッグしないとセットできない気がするがこの方法以外あるのだろうか?

ちなみにこのTouch Hand Grabは投げれるというより、手に持った時にバーチャルの手がいい感じのポーズでつかんでくれるというモノっぽい気がする。全然手から離れてくれない。

でも今私RealHandsというブロックを使ってバーチャルな手は出ないようにしているからあんまり意味ないかも

昔はExperimentalでThrowable Itemというのがあったらしいが今ないな~

 

この記事参考に設定しよう~

zenn.dev

オブジェクトに設定するだけで投げれた。でも非推奨スクリプト使ってた。投げるのが非推奨になったのかな・・・

 

Colocation(できなかった)

Blockにマルチプレイ系のが加わってる。これ使えば簡単にリアル環境のMRで同じものを見れるのか?

 

UnityNGOとPhotonを選べる。

UnityNGOにして必要なパッケージを3つ入れたが、そのあとまたなんか別のが出てきた。

この指示に従いappIDなるものを発行した

Platform SDK Entitlements End-to-End | Oculus Developers

それだけじゃダメなのかな。これをビルドしてapk入れただけじゃマルチプレイっぽいUIとか何も出なかった。

キーストア発行と、リリースチャンネルへのアップロードと、ユーザーの招待もいる?

 

なんやかんやでリリースチャンネルへアップロードまで行けた。MQDHソフトからアップロード

api32以下にしろなど出た

Future devoceいいね

これやってリリースっぽいことしてそのURLから開いても特にマルチプレイのUIはでない。そもそも出るのか知らないが

 

このAnchor Prefabは何を入れたらいいんだろう。

マルチプレイのところにTestUserを登録するところがあった。個人アカウントがなくてもテストアカウント発行して、複数アカウントのテストができるのか

developer.oculus.com

あとビルドするときバージョン自動で上げてくれる機能がOVRにあった!便利~

と思ったが途中で止まって完了しない・・・結局いつも通りの手順でビルドした。

 

developer.oculus.com

古いのかわからないがよくわからない記事。

developer.oculus.com

zenn.dev

Ready Player Me(glbファイル)のVRM化

VRM形式のアバターを作れるツールを探してたが、ReadyPlayerMeはどうだっけと調べた

bibinbaleo.hatenablog.com

readyplayer.me

glb形式でダウンロードできた。作ってダウンロードするのも特にアカウント登録不要だった!

My Avatarsからダウンロードできる

glbだとwindowsですぐ見れるのいいね。


ただ商用利用だと開発者登録が必要

Licensing & Privacy | Ready Player Me

開発者登録したら、自分のサービスのユーザーがアバター制作して、それを自分のサービスに取り込むというのをできそう?

ReactでもUnityでも!

docs.readyplayer.me

しかも開発者登録は無料!でも法人しか登録できないと利用規約に書いていた

studio.readyplayer.me

 

昔はfbxで書き出されてたのかな

qiita.com

 

Unityにglbファイルは入れれるがAnimatorとかなくてこのままでは直接vrmに変換できない

何か楽な方法ないか考えたが、ググった感じfbxに変換するのが王道なのかな?

基本こちらの記事通りにした

blog.raysostyle.com

blenderでglbをfbxに変換。

fbxもglbもUnityに入れる。fbxはテクスチャがついていないので、

glbファイルのほうからテクスチャとmaterialを生成

fbx側でこういう設定にしてSearchすると名前からglbのほうのマテリアルをリマップしてくれるらしい!この機能知らなかった!でもglbとfbxのファイル名を微妙に別のにしてたせいかわからないがうまくいかず・・・

手動でマテリアル当てはめた

いい感じ

RigをHumanoidにしたり、vrmに変換する

できた。

 

360度画像の用意方法を考える

イラストでも写真でもいいのだが、自分の理想の360度画像を用意する方法をいろいろ考える。

Skybox AI

作るのは無料でできるけどダウンロード有料になっちゃった;;だからこの記事を書いている

skybox.blockadelabs.com

昔使った時の記事。1年以上前からあるんだ

bibinbaleo.hatenablog.com

写真

自分で撮影

THETA持ってるし、スマホでも写真なら360度画像取れるアプリとかある。

smartlog.jp

ただ基本的に公道以外は許可どりが必要だったり、そもそもいい感じの場所に行くのが大変

フリー素材

HDRIとかで調べると海外のフリーサイトが出てくる。でもメインはHDRIとしての使用がだと思うので、面白みのある個性的な場所とかが少ないかも

polyhaven.com

こちらはよくお世話になってる

360rtc.com

別のAI生成

lucataco/sdxl-panoramic

replicate.com

NVIDIA

もうデモ触れないな

bibinbaleo.hatenablog.com

 

Stable Diffusion

Stable Diffusionで拡張機能を使えば生成できるらしい

monoocean.com

Stable Diffusionは出たときしか使ってないけど、今StableDiffusionはどうなってるんだろう。使い方わかるだろうか・・・

bibinbaleo.hatenablog.com

LDM3D

昔ちょっと使ったLDM3Dも360度画像作れたはず。

bibinbaleo.hatenablog.com

IntelとSkybox AIのBlockadeLabの協業だったんだ

アクセスしてもエラーになる

huggingface.co

Unityで環境作って撮影

アセットとかでいい感じの環境作って、UnityRecorderで撮影。

note.com

Fantasy Worlds - The Old Forest - Free Demo | 3D Landscapes | Unity Asset Store

を入れて撮影した

オンラインで360度画像見れるページ

renderstuff.com

影が微妙だったのでこちらのアセットにした

Lowpoly Environment - Nature Free - MEDIEVAL FANTASY SERIES | 3D Environments | Unity Asset Store

まあいいかな~

最後に

結局skyboxAIに課金するのが一番楽な気もしてきた

Meta SDKでGoodのハンドジェスチャー認識

MetaHorizonWorldで、サムズアップジェスチャーするとエモートが出た。同じようなことを自分のプロジェクトでもやりたい。

コントローラー

Horizonはハンドトラッキング未対応だから、コントローラーでグリップとトリガー同時押しでサムズアップできる。それはCopilotに聞いてすぐできた

public class ControllerHandPoseReaction : MonoBehaviour
{

    void Update()
    {
        // Oculusのコントローラーの入力を取得
        bool isRightTriggerPressed = OVRInput.GetDown(OVRInput.RawButton.RIndexTrigger);
        bool isRightGripPressed = OVRInput.Get(OVRInput.RawButton.RHandTrigger);
        bool isLeftTriggerPressed = OVRInput.GetDown(OVRInput.RawButton.LIndexTrigger);
        bool isLeftGripPressed = OVRInput.Get(OVRInput.RawButton.LHandTrigger);

        // トリガーとグリップが同時に押されたとき
        if (isRightTriggerPressed && isRightGripPressed)
        {
        }
        if (isLeftTriggerPressed && isLeftGripPressed)
        {

        }
        if (isLeftTriggerPressed && isLeftGripPressed && isRightTriggerPressed && isRightGripPressed)
        {
            //
        }
    }
}

ハンドトラッキング

せっかくなのでハンドトラッキングでもやりたい。

この記事見て、スクリプト書かなくても簡単にできそうなのでやってみた

qiita.com

公式ドキュメント

developer.oculus.com

手とかはもろもろセットアップ済みなので書かない

OVRInteraction下のHandFeatureRight(とLeft)にFingerFeatureStateProviderをつける。

各指には以下の場所にある何かをセットする。これがなんなのか全然わからない

 

次にプロジェクトで、Create>Oculus>PoseDetection>shapeから指の形を指定するファイルを作る

ここでジェスチャーを登録

むずかしい

https://developer.oculus.com/documentation/unity/unity-isdk-hand-pose-detection/

そして適当なオブジェクトにShapeRecognizerActiveStateをつけて、Handと今まで触ったもろもろを登録

あとはジェスチャーイベントを検知してやりたいことをするだけ。

ActiveStateUnityEventWrapperを使えばかんたんにInspectorでイベント検知&イベントができる

これで無事できた

でも腕の向き決めてないからブーでも出る

公式サンプル

自分でやった後に気づいたけど、公式でサムズアップのプレハブ用意されてた

そういえば昔このサンプルシーン触ったな。poseexample

ドキュメントを見るとちゃんと手の方向も設定できる

TransformFearureStateを手に付ける。

これをThumbsUpPoseから参照して全部埋まるとうまく動いた!

ちゃんと下向きの時は反応しない。

 

ちなみにShapeReacognizerもいろいろ用意されている

ThumsUpの正解はこれなのか

 

 

UIToolkitを学ぶ【UIBuilder、サンプル触り】

UIToolkit

Unityの新しいUI実装のツール.

昔はUIElementという名前でEditor拡張用のイメージがあったけど、今は普通のゲーム実装でも推奨になっている。ただしuGUIのすべての機能をサポートしていない

docs.unity3d.com

World Space用にもまだ使えない

Html/CSS的な書き方らしい。最近React学んだから相性いいかと思ったけど、jQuery的なものを使うらしくReactとは違うらしい

UI Toolkitメモ - フレームシンセシス

 

あんまり話聞かないから使われてるのかな?Realityでは導入しているって!

note.com

Twitter検索した感じまだガッツリ使ってる人はいないのかな。足りていない機能もあるし

 

UIBuilderはこれのパクリ?

gluonhq.com

とりあえず使う

記事を参考にしながらとりあえず触る

qiita.com

UIBuilder

UIBuilderというUIをドラッグアンドドロップで配置できるツールがある。(ホームページビルダーみたい)

左下の要素を置いていく

適当に面白そうなUI全部置いた

保存するとuxmlファイルができる

シーンに置く

ヒエラルキーでUI Toolkit>UI Document

SourceAssetsにさっきのuxmlをアタッチ

するとゲームビューに表示された!シーンビューには何も映らない。

デザインやレイアウト変更

CSS的なのでもできるけど、Builder上の右側の設定でもいろいろできる

保存したらすぐGameビューのほうに反映されるし楽しい。

カーソルまで設定できて、設定したエリア上にマウスを当てたらそのカーソルになるw

角丸も簡単にできる

スクリプトから操作

UIDocumentごとプレハブ化できる

スクリプトでプレハブ化したUIDocumentを呼び出すと、表示される

ボタンにアクセスするには、名前で参照

参考記事はそれ以外にもリストとして子のカードを並べて表示するとか、スクリプトでの操作がいろいろ紹介されていた。

 

こちらにもInputFieldの値の取り方とか書いてある

tech.framesynthesis.co.jp

デザインやりたいこと

Builderでできるのかな?

日本語フォント

フォントをセットしても反映されない~と思ったら、下のFontAssetsにデフォルトで入っているものを消したら反映された

簡単に使える~と思ったけどこれだとビルドしたとき表示されないらしい

https://amabie-labo.com/dev_article/article01

TextMeshProと同じくFontAssets化しないといけないって。そして下のFontAssetのところにセットする

テキスト省略...

...できるボタンあるけどならない。。。

Unityフォーラムに答えがあった

forum.unity.com

displayのOverflowもhudden(右のやつ)にしないといけなかった。わかるか~

画像を入れる

UIBuilderの中に画像コンポーネントがない;;

ファーラムの投稿にもあったが「ない」らしい。

forum.unity.com

自分で以下のコードを書いてAsstsのどこかに置く。

using UnityEngine.UIElements;
 
public class MyImage : Image
{
    public new class UxmlFactory : UxmlFactory<MyImage, Image.UxmlTraits>{}
 
    public MyImage()
    {
       
    }
}
 

そしたらUIBuilderのLibraryのProjectに入る

これでサイズやBackgroundの画像を設定したら表示できた。

影を付ける

テキストには付けれた。ついでにワードごとの間の値も設定できた

画像とかボタンには付けれないのかな?ないっぽい

これもフォーラムですごい会話されてる。つい最近まで。やっぱりみんなソフトシャドウほしいよな。

forum.unity.com

現時点ではないけどロードマップにあって2024年(今年!)追加されるっぽい。今やりたかったら画像用意するか、コード書く。(有志がコード提供している)

forum.unity.com

デフォルトコンポーネントの細かいUI編集

スクロールバーとかInputFieldとかデフォルトのコンポーネントのデザインは編集できない

どうやるんだろう?

 

教えてもらった

cssを作るときにそのパーツの名前(#unity-text-input)とかで書く。そして右側のインスペクタでかえると変わる。

同じパーツ名だが、別々のデザインにしたいときは親オブジェクトの名前を変えて#TextField_Name > #unity-text-input

この記号で親の名前を指定したら別々になる。

highlighの色など(?)

ボタンなどをホバーしたときとかの色の変化も設定するとこなさそう。一応実行すると大きさ変わったりちょっと色変化するのでどこかに設定されてそう。USSかな?

コードでのuxml,uss編集

ここのタブ上に上げれた。

uxml

UIBuilderで作ったuxmlをコードとして開くにはどうするんだ?普通にクリックしたらBuilderが表示される。

uibuilderの画面の一番下のアイコンから見れた

ここからしかできないのかな?

さっきのshadowも付けてみた

でか・・・

USSで調整するらしい

USS(?)

デフォルトではunityが定義したtss?

新しく作るにはuibuilderの左上の+から追加できる

公式ドキュメント読んだけどそこからどうするのか全く分からない。。。

docs.unity3d.com

+ボタンの右のAdd new selector...のところに何か自分で入力するっぽい。

そしてUI選んでスタイルシートの欄に名前入力するといいのか???

 

さっきとのuxmlと同じように画面下にコード開くボタンが出る

shadowのcss書いてみた

何も変わらなかった。フォーラムの下のほう見たらUSSでは動かずインスペクタで調整って書いてた。

TextのColor変えたら変わったけど、何か間違ってる・・・まあこれは主題じゃないからいいや

公式サンプルアセット

もうよく分からないのでサンプルを見る

Unity公式から二つサンプルアセットが出てる。QuizUとDragon Crashers

gamemakers.jp

QuizU

assetstore.unity.com

ここから起動する

クイズと設定画面とUIToolKitデモと各種リンクページの4つのコンテンツがある

クイズはUnityのAudioとかUIToolKitとかいろいろ分かれてる。クイズの内容は本題じゃなくてあくまでUIToolKitでのUIを見せるサンプルだと思うけど結構クイズの量多かった。

起動したときから感じてるけど、結構UI崩れる。

UIToolKitはマルチ解像度のUIを作れることも目的だった気がするんだけどな~uGUIでもちゃんとマルチ解像度のUI作れるのに何でデモでマルチ解像度対応しないんだろう?

できないのかやってないのか分からない・・・

テキストの大きさとか折り返し設定とかも気持ち悪いし。

 

DEMOのページではUXMLとかUCCとかの説明とデモ

ボタンのhoverとかの話もあった。

 

では実際に中身を見てみよう~ここにある

私はデフォルトだと崩れている

一番上の部品を選んでWidthとHeightを変えた

気になっていた、〇ボタンの中にアイコンは、丸い形ボタンの下にvisual elementsで画像置いてた

画面全体の解像度変えたときに、丸のサイズとアイコンのサイズが別の比率で変わって気持ち悪かった

 

USSは普通にダブルクリックしたら開くということが分かった。

そしてさっき分からなかったUIBuilderでのUSSのselectorのことも少しわかったような。

作りたい名前のselectorを入力したらUSSにこれが追加されるから、この中はスクリプトで書くのかな?

そしてこれを適用したいコンポーネントにselectorを適用する。

u-queryはサンプルシーン見てもどこに使われてるかよくわからなかった。まず元のjqueryが何なのか知らない

Dragon Crashers

※このアセットにプロジェクト全体が乗っ取られるので新しいプロジェクトに入れたほうがいい。自分が作ったシーンを再生してもこのゲームのシーンが再生される

assetstore.unity.com

QuizUとは共存しようとしたらQuizU側でエラーでる。

git管理もしてないし、assetpackageからもremoveできないし詰んだか?と思ったが1個スクリプト消して、もう一つコメントアウトしたらエラー消えた。QuizUにどんな影響が出たかは分からない

MainMenuからプレイできる。


UIのサンプルなのでゲームとしてすべての機能は入ってない

いろいろUI使われている

QuizUよりはきれいなUI。でもマルチ解像度対応完ぺきではない。

UIBuilderで見るとそれぞれのパーツが別のuxmlになっていて組み合わさっている。これはReactのコンポーネント的概念ではないのか

公式ドキュメント

いい加減公式ドキュメントを読もう

docs.unity3d.com

UIBuilder以外にもツールがあった

SamplesはUnityEditor用なのかな?ドキュメントには特にそんなこと書いてないけど

 

UI Toolkit Debugger

docs.unity3d.com

インスペクターの要素見れた

自分で作ったUIの情報も見れるはず。

UIBuilderの右上のPreviewを押した状態で、DebuggerのPickElementを押して要素を選ぶ。もしくはゲームビューで実行中も同じことができる

Figmaの開発モードでもこの多重長方形見るけどこれはWebでの定番なのか?あんまりなじみがない・・・

最後に

もっと踏み込んでいくにはhtml/cssの知識が必要そう。

ui toolkitのudemyの講座は英語しかない><

www.udemy.com

Unity Museを使った!

Unity Muse

Unity用のAI機能

unity.com

www.moguravr.com

今5機能

https://muse.unity.com/en-us/explore

Proライセンスだったら無料で使えるのかと思ったら、1月30ドルで別途購入しないといけなかった。

15日間は無料トライアルができる

XRKaigiで聞いた感じアニメーション作成とかはまだできないのかと思ったが、プレリリース機能へアクセスってあるから使えるのか。

やってる人いる!

チャットはWebでやるのか?これはお試しなのか?Unityバージョン選んでから聞ける

フリートライアルして!って言われてできなかった

各機能の使い方のページ

unity.com

やってみる

フリートライアル

日をあけてサブスクボタン押したら、前は出たこの画面が出ずヌルっとフリートライアル始まった

15日間終わったら自動で有料になったりしないのか?どこでその管理ができるのかわからない・・・

UnityIDのページを見てもUnityMuseのサブスク情報ないから解約とかしなくても大丈夫ということなのかな?クレカ情報消しておいた

更新してしまっても言ったら返金処理されたらしい

 

本来はポイント制だが、4/1までの早期アクセスだとポイントを消費しない!これはフリートライアルでも有料版でも変わらないのかな?

まあ始めるのにぎりぎりいいタイミングだったね

Chat

Webで動かす。Unityに関することを教えてくれる。例題に出ていた質問を押したら画像付きで答えてくれたw

VRMとかUnity公式じゃないものも一応答えてくれる。でも正しくはなさそう

あと最初英語だったからGoogle翻訳で日本語にしてて気づかなかったけど、日本語で質問したら日本語で返信してくれてた。

あと普通にUIも日本語選べた

copilotはプログラミングに関すること以外は答えてくれないらしいけど、Museは今日の朝食についても答えてくれた。でも本来はポイント制だからこんな蔵だない質問をしている場合ではない

Texture

UnityPackageを入れる。2022.3以降

最近アップデートしてもっといい感じになったらしい

Museメニューからテクスチャを作る

プロンプト入れると4種類できた

その中から一つ選ぶと微妙にモードが変わる

そのままだと512x512のサイズだったけど、メニューからUpscaleしたら2048x2048で生成できた

マテリアルビューに切り替えるとDiffusemapとかが生成される

形やライティングも変えれる。

ShaderGraphで作ったことになってるんだ

黒い部分以外透明にしたりとかは難しいのかな~?

マテリアルじゃなくてテクスチャ生成したほうをPlaneに貼ってちょっと透明にした

生成するときShapeとか色とか参考イラストとかを指定できる

バージョン2が指定できないなと思ったら、PackageManagerでアップデートしないといけなかった。pre19にする。公式リンクから行くと18になってた

けどできなかった。

ChangeLog見たら個のアップデートは時期的に関係なさそう。

バージョン2は内部的なものなのかな・・・?

あとやっぱり無料トライアルだとポイント制限あるのか・・・?

不安になってきたので次

Sprite

 

Unitypackage入れたのに選べない><

Unity再起動したら選べた

同じようにプロント入力

もっとシンプルな白黒アイコン風のを作ってほしかったから、InputImageにそういう画像を入れたがあんまりうまく認識してくれなかった。Stypeを選べる項目もあるがDefaultしか今はない。

1枚選ぶとそれに対して範囲指定して追加のプロンプトなどを打てる

テントウムシみたいなのできた・・・

あと今更気づいたけど、Generateを押した時点でファイルがAssets直下に生成されてた。

これを押すと生成画面に移動できる。なのでずっと同じ画面でいろいろなものを生成するのではなく、別の物体を生成するときは、Muse>New XX Generaterから生成するといい。

猫を新しく作ったが、クオリティ低い・・・

作ったものは512x512。Textureと違って大きくはできなさそうだった。

スタイルのデータが見れた。happy Harverstがデフォルトの中身なのかな

Unity公式のゲームなのか

assetstore.unity.com

Style Trainerというのを選ぶと以下のような画面になった。これはいったい・・・・

Animate

人間のモーションを作れる。UE5のプラグインでもやったことある

bibinbaleo.hatenablog.com

 

Editorで使えるようになるのは4月初旬

でもWebではできるはず・・・だったが今うまく動かないらしい

ドキュメント見たらMuseサブスクライブしたからと言って利用できるわけではない。ホーム送信したら優先的に登録されると書いてあった。でもこれは関係ないよね・・・

午後アクセスしたら見れた! 今このページからできるのはAnimateだけだけど、今後Sprite作成もここでできるようになるのか?

使い方日本語化できなくてよくわかってない

まず、UR5のプラグインでも試したswiming。綴り間違ってるせいかうまくいかなかった。でもswimmingでも立ったままだった

UE5でも書いたA person is walking forward hastilyで生成すると前に歩いた。ちなみに文字のコピペができないので、自分で記入しないといけない。

cheers(乾杯)はちょっとそれっぽい

ちゃんと指示したら使えるものできるのかな?

同じこと書いたら同じようなものできた。walking backward and spinning



Make Editableを押して、sampling optionsでConvertすると

モーションが分割されて、それぞれのコマで手などの位置や角度を編集できるようになった

Look Atもある

影響範囲?結構いろいろ編集できる

スピードも変えれる


Webのエディターの情報は更新したら消えてしまうので、いいので来たらすぐにExportしたほうがよさそう。

fbxで出力された、

このモデルもついてくる

移植できた。

どうでもいいけどこのモデルの構造面白い

behavior

スクリプト書いてくれる

これはPackageを入れたらCreate>MuseBehaviorから作る

ファイルができる。open

ノードベース;;

選んだりできる

Actionでなんか適当に打ち込んだら、それぞれの単語がGemaObjectなのかboolなのかとか洗濯できる

Generative AIを押すとこんな画面

csスクリプトが生成される

中身が書いてある。でもコメントみたいなのをコメントアウトされてないから赤線出てる。あとChange Materialで想像してたものではない

いまいちノードだとやる気でないな・・・このノードってほかでも使われてるのかな?

AIならスクリプトベースのほうがやりやすいのでは?

チュートリアルプロジェクトがあるので触ってみる。

assetstore.unity.com

PackageじゃなくてProjectだから空のプロジェクトとに入れたほうがよかったかもしれない。

Unity再起動したりいろいろ時間かかったが、何とか読み込めた。キャラクターが移動する

肝心のノードがどこにあるのかわからない。AIフォルダの下にあるノードを開いても何も出てこない

ここに自分で書いていって空間にいる敵?に個性を追加させていくのかな

この動画と連動しているらしい

www.youtube.com

Muse Sketch

近日公開されるらしい

Unity AI updates | Join the mailing list

このツイートの画像によると3Dのシーンを作れるって書いてる。木とか岩とか生成してくれるんだろうか?一次情報が見つけられない・・・

 



VRM1.0のアバターの表情をスクリプトから変更する

ドキュメントどこだ・・・?これか?でもvrm1.0ではなさそう

vrm.dev

vrm.dev

検索したらいろいろ一般の方の記事は出る

note.com

Vrm10RuntimeExpressionで変更するらしいが、これを検索しても公式ドキュメントみたいなのが出てこない

でもこれでよさそう

[SerializeField] private Vrm10Instance vrmInstance;

private Vrm10RuntimeExpression vrmRuntimeExpression;

void Start(){

vrmRuntimeExpression = vrmInstance.Runtime.Expression;

//表情変える

vrmRuntimeExpression.SetWeight(ExpressionKey.Blink, 1.0f);

}

目をつぶった~

この情報を与えて、ChatGPTに瞬きするスクリプトを作ってもらった。ちなみにこの情報を与えないと正しくvrm1.0で動くスクリプト作ってくれなかった。

 

using UnityEngine;
using UniVRM10;
using System.Collections;

public class vrm10expressionchange : MonoBehaviour
{
    [SerializeField] private Vrm10Instance vrmInstance;
    private Vrm10RuntimeExpression vrmRuntimeExpression;

    [SerializeField] private float blinkInterval = 3.0f; // 瞬きの間隔(秒)
    [SerializeField] private float blinkDuration = 0.1f; // 瞬きの持続時間(秒)

    private float nextBlinkTime = 0.0f; // 次の瞬きのタイミング

    void Start()
    {
        vrmRuntimeExpression = vrmInstance.Runtime.Expression;
    }

    void Update()
    {
        if (Time.time >= nextBlinkTime)
        {
            StartCoroutine(Blink());
            nextBlinkTime = Time.time + blinkInterval;
        }
    }

    IEnumerator Blink()
    {
        vrmRuntimeExpression.SetWeight(ExpressionKey.Blink, 1.0f);
        yield return new WaitForSeconds(blinkDuration);
        vrmRuntimeExpression.SetWeight(ExpressionKey.Blink, 0.0f);
    }
}

 

これで瞬きできるようになった。