diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..73008fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*/*-lock.json +*/node_modules +*.sqlite +*.lock +*target diff --git a/docker/PixelStreamingInfrastructure/Public/player.html b/docker/PixelStreamingInfrastructure/Public/player.html new file mode 100644 index 0000000..59b073e --- /dev/null +++ b/docker/PixelStreamingInfrastructure/Public/player.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + Pixel Streaming + + + + + + +
+ /comment +
+ + diff --git a/docker/python-oauth-web-app/Dockerfile b/docker/python-oauth-web-app/Dockerfile new file mode 100644 index 0000000..86e031f --- /dev/null +++ b/docker/python-oauth-web-app/Dockerfile @@ -0,0 +1,7 @@ +FROM syui/aios + +WORKDIR /app +COPY . . +RUN pacman -Syu rye --noconfirm +RUN rye sync +#CMD ["rye", "run", "flask", "run"] diff --git a/docker/python-oauth-web-app/compose.yml b/docker/python-oauth-web-app/compose.yml new file mode 100644 index 0000000..58fa04b --- /dev/null +++ b/docker/python-oauth-web-app/compose.yml @@ -0,0 +1,10 @@ +services: + web: + build: . + env_file: + - ./.env + ports: + - "5000:5000" + volumes: + - ./demo.sqlite:/app/demo.sqlite + command: rye run flask run diff --git a/docker/python-oauth-web-app/templates/base.html b/docker/python-oauth-web-app/templates/base.html new file mode 100644 index 0000000..08c0a6f --- /dev/null +++ b/docker/python-oauth-web-app/templates/base.html @@ -0,0 +1,40 @@ + + + + + + + + atproto OAuth Web Service Example + + +
+
+ {% if g.user %} + {% endif %} +
+ +
+
+
+ {% for message in get_flashed_messages() %} +
{{ message }}
+ {% endfor %} + {% block content %}{% endblock %} +
+
+ + diff --git a/docker/python-oauth-web-app/templates/home.html b/docker/python-oauth-web-app/templates/home.html new file mode 100644 index 0000000..80ced36 --- /dev/null +++ b/docker/python-oauth-web-app/templates/home.html @@ -0,0 +1,15 @@ +{% extends 'base.html' %} +{% block content %} +{% if g.user %} +
+ +
+@{{ g.user['handle'] }} +
+ +
+ +{% else %} +

Login to get started!

+{% endif %} +{% endblock %} diff --git a/docker/restreamer/compose.yaml b/docker/restreamer/compose.yaml new file mode 100644 index 0000000..3639ad8 --- /dev/null +++ b/docker/restreamer/compose.yaml @@ -0,0 +1,13 @@ +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 diff --git a/docker/rust-bbs/Cargo.toml b/docker/rust-bbs/Cargo.toml new file mode 100644 index 0000000..b950790 --- /dev/null +++ b/docker/rust-bbs/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "rust-bbs" +version = "0.1.0" +edition = "2021" + +[dependencies] +actix-web = "4.0" +url = "2.3.1" +rusqlite = { version = "0.28", features = ["bundled"] } +serde = { version = "1.0", features = ["derive"] } +askama = "*" diff --git a/docker/rust-bbs/Dockerfile b/docker/rust-bbs/Dockerfile new file mode 100644 index 0000000..910bd0b --- /dev/null +++ b/docker/rust-bbs/Dockerfile @@ -0,0 +1,7 @@ +FROM syui/aios + +WORKDIR /app +COPY . . +RUN cargo build --release +COPY ./templates /templates +CMD ["/app/target/release/rust-bbs"] diff --git a/docker/rust-bbs/compose.yml b/docker/rust-bbs/compose.yml new file mode 100644 index 0000000..3b65404 --- /dev/null +++ b/docker/rust-bbs/compose.yml @@ -0,0 +1,7 @@ +services: + web: + build: . + ports: + - "8782:8782" + volumes: + - ./sqlite.db:/app/sqlite.db diff --git a/docker/rust-bbs/src/main.rs b/docker/rust-bbs/src/main.rs new file mode 100644 index 0000000..3ac4d66 --- /dev/null +++ b/docker/rust-bbs/src/main.rs @@ -0,0 +1,127 @@ +use askama::Template; +use serde::{Deserialize, Serialize}; +use rusqlite::{Connection, Result as SqliteResult}; +use actix_web::{web, App, HttpServer, HttpResponse, Responder, HttpRequest, Error}; +use actix_web::error::{ErrorInternalServerError}; + +use std::fmt; +impl fmt::Display for Post { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "@{} {}", self.handle.as_deref().unwrap_or("anonymous"), self.content) + } +} + +#[derive(Deserialize, Default)] +struct QueryParams { + handle: Option, +} +#[derive(Serialize, Deserialize)] +struct Post { + id: i32, + handle: Option, + content: String, +} + +#[derive(Template)] +#[template(path = "index.html")] +struct IndexTemplate { + posts: Vec, +} + +#[derive(Template)] +#[template(path = "post.html")] +struct PostTemplate {} + +fn init_db() -> SqliteResult<()> { + let conn = Connection::open("sqlite.db")?; + conn.execute( + "CREATE TABLE IF NOT EXISTS posts ( + id INTEGER PRIMARY KEY, + handle TEXT NOT NULL, + content TEXT NOT NULL + )", + [], + )?; + Ok(()) +} + +async fn index() -> impl Responder { + let conn = Connection::open("sqlite.db").unwrap(); + let mut stmt = conn.prepare("SELECT id, handle, content FROM posts ORDER BY id DESC").unwrap(); + let posts = stmt.query_map([], |row| { + Ok(Post { + id: row.get(0)?, + handle: row.get(1)?, + content: row.get(2)?, + }) + }).unwrap().filter_map(Result::ok).collect::>(); + + let template = IndexTemplate { posts }; + HttpResponse::Ok().body(template.render().unwrap()) +} + +async fn post_form() -> impl Responder { + let template = PostTemplate {}; + HttpResponse::Ok().body(template.render().unwrap()) +} + +#[derive(Deserialize)] +struct FormData { + handle: String, + content: String, +} + +async fn submit_post( + req: HttpRequest, + form: web::Form +) -> Result { + let query = web::Query::::from_query(req.query_string()) + .unwrap_or_else(|_| web::Query(QueryParams { handle: None })); + //let handle = query.handle.clone().filter(|h| !h.is_empty()); + //println!("Debug: Extracted handle: {:?}", handle); + let handle = if !form.handle.is_empty() { + form.handle.clone() + } else { + query.handle.clone().unwrap_or_default() + }; + + println!("Debug: Using handle: {:?}", handle); + + let conn = Connection::open("sqlite.db") + .map_err(|_| ErrorInternalServerError("Database connection failed"))?; + let result = conn.execute( + "INSERT INTO posts (handle, content) VALUES (?1, ?2)", + &[&form.handle, &form.content], + ); + match result { + Ok(_) => { + let redirect_url = if !handle.is_empty() { + format!("/?handle={}", handle) + } else { + "/".to_string() + }; + Ok(HttpResponse::SeeOther() + .append_header(("Location", + redirect_url)) + .finish()) + }, + + //Ok(_) => Ok(web::Redirect::to("/").see_other()), + Err(_) => Err(ErrorInternalServerError("Failed to insert post")), + } +} + +#[actix_web::main] +async fn main() -> std::io::Result<()> { + init_db().unwrap(); + + HttpServer::new(|| { + App::new() + .route("/", web::get().to(index)) + .route("/post", web::get().to(post_form)) + .route("/submit", web::post().to(submit_post)) + }) + .bind("0.0.0.0:8782")? + .run() + .await +} diff --git a/docker/rust-bbs/templates/index.html b/docker/rust-bbs/templates/index.html new file mode 100644 index 0000000..fbe4b49 --- /dev/null +++ b/docker/rust-bbs/templates/index.html @@ -0,0 +1,67 @@ + + + + Simple BBS + + +
    + {% for post in posts %} +
  • {{ post }}
  • + {% endfor %} +
+
+ + + +
+ + + + + + + diff --git a/docker/rust-bbs/templates/post.html b/docker/rust-bbs/templates/post.html new file mode 100644 index 0000000..0246b13 --- /dev/null +++ b/docker/rust-bbs/templates/post.html @@ -0,0 +1,14 @@ + + + + New Post + + +

New Post

+
+ +
+ +
+ + diff --git a/issue/screenshots/issue-9-0001.png b/issue/screenshots/issue-9-0001.png new file mode 100755 index 0000000..08389bc Binary files /dev/null and b/issue/screenshots/issue-9-0001.png differ diff --git a/issue/screenshots/issue-9-0002.png b/issue/screenshots/issue-9-0002.png new file mode 100755 index 0000000..e87c6b9 Binary files /dev/null and b/issue/screenshots/issue-9-0002.png differ diff --git a/issue/screenshots/issue-9-0003.png b/issue/screenshots/issue-9-0003.png new file mode 100755 index 0000000..1539db6 Binary files /dev/null and b/issue/screenshots/issue-9-0003.png differ diff --git a/issue/screenshots/issue-9-0004.png b/issue/screenshots/issue-9-0004.png new file mode 100755 index 0000000..7bb0701 Binary files /dev/null and b/issue/screenshots/issue-9-0004.png differ diff --git a/plugins/vmc4ue/VMC4UEBlueprintFunctionLibrary.cpp.patch b/plugins/vmc4ue/VMC4UEBlueprintFunctionLibrary.cpp.patch new file mode 100644 index 0000000..4d89ecd --- /dev/null +++ b/plugins/vmc4ue/VMC4UEBlueprintFunctionLibrary.cpp.patch @@ -0,0 +1,56 @@ +--- ./VMC4UE/VMC4UE/Source/VMC4UE/Source/VMC4UEBlueprintFunctionLibrary.cpp ++++ ./VMC4UEBlueprintFunctionLibrary.cpp +@@ -119,27 +119,29 @@ UVMC4UEStreamingSkeletalMeshTransform* UVMC4UEBlueprin + { + return nullptr; + } +- ++ ++ UVMC4UEStreamingSkeletalMeshTransform* StreamingSkeletalMeshTransform = nullptr; ++ ++ // Try to get existing transform + { +- // Get + FRWScopeLock RWScopeLock(OSCManager->RWLock, FRWScopeLockType::SLT_ReadOnly); +- auto StreamingSkeletalMeshTransform = OSCManager->StreamingSkeletalMeshTransformMap.Find(Port); +- if (StreamingSkeletalMeshTransform != nullptr) ++ auto FoundTransform = OSCManager->StreamingSkeletalMeshTransformMap.Find(Port); ++ if (FoundTransform != nullptr) + { +- return *StreamingSkeletalMeshTransform; ++ return *FoundTransform; + } + } ++ ++ // Create new transform if not found + { +- // Create + FRWScopeLock RWScopeLock(OSCManager->RWLock, FRWScopeLockType::SLT_Write); +- auto StreamingSkeletalMeshTransform = OSCManager->StreamingSkeletalMeshTransformMap.Find(Port); +- if (StreamingSkeletalMeshTransform != nullptr) ++ auto FoundTransform = OSCManager->StreamingSkeletalMeshTransformMap.Find(Port); ++ if (FoundTransform != nullptr) + { +- return *StreamingSkeletalMeshTransform; ++ return *FoundTransform; + } +- UVMC4UEStreamingSkeletalMeshTransform* NewStreamingSkeletalMeshTransform = NewObject(); + +- //FRWScopeLock RWScopeLock2(NewStreamingSkeletalMeshTransform->RWLock, FRWScopeLockType::SLT_Write); ++ UVMC4UEStreamingSkeletalMeshTransform* NewStreamingSkeletalMeshTransform = NewObject(); + OSCManager->StreamingSkeletalMeshTransformMap.Emplace(Port, NewStreamingSkeletalMeshTransform); + + // Bind Port +@@ -149,9 +151,10 @@ UVMC4UEStreamingSkeletalMeshTransform* UVMC4UEBlueprin + + OSCManager->OscReceivers.Emplace(OscReceiver); + +- return NewStreamingSkeletalMeshTransform; ++ StreamingSkeletalMeshTransform = NewStreamingSkeletalMeshTransform; + } +- return nullptr; ++ ++ return StreamingSkeletalMeshTransform; + } + + void UVMC4UEBlueprintFunctionLibrary::RefreshConnection(float Seconds) diff --git a/plugins/vmc4ue/VMC4UEBoneMappingAssetFactory.cpp.patch b/plugins/vmc4ue/VMC4UEBoneMappingAssetFactory.cpp.patch new file mode 100644 index 0000000..2020e39 --- /dev/null +++ b/plugins/vmc4ue/VMC4UEBoneMappingAssetFactory.cpp.patch @@ -0,0 +1,25 @@ +--- ./VMC4UE/Source/VMC4UEEd/Source/VMC4UEBoneMappingAssetFactory.cpp ++++ ./VMC4UEBoneMappingAssetFactory.cpp +@@ -5,6 +5,8 @@ + #include "../../VMC4UE/Include/VMC4UEStreamingData.h" + #include "Dom/JsonObject.h" + #include "JsonObjectConverter.h" ++#include "UObject/ConstructorHelpers.h" ++#include "UObject/UObjectGlobals.h" + + UVMC4UEBoneMappingAssetFactory::UVMC4UEBoneMappingAssetFactory(const FObjectInitializer &ObjectInitializer) + : Super(ObjectInitializer) +@@ -26,11 +28,12 @@ + return UVMC4UEVRMMapping::StaticClass(); + } + ++ + UObject *UVMC4UEBoneMappingAssetFactory::FactoryCreateText(UClass *InClass, UObject *InParent, FName InName, EObjectFlags Flags, UObject *Context, const TCHAR *Type, const TCHAR *&Buffer, const TCHAR *BuferEnd, FFeedbackContext *Warn) + { + FString TextData = FString(Buffer); + +- UVMC4UEVRMMapping *NewAsset = CastChecked(StaticConstructObject_Internal(InClass, InParent, InName, Flags)); ++ UVMC4UEVRMMapping* NewAsset = NewObject(InParent, InClass, InName, Flags); + if (!IsValid(NewAsset)) + { + return nullptr; diff --git a/plugins/vmc4ue/readme.md b/plugins/vmc4ue/readme.md new file mode 100644 index 0000000..b0ad812 --- /dev/null +++ b/plugins/vmc4ue/readme.md @@ -0,0 +1,23 @@ +vmc4ue patch rebuild for `ue5.4` + +- https://github.com/HAL9HARUKU/VMC4UE +- https://github.com/HAL9HARUKU/ueOSC +- https://github.com/HAL9HARUKU/VRMMapExporter +- https://github.com/vrm-c/UniVRM + +[unity](https://unity.com/)で`VRMMapExporter`から`$model.vrmmap`を作る。ABPで読み込む。 + +`VMC4UE`は`$project.sln`を生成して`visual studio solution`でrebuildする。 + +ただし、この方法で表情を動かすことはできない。 + +```sh +$ git clone https://github.com/HAL9HARUKU/VMC4UE +$ cd VMC4UE +$ git reset --hard b5a6cf96e5928551d8e3e20b74705e3e8f22a1df +$ cd .. + +# example +$ patch -u ./VMC4UE/VMC4UE/Source/VMC4UE/Source/VMC4UEBlueprintFunctionLibrary.cpp < VMC4UEBlueprintFunctionLibrary.cpp.patch +$ patch -u ./VMC4UE/VMC4UE/Source/VMC4UEEd/Source/VMC4UEBoneMappingAssetFactory.cpp < VMC4UEBoneMappingAssetFactory.cpp.patch +``` diff --git a/readme.md b/readme.md index 3e4d6ff..3174ea3 100644 --- a/readme.md +++ b/readme.md @@ -1,41 +1,20 @@ # yui -- pixel streaming : https://ue.syui.ai - support : `windows 64bit` -|title|推奨スペック| +|title|spec| |---|---| |cpu|AMD Ryzen 7 5700X| |memory|32GB / DDR4-3200 DIMM (PC4-25600)| |gpu|GeForce RTX 4060Ti 8GB| |storage|1TB M.2 NVMe SSD| -ハイスペックなパソコンが必要です。 - -## help - -web板は同じ画面と操作が共有されています。他の人がログインしてプレイしているときは邪魔しないようにしましょう。 - -## download & start - -ダウンロードは数時間かかります。 - -```sh -# ダウンロード -$ git clone https://git.syui.ai/ai/ue -$ cd ue - -# 解凍 -$ aunpack yui.zip - -# 実行 -$ ./Windows/yui.exe -``` - ## log |version|commit| |---|---| -|v0.1 β|世界を作っているところ| -|v0.2 β|物語を作った。webに対応| +|v0.1 β|world create| +|v0.2 β|support web| +|v0.3 β|support vmc| + diff --git a/slidev/.gitignore b/slidev/.gitignore new file mode 100644 index 0000000..52f2323 --- /dev/null +++ b/slidev/.gitignore @@ -0,0 +1,7 @@ +node_modules +.DS_Store +dist +*.local +.vite-inspect +.remote-assets +components.d.ts diff --git a/slidev/.npmrc b/slidev/.npmrc new file mode 100644 index 0000000..05932b8 --- /dev/null +++ b/slidev/.npmrc @@ -0,0 +1,3 @@ +# for pnpm +shamefully-hoist=true +auto-install-peers=true diff --git a/slidev/README.md b/slidev/README.md new file mode 100644 index 0000000..0b3e721 --- /dev/null +++ b/slidev/README.md @@ -0,0 +1,15 @@ +# Welcome to [Slidev](https://github.com/slidevjs/slidev)! + +To start the slide show: + +- `npm install` +- `npm run dev` +- visit + +Edit the [slides.md](./slides.md) to see the changes. + +Learn more about Slidev at the [documentation](https://sli.dev/). + +```sh +$ slidev build --base /slide +``` diff --git a/slidev/components/Counter.vue b/slidev/components/Counter.vue new file mode 100644 index 0000000..eaa6a79 --- /dev/null +++ b/slidev/components/Counter.vue @@ -0,0 +1,37 @@ + + + diff --git a/slidev/netlify.toml b/slidev/netlify.toml new file mode 100644 index 0000000..9f91d0e --- /dev/null +++ b/slidev/netlify.toml @@ -0,0 +1,16 @@ +[build] +publish = "dist" +command = "npm run build" + +[build.environment] +NODE_VERSION = "20" + +[[redirects]] +from = "/.well-known/*" +to = "/.well-known/:splat" +status = 200 + +[[redirects]] +from = "/*" +to = "/index.html" +status = 200 diff --git a/slidev/package.json b/slidev/package.json new file mode 100644 index 0000000..e069d20 --- /dev/null +++ b/slidev/package.json @@ -0,0 +1,17 @@ +{ + "name": "slidev", + "type": "module", + "private": true, + "scripts": { + "build": "slidev build", + "dev": "slidev --open", + "export": "slidev export" + }, + "dependencies": { + "@slidev/cli": "^0.49.29", + "@slidev/theme-default": "latest", + "@slidev/theme-seriph": "latest", + "slidev-theme-eloc": "^1.0.2", + "vue": "^3.4.38" + } +} diff --git a/slidev/pages/imported-slides.md b/slidev/pages/imported-slides.md new file mode 100644 index 0000000..3fff217 --- /dev/null +++ b/slidev/pages/imported-slides.md @@ -0,0 +1,27 @@ +# Imported Slides + +You can split your slides.md into multiple files and organize them as you want using the `src` attribute. + +#### `slides.md` + +```markdown +# Page 1 + +Page 2 from main entry. + +--- + +## src: ./subpage.md +``` + +
+ +#### `subpage.md` + +```markdown +# Page 2 + +Page 2 from another file. +``` + +[Learn more](https://sli.dev/guide/syntax.html#importing-slides) diff --git a/slidev/slides.md b/slidev/slides.md new file mode 100644 index 0000000..8ce5869 --- /dev/null +++ b/slidev/slides.md @@ -0,0 +1,135 @@ +--- +theme: eloc +class: text-center +highlighter: shiki +lineNumbers: false +info: | + ## Slidev Starter Template + Presentation slides for developers. + + Learn more at [Sli.dev](https://sli.dev) +drawings: + persist: false +transition: slide-left +title: Unreal Engine 5.5 | aiue +--- + +# `aiue` + +物語は空と海に囲まれた西の都(みやこ)からはじまる... + +--- + +## 配信で使える最新技術の紹介 + +### `unreal engine` + +- vrm4u, vmc, livelink, streaming +- chatgpt, atproto +- `ai` + `ue` + +--- + +## `unreal engine` + +- ue 5.5.0p +- ue 5.4.4 + +--- + +## `vrm4u` + +キャラクターを表示しよう + +--- + +`vmc`と`livelink`で体の動きを反映 + +- vmcはABP +- livelinkはCBP + +--- + +## `web browser` + +WBPからwebを使おう + +--- + +- widget3dをworldに表示させると画質が悪いので`EngineMaterials/Widget3DPassThrough`以外のmaterialを使います + + + +https://blueprintue.com/blueprint/-49_059w/ + +--- + +## `pixel streaming` + +webでゲーム配信や操作ができる + +```sh +$ git clone https://github.com/EpicGamesExt/PixelStreamingInfrastructure +$ cd ./PixelStreamingInfrastructure/SignallingWebServer/platform_scripts/cmd/ +$ ./Start_SignallingServer_nopublic.ps1 +``` + +--- + +## `atproto` + +blueskyが使っているprotocol + +--- + +## `game animation sample` + +キャラクターの基本操作をカスタマイズ + +--- + +## `city sample` + +人や車が動く最先端の街 + +--- + +## `ultra dynamic sky` + +- `sky atmoshpere` + `volumetric cloud` + +--- + +## `whisper` + `chatgpt` + `elevenlabs` + +キャラ設定と会話 + +- whisper : RuntimeSpeechRecognizer + +--- + +```sh +# perplexity.ai +$ curl -X POST "https://api.elevenlabs.io/v1/text-to-speech/VOICE_ID" \ + -H "xi-api-key: YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "text": "Hello world!", + "model_id": "eleven_monolingual_v1", + "voice_settings": { + "stability": 0.5, + "similarity_boost": 0.5 + } + }' \ + --output output.mp3 +``` + +--- + +@syui.ai + +
+ + diff --git a/slidev/snippets/external.ts b/slidev/snippets/external.ts new file mode 100644 index 0000000..40c109b --- /dev/null +++ b/slidev/snippets/external.ts @@ -0,0 +1,12 @@ +/* eslint-disable no-console */ + +// #region snippet +// Inside ./snippets/external.ts +export function emptyArray(length: number) { + return Array.from({ length }) +} +// #endregion snippet + +export function sayHello() { + console.log('Hello from snippets/external.ts') +} diff --git a/slidev/vercel.json b/slidev/vercel.json new file mode 100644 index 0000000..9276941 --- /dev/null +++ b/slidev/vercel.json @@ -0,0 +1,7 @@ +{ + "rewrites": [ + { "source": "/(.*)", "destination": "/index.html" } + ], + "buildCommand": "npm run build", + "outputDirectory": "dist" +} diff --git a/texture/T__02.PNG b/texture/T__02.PNG new file mode 100644 index 0000000..8b0898c Binary files /dev/null and b/texture/T__02.PNG differ diff --git a/verse/bgm/aiend.mp3 b/verse/bgm/aiend.mp3 new file mode 100644 index 0000000..ece695a Binary files /dev/null and b/verse/bgm/aiend.mp3 differ diff --git a/verse/bgm/aiend.wav b/verse/bgm/aiend.wav new file mode 100644 index 0000000..83fc495 Binary files /dev/null and b/verse/bgm/aiend.wav differ diff --git a/verse/bgm/aihouse.mp3 b/verse/bgm/aihouse.mp3 new file mode 100644 index 0000000..3b9d68f Binary files /dev/null and b/verse/bgm/aihouse.mp3 differ diff --git a/verse/bgm/aihouse.wav b/verse/bgm/aihouse.wav new file mode 100644 index 0000000..c5fd910 Binary files /dev/null and b/verse/bgm/aihouse.wav differ diff --git a/verse/bgm/aiverse.mp3 b/verse/bgm/aiverse.mp3 new file mode 100644 index 0000000..1b6a4a6 Binary files /dev/null and b/verse/bgm/aiverse.mp3 differ diff --git a/verse/bgm/aiverse.wav b/verse/bgm/aiverse.wav new file mode 100644 index 0000000..f41c4d0 Binary files /dev/null and b/verse/bgm/aiverse.wav differ diff --git a/verse/bgm/test.wav b/verse/bgm/test.wav new file mode 100644 index 0000000..608b2ec Binary files /dev/null and b/verse/bgm/test.wav differ diff --git a/verse/img/aiverse.png b/verse/img/aiverse.png new file mode 100644 index 0000000..66c406b Binary files /dev/null and b/verse/img/aiverse.png differ diff --git a/verse/img/ep.mdp b/verse/img/ep.mdp new file mode 100644 index 0000000..639d781 Binary files /dev/null and b/verse/img/ep.mdp differ diff --git a/verse/img/ep.png b/verse/img/ep.png new file mode 100644 index 0000000..7ac4fcb Binary files /dev/null and b/verse/img/ep.png differ diff --git a/verse/img/fly.gif b/verse/img/fly.gif new file mode 100644 index 0000000..ccf7223 Binary files /dev/null and b/verse/img/fly.gif differ diff --git a/verse/img/mode_ai.png b/verse/img/mode_ai.png new file mode 100644 index 0000000..fb31001 Binary files /dev/null and b/verse/img/mode_ai.png differ diff --git a/verse/img/mode_normal.png b/verse/img/mode_normal.png new file mode 100644 index 0000000..48cd30c Binary files /dev/null and b/verse/img/mode_normal.png differ diff --git a/verse/img/pomudachi.gif b/verse/img/pomudachi.gif new file mode 100644 index 0000000..536dc5c Binary files /dev/null and b/verse/img/pomudachi.gif differ diff --git a/verse/img/recoder.gif b/verse/img/recoder.gif new file mode 100644 index 0000000..e42f23a Binary files /dev/null and b/verse/img/recoder.gif differ diff --git a/verse/img/shinryu.png b/verse/img/shinryu.png new file mode 100644 index 0000000..96e8ef8 Binary files /dev/null and b/verse/img/shinryu.png differ diff --git a/verse/img/ue.mdp b/verse/img/ue.mdp new file mode 100644 index 0000000..1279f06 Binary files /dev/null and b/verse/img/ue.mdp differ diff --git a/verse/img/ue.png b/verse/img/ue.png new file mode 100644 index 0000000..732f45f Binary files /dev/null and b/verse/img/ue.png differ diff --git a/verse/img/wa.png b/verse/img/wa.png new file mode 100644 index 0000000..a271d61 Binary files /dev/null and b/verse/img/wa.png differ diff --git a/verse/img/wall.png b/verse/img/wall.png new file mode 100644 index 0000000..4a8e57e Binary files /dev/null and b/verse/img/wall.png differ diff --git a/verse/md/ep.md b/verse/md/ep.md new file mode 100644 index 0000000..3b95d7d --- /dev/null +++ b/verse/md/ep.md @@ -0,0 +1,16 @@ +# syui・ai + +(シュイ・アイ) + +THE FUZZY ONE + +|title|body| +|---|---| +|nickname|syai| +|age|∞| +|height|123cm| +|birthday|1/23| +|lang|ja & en| +|text|「hello ai !」 一つの言葉しか覚えられない。自分やリスナーのことをアイと呼ぶ。世界を作るのが趣味。普段は地球を歩き回っている。| +|en|"Hello Ai!" I can only remember one word. I call myself and my listeners Ai. My hobby is creating worlds. I usually walk around the Earth.| + diff --git a/verse/md/ue.md b/verse/md/ue.md new file mode 100644 index 0000000..cdc4253 --- /dev/null +++ b/verse/md/ue.md @@ -0,0 +1,54 @@ +# Unreal Engine 5.4 | 初めてのゲーム制作、世界を作る + +## vrm4u + +キャラクターを表示しよう。 + +## game animation sample + +今後はこの形式が基本になりそう。 + +## city sample + +最初に難易度と負荷を高くする。 + +## sky atmoshpere + volumetric cloud + +`dynamic volumetric sky -> ultra dynamic sky` + +## whisper + chatgpt + elevenlabs + +- whisper : RuntimeSpeechRecognizer + +```sh +# perplexity.ai +$ curl https://api.openai.com/v1/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -d '{ + "model": "gpt-4o-mini", + "messages": [{"role": "user", "content": "Your question here"}], + "temperature": 0.7 + }' +``` + +```sh +# perplexity.ai +$ curl -X POST "https://api.elevenlabs.io/v1/text-to-speech/VOICE_ID" \ + -H "xi-api-key: YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "text": "Hello world!", + "model_id": "eleven_monolingual_v1", + "voice_settings": { + "stability": 0.5, + "similarity_boost": 0.5 + } + }' \ + --output output.mp3 +``` + +## ue vs unity + +ueは手順通りやっても動くことは稀。つまり、動かない。そのため情報も少ない。unityがおすすめ。 + diff --git a/verse/music/aidream.mp3 b/verse/music/aidream.mp3 new file mode 100644 index 0000000..d6263dd Binary files /dev/null and b/verse/music/aidream.mp3 differ diff --git a/verse/music/aimoon.mp3 b/verse/music/aimoon.mp3 new file mode 100644 index 0000000..4078d8e Binary files /dev/null and b/verse/music/aimoon.mp3 differ diff --git a/verse/music/aimoon.wav b/verse/music/aimoon.wav new file mode 100644 index 0000000..1966eb1 Binary files /dev/null and b/verse/music/aimoon.wav differ diff --git a/verse/music/aipalette.mp3 b/verse/music/aipalette.mp3 new file mode 100644 index 0000000..9ed42d8 Binary files /dev/null and b/verse/music/aipalette.mp3 differ diff --git a/verse/readme.md b/verse/readme.md new file mode 100644 index 0000000..9ede601 --- /dev/null +++ b/verse/readme.md @@ -0,0 +1,26 @@ +# aiverse + +aiverse project. + +- https://youtube.com/@syai + +## AI + +```json +{ + "music": "https://suno.com/@syui", + "anime": "https://domoai.app", + "3d": "https://tripo3d.ai" +} +``` + +## ref + +- [octoverse](https://octoverse.github.com/) +- [hololive](https://hololive.hololivepro.com/talents?gp=myth) + +## + +character, lyrics, composition, illustrations, game production, modeling, etc. + +© syui diff --git a/verse/video/op.mp4 b/verse/video/op.mp4 new file mode 100644 index 0000000..f394cdc Binary files /dev/null and b/verse/video/op.mp4 differ diff --git a/verse/video/opload.mp4 b/verse/video/opload.mp4 new file mode 100644 index 0000000..97ba933 Binary files /dev/null and b/verse/video/opload.mp4 differ