More Related Content
Similar to Game community summit 2015
Similar to Game community summit 2015 (20)
Game community summit 2015
- 6. Autodesk FBX
• Autodesk社が提供しているフォーマット
• 元はFilmbox(現Motion Builder)で使われていた
• 1996年にKaydara社がFBXを使いはじめる
• 2004年にKaydara社がAlias社に買収される
• 2005年にFBX SDKがリリース
• 2006年にAlias社がAutodeskに買収される
GCS2015 UnityでMMDを動かす会 6
実は意外と歴史のあるフォーマット
- 7. Autodesk FBX
• どのようなフォーマットか?
• バイナリ/テキストで3Dデータを表す
• 1つのファイルで様々なデータを扱える
• 2005年当時は,DirectX9.0全盛期
• スキニングを扱えるフォーマットはXファイルしかない
• それ以外は全部,自前のフォーマットが利用されていた
GCS2015 UnityでMMDを動かす会 7
当時を鑑みると大変革新的なフォーマット
- 8. Autodesk FBX
• FBX SDKとは?
• FBXの書き出し/読み込みをするための開発キット
• これがないと,FBXをほぼ扱うことができない
• なぜか毎年バージョンアップしている
GCS2015 UnityでMMDを動かす会 8
- 9. MikuMikuDance
• 3種類のフォーマットがあります
• PMD形式
• 古いMMDモデルデータ
• コリジョンと頂点モーフがあります
• PMX形式
• PMD形式を拡張したもの
• コンストレインやUVモーフなどが扱えるようになる
• 最近はこちらが多く使われている
• VMD形式
• アニメーション用のデータ
• 今でも使われている
GCS2015 UnityでMMDを動かす会 9
PMDで作られたミクさん
PMXで作られたミクさん
http://blogs.yahoo.co.jp/fairlady432432/9181448.html
- 12. 各種フォーマットまとめ
FBX PMD PMX VMD
ジオメトリ ○ ○ ○
マテリアル ○ ○ ○
スキニング ○ ○ ○
頂点モーフ ○ ○ ○
コリジョン ○ ○
コンストレイン ○
アニメーション ○ ○
GCS2015 UnityでMMDを動かす会 12
ちょっとずつ
機能が豪華に
- 16. FBXの問題点
• SDKがほぼ毎年更新される
• SDK 2008
• SDK 2010.2
• SDK 2010.10
• SDK 2012
• SDK 2013
• SDK 2014
• SDK 2015
• SDK 2016
GCS2015 UnityでMMDを動かす会 16
- 19. FBXの問題点
• ライセンスが厳しい
• オープンソース禁止
• 静的ライブラリ禁止
• 指定箇所でFBX SDKを宣伝
• サンプルコード公開禁止
• リバース・エンジニアリング禁止
• 登録者以外,APIの使用禁止
• 迂回利用の禁止
• ライセンス違反を回避するため,他の方法で実装を試みること
GCS2015 UnityでMMDを動かす会 19
大杉
- 24. フォーマットの機能要件
• Fixed Model Data(.fmd)
• 現在,GitHUBで開発中
• クラス設計等をJSONで行っています
• https://github.com/GRGSIBERIA/FixedModelData
• 現在はfmd-compilerで作業中
• Fixed(固定された)
• 単位系の狂いを少なくしたい
• いろいろなツールで使えるようにしたい
GCS2015 UnityでMMDを動かす会 24
- 29. フォーマットの機能要件
• バージョン・アップで再実装する手間がない
• FBX SDKは,更新するたびに対応する手間がある
GCS2015 UnityでMMDを動かす会 29
FBX SDK
2008
FBX SDK
2009
FBX SDK
2010
FBX SDK
2011
FBX SDK
2012
FBX SDK
2013
FBX SDK
2014
FBX SDK
2015
FBX SDK
2016
1年に2回
更新することも
あるよ
- 39. ライブラリの実装
• JSONクラス定義
• 定義の詳細については下記のところで
• ただし,ブランチがコロコロ変わるかも……
• https://github.com/GRGSIBERIA/FixedModelData/tree/fmd-
compiler/lib/template
• もし,興味のある人がいましたら,チャンクの定義等を
レビューしていただけると幸いです
GCS2015 UnityでMMDを動かす会 39
- 40. ライブラリの実装
• JSONのクラス定義の例
GCS2015 UnityでMMDを動かす会 40
"Vertex":
{
"comment": "頂点を表すクラス",
"variables":
{
"position":
{
"type": "UnitVector3",
"comment": "頂点座標の位置"
}
}
},
# 頂点を表すクラス
class Vertex < ChunkBase
# 頂点座標の位置
def position
@position
end
def initialize(json)
# コンストラクタ
@position = UnitVector3.new(json)
end
end
自動生成
- 43. 本日のまとめ
• 解決方法
• 互換性を解消する
• ライブラリのライセンスを緩くする
• 開発者的に使いやすいライブラリを提供する
• 多プログラミング言語対応
• データのほとんどをJSONで管理する
• 読み込みと書き込みの保証
• バージョンの隠蔽
• バリデーションとテストがちゃんとできる
GCS2015 UnityでMMDを動かす会 43