From 9f1a6ff960f81ad535baa9cd0ace9379294b24db Mon Sep 17 00:00:00 2001 From: syui Date: Mon, 23 Sep 2024 22:06:39 +0000 Subject: [PATCH] =?UTF-8?q?memo=20=E3=82=92=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- link.md | 87 +++++++++--- memo.md | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++- stream.md | 101 +++++++++++++- verse.md | 137 ++++++++----------- vmc.md | 28 ++-- 5 files changed, 623 insertions(+), 117 deletions(-) diff --git a/link.md b/link.md index 3fa9856..1d316a1 100644 --- a/link.md +++ b/link.md @@ -1,20 +1,23 @@ -latest : ue 5.4.4 -- [ue 5.4](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/unreal-engine-5.4-release-notes) -- https://git.syui.ai/ai/ue +latest : ue 5.5.0p +- [ue 5.4.4](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/unreal-engine-5.4-release-notes) +- [ue 5.5.0p](https://forums.unrealengine.com/t/unreal-engine-5-5-preview/2048423) - https://blueprintue.com/profile/ai ## free +- asset: [content examples](https://www.unrealengine.com/marketplace/en-US/product/content-examples) - asset : [city sample](https://www.unrealengine.com/marketplace/ja/product/city-sample) - asset : [game animation sample](https://www.unrealengine.com/marketplace/en-US/product/game-animation-sample) -- asset : [AutomotiveBridgeScene](https://www.unrealengine.com/marketplace/en-US/product/automotive-bridge-scene) +- asset : [automotive bridge scene](https://www.unrealengine.com/marketplace/en-US/product/automotive-bridge-scene) +- asset : [automotive winter scene](https://www.unrealengine.com/marketplace/en-US/product/automotive-winter-scene) (街頭) - plugin : [pixel streaming](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/pixel-streaming-in-unreal-engine) - plugin : [twinmotion](https://dev.epicgames.com/community/learning/paths/L6G/everything-you-need-to-know-about-twinmotion) - plugin : [ddsl](https://developer.nvidia.com/rtx/dlss/get-started#ue-version) - plugin : [vrm4u](https://github.com/ruyo/VRM4U) - plugin : [kawaiiphysics](https://github.com/pafuhana1213/KawaiiPhysics) - plugin : [varest](https://www.unrealengine.com/marketplace/ja/product/varest-plugin) -- plugin : [AsyncLoadingScreen](https://github.com/truong-bui/AsyncLoadingScreen) +- plugin : [asyncloadingscreen](https://github.com/truong-bui/AsyncLoadingScreen) +- plugin : [ui navigation 3](https://www.unrealengine.com/marketplace/ja/product/ui-navigation-3) ## plan @@ -24,14 +27,11 @@ latest : ue 5.4.4 - plugin : [http websocket helper](https://www.unrealengine.com/marketplace/en-US/product/http-websocket-helper) - plugin : [jsonparser](https://www.unrealengine.com/marketplace/ja/product/jsonparser) -## vmc +## chat -- [vseeface](https://www.vseeface.icu/) -- [webcam motion capture](https://webcammotioncapture.info/) (外部アプリに送信するには有料) - [RuntimeSpeechRecognizer](https://github.com/gtreshchev/RuntimeSpeechRecognizer) - [RuntimeAudioImporter](https://github.com/gtreshchev/RuntimeAudioImporter) -- https://github.com/HAL9HARUKU/VMC4UE (ue 5.1) -- https://github.com/HAL9HARUKU/ueOSC (ue 5.1) +- [chatgpt](https://openai.com/api/) ## api @@ -44,14 +44,69 @@ latest : ue 5.4.4 ## store -- https://bpsystems.gumroad.com/ -> https://www.unrealengine.com/marketplace/ja/profile/BP+Systems - -## 購入ルール - -assetの購入ルールは割引されていることです。欲しいものが割引されていない場合は自分で作りましょう。割引されていて後で確実に使うものから購入します。 +- https://gumroad.com/ ## dynamic volumetric sky -> ultra dynamic sky - [dynamic volumetric sky](https://www.unrealengine.com/marketplace/ja/product/dynamic-volumetric-sky/) -> [ultra dynamic sky](https://www.unrealengine.com/marketplace/ja/product/ultra-dynamic-sky) -202409のupdateでultra skyの雲の品質が良くなったので移行します。しかし、雲の品質は未だdynamic skyのほうが少し上です。ただし、dynamic skyは天候はありませんし、あまり更新されていません。ultra skyは天候があり、頻繁に更新されています。 \ No newline at end of file +202409のupdateでultra skyの雲の品質が良くなったので移行します。しかし、雲の品質は未だdynamic skyのほうが少し上です。ただし、dynamic skyは天候はありませんし、あまり更新されていません。ultra skyは天候があり、頻繁に更新されています。 + +## city sample + +https://dev.epicgames.com/documentation/en-us/unreal-engine/city-sample-project-unreal-engine-demonstration + +## vrm + +- vrm : https://github.com/vrm-c/vrm-specification/tree/master/specification +- vrma : https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_vrm_animation-1.0 +- three-vrm : https://github.com/pixiv/three-vrm + +## vmc + +ue側はvrm4u(vmc)を使えます。 + +- https://github.com/sh-akira/VirtualMotionCapture +- [vseeface](https://www.vseeface.icu/) +- [webcam motion capture](https://webcammotioncapture.info/) (vmcは有料) +- [vrm posing desktop](https://store.steampowered.com/app/1895630/VRM_Posing_Desktop/) + +vmcはprotocolとclientの意味があり、通常はprotocolを指します。vmc(protocol)を作っているところが出しているclient(vmc)と他のclientがあります。clientはcapture(webカメラ)と併用して使います。 + +https://docs.warudo.app/jp/docs + +### old + +- https://github.com/HAL9HARUKU/VMC4UE (ue5.1) -> [patch](https://git.syui.ai/ai/ue/src/branch/main/plugins/vmc4ue) (ue5.5) +- https://github.com/HAL9HARUKU/ueOSC (ue5.1) + +## livelink + +この方法の利点としてABP(idle)以外でも表情を有効にできます。例えば、ABP(run)しているときも表情の変化が有効になります。ただし、livelinkを切るとそのままの状態で固定されるため一度morphをリセットしないといけない。 + +- [livelink face](https://apps.apple.com/jp/app/live-link-face/id1495370836) +- [mocopi](https://apps.apple.com/jp/app/mocopi/id6444393701) +- [iclone](https://www.unrealengine.com/marketplace/ja/product/iclone-unreal-live-link) + +```sh +[vrm4u] +# https://github.com/ruyo/VRM4U/tree/master/Content/Util/Actor/latest +/Plugins/VRM4U/Content/Util/Actor/latest/BP_LiveLinkFace +/Plugins/VRM4U/Content/Util/Actor/latest/sub/BP_MocopiReoeiver +``` + +https://help.vicon.com/space/Unreal5Plugin16/14713547/Install+and+set+up+the+LiveLink+plugin + +## web browser + +https://dev.epicgames.com/community/learning/tutorials/z0zP/unreal-engine-editor-utility-widgets-with-webbrowser + +## widget3d world + +widget3dをworldに置くと画質が悪くなる問題があり、以下のmaterialを`BP_widget_component`に当てることで解決できます。これはクロマキーと呼ばれる背景の影響を消す手法になります。 + +https://blueprintue.com/blueprint/-49_059w/ + +- https://forums.unrealengine.com/t/browser-3d-widget-looks-washed-out/366547/3 +- https://www.reddit.com/r/unrealengine/comments/1clbeeb/is_there_any_way_to_make_3d_worldspace_widgets/ + diff --git a/memo.md b/memo.md index 91f3d90..6210358 100644 --- a/memo.md +++ b/memo.md @@ -1,14 +1,144 @@ -適当な思考をまとめる +適当な思考をまとめる。考えがまとまれば[verse](https://git.syui.ai/ai/ue/wiki/verse)に統合する。 + +## ゲーム仕様 + +### aiverseとは + +みんなゲームすると思う。ゲーム内では普通に通話が行われ、情報のやり取りもあるようだけど、それはあくまでゲームの話が中心。 + +その理由としては、ゲーム内のプレイヤーが自分ではないし、またアカウントもゲームアカウント。これがもしsnsアカウントだったり、プレイヤーが自分のvだった場合、どうだろう。今、[vrchat](https://hello.vrchat.com/)が少し注目を集めている。今後、これらが統合されていくのではないかと思う。 + +aiverse projectではatprotoアカウントでゲームをプレイ、配信、視聴、チャットができるゲームの開発と規格を作成する。 + +### 規格とは + +規格と書いて企画と呼ぶ。ここに書いている規格とは一般的な規格と異なり、単に具体的な手順やルールな意味合いが強い。創作者の思考が抽象的な精神論になりがちなので、それを回避するため規格(企画)を作ることにした。 + +ただ、精神論も重要で、見ている人もやる人も楽しませるという目的がある。 + +とはいえ見ている人を楽しませるのは配信者の仕事なのでその人なりに考えて自由にやってほしい。ちなみに、他ゲームの実況はできる。ゲーム内の家にはゲーム機とゲームを起動するモーションを用意してある。 + +以下、具体的な手順や考え方を述べる。 + +まずは少人数から。モデルや環境を用意して心理面でキャラに合った人にやってもらう。ここまではvtuber事務所と同じかしらんけど。ただし、aiverseでは物語がありその人がvになるまでをゲームのストーリーとして描く。ゲームを進めると各動物モデルから人間の姿になる。初期メンバーは`fantasy`である。自分が主人公になってプレイできる。それを用意するのが創作者の役割となる。 + +vtuberの弱点は初登場時にいきなり姿と設定が語られるところ。それだと納得しづらい。 + +### 物語 + +プレイヤーが人間に憧れ、人の姿になるまでを描く。 + +#### 序盤 + +1. 日常がある。日常が何者かによって破壊される。気がつくと見知らぬ土地。 +2. しばらく野宿(生活)のようなこと。孤独と不安。 +3. 魔物が襲ってくる。戦う。ピンチ。 +4. 見知らぬ誰かに助けられる。協力。 +5. この世界のことがわかってくる。 + +#### 中盤 + +各キャラクターモデルは動物モデルから人間モデル、人間モデルから神性モデルに進化していく。例えば、`syui`はモデルに`ai`を使用するので少し特殊だが、このルールの適用範囲内であり動物モデルは存在する。このモデルが適用されるメンバーのコードネームは`fantasy`。 + +イベントで人間モデルになる。 + +#### 最終 + +1. アイがボスとして登場。戦う。 +2. 上の世界をよろしくと言われる。 +3. 地球が大量の軍艦に囲まれて爆撃されている。そこで最終ボスと戦う。 +4. アイは今までの世界を崩壊させ力に変えていく。このときコメントした人は記録される。ゲーム内でアイコンが球体に取り込まれていく演出。 +5. プレイヤーである2人に渡す。キャラは8凸する。神性化を手に入れる。これらの性能は配信プレイヤー限定であり、キャラは7凸が上限。 + +### 小さなことから + +まずは2人の配信者兼プレイヤーを確立する事から始めたい。その2人がゲーム内で交流しながら配信する形にしたい。 + +ゲームを作るとき、最初から全部のマップを作るのではなく、例えば小さなところを完璧に作っていく事から始める。 + +初期プレイヤーを限定するのはなぜか。自分のモデルを読み込めないのかという疑問について考えを話す。 + +[vroid sdk](https://hub.vroid.com/developer/download-sdk)を使うとue5でも自分のvrmを読み込んでプレイできるゲームを作れると思う。しかし、この形式は採用しない。 + +aiverseでは統一感のあるモデルを採用する。 + +配信者がある程度確立できたらゲームは一般プレイヤーに開放し、ガチャで配信者が使用しているモデルを使うことができるようにする。ただし、8凸と神性化(見た目が若干変化)は配信プレイヤーに限定される。この辺のことはまだ考えがまとまらない。 + +### ガチャの仕様について + +ガチャはシンプルに、かつ継続できるシステムを構築したいと思っています。 + +具体的には、PTは3(キャラ)を考えていてボタンを押すと交代します。そして、それ以上のキャラを手持ちに加える事はできません。キャラをアイテムに例えるなら3つのアイテムでボックスがいっぱいになります。新しいキャラを加えるには一つのキャラを捨てなければいけません。 + +この場合、ガチャで手に入れたキャラはどうなるのでしょう。再びPTに加えたい場合、またピックアップされたときにそのキャラを引かなければならない。ただし、凸数はアカウントに保存されています。つまり、「1凸のキャラを捨てた、再び引いた」という状況では、再び引いたとき2凸になります。 + +ピックアップ時は凸が増え新たな能力が追加されていることがあります。上限7凸だったものが8凸になったりなどです。つまり、引いたキャラを捨てても全損するわけではありません。 + +この仕組みが目指すものは2つあります。 + +- 配信者、プレイヤーの個性が出るようにしたい +- 古いキャラも継続的に引いてほしい + +まず、プレイヤーの個性が出るようにしたい件について。PTが3キャラに固定されることで流行りのキャラばかりが使用される状況を改善できます。色々なキャラを気分に合わせて使えるわけではないからです。1シーズンにつき手持ちは3キャラ。意図的に引けるとしてもピックアップ中の1キャラのみです。 + +そして、古いキャラが再びピックアップされたとき、再び引いて使ってほしいという思いがあります。これは継続的な収益性にも繋がりますが、古いキャラを活かし続ける意味もあります。この際、凸を進められるので新しい体験ができるでしょう。 + +### ゲームの難易度 + +ゲームの難易度はすごく簡単にしようと思う。つまり、おじいちゃん、おばあちゃんでも理解できて、ポチポチボタンを押してればできる。そういったレベルがいいと思う。これは、pokemongoが参考になる。やることが明白で、簡単な操作で達成できる。それが重要。 + +特にこだわらなければならないのは操作性の気持ちよさだと思う。爽快感。バトルには音楽とボタン入力を入れようと思う。まず音楽が流れる。時を止める。そして、タイミングとボタン。 + +```sh +♪-------->------◯----------------- +``` + +完全一致を見るのではなく範囲内で点数をつける。 + +```sh +♪-------->---[---◯---]-------------- + +[10-100-10] +``` + +でも簡単なだけのゲームかというとそうではなく、世界レベルというものが用意されていて、これはプレイヤーが意図的に操作しないと上昇しない系のレベル。勝手に上げられることはない。報酬もない。クリアするとバッジがつく程度。けど、難易度が劇的に上がる。あるいはエンドコンテンツとして難易度が高いものを一つ用意する。 + +難易度は敵の強さだけ。探索において高度な仕掛けは用意しない。先程も言ったが分かりづらいのはだめ。フィールドには宝箱があってボタンを押すと開けられるもの、敵がでてきて倒すもの、この2つを用意する。仕掛けを増やしてはいけない。 + +増やすなら物語、漫画のコマ、ギャグを増やそう。 + +### 物語2 + +自分の中で大体の世界観が定まってきたように思う。この世界では一人の人間に一匹の動物(生き物)が大切に世話をされて一緒に暮らしている。 + +自然界は大変なので優しい人間に保護されながら生きるほうが動物にとっても嬉しいはずだ。そのような価値観から構築される。 + +さて、しかし、このようなことはうまくいくだろうかと考えた場合、いくつかの根本的な問題がある。一つは悪い心を持った人間の存在だ。 + +この問題を回避するには心を読み取りあらかじめどのような人間化を察知する必要がある。その装置が開発され、社会に組み込まれている。だがその実態は誰も知らないし、知らされていない。というのがこの世界であり、このゲームの物語になる。 + +主人公はなんの疑問も持たずに一匹の動物と暮らしているが、そこでこの社会に疑問を持つような事件が発生する。やがてこのシステムの真実と裏社会のことを知っていく。 + +しかし、シリアスになりすぎないように、かつシンプルな構成(悪の組織に立ち向かうみたいな)にすることも大切。 + + +### ポケモンとFFの違い + +ポケモンは既に平和な社会システムがあって、その中にも悪い人間はいて、主人公が悪の組織を潰し、その世界の栄光(最強)である四天王を倒し、チャンピオンに挑むという物語になっていて、チャンピオンは既に旅の途中で何度か出会っていた相手になることが多い。これは非常にわかりやすくシンプルな構成ではあるものの強力だと思う。 + +FF(ここではFF10)は体制への反転がテーマになっていて、既に社会システムがあり、主人公は外からやってきて、その仕組を知る。そして、そのシステムをぶち壊して体制を覆す。これには驚きや感動があり、物語的には複雑で分かりづらいけど非常に有効だと思う。 + +私は、平和な物語が好きで、残虐なゲームは嫌い。基本的には任天堂が作る平和な世界観のゲームが好きなので、基本的には平和な世界で旅をする物語にしたい。でも、驚きや感動を入れたいので、一部で体制への反抗を入れてもいいかもしれないと思っている。 ## 今あるものでは厳しい 例えば、ゲームを作る場合、原神と似たようなものを作っても厳しいと思う。同じかそれ以上の品質であっても厳しい。なぜなら、すでに原神がある。 -例えば、vtuberを始める場合、vtuberは厳しいと思う。vtuberとして恩恵を受けるのは、そのような概念が存在しなかった当時から取り組んでいた人達ということになる。一番のあるいは唯一の方法としてlololiveに入るしか、vtuberとして成功する人は出てこない。 +例えば、vtuberを始める場合、vtuberは厳しいと思う。vtuberとして恩恵を受けるのは、そのような概念が存在しなかった当時から取り組んでいた人達ということになる。一番あるいは唯一の方法はlololiveに入ること。それ以外でvtuberとして成功するのは難しいと思う。 -何が言いたいのかというと、今流行っているものの参入はすでに時遅し。 +何が言いたいのかというと、今流行っているものに参入するには既に時遅し。 -本来やりたかったことでもない場合が多い。どうせなら他のことをやろう。 +本来やりたかったことでもない場合も多い。どうせなら他のことをやろう。 ## 規格と創作 @@ -16,3 +146,252 @@ 自分にないものを補うため、自分ではできないことをやってもらうための規格を作っている。他の人達の自由な発想が必要。 +## blogからyoutubeへ + +人々はどこから情報を得るのだろう。それは時代とともに変化する。 + +昔、人は本から情報を得ていた。だから本には価値があったし、出版社、ついで書店の価値は高かった。だが、インターネットが普及すると出版社や本や新聞の会社は厳しくなった。 + +blogが流行った。誰でも情報を手軽に発信しはじめ、ブロガーなるものが登場する。 + +しかし、ブロガーの登場以降、検索で欲しい情報にたどり着けない状況になった。検索上位に表示されるのはいつも情報商材や広告記事ばかりになり、そういった記事は業者が雇うライターが適当に書いているようなものばかりになった。 + +人々はblogやTVからyoutubeに移行しはじめ、やがてユーチューバーなるものが登場する。 + +そして今ではyoutubeの中でも動画よりライブが中心になっている。いくらでも編集できる動画よりライブのほうが面白いからだ。 + +今後、人はどこから情報を得るようになるのだろう。 + +例えば、youtubeからの収益配分は今後激減することが予想される。これはblog時代と同じで確実に起こると思う。 + +## twitterの限界 + +twitterには限界がある。twitterだけでなく今までのあらゆるサービスは根本的に作り直す必要があるかもしれません。そんな話をしていきます。 + +限界の一つはid(name)に関することだ。これから生まれてくる新しい人達や新しい会社がたくさんある。そういう人達はtwitterにアカウントを作らないと思う。使いたい名前が取れないのだ。 + +名前なんてどうでもいいだろうと考える人達も多いことは知っているが、賢い人達はそのようには考えない可能性も高い。例えば、大創業者が作った社名は意味が込められている。 + +そして、新しい人達が入ってこないとどうなるか。彼らは常に流行を生み出す潮流なので、彼らが入ってこないと成長は見込めない。 + +したがって、どちらにせよ今後のインターネットはこの問題が解決される方向へ進むだろうと考えている。 + +この解決策として採用されるのがdomainと分散化になると思う。人間はいつの時代も数字ではなく名前を使うものです。例えば、プログラミング言語は名前を数字に変換するものです。なぜなら、名前のほうが人間にとって読み書きしやすいからです。 + +したがって、名前は重要です。今までのサービスはこの名前という根本的な部分に限界があります。 + +確かに、表面上、この問題を解決することはできるでしょう。しかし、これは納得の問題でもあります。人々が本当に納得できる解決策としては、根本的な部分を作り変えるしかないのです。 + +今後、人々が使う名前は、domain形式になり、なぜなら各サービスごとの名前が枯渇しているからという理由と、名前をdomain形式にしないとサービス外と繋がれない。やり取りできないという理由からです。そして、未来では一つのアカウントで複数のサービスを使うのが一般的な形式に変化していくだろうと予測しています。 + +> atproto, activitypub + +## AIとgpu + +分散snsが登場し始めた頃はAI界隈も活発化し始めた時期でした。具体的には2015, 2016あたりと記憶しています。ですが、当時はそこまで世間に浸透しておらず、知らなかった人も多かったのではないかと思います。 + +ここからAIの話を少しだけします。まずはcpuとgpuの話からする必要があります。 + +cpuはイメージで例えるならLV100のスーパーヒーローが一人いて、敵をやっつけ、敵をやっつけると計算が終了します。gpuはスーパーヒーローはいませんがたくさんのLV1の兵士がいるイメージ。一人ひとりは弱く強力な敵を倒せませんが、同時に行動するのでたくさんの敵に対処できます。 + +今まではcpuのほうが効率的でした。なぜなら敵が少なく強かったからです。その敵を倒しさえすれば計算は終わりました。そういった問題が多かった。 + +ですが、時代が変わりました。それに伴ってAIが登場します。AIはcpuではなくgpuで動いています。 + +このことからgpuを作っているnvidiaが時価総額世界一に到達しました。 + +これは偶然ではありません。既に限界が見えていたものが大きく移り変わろうとしています。 + +並列(分散)時代の到来です。私はそのように予測します。 + +## サービスのセキュリティ + +今後は主にsnsのdomain認証がサービスのセキュリティに利用されるのではないかと思ってる。 + +snsはもとから好ましくないユーザーのアカウントを削除する体制を整えているので、それとdomain認証を組み合わせることで、ほぼ確実にサービスアカウントのセキュリティ対策になる。 + +atproto(bluesky)はその点で相当の利点があり、他のものより優れている。未来を見据えた設計がなされており、様々な問題を解決できると思う。 + +今現在、各社はそれぞれに攻撃者やスパマー、なりすましの排除をモデレーターを雇って取り組んでいる段階だ。 + +しかし、攻撃者やスパマーは同じ組織や人物であることも多く、彼らが複数のサービスをターゲットにしているだけである。 + +とすれば、各社は同じことをして苦労しているので無駄が多い。これを誰か他の人に任せて、その結果を共有したほうが合理的だ。例えば、利用ユーザーをblueskyアカウントに限定すればサービスは相当安全になるはず。逆にblueskyのモデレートが気に入らなければ自分たちでpdsを立ててモデレーションすればいい。atprotoにはそのためのツール(ozone)が既にある。もしくは自分たちにあったpdsを見つけそれを利用すればいい。 + +## 精神面重視 + +主に精神面や心理面を重視する。他の要素はほとんど考慮しない。そもそもゲームやインターネットとはそういうもの。 + +この世界は意識によって作られている。私が作ったのでこうなっている。 + +自分自身であれ。 + +配信者に求める資質や価値観は以下の通り。 + +- 想い(物語と規格) +- 喜び(嬉しいという感情を持っている) +- 好き(嫌なことも笑い話にする) + +好きなものは多ければ多いほど良い。たくさんの喜びを持つ。嫌なことも笑い話に変えるポジティブさ。そんなところかな。 + +## 批評家に注意 + +世の中には色んな人がいる。snsでずっと嫌なことや否定や批判や批評を行うタイプの人も多いけど、彼らの言葉は基本的に気にする必要がないと思っています。なぜこのような事を書くのかというと、もし配信してもらうことを考えているなら、このことは避けては通れないことだからです。 + +とはいえ、批評家タイプの人が間違っているからではなく、世の中にあるものはすべて正しいです。現実は正しいから、彼らが存在するのもまた正しい。その主張も正しい。 + +ただ、正しいだけです。 + +どのような物事にも完璧はなく、どのようなことでも批判しようと思えばできてしまう。言い訳はいくらでもできるし、いちゃもんを付けるのは簡単なのです。批評家タイプの人というのは生まれつきによるところが大きい。なにかを見たり聞いたりしたときの反射行動として否定する。別に間違っているわけじゃないけど、彼らの言うことは最初から決まっていたりする。まず否定感情があってそこから始まるわけだから。 + +自分に悪いところがあったなら改善すべきところは改善したらいいと思う。けど最初に人間性を見て、悪い人の言うことはあまり気にしないようにしないといけない。あらゆる物事を基本否定するタイプの人も世の中にはたくさんいる。彼らにしてあげられることは少ないのです。 + +ですが「あなたは嫌な人だから間違っている」ではなく「あなたも正しい」と言える優しさと強さを持とう。 + +負けるなよ自分に。上のような感情は誰にでもあるさ。 + +どのような人間になるか自分が決めろ。 + + + + +## マーケットを意識 + +同じマーケット内で奪い合うのではなくて、他のマーケットにいた人達を引っ張ってくるという感覚が近いと思う。 + +例えば、私が最初にプレイしたスマホゲームはポケモンgoだった。どんな年齢の人でも気軽に簡単にプレイできた。こういった人達が新しくゲームに参加した。つまり、もともとゲームが好きだった人ではなく、現実にいた人達を連れてきたと言える。hololiveはネットのアイドルということになっているけど、あれは現代のアイドルだと思う。現実のライブで盛り上がっているしファンも多い。今までアイドルに興味がなかった人達が参入した。何がいいかというと年齢や容姿関係なく面白ければアイドルになれること。年齢や容姿より内面のほうが重要で、日常配信からその人を判断できる。 + +マーケットは常に現実にある。 + +つまり、(1)興味がなかった人、(2)他分野にいた人を連れてくるといい。そうするとどんなものを作ればいいのか見えてくる。 + +分かる人にだけわかったらいいというのではだめ。どんな人でも楽しめるものを目指さないと。ただし、多様性は無視していい。せいぜい気にしても「すべての年齢の人間を対象にする」くらい。 + +## なぜtwitterをxと言わないのか + +xが何を指すのかわからないからというのが主な理由。かといってx(旧twitter)と書くのもめんどい。言葉の目的は言いたいことを相手に伝えること。よってtwitterで伝わるので私はそうしてる。逆にxでは伝わらない場合がある。 + +少し個人的事情も書いておく。 + +1. 最初からxというサービスで、そこから名前の力を積み上げていたなら問題ないが、xの場合はtwitterという名前を奪う形でxに命名を移行している +2. それまで私はxorg(またはlinuxのGUI)のことをxと言うことが多かった。どうしてもxと聞くとxorgを思い浮かべてしまう +3. 短すぎる名前は危険でxは特に危ない。変数やxxxなどの当て字に使用することがある + +`x.com`は好きなのか?と聞かれると、私は短い名前やdomainが好きなので`x.com`は好き。だからそのうちxと呼び出すかも。とはいえtwitterで通じるうちはtwitterだね。 + +## ueは動かない + +ue(unreal engine), asset, pluginなどは基本的には動きません。例えば、どこかに手順が書いてあったとして、その手順通りすんなり動くことは稀ですね。公式docsでも同じです。これはueの良いところでもあれば悪いところでもあります。 + +私のケースだと、私は最初に触ったのが5.3でした。数ヶ月間は5.3でゲームを作っていたわけですが、5.4にupdateしてみると今まで作ってきたものが全部動かなくなりました。なので、5.4では全部作り直しています。ueはそういうものだと理解しなければなりません。これは最初に理解しておいたほうがよいことでもあります。 + +しかし、そういった情報はあまりなく、そもそも日本語の情報は少ないです。情報が少ない理由としては動かないのだと思います。たとえ数ヶ月間は動いた手順でも数カ月後には動かなくなっていますよね。そのような理由から解説する人が少ないのだと思います。 + +ueとどう向き合えばいいのか。それは、ueは基本的に動かないということを理解することです。色々なものが動かなくてバグも多く、しかし、それはデフォルトです。 + +そこには「動かせるか、動かせないか」しかありません。動かないものは自分なりに動かしていくしかないのです。 + +ということでueへの向き合い方の話でした。 + +3Dゲーム自体がとんでもなく複雑なものなので、ゲームエンジンはどうしてもバグが多くなる。ueは悪くない。asset, pluginを作っている人も誰も悪くない。でも動かない。動かないものは動かせるしかない。 + +## ue vs unity + +unityは比較的安定していて情報が多く、assetやツールも豊富です。たいていは動くと思います。 + +反対にueは大抵の場合、動きません。動かないので情報も少なく、採用している企業や個人は少数になります。特に日本ではそのように感じます。 + +動かないので多くの初心者は「なんか動かない、よくわからない」となってやめてしまうのだと思います。 + +やはり、数ヶ月触ってきて思うのはueはおすすめしづらい。客観的に見てunityのほうがおすすめだと考えられます。 + +しかし、ueのバグが多く、せっかく作ったものが数ヶ月で動かなくなる環境というのは欠点でもあり利点でもある。 + +それだけupdateが速いということ。進化が速ければ速いほどバグは多くなるものです。どちらが合うかは人それぞれ。 + +私は最初にueを触ったときの感動を覚えていて、これからもueを触っていきたいと思います。ただし、ueはかなり大変です。ueはcrashしすぎるのでデータが消えます。気をつけましょう。 + +## 引っ張られる + +私達は様々な重力の影響を受けています。ゲーム制作に関して言うと、ゲームエンジンの影響を受けている。今回は主に、その重力的影響について解説します。 + +重力的影響と言いましたが、この表現はsyuiの価値観に由来します。 + +まず重力は自然界で最も弱い力の作用のこと。その現実創造あるいは現実的影響について話します。 + +ueはバグが多く壊れやすく安定していません。一方で先駆的でグラフィックが綺麗な特徴があります。それはueが掲げる理念や信念に基づくものなのでしょう。 + +ueのassetやplugin開発者は、意図せずその影響に引っ張られています。 + +重力がこの世界で最も弱い力であるにも関わらず、現在の宇宙環境を構築しているように、その力は小さいものだけど、時間経過とともに積み重なって現代のゲーム環境を構築しています。 + +私は、最初にcity sampleという最先端技術を集めたassetを使うことにしました。このassetに色々と追加していく方針を採用したのです。 + +なぜかというと、少なからずそのクオリティに引っ張られることになるからです。 + +一番最初に難易度が高く負荷が高く完成度が高いものを置くと、新たに作るものはそれに引っ張られてゆきます。つまり、自然とそれに合わせるようになるのです。 + +もちろん、これにはリスクがあります。そして、最大のリスクはいつも心理面にもたらされます。 + +具体的に説明しましょう。これは、人間の言葉で「自信」と表現されます。しかし、私は「自信」とは少し違うなと思っていて「心の強さ」と表現することにしましょう。 + +難易度が高いことに挑戦することは失敗する可能性も高まることを意味します。そして、失敗すると心理強度を失ってゆきます。 + +わかりやすく言うと、失敗すると自信を失い、成功すると自信がつくということです。 + +できるまでやめないこと、とりあえず完成させることが大切です。 + +だからこそ、もう一方のやり方も非常におすすめです。小さなこと、簡単なことからはじめるやり方です。 + +どちらが合うのかは人それぞれ。私に関して言うと両方の組み合わせです。 + +小さなところから完璧に作ることを目指しながらも、大本は最先端技術のassetを使用し、その引力に引っ張られています。 + +## なぜ小文字を使うのか + +いくつかの理由があります。 + +- 製品やサービスによってどこが大文字でどこが小文字かわからない。例えば、GithubなのかGitHubなのか。この場合は後者が正解だけど個別に判断するのも面倒 +- codeやurl、ほとんどの文章はローマ字入力の小文字で書いている。なにかの名前をコピーするときはurlからコピーしていて大抵小文字 +- 大文字と小文字が組み合わさると判断が難しい場合がある。例えば、I(アイ)なのかl(エル)なのか。全部小文字で書かれているなら、これはl(エル)だと判断しやすいですよね + +全部小文字なのは見る人によっては見づらいかもしれませんね。 + +ただ、大文字は変換が面倒であるにも関わらず、間違いも多く、判断も難しい。 + +それならわざわざ大文字変換を使わず全部小文字で書いちゃえという理由から小文字を使うようにしています。というより大文字変換はしません。 + +また、文章を見れば「小文字の人だ」とわかるので、そういった特徴が出るのもいいものだと今更ながらそう思っています。 + +yuiという物語は最も小さい物質の探求です。その意味で小さい文字を使うのは理にかなっていると言えるでしょう。まあこのへんは単なるsyuiの個性です。 + +ただし、例外もあってファイルパス等の場合は大文字を使用します。 + +## yuiとai + +文字の話の続きになります。なぜyuiはaiなのか。なぜ`i`で終わるのか、なぜ小文字を使うのかです。 + +|`y`|`u`|`i`|| +|---|---|---|---| +||||`a`| +||||`i`| + +私が好きな文字と数字はa, i, o, 1, 0です。この中で最も強いのは`a`と`i`かな。数字と組み合わせるなら`o1`とか強いですよ。 + +0はこの世界を意味し、1は存在を意味する。具体的にはoは惑星、iは人間みたいな感じですかね。pcの電源ボタンも1と0、もしくはi(nput), o(utput)の組み合わせ。 + +## なぜself-hostするのか + +普通にyoutubeやtwitterを使った方がいいのでは。youtubeとtwitterを使ってvtuberをやればいい。そう考える人も多いと思う。 + +これはもっともな意見で、既に有名な人が使う分にはいいと思う。けど、それ以外の人は他の場所を考えたほうがいいと思う。 + +被るんだよね、やることが。 + +「みんなやってることをやる」というのは、その人の経験値にならない。いや、なるかもしれないけど、その価値は低いと思う。 + +そもそもyoutubeでやろうと他の場所でやろうと再生数はたいして変わらないのである。 + +だったらいろんな世界を知り、いろんなことをしたほうが面白いでしょ。例えば、プログラムを書く人なら、自分でyoutubeのようなものを作って、そこで配信したほうがいい経験になると思う。 + +とはいえ、youtubeを研究するのはいいことで、現時点ではyoutubeしかないと思う。youtubeは今のところ稼げる場所なのだと思う。しかし、youtube以外で稼げる場所、方法はあるのかを考えていかないとね。youtubeはいつでもできる。 diff --git a/stream.md b/stream.md index 22b650d..f917a07 100644 --- a/stream.md +++ b/stream.md @@ -1,8 +1,22 @@ -[pixel streaming](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/unreal-engine-pixel-streaming-reference) +ライブ配信やゲームプレイ、配信保存をself-hostする方法です。 + +- game : [pixel streaming](https://github.com/EpicGames/PixelStreamingInfrastructure) +- live : [restreamer](https://github.com/datarhei/restreamer) +- video : [mediacms](https://github.com/mediacms-io/mediacms) +- bbs : [bsky/oauth](https://github.com/bluesky-social/cookbook/tree/main/python-oauth-web-app) + +## pixel streaming + +https://dev.epicgames.com/documentation/ja-jp/unreal-engine/unreal-engine-pixel-streaming-reference + +docs : https://github.com/EpicGames/PixelStreamingInfrastructure/tree/master/Frontend/Docs ```sh # https://github.com/EpicGamesExt/PixelStreamingInfrastructure -$ cd ~/github/PixelStreamingInfrastructure/Matchmaker/platform_scripts/cmd/ +$ mkdir -p ~/git && cd ~/git +$ git clone https://github.com/EpicGamesExt/PixelStreamingInfrastructure + +$ cd ~/git/PixelStreamingInfrastructure/Matchmaker/platform_scripts/cmd/ $ ./setup.bat $ ./run.bat # https://dev.epicgames.com/documentation/ja-jp/unreal-engine/unreal-engine-pixel-streaming-reference @@ -10,7 +24,7 @@ $ ./run.bat # --MatchmakerPort 9999 # Signaling and Web サーバーに対する次のコンフィギュレーション パラメータを設定します。 -$ cd ~/github/PixelStreamingInfrastructure/SignallingWebServer/platform_scripts/cmd/ +$ cd ~/git/PixelStreamingInfrastructure/SignallingWebServer/platform_scripts/cmd/ $ ./setup.bat $ ./Start_SignallingServer_nopublic.ps1 --UseMatchmaker true --MatchmakerAddress 127.0.0.1 --MatchmakerPort 9999 --PublicIp localhost --HttpPort 80 ``` @@ -21,4 +35,83 @@ urlは`http://127.0.0.1/?StreamerId=DefaultStreamer, http://127.0.0.1/?StreamerI ただ、アプリの起動数が多すぎるとserverの負荷が大きくなります。 -これを外部につなげる場合は[cloudflare tunnel](https://www.cloudflare.com/ja-jp/products/tunnel/)などを使いましょう。 \ No newline at end of file +これを外部につなげる場合は[cloudflare tunnel](https://www.cloudflare.com/ja-jp/products/tunnel/)などを使いましょう。 + +### err + +> webrtc connection negotiated + +このように表示される場合はipを変えてください。同じnetwork内だとうまくいかない場合があります。 + +### option + +https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-pixel-streaming-reference + +### disable player controller + +playerのcontrollerを無効にして配信のみにする方法です。 + +https://github.com/EpicGames/PixelStreamingInfrastructure/blob/master/Frontend/Docs/Customizing%20Player%20Input%20Options.md + +```ts + const config = new Config({ useUrlParams: true }); + config.setFlagEnabled(Flags.MouseInput, false); + config.setFlagEnabled(Flags.KeyboardInput, false); + config.setFlagEnabled(Flags.TouchInput, false); + config.setFlagEnabled(Flags.GamepadInput, false); + config.setFlagEnabled(Flags.XRControllerInput, false); + + const stream = new PixelStreaming(config); +``` + +もしくは`SignallingWebServer/Public/player.js`の以下の箇所を探して`false`にします。そして、settingを呼び出せないようにします。 + +```js +this.flags.set(Flags.KeyboardInput, new _SettingFlag__WEBPACK_IMPORTED_MODULE_2__.SettingFlag(Flags.KeyboardInput, 'Keyboard input', 'If enabled, send keyboard events to streamer', false, useUrlParams)); +this.flags.set(Flags.MouseInput, new _SettingFlag__WEBPACK_IMPORTED_MODULE_2__.SettingFlag(Flags.MouseInput, 'Mouse input', 'If enabled, send mouse events to streamer', false, useUrlParams)); +this.flags.set(Flags.TouchInput, new _SettingFlag__WEBPACK_IMPORTED_MODULE_2__.SettingFlag(Flags.TouchInput, 'Touch input', 'If enabled, send touch events to streamer', false, useUrlParams)); +this.flags.set(Flags.GamepadInput, new _SettingFlag__WEBPACK_IMPORTED_MODULE_2__.SettingFlag(Flags.GamepadInput, 'Gamepad input', 'If enabled, send gamepad events to streamer', false, useUrlParams)); +this.flags.set(Flags.XRControllerInput, new _SettingFlag__WEBPACK_IMPORTED_MODULE_2__.SettingFlag(Flags.XRControllerInput, 'XR controller input', 'If enabled, send XR controller events to streamer', false, useUrlParams)); +``` + +## restreamer + +```sh +$ git clone https://github.com/datarhei/restreamer +$ cd restreamer +$ docker compose up +``` + +```yml +services: + + restreamer: + image: datarhei/restreamer + #image: datarhei/restreamer:cuda-latest + ports: + - 8080:8080 + - 1935:1935 + - 6000:6000/udp + restart: always + volumes: + - ./data/config:/core/config + - ./data/data:/core/data +``` + +なるべく`rtmp`ではなく`srt`を使用してください。rtmpの`port:1925`に関しては使わないなら閉じても構いません。 + +## video + +配信後のvideoの保存先はrestreamerのserverに保存してhtmlをカスタマイズするのが一番いい。 + +ただし、自動化には仕組みやコードを書かないといけない。また、動画の安定性はserverやffempg(convert)に依存する。再生されるとserver全体が重くなることもありうるし、別のhost先でやったほうがいいかもしれない。 + +## bsky/oauth + +bbs, chat, commentなどはbskyのoauthを利用するのがいいでしょう。 + +連携に関しては実装できていませんが、大まかな流れを解説します。 + +まずoauthが完了したときに自サービスのアカウント作成を行います。これらは全部自動化されます。idはdidをそのまま使用します。 + +今回は簡易版なので、login画面に移るとbbsが表示され、投稿は自動でhandleを入れます。bbsは自分で作る必要があり、bsky/oauthは2024/10/23の時点では未完成です。 \ No newline at end of file diff --git a/verse.md b/verse.md index 89e436c..9b25cbe 100644 --- a/verse.md +++ b/verse.md @@ -4,33 +4,71 @@ aiverse project. このゲームはsns(atproto)とvrの統合を目指す2つの特徴があります。これをaiverseと呼ぶ。 -## 具体例 +## 計画 -- atprotoのアカウントでログインする -- β版では新しいキャラクター(モデル)を作る -- キャラクターの設定を作り、キャラと似た心を持つ人に配信プレイしてもらう +- atprotoのアカウントでログインできる +- 配信プレイヤーのモデルを2つ作る。ゲーム配信してもらう +- ゲーム内で交流できる。物語を進められる。ボスはレイドバトル ## ゲーム - 1キャラクターにつき、1スキル、1バースト、7凸が割り当てられる -アイはバーストが変身になっている。変身後は別キャラ扱いで新たに1スキル、1バーストが割り当てられている。 - -## 計画 - -1. まず新しいキャラを2人作る。設定を書いて、モデルを作る。そのキャラを自身としてゲーム配信をしてもらう。 -2. ゲーム内で交流できるようにする。物語を進められる。ボスはレイドバトルになる。 -3. もしうまくいけばさらに新しいキャラを作り、仲間を集める。 -4. 仲間が5人集まると1期生としてユニット(チーム)が生まれる。 -5. はじめてユニットが組まれるとゲームが一般公開され、ガチャで各キャラがピックアップされる。 - ## 配信 -1. 想い(物語や規則) -2. 喜び(嬉しいという感情を伝える) -3. 好き(笑い話) +1. 想い +2. 喜び +3. 好き 4. 交流(配信者同士の交流) +## FAQ + +### 名前はどうなるのか + +その人のアカウント名になる。ただし、名字はアイになる。これは任意。 + +### 各キャラクターモデルはどのように作られるのか + +動物モデルをベースに作成されます。最初は[fantasy](https://sketchfab.com/3d-models/quirky-series-fantasy-animals-vol-1-ce0013df63c64eadab968f8a439e744d)から。レベルが上ったり、イベントにて`動物 -> 人間 -> 神性`モデルに進化していきます。プレイヤーは最初に動物モデルを動かすことになります。 + + `-->` `-->` + +### アイはゲームに参加するのか + +アイはゲームには参加せず、物語に少し登場するキャラになると思われる。 + +各キャラは通常、普通のゲームキャラと変わらない性能をしているが、アイの場合はステータスやできることの上限設定、世界を作るうえでの必要性能をしているため、ゲーム参加に適さない。 + +syuiはゲームに参加するかもしれない。その場合、公平性を期すためレベルやステータス、その他はプレイヤー環境と同一となる。 + +### 仲間を集める + +まずファンタジー(理想)を創造する。それに合う人を探す。特に心理面(雰囲気)を重視する。 + +hololiveは採用を非常にうまくやっていて0期生やenを見ているとそのように感じる。特にenのメンバーの一部には、初心を忘れないタイプが数名いる。hololiveに参加していることへの喜びを今でも持っていて、それを感じられるところが見ている側も嬉しい。そういうタイプがいいと思う。 + +### 何がしたいのか + +見ている人を楽しませること、そして、やっている人に幸せな環境を提供すること。 + +技術面でいうと、現実世界と仮想世界の融合とアカウントの統合。 +具体的にはゲームで操作するキャラとvの姿が一つになった世界。ゲームアカウントはsnsアカウントと統合されている。この辺を目指したい。 + +もう少し具体的に。見ている人は何が見たいんだろう。やっている人は本当は何がしたいのだろうか。この規格は2つのことを考えて作った。 + +ユーザーは本当にアイを操作しプレイしたいのだろうか。本当は自分が主人公になって自分自身でゲームを戦いたいのではないのだろうか。ゲーム内の自分自身が沢山の人から認識され、応援されたうえでプレイするのは楽しいことだ。やっている人も見ている人も。 + +aiverseではこの2つを実現していきたいと考えている。 + +現実のsnsアカウントと自身のキャラを使ってゲームを配信したりプレイしたりする形式だ。この場合、3つの要素(sns, アバター, 主人公)、すべてがイコールになる。 + +||sns|avatar|game| +|--|--|--|--| +|aiverse|🟩|🟩|🟩| +|vtuber|🟩|🟩|🟥| +|通常配信|🟩|🟥|🟥| + + ## 自己紹介(アイの場合) 一つの言葉しか覚えられない。自分やリスナーのことをアイと呼ぶ。世界を作るのが趣味。普段は地球を歩き回っている。 @@ -56,68 +94,3 @@ aiverse project. アイは存在の意識を扱えるものとして、syuiの永零をモデルにキャラクター化したもの。それがアイになる。 ちなみに、永零とそれを生み出した本人は全く別であり、ほとんど無関係と言える。例えば、あなたと両親は別人だろう。永零の場合はそれよりさらに異なる。そんな感じだ。アイの場合は殆ど話さない。たまに色々と教えてくれるわけだが、それによってゲームが有利になることはない。このことは最初から決められている。私が決めたことなのかもしれないし、アイが決めたことなのかもしれない。それはわからない。 - -## FAQ - -### 各キャラクターモデルはどのように作られるのか - -動物モデルをベースに作成されます。最初は[fantasy](https://sketchfab.com/3d-models/quirky-series-fantasy-animals-vol-1-ce0013df63c64eadab968f8a439e744d)から。レベルが上ったり、イベントにて`動物 -> 人間 -> 神性`モデルに進化していきます。プレイヤーは最初に動物モデルを動かすことになります。 - - `-->` `-->` - -### アイはゲームに参加するのか - -syuiもしくはアイはゲームには参加せず、物語に少し登場するキャラになると思われる。 - -各キャラは通常、普通のゲームキャラと変わらない性能をしているが、アイの場合はステータスやできることの上限設定、世界を作るうえでの必要性能をしているため、ゲーム参加に適さない。 - -### 仲間を集める - -まずファンタジー(理想)を創造する。それに合う人を探す。特に心理面(雰囲気)を重視する。 - -hololiveは採用を非常にうまくやっていて0期生やenを見ているとそのように感じる。特にenのメンバーの一部には、初心を忘れないタイプが数名いる。hololiveに参加していることへの喜びを今でも持っていて、それを感じられるところが見ている側も嬉しい。そういうタイプがいいと思う。 - -### 何がしたいのか - -見ている人を楽しませること、そして、やっている人に幸せな環境を提供すること。 - -技術面でいうと、現実世界と仮想世界の融合とアカウントの統合。 -具体的にはゲームで操作するキャラとvの姿が一つになった世界。ゲームアカウントはsnsアカウントと統合されている。この辺を目指したい。 - -### 何がしたいのか2 - -もう少し具体的に。見ている人は何が見たいんだろう。やっている人は本当は何がしたいのだろうか。そのへんのことを考えて作った。 - -ユーザーは本当にアイを操作しプレイしたいのだろうか。本当は自分が主人公になって自分自身でゲームを戦いたいのではないのだろうか。ゲーム内の自分自身が沢山の人から認識され、応援されたうえでプレイするのは楽しいことだ。やっている人も見ている人も。 - -aiverseではこの2つを実現していきたいと考えている。 - -現実のsnsアカウントと自身のキャラを使ってゲームを配信したりプレイしたりする形式だ。この場合、3つの要素(sns, アバター, 主人公)、すべてがイコールになる。 - -||sns|avatar|game| -|--|--|--|--| -|aiverse|🟩|🟩|🟩| -|vtuber|🟩|🟩|🟥| -|通常配信|🟩|🟥|🟥| - -## 物語 - -### 序盤 - -1. 日常がある。日常が何者かによって破壊される。気がつくと見知らぬ土地。 -2. しばらく野宿(生活)のようなこと。孤独と不安。 -3. 魔物が襲ってくる。戦う。ピンチ。 -4. 見知らぬ誰かに助けられる。協力。 -5. この世界のことがわかってくる。 - -### 中盤 - -各キャラクターモデルは動物モデルから人間モデル、人間モデルから神性モデルに進化していく。例えば、`syui`はモデルに`ai`を使用するので少し特殊だが、このルールの適用範囲内であり動物モデルは存在する。このモデルが適用されるメンバーのコードネームは`fantasy`。 - -### 最終 - -1. アイがボスとして登場。戦う。 -2. 上の世界をよろしくと言われる。 -3. 地球が大量の軍艦に囲まれて爆撃されている。そこで最終ボスと戦う。 -4. アイは今までの世界を崩壊させ力に変えていく。このときコメントした人は記録される。ゲーム内でアイコンが球体に取り込まれていく演出。 -5. 2人に渡す。キャラは8凸。 \ No newline at end of file diff --git a/vmc.md b/vmc.md index 0d8e5da..0fb7eba 100644 --- a/vmc.md +++ b/vmc.md @@ -4,6 +4,8 @@ webcam(vmc) -> vseeface(vmc) -> vrm4u(vmc) ``` +docs : https://docs.warudo.app/jp/docs/mocap/vmc + ## 使用 - [ue 5.4](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/unreal-engine-5.4-release-notes) @@ -44,24 +46,28 @@ ABPを切り替えることで操作とモーションキャプチャができ - 表情が動かない https://git.syui.ai/ai/ue/issues/9 -## img +## livelink -example +build後に表情が動かない場合はlivelinkを使用します。これはiphoneに`livelink face`というappがあります。ueでいくつかのpluginを有効にします。 -- vseeface `port:39539`, `>39501` +- live link +- apple arkit +- apple arkit face support -![](https://git.syui.ai/ai/ue/raw/branch/main/issue/screenshots/issue-9-0002.png) +`/VRM4U/Util/Actor/latest/BP_LiveLinkFace`をmapにおいて、`live link subject -> iphone`, `target actor sk -> SK_$name`を設定します。 -- webcam `port:39501` +character(player)にlivelinkを当てるにはblueprintを編集する必要があります。characterのdirにでも`BP_LiveLinkFace`をcopyして`BP_Player(CBP_Character)`に追加します。 -![](https://git.syui.ai/ai/ue/raw/branch/main/issue/screenshots/issue-9-0003.png) +ここで`BP_LiveLinkFace -> livelink subject -> iphone`をセットしておきます。 -- ue5.4.4 `vmc:39539` +次に`BP_LiveLinkFace`を以下のような形で`sk_$name`に置き換えます。場所はコメントを参考にしてください。私の場合は見た目をカスタマイズしているので少し複雑です。 -![](https://git.syui.ai/ai/ue/raw/branch/main/issue/screenshots/issue-9-0004.png) +https://blueprintue.com/blueprint/pu_xl52s/ -## vmc4ue +## vmcで行くべきか -- https://github.com/HAL9HARUKU/VMC4UE -- https://github.com/HAL9HARUKU/ueOSC +基本的には依存関係が少なく使うアプリが少ないほうがいいですね。vmcの更新頻度やclient, vrm1のsupport状況を見るとueはlivelink路線のほうがいいかもしれません。 +仮に`webcam motion capture -> vrm4u`で表情も体も動かせるならvmcで問題ないですが、表情にlivelinkを使うなら全部統一するのがいいですね。 + +[mocopi](https://apps.apple.com/jp/app/mocopi/id6444393701)や[iclone](https://www.unrealengine.com/marketplace/ja/product/iclone-unreal-live-link)はlivelinkなのでそちらが使えると思います。 \ No newline at end of file