0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

左上・左下で原点の違う UV 座標系を変換する(座標・Scale・Offset)

Last updated at Posted at 2021-12-20

はじめに

3DCG ソフトウェアにおいて、UV 座標系は統一性が無い。
多くの環境は原点が左上か左下に位置しており、バラバラである。
したがってソフトウェア間で 3DCG データを移動するには、UV 座標の変換が必要になることがある。

ここでは UV 座標そのもの、そしてそれに関連するパラメタ Scale と Offset の変換方法について述べる。

結論

  • 左上原点と左下原点の UV 座標系の間で変換する場合
    • U 座標は無変換で良い
    • V 座標は $1 - v$ で求まる
    • Scale パラメタは無変換で良い
    • U 軸に関する Offset パラメタは無変換で良い
    • V 軸に関する Offset パラメタは $1 - \mbox{scale}_v - \mbox{offset}_v $ で求まる

UV 座標の変換

左上原点の UV 座標系の UV 座標を $(U_{t}, V_{t})$ としたときに
それに対応する左下原点の UV 座標系の UV 座標を $(U_{b}, V_{b})$ とする。
このとき、UV 座標変換はこのように行えばよい。

\begin{eqnarray}
U_{b} &=& U_{t} \\
V_{b} &=& 1 - V_{t}
\end{eqnarray}

つまりまず、U 座標に関しては無変換でよい。
そして V 座標に関しては、反転させて 1 を加算すればよい。
また逆に、左下原点から左上原点に変換するときも同様の式で求まる。

UV Scale/Offset パラメータの変換

ではここで、一般に UV 座標に付随して定義される Scale および Offset の値はどう変換すればいいだろうか?
Scale と Offset は次のように定義される。

ある頂点の UV 座標を $(U_{m}, V_{m})$ とする。
また Scale $(S_u, S_v)$ および Offset $(O_u, O_v)$ とする。

このとき最終的に求められる UV 座標 $(U, V)$ は以下のように定義できる。

\begin{eqnarray}
U &=& U_m S_u + O_u \\
V &=& V_m S_v + O_v
\end{eqnarray}

ここで前節から、U 座標に関しては無変換でよい。
では V 座標はどうだろうか?

まず入力となる左上原点の UV 座標系を持つソフトウェア上での値を次のように定義する。
最終的に求まる UV 座標系の V 座標を $V_t$ とする。
メッシュ頂点 UV の V 座標を $M_t$ とする。
スケールの V 軸パラメタを $S_t$ とする。
オフセットの V 軸パラメタを $O_t$ とする。

同様に返還後の出力となる左下原点の UV 座標系を持つソフトウェア上での値を次のように定義する。
最終的に求まる UV 座標系の V 座標を $V_b$ とする。
メッシュ頂点 UV の V 座標を $M_b$ とする。
スケールの V 軸パラメタを $S_b$ とする。
オフセットの V 軸パラメタを $O_b$ とする。

このとき、これらのパラメタは以下を満たせばよい。

\begin{cases}
V_b &= 1 - V_t \\
M_b &= 1 - M_t \\
S_b &= S_t \\
V_t &= M_t S_t + O_t \\
V_b &= M_b S_b + O_b \\
\end{cases}

これらを代入して式変形していくと以下のように計算できる。

\begin{align}
V_b &= 1 - V_t \\
M_b S_b + O_b &= 1 - (M_t S_t + O_t) \\
M_b S_t + O_b &= 1 - (M_t S_t + O_t) \\
M_b S_t + O_b &= 1 - ((1 - M_b) S_t + O_t) \\
M_b S_t + O_b &= 1 - (1 - M_b) S_t - O_t \\
M_b S_t + O_b &= 1 - S_b + M_b S_t - O_t \\
O_b &= 1 - S_t - O_t \\
\end{align}

したがってオフセットの V 軸パラメタは $1 - S_t - O_t$ で求まる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?