今回はSketchUpのマテリアルカラーの数値が勝手に変わってしまう不具合(バグ?)についてお伝えします。以前から疑問に思っていた方もいるのではないでしょうか?
ひとつ、実験をしてみます。マテリアルの編集で、HSBモードで数値を (271, 91, 71) と入力してみましょう。
次に、RGBモードに変更してください。値が (100, 15, 181) に変わりました。もう一度、HSBモードに戻してみてください。値は (270, 91, 70) となり、最初の設定からズレていますね。
この原因について結論を言うと、
- SketchUpでは色情報を常にRGBに変換して保存する
- 数値の小数点以下を無視してしまう
ということです。
具体的に説明します。RGBとHSB(HSV)の相互変換は、ある公式によって行われます。以下の計算はこちらのWebサイトを参考にしました。
まず、HSBで (271, 91, 71) と入力すると、SketchUpの内部処理でRGBに換算されます。公式通りに計算すると、
R= 101.418175 , G= 16.2945 , B= 181.05
となります。ここで、SketchUpは小数点以下を無視してしまうので、
R= 101 , G= 16 , B= 181
ということで計算が確定します。これを更に公式でHSBに変換すると、
H= 270.9090909 , S= 91.16022099, B= 70.98039216
となりますが、 もう一度HSBモードにした時にはまた小数点が無視されてしまうので
H= 270 , S= 91 , B= 70
と表示されてしまうのです。
対策は、
- RGBモードのみを使う(HSBやHLSは使わない)
ということしか今のところありません。もちろん、多少の数値ズレを大目に見られる人は気にせずHSBを使っても構いません。あるいは、SketchUpの色設定は暫定的なものと割り切って、最終的にはTwinmotionなどの他のツールでマテリアルを整えてレンダリングするのが良いでしょう。
そんなこと言っても、 HSBを使いたい時もありますよね。私は以前、HSBの値を少しずつずらしながら疑似的なマンセル色立体を作ったことがありますが、この不具合のせいで大分苦労しました・・・。
以上.