さんだすメモ

さメモ

技術ブログでは、ない・・・

PSDの裏に画像を置く[AviUtl]

そのままやると裏面が被る

スクリプトの仕組みをあまり理解してないので、良くないことがあるかもしれません。
もしかしたらPSDの裏にPSDも置けるのかな???

AviUtlのコミュニティが分からないので、とりあえずここに……。

使用素材: im10851860, im10891270

PSDToolKit + VOICEROID+ で立ち絵・字幕・音声を配置する一例[AviUtl]

いろいろと不足してますが、ざっくり全体の流れをメモしました。

(1) できること・やること

  • 字幕の準備
  • 立ち絵の準備
    • PSDTool でシンプルビューを作って pfv ファイルに書き出しておく
    • PSDToolKit ウィンドウで立ち絵を簡単に変えられる
  • アニメーション効果のスライダーで立ち絵を変えられる
    • 多目的スライダーを使って、中間点を打たずに立ち絵を変えられる
  • かんしくんの導入
    • VOICEROID+ で音声を簡単に保存できる
    • VOICEROID+ で保存したのを検知してタイムラインにオブジェクトを置いてくれる
      • 音声ファイル
      • 多目的スライダー
      • 字幕準備

(2) aviutl

  • PSDToolKit を導入しておく
  • プロジェクトを開いて上書き保存できる状態にしておく

(3) 字幕の確認

(3-1) 字幕準備

  • layer 13 に字幕準備を置く
  • 単体では何も表示しない
  • 適当にテキストを入力しておく

(3-2) 字幕表示

  • layer 14 に字幕表示を置く
  • 長めの範囲に置いておく
  • 字幕準備のテキストが表示されるはず
  • 位置調整はこっち

(4) 立ち絵の準備

(4-1) PSD ファイルを準備する

  • PNG から作るのもあり

(4-2) pfv ファイルを PSDTool で生成する

(4-3) PSD と pfv をタイムラインに読み込む

  • layer: 15
  • 編集 > PSDToolKit > ウィンドウを表示
    • シンプルV で表情を変えられるか確かめる

(5) アニメーション効果のスライダーで立ち絵を変えられるようにする

(5-1) anm ファイルを作成

  • aviutl/script/im6442284_弦巻マキさん立ち絵素材ver2.0_MtU/im6442284_弦巻マキさん立ち絵素材ver2.0_MtU.anm を作成、編集していく

    • cp932 かつ CRLF にする必要がある
  • 編集 > PSDToolKit > ウィンドウを表示

    • シンプルVタブ > 髪 > リンクを開くマーク > スライダー"髪" 全体をクリップボードにコピー
--track0:髪,0,4,0,1
local values= {
  "S.お気に入り/*maki/髪~通常",
  "S.お気に入り/*maki/髪~通常もみあげ無し",
  "S.お気に入り/*maki/髪~ポニテ",
  "S.お気に入り/*maki/髪~ポニテもみあげ無し",
}
PSD:addstate(values, obj.track0)
  • 内容について

    • スクリプトでオブジェクトを作成
    • 先頭のコメント部分でスライダーを設定
  • 複数のコントロールを作る場合は次のようにする

--track0:髪,0,4,0,1
--track1:特殊パーツ,0,5,0,1

local values= {
  "S.お気に入り/*maki/髪~通常",
  "S.お気に入り/*maki/髪~通常もみあげ無し",
  "S.お気に入り/*maki/髪~ポニテ",
  "S.お気に入り/*maki/髪~ポニテもみあげ無し",
}
PSD:addstate(values, obj.track0)

local values= {
  "S.お気に入り/*maki/特殊パーツ~デフォルト",
  "S.お気に入り/*maki/特殊パーツ~汗2",
  "S.お気に入り/*maki/特殊パーツ~汗1",
  "S.お気に入り/*maki/特殊パーツ~ほっぺ2",
  "S.お気に入り/*maki/特殊パーツ~ほっぺ1",
}
PSD:addstate(values, obj.track1)

(5-2) アニメーション効果を適用する

  • anm ファイルを読み込むために aviutl を再起動
  • PSD ファイルのオブジェクトのプロパティでアニメーション効果を追加
    • 適用する効果を im6442284_弦巻マキさん立ち絵素材ver2.0_MtU にする
    • 効果を入れ替えて順番を im6442284_弦巻マキさん立ち絵素材ver2.0_MtU の後 描画@PSD にする
  • スライダーで立ち絵を変えられるか確かめる

(5-3) 多目的スライダーを使う準備

オブジェクトを分割することなく部分的に立ち絵を変えられる

  • layer: 12 に多目的スライダーを置く
    • PSDより前のレイヤー
  • PSDオブジェクトについて
    • mpslider = 12
  • 多目的スライダーをいじって立ち絵が変わることを確認する

(6) かんしくんを活用する準備

(6-1) かんしくんでできること

  • VOICEROID+ の音声保存の半自動化
    • 音声保存を押すとファイル名を決めて保存してくれる
  • 監視するディレクトリに保存されたのを検知して aviutl のタイムラインにオブジェクトを置く
    • 置くもの
      • 音声ファイル
      • 多目的スライダー
      • 字幕準備
      • 今回はやらないが口パクなんかも
    • 監視しているディレクトリからプロジェクトの指定したディレクトリにファイルを移動するなども

(6-2) 編集 > PSDToolKit > 環境設定

  • [x] 「多目的スライダー」を生成
    • スライダー: 今回は 4 個
      • 立ち絵の変化の種類に合わせる
      • 髪、表情、エフェクト、特殊パーツとしていたら4種類
    • 終了マージン: 0
      • 個人的な設定
  • [x] 「字幕準備」を生成
    • 終了マージン: 30
      • 個人的な設定
  • 発動条件
    • [x] 1フレーム目に音声とテキストがある*.exoをドロップした時

(6-3) かんしくん/setting.txt

padding = 0 # 0 ms 間を空ける
filemove = 'move'
destdir = '%PROJECTDIR%' # [[rule]] で上書きする
deletetext = true
delta = 15.0
freshness = 5.0
  • [[asas]] セクション
[[asas]]
exe = 'C:\Program Files (x86)\AHS\VOICEROID+\TamiyasuEX\VOICEROID.exe'
format = 'maki_*.wav' # same as rule/file
folder = 'F:\tmp\voiceroid' # 一時的な書き出し
  • [[rule]] セクション
[[rule]]
destdir = '%PROJECTDIR%\voice\maki' # 動画で使うファイルの書き出し
dir = 'F:\tmp\voiceroid' # 監視
encoding = 'sjis'
file = 'maki_*.wav' # 監視
layer = 11
modifier = '''
  text = re.gsub(text, "<<(.*?)|.*?>>", "${1}") -- ルビを除去
  filename = os.date("%y%m%d_%H%M%S") .. "_maki_" .. tofilename(text, 10) .. ".wav"
'''
  • さきほどの環境設定だと次のように配置される
    • layer 11: 音声
    • layer 12: 多目的スライダー
    • layer 13: 字幕準備

(7) かんしくんを使う

  • かんしくん/forcepser.exe を実行
    • VOICEROID+ を起動しますかと聞かれる
      • 事前に立ち上げるといいわけではないので注意する
    • VOICEROID+(asas/exe)が立ち上がる
  • VOICEROID+ で音声保存を押す
    • asas/folderasas/format の名前規則で保存される
  • rule/dirfile が保存されたのを検知する
    • rule/destdir にファイルを移動する
    • 字幕準備などを生成して音声ファイルと一緒にドラッグ&ドロップする
      • rule/layer に追加される

(8) いろいろ確認

  • レイヤーの確認

    • かんしくんが置いたもの
      • layer 11: 音声
      • layer 12: 多目的スライダー
      • layer 13: 字幕準備
    • 自分で置いたもの
      • layer 14: 字幕表示
      • layer 15: PSD
  • 音声の長さと字幕の長さの比較

    • 終了マージン
  • かんしくんで追加したオブジェクト同士の間隔

    • padding = 0
  • 多目的スライダーで変えられるか

(9) 参考

nvim-qt でクリップボードにコピーしたら Windows Terminal のウィンドウが出るだけだった

状態

Windows 11 ビルド 22621
neovim 0.9.0
win32yank.exe

  • 選択して "*y したら Windows Terminal の win32yank.exe の画面が出てきて何も起こらない
  • 画面に適当に入力して ctrl-Z を入力したらクリップボードに入力した内容がコピーされる

対処

%USERPROFILE%\scoop\apps\neovim\current\share\nvim\runtime\autoload\provider\clipboard.vim を編集して

  elseif executable('win32yank.exe')
    if has('wsl') && getftype(exepath('win32yank.exe')) == 'link'
      let win32yank = resolve(exepath('win32yank.exe'))
    else
      let win32yank = 'win32yank.exe'
    endif
    let s:copy['+'] = [win32yank, '-i', '--crlf']
    let s:paste['+'] = [win32yank, '-o', '--lf']
    let s:copy['*'] = s:copy['+']
    let s:paste['*'] = s:paste['+']
    let s:cache_enabled = 0
    return 'win32yank'

let s:cache_enabled = 0 を追加した。

バージョン変わるごとに編集するのは面倒だから、素直に g:clipboard を使うことになりそう。

curl で Discord Bot の Global Application Commands を削除

Discord Developer Portal

パラメータ

  • TOKEN = ...
  • APPLICATION_ID = ...

一覧の取得

$ curl -X GET -H "Authorization: Bot $TOKEN" https://discord.com/api/v10/applications/$APPLICATION_ID/commands

全部消す

$ curl -X PUT -H "Authorization: Bot $TOKEN" -H 'Content-Type application/json' -d '[]' https://discord.com/api/v10/applications/$APPLICATION_ID/commands

線画抽出するスクリプト[GIMP]

アニメのGB素材を作ってみる(GIMP) - さメモ の線画抽出部分のスクリプトです。

色々分かっていないところがありますが、とりあえず。

  • %APPDATA%\gimp\2.10\scripts\script.scm
(define (line-drawing-extraction img layer radius)
  (gimp-undo-push-group-start img)

  ; レイヤーを複製
  (define layer2 (car (gimp-layer-copy layer 1)))
  (gimp-image-insert-layer img layer2 0 0)
  ; 色 > 脱色 > 脱色
  (gimp-drawable-desaturate layer2 DESATURATE-LUMINANCE)

  ; レイヤーを複製
  (define layer3 (car (gimp-layer-copy layer2 1)))
  (gimp-image-insert-layer img layer3 0 0)
  ; 色 > 階調を反転
  (gimp-drawable-invert layer3 FALSE)
  ; フィルター > ぼかし > ガウスぼかし
  (plug-in-gauss-rle2 RUN-NONINTERACTIVE img layer3 radius radius)
  ; レイヤーモード 覆い焼き
  (gimp-layer-set-mode layer3 DODGE-MODE)

  ; 下のレイヤーに統合
  (gimp-image-merge-down img layer3 CLIP-TO-IMAGE)

  (gimp-undo-push-group-end img)
  (gimp-drawable-update layer 0 0 (car (gimp-drawable-width layer)) (car (gimp-drawable-height layer)))
  (gimp-displays-flush)
  )

(script-fu-register
  "line-drawing-extraction"
  "<Image>/Script-Fu/line-drawing-extraction"
  "Line-drawing extraction"
  "sandas"
  "copyright 2023 sandas"
  "2023"
  "*"
  SF-IMAGE "Input Image" 0
  SF-DRAWABLE "Input Layer" 0
  SF-VALUE "radius of gaussian blur" "3"
  )

参考

w3m で google 検索用のコマンド

keymap を適当に参考にしつつ、google へのアクセスが一回で済むようにローカルに html を置きました。

~/.w3m/keymap

'h でローカルの google.html を開く。
フォームの入力が完了したら submit するというのはできるらしいです。

keymap \'h COMMAND 'GOTO ~/.w3m/html/google.html; SEARCH \[; MOVE_RIGHT; GOTO_LINK; SUBMIT'
keymap \"h COMMAND 'TAB_GOTO ~/.w3m/html/google.html; SEARCH \[; MOVE_RIGHT; GOTO_LINK; SUBMIT'

~/.w3m/html/google.html

<html>
  <head>
    <title>Google</title>
  </head>
  <body>
    <h1>Google 検索</h1>
    <form method=GET action="google.com/search">
      <input type='text' name='q'/>
    </form>
</html>