GodotEngine3用のモデル生成方法

GodotEngine3へアニメーションつきモデルをインポートしたいときはglTF経由で行う。

大まかな流れとしては、 jas(Cheetah3D) -> FBX(Cheetah3D) -> glTF(Cheetah3D)

Cheetah3DからFBX(Blender)

  • 子階層のJointにType: Rootを設定する事は出来ない。
  • Group化されたObjectはすべて解除する。(最終的にGodotEngineに持って行った際に、90回転した状態になる)
  • 出力はFBXで行う。
  • 複数のTakesが存在していても、一番上のTakeしか変換されない。
  • アニメーションの最初のフレームがRestとして認識されてしまう不具合がある為、アニメーションを分割して生成したい場合は、フレームの最初にTポーズを含ませておく(Cheetah3D上でTakeのマージを行う)

BlenderからglTF

  • FBXを読み込むとScaleが0.01倍になっているため1.0に修正する。または取り込むときにスケールを100倍にしておく。
  • 出力する前にObjectメニューからApply -> All Transformsを選択する。

GodotEngineでレンちゃん!

Twitterには投稿していたのですけど、それっぽい動作をするようになりましたのでGitHubにアップロードしてみました。

https://github.com/MizunagiKB/game-tps/releases/tag/test-0.0.0

まだソースコードはアップロードしていないのですが、WindowsとmacOS上で動作します。

モデル作成はmagicaVoxelを使用、モーションはCheetah3Dで行っています。

GodotEngineへのインポートはCheetah3DのglTFは正常に読み込めないため、fbx形式で出力したものをBlenderで読み込み、glTFに変換しています。

MagicaVoxelの画面が黒いとき

MagicaVoxelのmacOS版は、環境によっては起動すると画面が黒いままになってしまいます。

こういう画面。

その場合は、以下の手順で正常に表示されるようになります。

  • フォルダに格納されているMagicaVoxel.appをコピー
  • 適当な場所に貼り付け(例えばデスクトップ)
  • 元々のMagicalVoxel.appを削除
  • 貼り付けたMagicaVoxel.appを元の場所に移動
ちゃんと表示されるようになりました。

マクギリスタンプ

しょうもないものをこしらえました。

何か閃いたりしたときにワンポイントに使ったりしてください。

私のオリジナルではなく、二次創作(機動戦士ガンダム 鉄血のオルフェンズ)ですので、取り扱いは趣味の範囲でどうぞ。

作品内の架空のゲーム

VividStrikeの世界に登場する架空のゲームに興じるヴィヴィオ達。

というのを考えているのですけど、コロナ・ユミナ・ヴィヴィオの服装がイマイチなので描きなおしています。

フェイタルバレットのアリスさん

ソードアート・オンライン フェイタル・バレットに登場した時のアリスさん。

白いコート姿がなかなかかっこいいと思います。TPSは自分の操作が忙しすぎて他のキャラクターを眺める暇がほとんどないけど。

持っている銃はガンゲイル・オンラインに登場するレンちゃんの武器、ヴォーパル・バニー。ゲームには登場しませんが白い服装に似合う気がして持たせてみました。

NEUTRINOのmacOS版を試してみる(1)

Version.0.103アップデートからmacOSやLinuxにも対応したとの事ですが、手元では正常動作しませんでした。

手元で確認した状況としては、以下の様な感じです。

なお、手元の環境は macOS 10.15.3 となります。

  • 日本語ファイル「利用規約.txt」が正しく展開出来ない。
  • musicXMLtoLabel, NEUTRINO, WORLDに実行属性が付いていない。
  • セキュリティとプライバシーから実行許可を与える必要がある。
  • 実行属性と実行許可与えても Segmentation fault する。

ファイル内容の確認 ( unzip -l NEUTRINO-MAIN-macOS_v0.103.zip )

Archive:  NEUTRINO-MAIN-macOS_v0.103.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  03-08-2020 10:59   NEUTRINO/bin/
   140144  03-08-2020 03:38   NEUTRINO/bin/libgcc_s.1.dylib
   297152  03-08-2020 03:42   NEUTRINO/bin/libgomp.1.dylib
  3333760  03-08-2020 03:49   NEUTRINO/bin/libstdc++.6.dylib
    60880  01-16-2019 09:38   NEUTRINO/bin/libSystem.B.dylib
   774000  03-08-2020 09:51   NEUTRINO/bin/musicXMLtoLabel
   462536  03-08-2020 09:51   NEUTRINO/bin/NEUTRINO
    96796  03-08-2020 09:51   NEUTRINO/bin/WORLD
     2880  12-03-2015 22:01   NEUTRINO/LICENSE_Sinsy.txt
     2808  12-18-2019 01:48   NEUTRINO/LICENSE_WORLD.txt
        0  03-08-2020 10:59   NEUTRINO/model/
        0  02-12-2020 04:38   NEUTRINO/output/
     3268  03-08-2020 00:07   NEUTRINO/README.txt
      832  02-26-2020 13:03   NEUTRINO/Run.sh
        0  03-08-2020 00:04   NEUTRINO/score/
        0  03-08-2020 00:04   NEUTRINO/score/label/
        0  02-12-2020 04:39   NEUTRINO/score/label/full/
        0  02-12-2020 04:39   NEUTRINO/score/label/mono/
        0  02-12-2020 04:39   NEUTRINO/score/label/timing/
        0  03-08-2020 00:04   NEUTRINO/score/musicxml/
    32087  02-12-2020 04:46   NEUTRINO/score/musicxml/sample1.musicxml
    29535  02-12-2020 05:00   NEUTRINO/score/musicxml/sample2.musicxml
    27406  02-12-2020 04:48   NEUTRINO/score/musicxml/sample3.musicxml
        0  03-08-2020 00:04   NEUTRINO/settings/
        0  03-08-2020 00:04   NEUTRINO/settings/dic/
      117  12-25-2015 12:11   NEUTRINO/settings/dic/japanese.euc_jp.conf
     2875  12-25-2015 12:09   NEUTRINO/settings/dic/japanese.euc_jp.table
        0  12-25-2015 12:09   NEUTRINO/settings/dic/japanese.macron
      105  12-25-2015 12:11   NEUTRINO/settings/dic/japanese.shift_jis.conf
     2875  12-25-2015 12:09   NEUTRINO/settings/dic/japanese.shift_jis.table
       72  12-25-2015 12:11   NEUTRINO/settings/dic/japanese.utf_8.conf
     3486  12-25-2015 12:09   NEUTRINO/settings/dic/japanese.utf_8.table
     1744  02-13-2020 02:46   NEUTRINO/???p?K??.txt
---------                     -------
  5275358                     33 files

Segmentation fault

52:52.2N : start MusicXMLtoLabel
./Run.sh: line 18:  4020 Segmentation fault: 11  ./bin/./musicXMLtoLabel score/musicxml/${BASENAME}.${SUFFIX} score/label/full/${BASENAME}.lab score/label/mono/${BASENAME}.lab
52:52.2N : start NEUTRINO
./Run.sh: line 21:  4022 Segmentation fault: 11  ./bin/NEUTRINO score/label/full/${BASENAME}.lab score/label/timing/${BASENAME}.lab ./output/${BASENAME}.f0 ./output/${BASENAME}.mgc ./output/${BASENAME}.bap ./model/${ModelDir}/ -n ${NumThreads} -t
52:52.2N : start WORLD
./Run.sh: line 24:  4024 Segmentation fault: 11  ./bin/WORLD output/${BASENAME}.f0 output/${BASENAME}.mgc output/${BASENAME}.bap -f ${PitchShift} -m ${FormantShift} -o output/${BASENAME}_syn.wav -n ${NumThreads} -t
52:52.2N : END

scoreファイルについては、添付されているサンプルを利用しています。

Segmentation faultが自分の環境特有なのかはちょっと不明。

ひとまずバイナリだけが生成された状況なので、実行確認はVectorに配置されるのを待ってから改めて実行してみた方が良いかも。

YouTubeにYAMAHAのMIDI曲を公開できるの?

YAMAHAミュージックデータショップでは、MIDIデータを購入する事が出来、その演奏データを伴奏に使って練習したり、聞いて楽しんだりすることが出来ます。

それだけでも充分に楽しめるのですが、このMIDIを演奏した曲はアップロード出来ないのだろうかと、ふと思いYAMAHAミュージックデータショップのFAQを調べてみたところ、条件を満たしていればアップロード可能という記載を見つけました。

購入データの利用について

https://yamahamusicdata.jp/faq/

上記サイトの記載(2020-03-07現在)では、

  • 利用者の条件
    • 法人や個人事業主ではないこと
    • ご購入者様ご自身でご利用、アップロードされること
  • 利用サイト
    • JASRACと利用許諾契約を締結済みサイトであること
  • 利用楽曲
    • JASRAC楽曲であること
  • 利用方法
    • 営利目的ではないこと
    • 弊社サービス(ヤマハミュージックデータショップ)と競合する可能性のある利用法ではないこと
    • 公序良俗に反するような表現内容ではないこと
    • MIDIデータの入手先としてヤマハミュージックデータショップの名称とURLを掲載すること

となっていました。

ちなみに、アップロードしてみたい曲は流星(SAOAGGOのオープニング)です。

まずJASRACがどこと許諾契約をしているかの情報はJASRACのウェブサイトに公開されています。

https://www.jasrac.or.jp/info/network/pickup/movie.html

YouTubeは確かに記載されていました。

次にJASRACの検索サイトJ-WIDで、対象の楽曲が作品データベースに登録されているかを調べます。流星は以下の情報で記載されていました。

  • 作品コード
    • 721-4592-7
  • ISWC
    • T-925.771.392-1

出版社であるソニー・ミュージックパブリッシングのみが全信託という記載になっていますが、音楽出版社を通じてJASRACに管理委託されている場合がある様です。

今回は営利目的ではなく公序良俗にも反してもいません。競合する可能性としては再利用可能な状態、例えばVocaloidのスコアやLogic Pro Xデータをアップロードは禁止、カラオケ音源として利用出来る形態でなければよさそうなので、後はヤマハミュージックデータショップの名称とURLを記載すれば良さそうです。

とはいえ解釈の仕方にもよるので断定できないですし、まだ問題があります。

著作隣接権について

敢えて面白みのない物にするために以下の様な画像を作成して試しにアップロードしてみました。

著作権の問題は解決されている様に思えますが、JASRACが許諾しているのは作曲や作詞、演奏歌唱を行った本人への許諾です。実際には楽曲を配信したり複製する権利がレコード会社にも与えられています。(そうしないと、レコード会社自身が著作権違反を起こしてしまうため)

これが著作隣接権(の一部)であり、おそらくアーティストの方が事務所に所属する時やレコード会社と契約する際に結ばれているはずです。

JASRAC所属の楽曲であればJASRACがアーティストの代理として許可を与えていますが、著作隣接権を持っている事務所やレコード会社からの許可が与えられているわけではありません。

更に契約しているレコード会社は一社のみとは限りません。例えA社が良いといってもB社からは禁止される場合も考えられます。

ただJ-WIDは国内曲と国内で取り扱われる国外曲のみしか管理していませんので、これ以上の情報を得ることが出来ません。

YouTubeへのアップロード

YouTubeでは動画をアップロードすると、音声部分がスキャンされ、Googleが持っているデータベースと照合されます。

流星はGoogleが所有するデータベースに記載されているので、著作権侵害の申し立てが有効になり、コンテンツ内の対象範囲と著作権者一覧が記載されます。

これ自体は著作権侵害の警告ではなく、権利者が自分以外にあるためにアップロードされている動画を使用して収益化できませんという表示となります。

収益化をしたい場合は、以下の選択肢をとることになります

  • 他の曲に換える
  • 曲をミュートする
  • 異議申し立て

収益化は考えていないためそのままにします。その場合、著作権者に広告収入が支払われる事になります。

ブログへの埋め込みは可能か

これについてもJASRACのウェブサイトに記載があり、前述した条件を満たした上で、

  • リアルタイム配信はしない
  • 貼り付けているサイトに収入源(広告貼り付け等)がない。
  • 個人が運営しているサイト、そうでない場合はYouTubeである。

このブログはアフィリエイトや広告を貼り付けていないため埋め込みは可能そうですが、Twitter等の管理外サイトに埋め込む場合はYouTubeであれば許可されると記載されています。

というわけで埋め込んでみました。

VOCALOID版

歌唱部をVOCALOIDで作成したものです。

紲星あかりを使用しています。

NEUTRINO版

歌唱部をNEUTRINOで制作したものです。

東北きりたん(Formant 0.95)を使用しています。

チャムチャム

チャムチャムを描いてみました。

真サムライスピリッツではチャムチャムよりもナインハルト・ズィーガーを使っていましたけど。

INNOCENTなキリエさん

劇場版ではなくINNOCENT版のキリエを描いてみました。

無事みみけっとも乗り切ることが出来ましたので、次はリリカルマジカル29に向けての作業を進めようと思います。(内容はキリエではありません…)

ピナとシリカ

みみけっと43で出した新刊に感想を頂いたお礼を兼ねて。

新刊にはピナを描かなかったので、イラストでは一緒に描きました。