Skip to content

Commit

Permalink
Merge branch 'master' into zh-hant
Browse files Browse the repository at this point in the history
  • Loading branch information
yelandiealma authored Jun 27, 2024
2 parents 422e866 + 090cc06 commit 2e8ecfa
Show file tree
Hide file tree
Showing 5 changed files with 324 additions and 4 deletions.
7 changes: 5 additions & 2 deletions .docs/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

set -eu

BASE_URL="$1"
LATEST_VERSION="$2"

mkdir -p static
jq --raw-output '.version' <../package.json >static/latest.txt
hugo --minify --baseURL "$1"
echo "$LATEST_VERSION" > static/latest.txt
hugo --minify --baseURL "$BASE_URL"

185 changes: 185 additions & 0 deletions .docs/content/posts/2024-06-27-one-year-since-stable-release.ja.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
---
weight: 1
title: "v1.0.0一周年を記念してちょっと歴史を振り返る"
---

AAO: Avatar Optimizer v1.0.0一周年を記念してちょっと歴史を振り返ってみることにしてみる。

書いた人はanatawa12なので「私」はanatawa12を指す。

## Avatar Optimizerが生まれるまで {#before-born}

### 2021年11月 {#2021-11}

私がVRChatを始める。
このときにPublic (現在のLegacy欄)アバターから 2a7sちゃんを選んで使うことにした。
そしてこの子はSDK2アバターでかつ、パーツが結合された状態でfbxが組まれていた。
このときの経験がSkinned Mesh Rendererを増やすことに対する待避感につながってる気がする。

### 2022年 {#2022}

和服を作ってた間などに(?)fbx更新でモデルがひどくなることの対策にprefab variantが使えることを知った。
それで非破壊で服を着せるツールが欲しくなってたりした。

また、買っただけになってたアバターなどをアップロードを始めてメッシュの分割などが多くて結合するツールが欲しくなってたが、
お金はかけたくなかった。

### 2022年11月末 {#2022-11}

Modular Avatar v1.0.0がリリースされる。

{{< tweet user=bd_j id=1596993180573978625 >}}

当日中にvpmでインストールして使ってみて、すぐに良さそうだなってなった。
と同時にissueとか書き始める([PhysBone Blocker]とか)。

## Avatar Optimizerが生まれる {#born}

### pre-0.0.1 (2022年12月末) {#pre-0.0.1}

Modular Avatarを読んでできそうということで、PhysBoneやMerge Skinned Meshのマージをするツールを作り始める。
当初はMergerという名前で作っていた。

(この名残で https://github.com/anatawa12/Merger というリンクでからAvatar Optimizerに飛べるようになっています。)

{{< tweet user=anatawa12_vrc id=1607780946845257730 >}}

### 0.0.1~0.1.3 (2023年1月~2月) {#0.0.1-0.1.3}

マージする以外にBlendShapeの固定機能等をいれることにしてAvatarOptimizerに改名し、初回リリースをする。
https://github.com/anatawa12/AvatarOptimizer/releases/tag/v0.0.1

READMEに書かれてる通り、以下のコンポーネントが当時あった。

- Merge Skinned Mesh
- Merge PhysBone
- Freeze BlendShape
- Merge Bone
- Clear Endpoint Position

その後、0.0.2ではMerge ToonLit Material, 0.1.1ではRemove Mesh in Boxを追加し、バグ修正でリリースを行っていた。

## Avatar Optimizerが広まり始める {#begin-spread}

### v0.2.0開発中 & 0.1.4 (2023年2月頭) {#0.2.0-developing}

保存形式の破壊的変更を行うため、v0.2.0を開発中、Avatar Optimizerの紹介記事が書かれる。
[ModularAvatarとAvatarOptimizerを使ったアバター編集|かんとう](https://note.com/tazutazu/n/na52579a6656f)

当時の私の叫び

{{< tweet user=anatawa12_vrc id=1629057081335771136 >}}

破壊的変更に対応させるために 0.1.4 で破壊的変更への準備リリースを急遽用意し、マイグレーションの仕組みの開発を決定

## 継続的な開発 {#continue-develop}

### v0.2.0 (2023年3月頭) {#0.2.0}

いくつかのprereleaseを経て、v0.2.0をリリースした。

この時期からそれなりにクオリティを保ったソフトウェアとして開発を進めていくことになる。
そのため、Changelogの管理やprereleaseの仕組みを追加したのがこの時期。

### v0.2.2 (2023年3月中旬) {#0.2.2}

Make Childrenコンポーネントを追加。
v1.0.0まで残るのですが、今となってはこれをAAOに入れたのは後悔してる。
(当初はNDMFがなく、Apply on playがクソ大変だったのでAvatar Optimizerに入れちゃってた。)

### v0.2.6 (2023年3月末) {#0.2.7}

多言語サポートの内部的な追加を行う(が、日本語の追加は0.4.0まで延びる)。
(誰か和訳作ってくれ〜と思ってたけど誰もやってくれなかった。)

### v0.3.2 (2023年5月) {#0.3.2}

公式ドキュメントを作成。

書くの面倒だなぁって思いながら書いていた。

### v0.4.0-v0.4.12 (2023年6月) {#0.4.0-0.4.6}

日本語の追加やMergePhysBoneの保存形式の変更を行ってた。

v1.0.0を見据えて色々準備してた。

## ついに安定版 {#stable}

### v1.0.0 (2023年6月末) {#1.0.0}

半月ほどのprereleaseを経て、v1.0.0をリリースした。

やっとできたって感じがあった。
さやまめさんに背中押されたりして大々的に告知を打ったら拡散され方に少し恐れてた

{{< tweet user=anatawa12_vrc id=1673650862160482304 >}}

### v1.1.x (2023年7月中旬~) {#1.1.x}

このタイミングでModular AvatarのApply on Playを上書きする仕組みなどを追加した。

当初は内部的な仕組みを公開するつもりがある程度あったけど、後にNDMFで全く別な形になる。

### v1.2.0 (2023年7月中旬) {#1.2.x}

今日のAvatar Optimizerの目玉機能となった Trace and Optimize の前身となる Automatic Configuration 機能を追加した。

当時は FreezeBlendShape の自動的に設定を行っていた。この時点では手動設定のできるものを自動的に設定する機能のみであったため、
Automatic Configuration という名前になっていた。

当初はここまで目玉になるとは思ってなかった。

### v1.3.x (2023年8月中旬~) {#1.3.x}

使われていないものの削除のように自動設定以上のものが追加されたため、Automatic Configuration が Trace and Optimize に改名された。

また、Avatar Optimizerの名前がAnatawa12's Avatar Optimizerとされ、AAOという略称も定まった。

当初からAnatawa12'sを入れるのが嫌いじゃなかったので後に`AAO: Avatar Optimizer`と再帰的接頭語に変更された。

### v1.4.x (2023年9月頭~) {#1.4.x}

Trace and Optimizeで使っていたAnimatorのパーサーが強化された。

このリリースは主にバグ修正だけど大きな変更があったからminorにした記憶がある。

### v1.5.x (2023年10月頭~) {#1.5.x}

Modular Avatarなどの非破壊ツール向けのフレームワークである[Non Destructive Modifying Framework][NDMF]がリリースされ、合わせてAAOもNDMFに対応した。

また、この時期から本格的に Trace and Optimize に注力するようになる。

### v1.6.x (2023年11月末~) {#1.6.x}

Trace and Optimizeへのコンポーネント対応を追加するためのAPIを整備した。

また、Trace and OptimizeにメッシュのオンオフにPhysBoneが追従する機能を追加した。

#### v1.6.3 (2023年12月初旬) {#1.6.3}

VRCSDK 3.5.0の3時間betaに振り回されたリリース

CHANGELOGより引用

> - I was planned to release this changes while VRCSDK 3.5.0 is in beta.
> - However, VRCSDK 3.5.0 beta was only 3 hours so I could not.
このVRCSDKの動きが vrc-get-gui / ALCOM を作る原動力になった。

### v1.7.x (2024年4月中旬~現在) {#1.7.x}

Animator Optimizerや自動 Merge Skinned Mesh、コンポーネント自身のAPI、Remove Mesh by Mask等とともにリリース。

VRCSDK 3.5.0 + VCC 2.2.0の酷さに困って vrc-get-gui (現ALCOM) を作ってたので間が空いてしまった。

結構長い間空いちゃったなぁと思いつついろんな最適化を入れれてるので満足してる。

## 未来 {#future}

今後はTrace and Optimizeの機能を強化していこうかなと思ってる。
特にテクスチャメモリ周りを一切触れていないのでうまいことやりたいなぁと思ってる。

[ma-1.0.0-tw]: https://x.com/bd_j/status/1596993180573978625
[PhysBone Blocker]: https://github.com/bdunderscore/modular-avatar/issues/104
[NDMF]: https://ndmf.nadena.dev/
25 changes: 25 additions & 0 deletions .docs/layouts/partials/docs/inject/menu-after.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

<ul>
<li class="book-section-flat">
{{ if eq "ja" $.Site.Language.Lang }}
<span>Blog Posts</span>
{{ else }}
<span>Blog Posts(日本語)</span>
{{ end }}
{{ with (index .Sites 1).GetPage "posts" }}
<ul>
{{ range (where .Pages "Params.bookhidden" "ne" true) }}
{{ $current := eq $ . }}
<li>
<a href="{{ .Page.RelPermalink }}" class="{{ if $current }}active{{ end }}">
{{- partial "docs/title" .Page -}}
</a>
</li>
{{ end }}
{{ end }}
</ul>
</li>
</ul>



5 changes: 3 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -182,12 +182,13 @@ jobs:
# endregion vpm release

# region docs
# remember update update-website.yml
- name: Update .docs/config.toml
run: sed -i'.bak' -e "s/(SNAPSHOT)/($VERSION)/" .docs/config.toml && rm .docs/config.toml.bak

- name: Build docs as a beta docs
working-directory: .docs
run: ./build.sh 'https://vpm.anatawa12.com/avatar-optimizer/beta'
run: ./build.sh 'https://vpm.anatawa12.com/avatar-optimizer/beta' "$VERSION"

- name: Copy to beta dir if it's release
if: ${{ !fromJSON(env.PRERELEASE) }}
Expand All @@ -196,7 +197,7 @@ jobs:
- name: Build docs as a release docs if it's release
if: ${{ !fromJSON(env.PRERELEASE) }}
working-directory: .docs
run: ./build.sh 'https://vpm.anatawa12.com/avatar-optimizer'
run: ./build.sh 'https://vpm.anatawa12.com/avatar-optimizer' "$VERSION"

- name: zip docs
run: cd .docs/public && zip ../../build/website.zip -r .
Expand Down
106 changes: 106 additions & 0 deletions .github/workflows/update-website.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Update Website

on:
workflow_dispatch:
inputs:
version:
description: "The version name in the documentation"
required: true
type: string
prerelease:
description: "Is the release is prerelease or not"
required: false
default: true
type: boolean

publish:
description: "True to publish release to git, vpm. if false, this creates release asset only"
type: boolean
required: false

env:
PKG_NAME: com.anatawa12.avatar-optimizer
SOMETHING_RELEASER_SEMVER: 1

concurrency:
group: publish
cancel-in-progress: true

permissions: write-all

jobs:
create-release:
runs-on: ubuntu-latest
environment:
name: actions-github-app

env:
VERSION: ${{ inputs.version }}
PRERELEASE: ${{ inputs.prerelease }}

steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
- uses: actions/checkout@v4
with:
token: ${{ steps.app-token.outputs.token }}
submodules: recursive
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.111.3'
extended: true

# remember update release.yml
- name: Prepare build folder
run: mkdir build

- name: Update .docs/config.toml
run: sed -i'.bak' -e "s/(SNAPSHOT)/($VERSION)/" .docs/config.toml && rm .docs/config.toml.bak

- name: Build docs as a beta docs
working-directory: .docs
run: ./build.sh 'https://vpm.anatawa12.com/avatar-optimizer/beta' "$VERSION"

- name: Copy to beta dir if it's release
if: ${{ !fromJSON(env.PRERELEASE) }}
working-directory: .docs
run: mkdir -p static && mv public static/beta
- name: Build docs as a release docs if it's release
if: ${{ !fromJSON(env.PRERELEASE) }}
working-directory: .docs
run: ./build.sh 'https://vpm.anatawa12.com/avatar-optimizer' "$VERSION"

- name: zip docs
run: cd .docs/public && zip ../../build/website.zip -r .
- name: Upload docs
uses: actions/upload-artifact@v3
with:
name: website
path: .docs/public

- name: Restore .docs/config.toml
run: git restore --staged --worktree .docs/config.toml

- name: Upload zip file
env:
GH_TOKEN: ${{ github.token }}
run: |
WEBSITE_NAME="website-${GITHUB_RUN_ID}.zip"
mv build/website.zip "build/$WEBSITE_NAME"
gh release upload "v$VERSION" "build/$WEBSITE_NAME"
publish-vpm:
uses: anatawa12/vpm.anatawa12.com/.github/workflows/update-package.yml@master
needs: create-release
if: inputs.publish
with:
#version: No version to update package only
environment: vpm.anatawa12.com
website_zip: https://github.com/anatawa12/AvatarOptimizer/releases/download/v${{ inputs.version }}/website-${{ github.run_id }}.zip
website_path: ${{ inputs.prerelease && 'beta' || '' }}
secrets:
TOKEN: ${{ secrets.VPM_GITHUB_PAT }}

0 comments on commit 2e8ecfa

Please sign in to comment.