2014年5月24日土曜日

【ダイナミック ヘアー】poserのダイナミックヘアーのフォーマットを探る【strand-based hair】


Poserでストランドベースのダイナミックヘアーを使おうとすると、なかなか髪型のセッティングが難しく、イライラします。
Poserのヘアールームで微妙に曲げるだの引っ張るだのしていては、なかなか思った髪型になりません。
ポリゴンでモデリングするようにパパッとできれば、ガイドヘアー1本ずつ手でセッティングしたほうが、よっぽど早いのではないかと思うことが多々あります。
どうにかならないかなぁ と、考えているうちに、ダイナミックヘアーの構造が気になったので、とりあえず、Metasequoiaで小さなポリゴンを作って、調べてみることにしました。

本当に単純。四角ポリゴン1個だけです。
これをobj形式で保存します。もう少し気の利いた名前にすればよかったのですが、"小四角形.obj" という名前のファイルに保存しました。
obj形式はテキストデータなので、テキストエディタで開くだけで、簡単に中身をのぞけます。
(ちなみに、objフォーマットの中身については、検索するとたくさん出てきます。例えば、Googleで検索するならこんな感じ http://www.google.co.jp/search?q=3D+obj形式+フォーマット )

obj形式の単純な四角ポリゴン一個だけだとこんな感じです。

# Created by Metasequoia

mtllib 小四角形.mtl

v -0.010000 0.010000 -0.010000
v 0.010000 0.010000 -0.010000
v -0.010000 0.010000 0.010000
v 0.010000 0.010000 0.010000
# 4 vertices

vt 0.00000 0.00000
vt 1.00000 0.00000
vt 1.00000 1.00000
vt 0.00000 1.00000
# 4 texture vertices

vn 0.00000 1.00000 0.00000
# 1 normal vertices

g obj1
usemtl mat1
f 3/4/1 4/3/1 2/2/1 1/1/1
# 1 elements

これをPoserに読み込ませます。
ポツーンっと小さく見えるのが読み込んだポリゴンです
これに、ヘアールームで毛を生やします。

ヘアグループの設定をして、

「ガイドヘアー」ボタンをクリックすると、
四隅に毛が生えました。
状態の表示オプションをONにするとこんな感じです。

これをライブラリに hairtest という名前で登録します。
すると、ライブラリ内に hairtest.hr2 という名前のファイルができます。
これもテキストファイルなので、エディタで開いてみます。

"{" ではじまって、まずは、バージョンの記述

version
 {
 number 10
 }

次に、プロポーションの略でしょうか、propというセクションの中には、obj形式のポリゴンの記述がそのまま使われています。ただ、法線ベクトルの情報がなくなっていますね。

prop 小四角形
 {
 geomCustom 
  { 
  numbVerts    4
  numbTVerts    4
  numbTSets     4
  numbElems   1
  numbSets    4
  v -0.010000 0.010000 -0.010000
  v 0.010000 0.010000 -0.010000
  v -0.010000 0.010000 0.010000
  v 0.010000 0.010000 0.010000
  vt 0.000000 0.000000
  vt 1.000000 0.000000
  vt 1.000000 1.000000
  vt 0.000000 1.000000
  usemtl mat1
  s 0
  g  obj1  小四角形_Hair_1
  f 3/4 4/3 2/2 1/1
  } 

 }

obj1 と、小四角形_Hair_1がグループになっています。

続けて髪の形状と思われるhairPropというセクションの中、こちらもobj形式で記述されています。

hairProp 小四角形_Hair_1
 {
 geomCustom 
  { 
  numbVerts    80
  numbTVerts    80
  numbTSets     80
  numbElems   4
  numbSets    80
  v -0.010000 0.010000 -0.010000
  v -0.010000 0.012000 -0.010000
  v -0.010000 0.013998 -0.010079
  v -0.010000 0.015992 -0.010245
  v -0.010000 0.017974 -0.010507
  v -0.010000 0.019940 -0.010876
  v -0.010000 0.021880 -0.011361
  v -0.010000 0.023784 -0.011973
  v -0.010000 0.025639 -0.012722
  v -0.010000 0.027428 -0.013616
  v -0.010000 0.029132 -0.014662
   ・
   ・
   ・

   中略

   ・
   ・
   ・
  vt 0.000000 0.526316
  vt 0.000000 0.578947
  vt 0.000000 0.631579
  vt 0.000000 0.684211
  vt 0.000000 0.736842
  vt 0.000000 0.789474
  vt 0.000000 0.842105
  vt 0.000000 0.894737
  vt 0.000000 0.947368
  vt 0.000000 1.000000
  usemtl Hair
  s 0
  g  Hair
  l 1/1 2/2 3/3 4/4 5/5 6/6 7/7 8/8 9/9 10/10 11/11 12/12 13/13 14/14 15/15 16/16 17/17 18/18 19/19 20/20
  l 21/21 22/22 23/23 24/24 25/25 26/26 27/27 28/28 29/29 30/30 31/31 32/32 33/33 34/34 35/35 36/36 37/37 38/38 39/39 40/40
  l 41/41 42/42 43/43 44/44 45/45 46/46 47/47 48/48 49/49 50/50 51/51 52/52 53/53 54/54 55/55 56/56 57/57 58/58 59/59 60/60
  l 61/61 62/62 63/63 64/64 65/65 66/66 67/67 68/68 69/69 70/70 71/71 72/72 73/73 74/74 75/75 76/76 77/77 78/78 79/79 80/80
  } 

 }

つまり、ここの情報を一旦別ファイルにobj形式として書き出して、Metasequoiaなんかで編集したのち、書き戻せばいいってことなのかな。
なんとなく、やったらできそうな気がしてきましたね。

0 件のコメント:

コメントを投稿

人気の投稿(過去7日間)