#Illustrator の回転とリフレクトと歪み

Illustrator で作業をしていると、オブジェクトを回転したりリフレクトする機会がよくあると思います。右向きに作った矢印を、上向きにするために90°回転したり、左向きにするために左右をリフレクトさせたり。
そんな Illustrator の回転リフレクトという機能について気合を入れてまとめてみました。

目次

  1. Illustrator 内での不統一な呼称
  2. 回転・リフレクトする方法
  3. 左回転・左右リフレクトによる歪み
  4. 見えない小数
  5. 見えない小数による弊害
  6. 回転・リフレクトによる形状の歪みを検証
  7. 形状の歪みを回避する方法
  8. 形状の歪みを発生させないスクリプト

1. Illustrator 内での不統一な呼称

Illustrator には、似たような機能がいくつも存在しています。
例えば、選択したオブジェクトを左に90°回転したい場合だけでも、回転ツールや回転ダイアログ、変形パネル、個別に変形ダイアログ… といったように、様々な操作方法が用意されています。
それぞれ、マウスで操作するのか、数値で指定するのか、選択したオブジェクト全体を回転するのか、個々のオブジェクトをそれぞれ回転させるのかなどといった細かな違いがあります。
そんなたくさんある機能の中で、選択したオブジェクトを鏡に映した状態 にするリフレクト機能の名称が統一されていなく、

不統一な呼称
不統一な呼称
リフレクトダイアログ
リフレクトの軸: 水平/垂直
個別に変形ダイアログ/変形効果ダイアログ
垂直軸にリフレクト/水平軸にリフレクト
変形パネルオプション
水平方向に反転/垂直方向に反転

といった具合に並びも名称もバラバラです。普段使い慣れてるツールであれば感覚で使い分けることができますが、たまにしか使わないツールだと混乱が生じます。理論的に違いを出しているのかもしれませんが…

Adobe様。わかりづらいので呼称を統一してください。

ということで、以降この投稿では、選択したオブジェクトを

  • 「反時計回りに回転する」ことを「左回転
  • 「時計回りに回転する」ことを「右回転
  • 「鏡に映して左右を入れ替える」ことを「左右リフレクト
  • 「鏡に映して上下を入れ替える」ことを「上下リフレクト

と呼ぶことにするんでよろしく。

2. オブジェクトを回転・リフレクトする方法

まずは、回転・リフレクトする手法をいくつか紹介します。んなもん知っとるわ!という方はスルーしてください。

手動で回転・リフレクト

まずは ツールパネル からツールを選び、マウスやトラックパッドを使い手動で回転・リフレクトする方法です。

回転ツール

ツールパネル 内の 回転ツール を選択することで、マウスやトラックパッドの操作により手動で回転することができます。Shift キーを押すことで、45°/90°/135°….とスナップしながら回転することも可能です。

リフレクトツール

ツールパネル 内の リフレクトツール を選択することで、マウスやトラックパッドの操作により手動でリフレクトすることができます。Shift キーを押すことで上下左右にスナップしながらリフレクトすることも可能です。

自由変形ツール

ツールパネル 内の 自由変形ツール を選択することで、マウスやトラックパッドの操作により手動で変形・回転・リフレクトすることができます。四隅の丸いポイント付近をつまみながらShift キーを押すことで、45°/90°/135°….とスナップしながら回転することも可能です。リフレクト時はスナップしないようです。

バウンディングボックス

表示メニューバウンディングボックスを表示 にし、ツールパネル 内の 選択ツール を選択することで、マウスやトラックパッドの操作により手動で変形・回転・リフレクトすることができます。四隅の丸いポイント付近をつまみながらShift キーを押すことで、45°/90°/135°….とスナップしながら回転することも可能です。こちらもリフレクト時はスナップしません。

ダイアログで回転・リフレクト

次に、ダイアログを表示し、数値や手法を指定することで回転・リフレクトする方法です。

回転ダイアログ

ツールパネルの 回転ツール を選択しRetunキーを押すか、オブジェクトメニュー → 変形 → 回転… を選び、表示されたダイアログで角度の数値を指定することで回転することができます。

リフレクトダイアログ

ツールパネルの リフレクトツール を選択しRetunキーを押すか、オブジェクトメニュー → 変形 → リフレクト… を選び、表示されたダイアログでリフレクトさせたい軸(水平/垂直)を指定することでリフレクトすることができます。

個別に変形ダイアログ

オブジェクトメニュー変形個別に変形… を選び、表示されたダイアログで角度の数値やリフレクトさせたい軸(垂直軸にリフレクト/水平軸にリフレクト)を指定することで回転・リフレクトすることができます。

変形効果ダイアログ

効果メニューパスの変形変形… を選び、表示されたダイアログで角度の数値やリフレクトさせたい軸(垂直軸にリフレクト/水平軸にリフレクト)を指定することで回転・リフレクトすることができます。

変形パネルで回転・リフレクト

最後に、変形パネル を操作することで回転・リフレクトする方法です。

変形パネルの回転

変形パネル回転 に角度の数値を指定することで回転することができます。

変形パネルの回転(シェイプ)

オブジェクトがシェイプの場合、○○のプロパティ にある ○○の角度 に数値を指定することで回転することができます。

変形パネルオプションのリフレクト

変形パネル の右上にある パネルオプション を開き、水平方向に反転 または 垂直方向に反転 を選ぶことでリフレクトすることができます。

3. 左回転・左右リフレクトによる歪み

そんなIllustratorの回転とリフレクトには、とても些細な、けれどクリティカルなバグが存在しています。

左回転と左右リフレクトの歪み
左回転と左右リフレクトの歪み

以前にも弊ブログでも書きましたが、回転ツール左に回転リフレクトツール左右リフレクトすると形状が歪むのです。具体的にどのように歪むのかというと、

回転させたい希望の角度よりも余計に回転しちゃう

のです。90°回転させたつもりが、実際には 90.000002504….° 回転しています。そのため、回転ツールで左に回転させた時点で、想定した角度よりも左に傾いた形状になってしまします。これを元の正しい形状に戻すのはほぼ不可能です。

4. 見えない小数の理由

Illustrator の 変形パネル情報パネル 内の数値は小数第三位まで表示されます。大雑把にいうと、自動で小数第四位の数字で四捨五入し、その結果小数第四位以降の数字を省略してしまいます。さらに小数の末尾が0の場合は0も省略されます。

小数が消える原因
小数が消える原因

例えば、実際のオブジェクトが X: 100.01, Y: 200.12345, W: 100.55673, H: 200.00012 という数値で構成されていた場合、パネル上では X: 100.01, Y: 200.123, W: 100.557, H: 200 と表示されます。Hのような小数は、四捨五入した上に0までもが省略されてしまうため、小数があるのかどうかさえ分からなくなってしまいます。ちなみに、オブジェクト内部にはきちんと小数の数値は残っています。

5. 見えない小数による弊害

見えない小数と歪んでしまった形状のせいで小さな障害が発生することがあります。作業している環境や扱っているオブジェクトにもよるのではっきりとは明言できないのですが。

  • 水平・垂直だと思っていてた直線が水平・垂直ではない場合がある
  • 隣接したオブジェクトを合体したら余計なアンカーポイントが複数生成されてしまう場合がある
  • 隣接したオブジェクトを合体したら隙間が空いてしまう場合がある
  • 連結させた曲線のハンドルが左右分離されてしまう場合がある
  • ピクセルプレビュー時にカーソルキーで移動させた時に、設定した数値よりも移動してしまう場合がある
  • SVG で書き出したときに怪しい transform や数値が入る場合がある
  • 配布されてるコーポレートなロゴデータが歪んでたら超恥ずかしい

といった具合に、指先がチクチク痛いのにどこにトゲが刺さってるのか分からないような問題に遭遇する可能性が出てきます。
有機的な形状のイラストや印刷物のような、小さな誤差が表に出ない作業であれば気にしなくても良いかもしれませんが、正確な形状や数値を必要とする場合はこう言ったバグが存在していることを頭の隅にでも入れておくと良いでしょう。

6. 検証と結果

先に紹介した手法で回転・リフレクトを実行した際に、形状が乱れる(数値がおかしなことになる)かどうかを検証してみました。検証環境は、以下になります。

  • iMac 5K / macOS 10.12.x
  • Illustrator 20.1.0 (2015.3.1) / Illustrator 21.0.2 (2017.0.2)
  • X: 10 px, Y: 10 px, W: 50 px, H: 50 px の三角形
  • 回転: 左回転(90°), 右回転(-90°または270°)
  • リフレクト: 左右リフレクト(垂直軸でリフレクト), 上下リフレクト(水平軸でリフレクト)
  • アイテムの座標とサイズを取得 で本来の数値を取得
実行内容 左回転 右回転 左右リフレクト 上下リフレクト
回転ツール ×
リフレクトツール ×
自由変形ツール × ×
バウンディングボックス
回転ダイアログ ×
リフレクトダイアログ ×
個別に変形ダイアログ
変形効果ダイアログ(実行後アピアランスを分割)
変形パネルの回転
変形パネルの回転(シェイプ)
変形パネルオプション

回転・リフレクトツール自由変形ツール回転・リフレクトダイアログ

7. 形状の歪みを回避する方法

形状の歪みを回避するには、回転・リフレクトツール自由変形ツール回転・リフレクトダイアログ使わないことです。他の回転・リフレクト系のツールを代用するしかありません。あとは

Adobeさんにバグを修正してもらう。

8. 形状の歪みを発生させないスクリプト

で、だ。

他力本願でもアレなので、弊社で使用している、回転・リフレクトダイアログの代替スクリプトを公開しました。このスクリプトを使用すれば、形状が歪んだり(たぶん)見えない小数が発生しない(たぶん)はずです。

スクリプトの機能

このスクリプトの機能を軽く紹介します。

  • 回転だけじゃなく、リフレクトもできる!
  • 回転・リフレクトしても形状が歪まない。見えない小数が発生しない!
  • 回転・リフレクトがひとつのダイアログで行える!
  • リアルタイムプレビュー機能を搭載!
  • 選択したオブジェクトを、個別または全体で回転・リフレクトできる!
  • 各種機能、数値の増減にショートカットキーを割り当ててある(これが超大変だった)!

といった感じです。
細かな仕様や使い方についてはリンク先のダウンロードページでご確認ください。

不具合がありましたらご報告くださいませ。あと カンパ もお待ちしてます。