2024/11/24(日) [n年前の日記]
#1 [cg_tools] epsの中身を眺めてみた
3DCGソフト Shade 12 Standard / 10.5 Standard で eps (epsf)ファイルがインポートできない件が気になったので調べてる。環境は Windows10 x64 22H2。
epsファイルは、ベクターデータを持っている画像ファイルの一種。セキュリティの問題で今では利用禁止されてる環境が多いけど、昔は結構利用されてたらしい。
epsファイルは、ベクターデータを持っている画像ファイルの一種。セキュリティの問題で今では利用禁止されてる環境が多いけど、昔は結構利用されてたらしい。
◎ epsファイルの構成 :
以下のアプリで保存した .eps を、テキストエディタで開いて中身を眺めてみた。
なんとなく構成が分かってきた。おそらくだけど、epsファイルは以下の3つの部分で構成されてる。たぶん。
そして、マクロ定義部分とデータ部分については、各アプリの出力結果が全く異なることも分かった。マクロ名については各アプリ毎に好き勝手な命名をしまくっているので、座標値列 + マクロ名も列挙されているデータ部分についても、全く違うものになる。
つまり、eps を読み取るなら、マクロ群についてもちゃんとどこかに記憶しておいて、データ部分を読み取りながらマクロで展開しつつ解析していかないといけない。
そしてここからは想像だけど…。Shade の epsインポート処理は、「eps は Adobe Illustrator 8.0 未満で出力されたもの」と決め打ちで作られてるのではないかと…。もしかするとマクロ定義部分はほとんど読み飛ばして、データ部分だけを見て、「Illustrator ならこういうマクロ名を使っているはず」と決めつけながら解析してる可能性もありそう。
もし、本当にそういう作りだとしたら、他のアプリで出力した eps が一切読み取れなくて当然。マクロ名がそもそも全然違うから…。中身が空のパートだけが追加されていったのも納得。
- Inkscape 1.4
- EPS-draw 4.51
- Tgif 4.2
- Xfig 3.2.7b
- LibreOffice Draw 24.8.3.2
なんとなく構成が分かってきた。おそらくだけど、epsファイルは以下の3つの部分で構成されてる。たぶん。
- ヘッダ部分。どんなツールで作ったか等が記述されてる。
- マクロ(?)定義部分。
- データ部分。座標値列 + マクロ名(?)が並んでる。
そして、マクロ定義部分とデータ部分については、各アプリの出力結果が全く異なることも分かった。マクロ名については各アプリ毎に好き勝手な命名をしまくっているので、座標値列 + マクロ名も列挙されているデータ部分についても、全く違うものになる。
つまり、eps を読み取るなら、マクロ群についてもちゃんとどこかに記憶しておいて、データ部分を読み取りながらマクロで展開しつつ解析していかないといけない。
そしてここからは想像だけど…。Shade の epsインポート処理は、「eps は Adobe Illustrator 8.0 未満で出力されたもの」と決め打ちで作られてるのではないかと…。もしかするとマクロ定義部分はほとんど読み飛ばして、データ部分だけを見て、「Illustrator ならこういうマクロ名を使っているはず」と決めつけながら解析してる可能性もありそう。
もし、本当にそういう作りだとしたら、他のアプリで出力した eps が一切読み取れなくて当然。マクロ名がそもそも全然違うから…。中身が空のパートだけが追加されていったのも納得。
◎ Shadeのepsインポート自体は動作した :
Shade 12 Standard 64bit Windwos版で、epsインポート機能が本当に動くのか確認したくて、古い Adobe Illustrator で出力された .eps / .ai がどこかにないものかとググりまくっていたけれど。どうにか遭遇して入手することができた。ありがたや。
_Inkscape wont open .ai file - InkscapeForum.com
_Index of /~ugs/cms/cpt/cpt_tasks_v0.13
face.rar と cmslogo.eps を入手して動作確認に使わせてもらった。ちなみに face.rar をダウンロードすると file828a というファイルが入手できる。file828a.zip にリネームして中を覗くと test.ai というファイルが入っている。
どちらも最初のあたりに「%%Creator: Adobe Illustrator(r) 6.0」と記述されてるので、おそらく Illustrator 6.0 で保存された .ai/.eps なのではないか。
Shade 12 Standard でインポートしてみた。
これでたしかに、Adobe Illustrator から保存された .ai/.eps なら Shade でインポートすることができると分かった。Shade の epsインポート機能は動いていないのではないかと疑ってたけど、条件が整っていれば、たしかにちゃんと動作するらしい。
そして、他のアプリで保存した eps はインポートできないことも分かった。あくまで、古い Illustrator で保存した .ai / .eps じゃないとダメ。それ以外は一切受け付けない。そういう仕様だったらしい…。
さておき、実際に読み込めた .ai / .eps がどんな形で取り込まれるのか眺めてみたけれど、どうやら閉じた線形状/開いた線形状しか読み込めないように見えた。これなら dxf をインポートしても同じかな、という気がする…。dxf なら、どのアプリから保存した dxf でも読め込めるから、ハマらずに済むメリットもあるし…。
_Inkscape wont open .ai file - InkscapeForum.com
_Index of /~ugs/cms/cpt/cpt_tasks_v0.13
face.rar と cmslogo.eps を入手して動作確認に使わせてもらった。ちなみに face.rar をダウンロードすると file828a というファイルが入手できる。file828a.zip にリネームして中を覗くと test.ai というファイルが入っている。
どちらも最初のあたりに「%%Creator: Adobe Illustrator(r) 6.0」と記述されてるので、おそらく Illustrator 6.0 で保存された .ai/.eps なのではないか。
Shade 12 Standard でインポートしてみた。
- ファイル → インポート → EPSF、を選ぶとファイル選択ダイアログが開く。
- ファイル種類で「EPSF (*.eps)」または「Illustrator (*.ai)」を選ぶ。
- test.ai または cmslogo.eps を開く。
これでたしかに、Adobe Illustrator から保存された .ai/.eps なら Shade でインポートすることができると分かった。Shade の epsインポート機能は動いていないのではないかと疑ってたけど、条件が整っていれば、たしかにちゃんと動作するらしい。
そして、他のアプリで保存した eps はインポートできないことも分かった。あくまで、古い Illustrator で保存した .ai / .eps じゃないとダメ。それ以外は一切受け付けない。そういう仕様だったらしい…。
さておき、実際に読み込めた .ai / .eps がどんな形で取り込まれるのか眺めてみたけれど、どうやら閉じた線形状/開いた線形状しか読み込めないように見えた。これなら dxf をインポートしても同じかな、という気がする…。dxf なら、どのアプリから保存した dxf でも読め込めるから、ハマらずに済むメリットもあるし…。
◎ epsについてもう少し調べた :
Google のAI、Google Gemini さんに、epsについて尋ねてみたら、色々ヒントを出してくれた。どこまで正しいのか分からんけど。
また、eps内にはマクロが書かれているのかと思っていたけれど、「マクロは使えないよ。代わりにプロシージャなら使えるけど」とも言われた。アレはマクロじゃなかったのか…。
以下のページにも遭遇。eps はエディタでガシガシ書くことも不可能では無いらしい。
_EPSグラフィック直書き入門
eps内に出てくる、「/hoge { ... } def」といった行は、変数や関数を定義しているらしい。
また、行頭に「%」「%%」がついてる行はコメント行らしい。ただ、「%!PS-Adobe-3.0 EPSF-3.0」「%%BoundingBox: 0 0 300 300」等、意味を持った行もあるようではある。
EPSファイルは、大きく分けて以下の要素で構成されています。自分の想像はさほど間違ってなかったのかも。
* ヘッダー: ファイルの開始を示す情報や、バージョン情報などが含まれます。
* プロローグ: EPSファイル全体の設定や、使用するフォント、色空間などの情報が記述されます。
* グラフィックオブジェクト: 実際の図形データが記述されます。ベクターデータは、点と線の組み合わせで表現され、数学的な式で記述されます。
* トレーラー: ファイルの終了を示す情報が含まれます。
また、eps内にはマクロが書かれているのかと思っていたけれど、「マクロは使えないよ。代わりにプロシージャなら使えるけど」とも言われた。アレはマクロじゃなかったのか…。
以下のページにも遭遇。eps はエディタでガシガシ書くことも不可能では無いらしい。
_EPSグラフィック直書き入門
eps内に出てくる、「/hoge { ... } def」といった行は、変数や関数を定義しているらしい。
また、行頭に「%」「%%」がついてる行はコメント行らしい。ただ、「%!PS-Adobe-3.0 EPSF-3.0」「%%BoundingBox: 0 0 300 300」等、意味を持った行もあるようではある。
[ ツッコむ ]
#2 [anime][cg_tools] 桜の木のサワサワ処理が分からない
BS松竹東急で、TVアニメ「オーイ!とんぼ」2クール目の放送が始まったので、録画して眺めてる。
2クール目2話目の最後のあたりに登場する桜の木が風でサワサワしていて、これが実にイイ感じのサワサワ具合なのだけど、どういう処理をしてサワサワさせてるのかコマ送りしても分からない…。どこをパーツ分けしてどう動かせば、ここまで良い感じのサワサワになるのだろうか…。もっとよく観察してみないと…。
幹と枝はおそらく動かしてないよな…。違うのかな…。たぶん桜の花だけを動かしてると思うのだけど…。
2クール目2話目の最後のあたりに登場する桜の木が風でサワサワしていて、これが実にイイ感じのサワサワ具合なのだけど、どういう処理をしてサワサワさせてるのかコマ送りしても分からない…。どこをパーツ分けしてどう動かせば、ここまで良い感じのサワサワになるのだろうか…。もっとよく観察してみないと…。
幹と枝はおそらく動かしてないよな…。違うのかな…。たぶん桜の花だけを動かしてると思うのだけど…。
[ ツッコむ ]
以上、1 日分です。