OBJ形式のファイルを読み込むスクリプト

3D座標操作の練習として、OBJ形式のファイルを読み込んで Illustrator 上に描画するスクリプトを作りました。 実用になるかわかりませんが、気分転換にアートボードの片隅で立体をくるくる動かしてみると癒されることもあるのではないでしょうか。

基本的な使い方

  1. OBJ読み込み ボタンで obj ファイルを選択する
    (読み込んだ形状は書類の原点(0,0)を中心として作成されます)
  2. 向きを変えたいときはダイアログ上部のパネル上でドラッグする
  3. ダイアログを閉じる

補足

  • ドラッグ操作においては、ドラッグの開始点が原点(視点の中心)になります。(パネルの中心が原点ではありません。)
  • パネルの外までドラッグしてマウスボタンを離した場合、ドラッグ継続中と見なされます。この場合、パネル上でクリックするなどしてマウスの状態を認識させてください。
    (どうもScriptUIがmouseleaveを検出してくれないのです。)

    → mouseoutで解決
  • マテリアルはディフューズ色のみ反映されます。データを読み込むごとに、スウォッチRGBのスポットカラーがマテリアル数分だけ追加されます。

進んだ使い方

  • 光源位置設定 にチェックをつけると、パネル上のドラッグで光源の位置を変更できます。
    チェックはドラッグ終了時に外れます。
  • オプション ボタンを押して設定を変更できます(詳細後述)
    オプションのデフォルト値を変更するにはスクリプトの冒頭部分を編集してください。
  • 影をつける ボタンを押して影をつけられます。
    (影がついている状態で回転はできません。改めて回転させるには 影を削除 ボタンを押して影を削除してください。)
    影は面ごとに作成しています。影が重なった部分は、追ってパスファインダで合体するなどしてください。

オプションの補足

f:id:shspage:20170323215940p:plain

  • ドラッグ中は簡易的なZ座標補正を行う:「Z座標補正」は面の前後の並べ替え処理で、データ量が多いと時間がかかります。ドラッグ中は簡易的な並べ替えを行うよう設定できます。簡易処理を行っている際は前後関係が正しく表示されないことがあります。必要に応じてメインダイアログの「Z座標補正」ボタンを押してください。影をつける時にはここでの設定にかかわらず簡易的でない並べ替え処理が行われます。
  • 終了時に裏面を残す:既定では視線方向と反対側を向いた面は終了時に削除されます。この設定をチェックすると、これらの面はグループ化され、読み込みで作成したパスの最背面に置かれます。
  • チント下限:面の明るさはスポットカラーのチントで設定しています。下限は最も明るい部分の濃度です。
  • 大きいデータと見なす閾値:設定した面数以上のデータを読み込んだ場合、警告などを表示します。
  • 点光源:光の減衰はありません。

  • スクリプトの冒頭部に、パネルで設定できないオプションがいくつかあります。たとえば既定ではx座標またはy座標が原点から1000ポイント以上離れた点をもつパスは描画されません。用途に合わない場合は _MAX_COORD_VALUE の値を変更してください。

既知の問題

  • OBJファイル読み込み完了直後にパネル上でドラッグするとエラーが表示される場合があります。
  • 前後の並べ替え中にドラッグするとイラレごと落ちる場合があります。

→ たぶん解決

ダウンロード

illustrator_obj_loader.zip

  • 読み込みテスト用のサンプルデータが同梱されています。

【変更点】
ver.1.0.1: 未使用変数削除、コメント修正
ver.1.0.2: UI(メッセージ)を一部変更
ver.1.0.4: 一部処理を簡略化
ver.1.0.5: mouseoutのeventListenerを追加
ver.1.1.0: mouseUp時のz座標補正を廃止。z座標補正ボタンを追加
ver.1.1.1: 冒頭の説明文を現バージョンに合わせて変更

その他

TODO

ダイアログを閉じたあとのundoで実行前に戻るようにする

スクリプトを実行したあとundoしたら実行前に戻るのが期待される挙動だと思うのですが、このスクリプトの場合はタイミング的に難しくてですね、むやみにundoしてスクリプト実行前の操作がundoされるのは避けたいというのもあって、ダイアログを閉じてからundoで開く前の状態に戻るためには2,3回では済まない場合があります。

CMYKColorの対応?

ドキュメントカラーモードにかかわらず、色はRGBColorで作成しています。(影はGrayColor。) OBJファイルのマテリアルが持っているカラーがRGBで、CMYKに変換すると変な色になることがあると思われるのですが、オプションで変換するか選べるようにしようと考えています。

開発環境

Adobe Illustrator CC 2017.0.2 (Windows10 / 64bit)

ライセンス

Copyright© 2017 Hiroyuki Sato
https://github.com/shspage
MITライセンスのフリーウェアです。
詳細は同梱のLICENSE.txtをご覧ください。