ComicStudioPro 4.0ComicStudioEX 4.0で扱える主な3Dデータには、Shade(shd)、wavefront(obj)、Auto CAD(dxf)、LightWave(lwo)等がありますが、lwo以外はスムースの角度が滑らか過ぎて、しっかり線や角を出したい場合は必然的にlwo形式の選択になります。

LightWaveは趣味で手を出すには高額なソフトですが、Lwo形式にエクスポートできる無料ソフトもあります。
私が見つけた中では、
■Google SketchUp 
入手先 http://sketchup.google.co.jp/
 こちらにある、lwo_export-005.zipをダウンロードすることによって、Lwo形式に出力できるようになります。
 レイヤーも保持したまま出力できますが、マテリアルがなぜか透明になります。コミスタでのマテリアルは透明情報を扱えないので問題なしです。

■Blender
入手先 http://www.blender.org/
英語ですが、有志の方が日本語化ファイルを作ってくださっているので、日本語にして使えます。大変高機能ですが操作に癖があります。対応しているファイル形式が豊富なので、コンバート専用として割り切ればいいかも。
試しにlwoに出力してコミスタで読み込もうとしましたが、操作を誤ったのか上手くいかなかったです…。

私は有料版Metasequoiaを使ってlwoにエクスポートしています。
他に安価なソフトでは六角大王Super5.5 Winもlwo形式のファイルに出力できるようです。


コミスタで3Dデータを扱う時、問題なのはテクスチャーの付いた3Dデータの場合です。
大抵の3Dソフトは一つのオブジェクトに対して複数のマテリアルを持てますが、コミスタは一つのオブジェクトに一つのマテリアルしか持てないようなのです。複数のテクスチャがある3Dデータを読み込ませるには、テクスチャごとにオブジェクトを分けるか、テクスチャをまとめて一個のマテリアルにするかです。後者の方は、複数のテクスチャを一つの画像ファイルにして、マテリアルの再設定とUV編集が必要になり、手間がかかります。
(※追記です。Lwoファイルの場合は、一つのオブジェうとに複数のマテリアルが設定してあってもちゃんと反映されました。反映はされますが、やはり一マテリアルと認識されるため、テクスチャの有無や濃淡等の調整に影響が出ます)

マテリアルごとにオブジェクトを分けたlwoファイルの読み込みの場合、そのまま読み込むとこんな状態になります。

84ddf54a.jpg
△lwoファイルを読み込んだ状態

元は一つのlwoファイルですが、読み込むとオブジェクト一つ一つが独立してしまいます。大きさを調整したい、位置を変えたいという場合、オブジェクトを全部選択する必要があります。

1f61a356.jpg
△オブジェクトをShiftキーを押しながら選択。

これだとツールの「接地」が上手くいかないし、何よりいちいち全部選択するのが面倒です。
どうにか階層関係にならないものかと調べまくりました…。

lwo形式のファイルで階層関係つきのデータを扱うには、.lwsという拡張子の階層関係を記述したファイルが必要のようです。lwoファイル単独では階層表示にはならないみたい。lwsを出力できるソフトは、これも探しましたがやはり本家本元LightWave以外にはないみたい…。

しかしこのlwsファイル。テキストデータになっていて、記述さえわかれば自力で作成することが可能です。その記述がわからない…、のだけれども、コミスタ付属の3Dデータ素材のlwsファイルと名称未設定さんのブログの記事を参考にさせていただき、簡単に作成することが出来ました。

以下覚え書きです。


■■■ lwsファイルの作成 ■■■

テキストエディタで作成します。

行頭に

LWSC
3


と記述。

その下に

LoadObjectLayer 1 ○○○.lwo
ShowObject 6 3
ObjectMotion
NumChannels 9
Channel 0
{ Envelope
1
Key 0 0 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 1
{ Envelope
1
Key 0 0 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 2
{ Envelope
1
Key 0 0 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 3
{ Envelope
1
Key 0 0 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 4
{ Envelope
1
Key 0 0 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 5
{ Envelope
1
Key 0 0 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 6
{ Envelope
1
Key 1 0 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 7
{ Envelope
1
Key 1 0 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 8
{ Envelope
1
Key 1 0 0 0 0 0 0 0 0
Behaviors 1 1
}

ShadowOptions 7


と記述。
これが階層関係の一番上部、「親」になります。
LoadObjectLayer 1 ○○○.lwo
の、1の数値は、レイヤーの一番目で、○○○.lwoは読み込むlwoのファイル名になりlwsファイルからみた相対パスです。コミスタ付属の3D素材は、lwoファイルとテクスチャをまとめてObjectsフォルダに入れているので、ここは Objects/刀01_t.lwo みたいになっていました。

このLoadObjectLayer ~ ShadowOptions 7 までの記述をオブジェクト(レイヤー)の数だけ記述します。そのとき、2番目のレイヤーは、
LoadObjectLayer 2 ○○○.lwo
というように、数値のところを連番になるように記述します。
3番目のレイヤーは
LoadObjectLayer 3 ○○○.lwo
になります。

次に、「子」の指定です。
子になるオブジェクトには
ShadowOptions 7 の記述のすぐ前に ParentItem 10000000 という記述を追加します。

LoadObjectLayer 2 ○○○.lwo



省略




Channel 8
{ Envelope
1
Key 1 0 0 0 0 0 0 0 0
Behaviors 1 1
}

ParentItem 10000000
ShadowOptions 7


「10000000」 の 一桁目の数値は親になるレイヤーを参照している?ような。
10000000 → レイヤーの一番目の子
10000001 → レイヤーの二番目の子


10000002とすると3番目のレイヤー(LoadObjectLayer 3)の子になり、10000003にすると、4番目のレイヤー(LoadObjectLayer 4)の子になります。
ややこしいのは、LoadObjectLayer は上から1、2…と割り振られているのに対して、
子関係の指定の数値は、

10000000 + ( 《親にしたいレイヤーの番号》 - 1 )

になっているみたい。

すべての記述が終わったら、lwoのファイル名と同じ名前で、拡張子を.lwsとして保存します。


例 )
こんな3Dデータがあったとします。

055e484c.jpg
新版 Shade実用3Dデータ集 14 食卓の森 食卓と台所素材集 から

70032958.jpg
△オブジェクトパネル

オブジェクト(レイヤー)は上から、lwsファイルではLoadObjectLayer 1LoadObjectLayer 2となります。

上の画像のデータの場合、lwsファイルの記述では
LoadObjectLayer 1 ~ ShadowOptions 7 「皿」
LoadObjectLayer 2 ~ ShadowOptions 7 「生クリーム」になります。

「種」「果実」の子にしたいとします。
LoadObjectLayer 4 ~ ShadowOptions 7 までが「種」の記述になり
「果実」は3番目のレイヤーでLoadObjectLayer 3です。
ParentItemの数値は
10000000 +( 《「果実」のレイヤー番号3》 - 1 )
なので10000002です。
なお、このデータのファイル名は「StrawberryCake.lwo」です。

LoadObjectLayer 4 StrawberryCake.lwo



省略




Channel 8
{ Envelope
1
Key 1 0 0 0 0 0 0 0 0
Behaviors 1 1
}

ParentItem 10000002
ShadowOptions 7


と記述します。

するとこうなります。

442fa7bd.jpg
△読み込むファイルはlwoファイルではなく、lwsファイルの「StrawberryCake.lws」です。

ついでに、「がく」「果実」の子にしました。

「がく」LoadObjectLayer 5 ~ ShadowOptions 7 までが「がく」の記述で、ShadowOptions 7の前のParentItemの数値を「種」と同じ
ParentItem 10000002
にしてやりました。

階層化することで、たとえば苺だけ非表示にしたいときは
「果実」をクリックして非表示状態にすると、一緒に子である「種」「がく」も非表示になります。

c057e723.jpg
△苺だけが消えた


さらに子の子にする場合、
たとえば「種」「がく」の子を持つ「果実」「生クリーム」の子にします。

「生クリーム」LoadObjectLayer 2 の記述のParentItemの数値を、
ParentItem 10000001
にしてあげると、

a6d79bfa.jpg
△生クリームの上に苺

さらに階層化できました。


階層化することによって、コミスタでの3Dデータがずっと扱いやすくなります。
shadeファイル読み込み時のスムージングさえなんとかなれば、こんな面倒なことしなくていいのですが~。今回、shadeのデータをポリゴン化するまでが時間が掛かりました。ポリゴン数を気にしないなら一気に変換してしまえばよいのですが、なるべく軽量化したいため、それなりの作業と時間が必要になってきてしまいます。

あと、注意しなければならないこと。
lwsの記述を誤ると、コミスタ側で大抵は「エラー」の表示を出してくれますが、たまに無言で強制終了してしまうことがあります。原稿で自作lwsファイルを使う場合、読み込みテストをしてから使うか、原稿を保存してから読み込まれることを強くお勧めします。