Copyright by Kekenken, All rights reserved. 六角大王の人体モデルを H-Anim に変換する

フリーウェア版六角大王で作成した人体モデルをRok2Worldを使ってH-Anim (Humanoid Animation) 仕様 Ver1.1 に変換する方法を説明します。

What's New

2003.3.20

H-Animとは

H-Anim (Humanoid Animation) は人体アニメーション記述の標準として策定されたVRML97の拡張規格です。  人体の関節等のネーミングや階層構造などが仕様化されており、EAI + Java や Java3D など外部のプログラムから制御しやすくなっています。  H-Anim 規格に則った人体データは対応した3Dチャットやゲームなどで利用可能です。  Cosmo Player, Cortona VRML Client, blaxxun Contact 3D などのVRMLブラウザーや、Shout3D ならば、H-Anim Ver1.1 に対応しています。
関連リンク
Rok2World を H-Anim に対応させるにあたり、以下のサイトを参照しています。
Humanoid Animation Working Group of the WEB3D Consortium
Specification for a Standard Humanoid Version 1.1 日本語版

変換の概要

Rok2Worldは読み込んだ六角大王データが CenterDiamondsを含んでいると、それを関節、股、手足頭の先端の位置などと自動的に解釈します。  また、六角大王データの各グループが体のどの部分に相当するか自動的に判断します。  そして人体情報や著作権などの設定を含めて、H-Animの仕様に沿って出力を行います。

用意する人体モデル

六角大王で編集可能な2足人体のモデルが必要です。    H-Anim仕様書の Modeling the Humanoid人体のモデリングに概ね従っている必要があります。

六角大王の人体モデル 前後左右ともに中央近辺で背筋を伸ばし、向かってこちら側を向いて起立していること。
  • 腕の肘と脚の膝と手首は伸ばした状態で、腕は体の真横、足の裏が地面と平行である状態を推奨します。
    肘が折れ曲がって手首が肘より高い位置にあるなど、上下関係が入れ替わった状態は不可です。
  • 腕と脚と背筋は地面に対して垂直に伸ばしている状態を推奨します。
    ある程度斜めに傾いた状態でも構いませんが、地面と水平に伸ばしている状態は不可です。
  • 足のつま先は「ハの字」に開いても構いませんが、平行に並んでいる状態を推奨します。
  • 頭は真っ直ぐ正面を向いている状態を推奨します。
人体モデルは以下の体の部分が独立したグループである必要があります。
  • 頭、首、胸、腰、尻
  • 左右の肩、上腕、前肘、手首から先
  • 左右の太股、ふくらはぎ、足首から先

顎と顔の表情と手足の指の関節には対応していません。 しっぽなど独自の関節の追加はできません。

体の各部分に複数のグループが使われていても構いませんが、誤判断される場合があります。  「ロングヘア」や「おさげ」などが頭から独立したグループである場合など、そのグループが体の他の部品に重なるようならば、誤判断される可能性が高くなります。

誤判断されたグループは体の別の部分として出力されます。  これを避けるには、あらかじめ人体の同じ部分はグループを統合してください。

Rok2Worldは「3角形の面が2枚だけのグループ」をCenterDiamondと判断します。
人体モデルに3角形の面が2枚だけのグループは使わないでください。
左図は解り易く人体の部分ごとに色分けしたものです。  左図の人体の場合、胴体の胸と腰と尻は独立していますが、首と肩は胸と一体化しています。 一体化した部分は動かすことができません。

CenterDiamondsの組み込み

以下の手順でCenterDiamondsを六角大王の人体モデルに組み込んでください。  CenterDiamondsのファイルはRok2Worldのダウンロードファイルに同梱されているcenter.rokです。

CenterDiamondsを組み込んだ人体モデル
  1. 人体モデルの六角大王ファイルを複製コピー、もしくは別の名前で保存して作業用ファイルを作成してください。  元のファイルは保存用としてとって置いてください。
  2. 作業用ファイルを六角大王で開き、[ 編集 ] [ すべて選択 ] [ 加工 ] [ 隠す ] を行い、人体モデルを変形出来ないようにしてください。  また、作業用ファイルは [ 加工 ] [ グリッドのプロパティ ] の「グリッドに配置する」のチェックを外してください。
  3. Rok2Worldに同梱されている center.rok を開き、[ 編集 ] [ すべて選択 ] [ 編集 ] [ コピー ] を行って、作業用ファイルへ [ 編集 ] [ 貼り付け ] を行ってください。
  4. 22個のCenterDiamond(菱形)をそれぞれドラッグし、人体モデルの各関節の中央、頭頂、股、手足の先端に配置してください。
  5. 配置が終わりましたら、セーブして六角大王を終了してください。
  • 各CenterDiamondは一個一個グループ化されています。 グループの解除や他とのグループ化はしないでください。
  • 各CenterDiamondに貼られている面の色(パレット)と枚数(2枚)には意味があります。 面の追加削除、色の塗り替えはしないでください。
  • CenterDiamondの増減は行わないでください。 22個の場合のみRok2WorldはCenterDiamondsを認識いたします。
    体の部分が一体化しているモデルのCenterDiamonds配置例
  • 頭と首が一体化しているモデルの場合
    中央上から2番目の CenterDiamond (頭の付け根用)を首の付け根に設置してください。
    中央上から3番目の CenterDiamond (首の付け根用)を2番目のやや下に設置してください。
  • 胸と腰が一体化しているモデルの場合
    中央下から3番目の CenterDiamond (胸と腰との間の関節用)を
    中央下から2番目の CenterDiamond (腰と尻との間の関節用)と同じ位置に設置してください。

Rok2Worldによる変換の仕方

  1. r2wb.jse ( Rok2Worldのプログラム本体 ) をテキストエディターで開き、以下の情報を書き加えて上書き保存してください。
    日本語など2バイト文字と \ は書き込まないでください。
    これらの書き込みは必須ではありません。 これらの情報は出力されたVRMLファイルをテキストエディターで開き、書き足しや書き直しが出来ます。
    authorName 人体モデル制作者の名前
    authorEmail 人体モデル制作者のメールアドレス
    copyright 人体モデルの著作権
    usageRestrictions この人体モデルを扱う際の制限事項
    (記入例)
    var hanim_authorName = "Kekenken";
    var hanim_authorEmail = "kekenken@ceres.dti.ne.jp";
    var hanim_copyright = "by Kekenken, All rights reserved.";
    var hanim_usageRestrictions = "non-profit use only";
  2. r2wb.jse アイコンもしくはそのショートカットアイコンへCenterDiamondsが組み込まれた六角大王ファイルをドラッグ&ドロップしてください。
  3. ロードが完了したら、オプションを設定してください。  以下のオプションは H-Anim 変換に関わる重要なオプションです。
    変換オプション画像
    スケール調整
    左のボックスにチェックを入れて、人体モデルの身長を設定してください。 単位は m です。  これは必須ではありませんが、設定することを推奨します。
    縦位置調整
    左のボックスにチェックを入れて、0を設定してください。 この項目は必須です。
    この項目にチェックが入っていない、もしくは 0 以外を設定していると、H-Animの変換は行われません。
    出力オプション画像
    Humanoid情報
    人体モデルの情報を設定してください。  名前は必須ですが、それ以外の設定は必須ではありません。  この設定の情報は出力されたVRMLファイルをテキストエディターで開き、書き足しや書き直しが出来ます。
    名前の初期値は六角大王のファイル名から拡張子を除いた部分です。  ファイル名に2バイト文字が入っている場合はfoo chanとなります。
    名前に日本語など2バイト文字と \ は設定しないでください。
    Version は人体のバージョンを数値で適当に設定してください。
    上記以外のオプションも併用できますが、出力されたデータを3Dチャットなど他のデータと協調して使用するならば、なんちゃってアニメ調、環境マッピング、スプライン出力は推奨しません。
  4. 変換するボタンをクリックしてください。  H-Animを出力できるならば、変換完了後、コンソールに H-Anim OK! 変換完了 と表示されます。
  5. セーブするボタンをクリックしてセーブしてください。  セーブが終わったら、終了するボタンをクリックして終了してください。

データの確認

Rok2World に同梱されているSimple Humanoid Poser (ファイル名 shp.wrl) を使って、 出力したH-Animの関節位置や体の部位が正しく検出されているかなどを確認できます。
Simple Humanoid Poser の組み込みと実行
  1. H-AnimのVRMLファイルをテキストエディターで開き、その一番最後に以下の枠内のテキストを追加して、上書きセーブしてください。
    EXTERNPROTO SimpleHumanoidPoser [
    exposedField SFVec3f translation
    exposedField SFRotation rotation
    field SFBool light
    field SFNode humanoid
    ] "shp.wrl"
    DEF SHP SimpleHumanoidPoser { light FALSE humanoid USE Humanoid }
    DEF SHP-PrS ProximitySensor { center 0 0 0 size 1000 1000 1000 }
    ROUTE SHP-PrS.position_changed TO SHP.translation
    ROUTE SHP-PrS.orientation_changed TO SHP.rotation
    「なんちゃってアニメ調」で出力した場合は、枠内7行目の FALSETRUE に変えてください。

  2. shp.wrl をH-Animファイルと同じフォルダにコピーしてください。
    shp.wrl をH-Animファイルと違うフォルダに置く場合、上枠内6行目の "shp.wrl" にパスを加えるなど適当に書き換えてください。
  3. H-AnimファイルをVRMLブラウザーなどで開いてください。
Simple Humanoid Poser の操作
人体モデルの左に表示されている赤いボールをドラッグすると、モデルの体の各部分が関節を中心に曲がります。
Simple Humanoid Poser の仕様と使用上の注意
Rok2World 出力以外の H-Anim を使う場合
Simple Humanoid Poser は H-Anim Ver1.1 に対応していれば Rok2World 出力以外のデータも必ずではありませんが扱えます。
上記に従って Simple Humanoid Poser を組み込み、上記枠内7行目の Humanoid を Humanoidノードの DEF 定義名に合わせて変更してください。

Rok2Worldが出力するH-Animの仕様

出力されたH-Animデータについて詳しく知りたい方向けの資料です。
出力されるH-Animのノードとフィールド
ノード フィールド
Humanoid humanoidBody, joints, segments, sites, viewpoints, version, name, info
Joint name, center, children
Segment name, children
Site name, translation, children
CenterDiamonds と出力される関節と体の部位の関係

関節に配置された CenterDiamond の中心座標が Joint ノードの center フィールド値となります。  頭頂、股、手足の先端に配置された CenterDiamond の中心座標が Site ノードの translation フィールド値となります。

Rok2Worldは2つのCenterDiamond間を結ぶ直線もしくは半直線とグループの中心座標との距離から、六角大王の各グループが人体のどの部位にあたるかを判断します。  (実際にはもう少し誤判断を避ける工夫がされています。)

CentersDiamonds Tree Joint Segment Site
name center name children name translation
HumanoidRoot (*1) sacrum 仙骨(*6)
┣● sacroiliac (*2) pelvis crotch #0
┃┣● l_hip #1 l_thigh 左太股
┃┃┗● l_knee #2 l_calf 左ふくらはぎ
┃┃ ┗● l_ankle #3 l_hindfoot 左足先 l_forefoot_tip #4
┃┗● r_hip #5 r_thigh 右太股
┃ ┗● r_knee #6 r_calf 右ふくらはぎ
┃  ┗● r_ankle #7 r_hindfoot 右足先 r_forefoot_tip #8
┗● vl5 #9 l5
 ┗● vl1 #10 l1
  ┗● vt1 (*3) t1 頸椎(*6)
   ┣● vc4 #11 c4
   ┃┗● skullbase #12 skull skull_tip #13
   ┣● l_acromioclavicular (*4) l_scapula 左肩
   ┃┗● l_shoulder #14 l_upperarm 左上腕
   ┃ ┗● l_elbow #15 l_forearm 左前肘
   ┃  ┗● l_wrist #16 l_hand 左手 l_dactylion #17
   ┗● r_acromioclavicular (*5) r_scapula 右肩
    ┗● r_shoulder #18 r_upperarm 右上腕
     ┗● r_elbow #19 r_forearm 右前肘
      ┗● r_wrist #20 r_hand 右手 r_dactylion #21

基本的に仕様書付録のLOA2(表現レベル2)の省略形です。  l5, l1, t1, c4 に腰、胸、頸椎、首の部位を入れたのは私(けけんけん)の独断です。

(*1) HumanoidRoot の center フィールドには、 crotch(#0)の translation フィールドと同じ値が出力されます。
(*2) sacroiliac の center フィールドには、 l_hip(#1)と r_hip(#5)の中間座標が出力されます。
(*3) vt1 の center フィールドには、 vl1(#10)と vc4(#11)の間を 9 : 1 に内分する座標が出力されます。
(*4) l_acromioclavicular の center フィールドには、 vc4(#11)と l_shoulder(#14)の間を 1 : 4 に内分する座標が出力されます。
(*5) r_acromioclavicular の center フィールドには、 vc4(#11)と r_shoulder(#18)の間を 1 : 4 に内分する座標が出力されます。
(*6) sacrum「仙骨」と t1「頸椎」の children フィールドには 何も出力されません。
人体モデルの情報

Humanoid ノードの info フィールドに以下の人体モデルに関する情報を出力します。

authorName 人体モデルの製作者 r2wb.jse をテキストエディターで開いて設定できます。
authorEmail 人体モデル製作者のメールアドレス
copyright 人体モデルの著作権
usageRestrictions この人体モデルを扱う際の制限事項
humanoidVersion 人体モデルのバージョン Rok2Worldオプション設定のHumanoid情報に従います。
age 人体モデルの年齢
gender 人体モデルの性別
creationDate 人体モデルの作成日 H-Animを出力した日付が自動的に加えられます。
height 人体モデルの身長 Rok2Worldオプション設定のスケール調整に従います。
weight 人体モデルの体重 Rok2Worldが身長から理想体重(=22×身長×身長)を計算します。

Rok2Worldオプション設定のHumanoid情報で入力した名前は、Humanoid ノードの name フィールドに出力されます。  入力された名前が無い、もしくは2バイト文字や \ が含まれていた場合、name フィールドは foo chan と出力されます。

出力サンプル

Dancing! Tail の女の子の「顔以外ローポリゴン版」です。  ゲームで使われているモデルとは違い、胴体の胸、腰、尻が独立しています。  Simple Humanoid Poser で自由にポーズをとることが出来ます。
六角大王Super2で作成したモデルをフリーウェア版六角大王形式で書き出し、Rok2World Version β3で変換しました。 さらに、GoGoGoさんが作成したツールPoint Number Simpliferで省データ後、 gzip で圧縮しています。
VRMLプラグインで実行 (33kB)
ダウンロード対応VRMLプラグイン
Cortona 3.1 / 4.2 / 5.1 Contact 5.3 / 6.1 / 7.0 Cosmo Player 2.1 Pivoron Player 1.0
以下の圧縮ファイルに収録されている六角大王ファイルには CenterDiamonds が組み込まれています。 また、VRMLを実行するには別途 Simple Humanoid Poser ( shp.wrl ) を用意し、同じフォルダに置く必要があります。

変換前の六角大王ファイルとgzip圧縮前のVRML (114kB)