とりあえずわかったことから書いておく
表情上から右回りに
叫ぶ 笑う 喜ぶ はにかむ 退屈 脅える 悲しむ 怒る
各10段階
平常 個数無制限 自分を指差す 一つ 他の人を指差す 一つ 手を振る 一つ
キャラクタアイコン 一つ(40*40/16色)
キャラの変更
# Appears as Kaos004.http://osask.hp.infoseek.co.jp/kaos004.avb ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 名称 ダウンロード先
画像変更など
(#G510E049RM1)
カッコと#は固定、中身は・・
G510E049RM1 ^
ここに画像番号っぽいものが・・・
画像の番号は0~アスキー順で0123456789:;<=>?@A・・・どこまで続くか不明。
自作キャラで番号を確認すればわかりそうだ。
コマンドのパターン、試してみると
G*10E***
みたいなパターンが多い。
Eのあとの数字も変化しているが・・・
RM1の部分、ポーズを変えたりするとRがつく。
なにも選択しないとRがない。
M1は変化したことが無い・・・固定かな?
この仕様書について はなくそほじくる程度に解析した。 著作権及び配布条件 てきとうにつかって、 いらなくなったら自動的にトイレでうん○と一緒で流す。 作成したパッケージのテスト してません。(それより、サンプルコードができてない...) アドバンスト・コース Linux用のコミックちゃっとを作っておくれ。 よくあるトラブル ご近所さんの猫がよく侵入する。(違) 謝辞 おかーちゃん、ごはんをいつも作ってくれてありがとう。 老後の面倒は期待しないでまってておくれ。ぐすん。
SIGGRAPH96の論文にComicChatの解説がて載っている。 http://grail.cs.washington.edu/pub/abstracts.html#ComicChat http://www.uranus.dti.ne.jp/~h-makoto/manga/manga.html キャラデータ http://www.globetown.net/~kaoring/ なく子も漏らすキャラ作家 http://www.mermeliz.com/ なく子も漏らすキャラ収集家
(???) この印がついているのは、納得できないもの。 (TODO) やりのこした仕事
(#ExxxGxxxRMxT{nick}) |||||||||||| | |||||||||||| o Nick 対象の名前 |||||||||||o-- Target 動作の対象 ||||||||||o--- BalloonType バルーンのタイプ |||||||||o---- Balloon バルーン ||||||||o----- RightFace(???) 顔の向き(???) |||||||o------ GestureVolume 表現の大きさ['0'-':']の10段階(???) ||||||o------- GestureType 表現の種類['0'-'8']の9段階(???) |||||o-------- GestureIndex Gesture画像番号 (同じAVBを持っている人向けの情報) ||||o--------- Gesture 体の動きによる表現(???) |||o---------- EmotionVolume 表現の大きさ ||o----------- EmotionType 表現の種類 |o------------ EmotionIndex Emotion画像番号 (同じAVBを持っている人向けの情報) o------------- Emotion 顔の表情による表現(Expressionかも)
Target: Nick アクションや囁きの相手を指定、複数指定可能(???) 例:(#GxxxExxxM2Tnick???) (TODO) BalloonType: M1 Plain 通常の枠 M2 Whisper 点線の枠 M3 Think oO(考えごと) M4 Plain わからんにょ M5 Action [四角の枠で解説風] RightFace: 顔の向き. 駒割りの最適化に使用(???) GestureVolume: 10段階 AVBが異なる場合はVolumeが近い画像が適用される GestureType: 9+3種類 AVBが異なる場合はTypeが近い画像が適用される GestureIndex: 0から93(???) AVBが同じな場合はTypeとVolumeを無視しIndexが使われる EmotionVolume: 10段階 AVBが異なる場合はVolumeが近い画像が適用される EmotionType: 9+3種類 AVBが異なる場合はTypeが近い画像が適用される EmotionIndex: 0から93(???) AVBが同じな場合はTypeとVolumeを無視しIndexが使われる
Volume: 解説: 各Volumeに一つの画像を割り振れる。 SpecialType: ':' Specialの場合はVolumeは変わらない(???) NormalType: ':' 110% 謎(???) '9' 100% 大きな感情 '8' 90% '7' 80% '6' 70% '5' 60% '4' 50% '3' 40% '2' 30% '1' 20% '0' 10% 小さな感情 (Neutral側)
Type: SpecialType: '<' PointSelf 自分を指さす ';' Point Other 相手を指さす ':' Wave 手を振る NormalType: '9' unkown 使ってない(???) '8' laugh 笑い '7' shout 叫び '6' angry 怒り '5' sad 悲しみ '4' scared 恐れ '3' bored 退屈 '2' coy 微笑み '1' happy 喜び '0' neutral 平常 ※happyが混ざる(???)
Index: '0' 0番目の画像 '1' 1番目の画像 '2' 2番目の画像 '3' 3 ... '4' 4 '5' 5 '6' 6 '7' 7 '8' 8 '9' 9 ':' 11 ';' 12 '<' 13 ... どこまでつづくんやら
########################################################### # AVB File Format # ###########################################################
type Name Value Description =========================================================== AVB::HEAD =========================================================== uint16 Magic 0x8181 Magic number uint16 Type 1 Avatar 顔胴体一体型 2 Avatar 顔胴体分裂型 3 Background 背景画 uint16 Version 2 バージョン(???) * * TAGの開始、TAGデータが続く
=========================================================== AVB::TAG1::END TAGの終了 =========================================================== uint16 Tag 0x006
=========================================================== AVB::TAG1::NAME =========================================================== uint16 Tag 0x001 uint8 string[] "..."\0 '\0'で終了
=========================================================== AVB::TAG1::UNKNOWN_002 =========================================================== uint16 Tag 0x002 uint16 unknown *
=========================================================== AVB::TAG1::UNKNOWN_008 =========================================================== uint16 Tag 0x008 uint16 unknown *
=========================================================== AVB::TAG1::POSE_A (AVB::HEAD::Type==2: Avatar用の顔) =========================================================== uint16 Tag 0x00a uint16 Count * [Count]{ uint32 offset0 +offset_fix BMPの開始位置 uint32 offset1 +offset_fix MASK画像の開始位置 (透過処理用) uint32 offset2 +offset_fix さてはて(???) uint16 EmotionType 感情の種類 uint8 EmotionVolume 0-256 感情の大きさ uint16 NeckY 首の位置Y uint16 NeckX 首の位置X uint16 uknown0 uint16 unkown1 uint16 FaceY 顔の中心位置Y uint16 FaceX 顔の中心位置X uint8 unkown[6]; }
=========================================================== AVB::TAG1::POSE_B (AVB::HEAD::Type==2: Avatar用の体) =========================================================== uint16 Tag 0x00a uint16 Count * [Count]{ uint32 offset0 +offset_fix BMPの開始位置 uint32 offset1 +offset_fix MASK画像の開始位置 (透過処理用) uint32 offset2 +offset_fix さてはて(???) uint16 EmotionType 感情の種類 uint8 EmotionVolume 0-256 感情の大きさ uint16 NeckY 首の位置Y uint16 NeckX 首の位置X uint8 unkown[6]; }
=========================================================== AVB::TAG1::POSE_C (AVB::HEAD::Type==1: Avatar用の全身) =========================================================== uint16 Tag 0x00c uint16 Number * [Count]{ uint32 offset0 +offset_fix BMPの開始位置 uint32 offset1 +offset_fix MASK画像の開始位置 (透過処理用) uint32 offset2 +offset_fix さてはて(???) uint16 EmotionType 感情の種類 uint8 EmotionVolume 0-256 感情の大きさ uint16 FaceY 顔の中心位置Y uint16 FaceX 顔の中心位置X uint8 unkown[6]; }
=========================================================== AVB::TAG2::UNKNOWN_TAG2 不明なTAG2をスキップする =========================================================== uint16 Tag >= 0x100 値が0x100以上の場合はTAG2 uint16 Size * サイズ情報 * unknown[] 不明なデータ
=========================================================== AVB::TAG2::ICON =========================================================== uint16 Tag 0x100 Icon uint16 Size 6 uint32 offset +offset_fix offset_fixを加えた値が本当のBMPのoffset uint16 unknown
=========================================================== AVB::TAG2::BACKGROUND =========================================================== uint16 Tag 0x102 (AVB::HEAD:Type==3) BACKGROUND uint16 Size 6 uint32 offset +offset_fix offset_fixを加えた値が本当のBMPのoffset uint16 unknown
=========================================================== AVB::TAG2::AUTHOR =========================================================== uint16 Tag 0x103 uint16 Size * uint8 string[] "..."\0 '\0'で終了
=========================================================== AVB::TAG2::DOWNLOAD_URL =========================================================== uint16 Tag 0x104 uint16 Size * uint8 string[] "..."\0 '\0'で終了
=========================================================== AVB::TAG2::OFFSET_FIX 画像Offsetの開始位置をずらす =========================================================== uint16 Tag 0x107 uint16 Size 4 uint32 offset_fix *
=========================================================== AVB::TAG2::COLORMAP =========================================================== uint16 Tag 0x101 uint16 Size * uint16 RGBCount * RGBテーブルの大きさ * rgbdata[] RGBテーブルデータ
=========================================================== AVB::BMP Imageデータの情報部分 =========================================================== * AVB::COLORMAP もし先頭が0x101ならCOLORMAPのTAG uint32 hsize 0x28 header size uint32 width * pixels uint32 hight * pixels uint16 planes 1 (???) uint16 nbit * pixel depth uint32 compress * (???) uint32 size * (???) uint32 resH * (???) uint32 resV * (???) uint32 ncolorT * n color for table(???) uint32 ncolorD * n color for display(???) uint32 gzip_out * gzip output size uint32 gzip_in * gzip input size * data[] gzipで圧縮されている
########################################################### # EOF # ###########################################################
avbファイルって、いちいち専用エディタとかつかうのも面倒なので、プレーンテキストで設定したいなぁ・・・ってことで。
(This host) = http://osask.net