« Go!Go!フォルダ ver3.0。  (XPOP普及委員会その11) | トップページ | 復帰と強制更新バーヂョンアップ。 »

2009年1月20日 (火)

乗算。

先日、会社の同僚に 聞かれたんですがね。


RenderTree の mix2colors で multiply モードを使って色を混ぜているんだが、暗くなりすぎたので Weight の値を下げたんだけど、もっと暗くなっちゃうよ Photoshop と違うじゃねえかよゴルァ



という話でした。

その考え方で Weight をいじると、はい、より暗くなりますね。乗算する値を下げてるのになんでより暗くなるんだ、という疑問はごもっともだと思うので、かつ Photoshop とは確かに挙動が違うので、その解説を試みます。 ある程度以上 XSI を使っている人にとっては、特に新しくもないネタだとは思いますがね。



------------------------------------------------------------------------------------
その1。


最もシンプルな条件にするために、mix2colors のみがマテリアルに直接ブチ込まれた状態にします。 ライティングとかは関係ない状態だということです。

Base Color は RGB で言えば 255, 255, 255 です(HSV モードで言えば 0, 0, 1)。 つまり真っ白ということです。

Mix Layer の方の Color は 255, 0, 0 です。超真っ赤ということです。

で、Mode は Multiply (乗算)にしてあり、 Weight は 1 です(RGB で言えば 255, 255, 255)。 

つまり、真っ白に真っ赤をフルで乗算しているわけですね。 真っ白に 他の色を乗算してるんだから、結果は当然その色になりますわね。

実際にレンダーリジョンを描いて色を Photoshop で拾ってみても、255, 0, 0 = つまり真っ赤になりました。 当然ですわな。 画像の右上の数値がそれです。
------------------------------------------------------------------------------------

その2。




全く同じことを、Photoshop のレイヤで再現してみます。

下のレイヤは 255, 255,255 です。

上のレイヤは、255, 0, 0 です。


上のレイヤの合成モードを乗算にし、不透明度は 100% にしています。 つまり真っ白に真っ赤をフルで乗算しているわけで、さっき XSI でやったとの全く同じ状態です。

色を拾ってみても、当然 255, 0, 0 になっています(画像左下のマルの中の数値)。  当たり前ですわな。


ここまでは XSI と Photoshop の挙動は一致しています。
------------------------------------------------------------------------------------
その3。




ここで、Photoshop の上のレイヤ、つまり赤い方の不透明度を 50% に下げます。

すると、結果は 255, 127, 127 になりました。

乗算を50%しかしなかった、ということで、さっきよりも明るい絵に なりました。 まあ当然ですわな。
------------------------------------------------------------------------------------


その4。





同じことを、XSI に戻って再現してみましょう。

さっきまで 1 だった Weight を、不透明度 50% に相当するよう、0.5 まで落とします。画像の黄色いマルです。


すると結果は・・・・。


128, 0, 0 になりました。

ええっ、さっき Photoshop でやったときは 255, 127, 127 だったじゃないかよっ。 挙動が違うよっ。 明るくなるはずなのに暗くなっ てるよっ。 なんでだよこのクソたれ XSI ゴルァモ ニタを破壊します。




でもモニタがもったいないのでセロテープで修復し、Photoshop と同じ状態を作り出してみます。

------------------------------------------------------------------------------------


その5。


ええと、アレですね、結論から言うと、このようにレンダーツリーを組めば同じ状態になります。


 
mix2colrs を2発使っています。

乗算する ための mix2colorsは、常にフルで乗算さ せます。 Weight は 1 のままいじらないと いうことです。 (画像の青マル)

今まで赤だった Color のポートに、もうひとつの mix2colors をブチ込みます。

その新しい mix2colors の方で、Base Color を今までと同じ赤にします。

Mix Layer の Color は白( 255, 255, 255 ) にします。 (画像の緑マル)

で、Mode は Mix にし、Weight を 0.5 にします。(画像の赤マル)

そんだけです。


つまりだ、新しい mix2colros の方で、赤に白を混ぜた色をあ らかじめ作り、その結果を最初の mix2colors でフルで乗算してやる、ということですね。 この場合、 Photoshop のレイヤの不透明度に相当するのが、新しい mix2colros の方の Weight です。

これで Photoshop と挙動が一致するはずです。 実際色を拾ってみると、ちゃんと 255, 127, 127 になってました。




Photoshop では、レイヤの不透明度を下げるということは、「白 に赤を乗算するとき、その乗算の度合いを低くする」 とでも言うべき挙動なんでしょうね。 結果、乗算する度合いを下げる=つまり暗くする度合いを下げる=フルで乗算したときよりも明るくなる  という考え方で合っていますかねどうですかね。結果だけ見ると合ってますが。

XSI の mix2colros で Weight を下げた場合は、この例で言うと、白に赤を乗算するとき、赤にあらかじめを混ぜて、その結果をフルで乗 算する」という挙動になっているんだと思います。 黒が混ざって暗くなっちまった赤をフルで乗算すれば、そりゃ結果はなお暗く なりますわな。



その6。


その検証のために、上に書いた XSI の挙動を、今度は2つの mix2colors を使ってやってみます。

2つ目の mix2colors で、上に書いたとおり、「赤に、あらか じめ黒を50%混ぜて、その結果を白に100%乗算する」 をやっています。

結果は、上の「その4」と同じく、128, 0, 0 になっています。正しいようです。




ってことで、ごく基本的なことだし、今さら言うまでもない話かもしれませんが、たしか XSI ver1.5 とか 2.02 とかの時代に自分も同じことで戸惑った記憶があるし、なるほど、Photoshop や AfterFX 的な考え方から入ると戸惑いやすいポイントだな、と思ったので、メモ的に書き留めておきます。 実際、彼に解説するとき頭を整理するために少しだけ実験を しなければいけなかったので、今後この話題が出たときのカンニングペーパーにするという意味合いの方が強いというのは秘密です。


他にも同じことをやるためのレンダーツリーの組み方は何通りでもあるはずです。
が、このツリーが、「Photoshp のレイヤの不透明度= 白を混ぜる方の mix2colors の Weight 」 とみなしてもOKそうなので、いちばん Photoshop ライクに扱えてラクかな、と思っていますが、どうですか。そんなことないですか。もっといい方法ありますか。


じゃあ教えれやゴルァ。





|

« Go!Go!フォルダ ver3.0。  (XPOP普及委員会その11) | トップページ | 復帰と強制更新バーヂョンアップ。 »

コメント

自分はmix2colorsにレイヤを作ってミックスしてます。
レイヤのミックスメソッドはphotoshopと同じ(だと思う)なので楽です。
この辺の一貫性のなさは、さすがXSIです。
自分的にバンプのミックスの簡単な方法を知りたいです。知ってますか?そうですか

投稿: SAW | 2009年1月20日 (火) 11時02分

SAWさんご無沙汰です。

あーーそういえばレイヤなんてものがありましたね。一度も使ったことないです。存在自体ほぼ忘れてました。4.0 からだったか、登場当初から無視してました。今試しに見てみたら、ははは、笑うくらい全然使い方わかりません。SAW さん、白に赤をフルで乗算するやつを例に、レイヤを使ってやる方法のチュートリアルというか、そのレンダーツリー画像見せて下さい。

うーむ、レイヤ見直してみるか。御指摘ありがとうございます。

バンプのミックスって、普通に mix2 とか mix8 で混ぜたものを bumpmap(旧zbump)ノードに突っ込むのじゃダメでしょうか? 
そういや旧zbump は最初から input が2つあって混ぜられた気がするんだけどどうだったでしょうか。 
もしくは、確か dirtmap の作者のダニエルさん(=big muh)だったと思うけど、mix8vectors ってプラグインシェーダもあったと思います。ベクターのまま混ぜてバンプにでも入れて下さい、というような内容だったと思います。
バンプのミックス具合は、レンダーツリーでかくなるけど、それぞれのインプットに対し Change Range とかでマメに白黒レンジをシフトしてやったりして、結果を乗算、加算、さらにそのマスク・・・と駆使していくと上手く混ぜられる気がしています。あんまり深く詰めてやったことはないのですが・・・。 脳内レンダリング不可欠です。脳内で結果を予測できないと、パラメータがデタラメになっていって破綻します。

しばらくバンプなんてやってないな・・。ましてやミックスなど・・・。今度練習しようっと。 セル(細胞)模様の中に細かいフラクタル、とかそういうので。

投稿: junki | 2009年1月20日 (火) 13時03分

junki様
レイヤーの使い方載せておきました。

バンプのミックス自分も通常zbump使ってます。
色々調整とか合成とかのノードを通してzbumpに繋げてます。
素直なので気に入っております。

mix8vectorもそうなんですけど、標準機能じゃないじゃないですか?
どうしても標準機能しか使えない条件(有るかどうかは別!)の時とか困ると思うんです。ええ
バージョンアップによってそれらが使えなくなった時とかも考えられますし...
標準機能でなんとかできんもんですかねぇ?

投稿: SAW | 2009年1月21日 (水) 22時26分

SAW さん、レイヤ見ました。なるほど。いやあ、全くノーマークでした。

個人的には、RenderTree のノードだけでできるので mix2 を2発使う方がラクなような気がしていますが、もちろんレイヤも覚えておいて損はないですね。どうもありがとうございました。

バンプは、うちの場合はそもそもバンプが必要になることが滅多にないという種類のCGが多いのであまり詳しくないのですが、SAW さんのおっしゃるように普通に調整系合成系のノードで掛け合わせて bumpmap につないでいます。それじゃダメ?

まあ、標準機能で持っていた方がいいものが多いのは事実だと思います。でも、昔から Softimage はあんまり標準でゴテゴテ入れないでユーザに委ねている部分がけっこう多いと感じていて、Softimage にしては珍しく、嫌いではないポイントです。

でもね、zbump や BA などユーザから吸い上げておいて、その後あんまり改良する気もなさそうに見えたりするところは、相変わらずゴルァです。もうこれでいいでしょ、って思っているのかしらん。

投稿: junki | 2009年1月22日 (木) 03時42分

I'm sorry about my trackback.

I was never to use the trackback tool in Blog. And it got something wrong.
Maybe you can delete these trackback of error.

Thanks.

投稿: Lastor | 2009年2月 4日 (水) 16時28分

hello Lastor,
No worry about trackback. It's just fine.

I've already noticed you wrote something on your blog about XSI/PS multiply thingy with quoting from my blog's article. I think that's why you did something on trackback.
http://kongen.blog.shinobi.jp/Entry/103/
Unfortunately I can't read Chinese at all, so could you elaborate what you wrote on your blog on that article? I'm very curious to know because you quote something from my blog. Also please correct me if you find errors, misunderstandings, misleading definitions, whatever, in my article in question.

I think you are the first foreign person who commented on my blog. Congrats.

投稿: junki | 2009年2月 4日 (水) 17時41分

Thank you junki.
I will show you the general content about my article.

I gave the references first on my article and then explained something.
I said, my Japanese is not good. I can't sure if I understood completely about junki's article.

I think it is interesting to you use the mix_2colors node to define the opacity of Photoshop.
But it's true incomplete.


>> XSI の mix2colros で Weight を下げた場合は、この例で言うと、「白に赤を乗算するとき、赤にあらかじめ黒を混ぜて、その結果をフルで乗算する」という挙動になっているんだと思います。

When a white color multiply by a red color, we turn down the weight value.
It means to turn down a strength of operation. It's one operation.

To mix with black first, then multiply by. It's two operation.

There are different. We could't define it by this way.

When the black mix with the red first, the white have never multiplied by the red.


>> Photoshp のレイヤの不透明度=白を混ぜる方の mix2colors の Weight

To trun down the opacity when background color is be black.
The result become dark.

Therefore we could't say layer's opacity of Photoshop is the weight of mix with white.

We should say the layer's opacity is the same with the weight of mix mode of mix_2colors.
And the background color is the base color in XSI also the foreground color is the color of mix layer.


By the way, the opacity is the same with alpha.
Click on the item "Multiply by Alpha" in mix_2colors.
The color's alpha of mix layer will be the same with opacity of Photoshop.

I'm not sure if I understood completely about your article in Japanese.
Maybe I misunderstand your meaning.
If it was true, I would be so sorry.

投稿: Lastor | 2009年2月 4日 (水) 22時19分

Lastor,

I really appreciate you for the explanation. However....

I don't understand Chinese at all, therefore I don't understand what you said on your blog regarding my original article.
My English skill is limited, therefore I'm not sure if I'm understanding what you said in your last comment.
Your Japanese skill is limited, therefore you're not sure if you're understanding what I said in the original article.
English is obviously not your first language, therefore we both are not sure if your explanation was clear enough.

....It seems we're having communication problem :D

Anyway I try to explain what I said in the original article.


My co-worker asked me why lowering weight value in Mix2colors always end up with different results from lowring layer opacity in Photoshop when multiply mode is used.

In Photoshop, it seems to me that Photoshop is turning down the "strength" of the operation (multiplying) when I lower the layer opacity value for the ones with multiply mode, because if I turn the opacity down, the result image gets brighter, despite that multiply opreration is meant to "darken" the result. (fig. その3 in that article)

So I explained to him how XSI's Mix2colors works with multiply.
Unlike Photoshop, turning down the weight value is not lowering the strength of the multiply operation (fig.その4), but it mixes the Mix Layer Color with black first, then mixes its result again with the Base Color, with 100% strength. Of course I have no idea how XSI calculates internally, but ** in terms of result **, my perspective on this seems to be okay because the results of fig.その4 and fig.その6 are identical.

If I mix white & some color of my choice in advance (in the first Mix2Colors) with "Mix" mode, then mix its result again to the Base Color( in another Mix2colros node) with "Multiply" mode using weight value of 1 ( which means 100% strength), I can get the same result as Photoshop's. (fig.その5).

Basically that's all about what I said in the article in question.



Again, I'm not sure if this is technically correct or not, probably wrong, but at least I can always get the same result as I expect (Photoshop-like way) if I think this way.

For the record, I'm not even saying in my article that I'm technically correct, and even askig better way to people.



So, my question would be;
Are you basically saying what I said is incorrect/misleading, or are we saying the same thing in different way ?



Don't get me wrong, as I already said in my previous comment, I'd really love to be corrected.
Hope hear from you soon, thanks.

投稿: junki | 2009年2月 5日 (木) 02時23分

Junki.

Yash.... My English is not fluent.
We like to say that is a "Chinese English" in Taiwan. Because it's not a correct English, it is

a English of Chinese grammar. (OTZ)

I worry about my explanation is clear or not, too.


Well, I saw your article on XSI道場 and I am very interested to the topic.
So, I tried to use a dictionary in order to understand them.
I followed, moreover, to do again.

And then, I felt there were something doubtful point.
For clarifying them, I looked up XSI and Photoshop Helper.

Seeing your explanation in English.
Now, I'm sure that is no mistake about my understanding for the original article in Japanese.


I did the experiment that followed your article again.
And to translate your article into Chinese. (Added my some idea)

At last, I pointed out something mistake about your explanation on my article.


In terms of the test result, I think your explanation is okay.
After all, the result is always be true and is always more important.

There is just a logical mistake in the process.
But it can be overlooked, it is no effect on the result.


---------------------------------
The formula of "Multiply" (乘算) is:

 Dst = Bg * Fg

 Dst = 演算結果
 Bg = background
 Fg = foreground


To Add the weight value, it is:

 Dst = (Bg * Fg) * W

 W = weight

投稿: Lastor | 2009年2月 5日 (木) 15時28分

Hello Junki.

I tried to use other color and tested them again.
I telled my friend about this discussing and asked him something.

Now, I think your explanation is right.


Well, I am happy to clear my idea.
It's a cheerful thing about talking with you.

投稿: Lastor | 2009年2月 5日 (木) 17時17分

Lastor,

Basically you are saying multiplication with weight value should be described as

1 * 1 * 0.5 = 0.5
(BG) * (FG) * (W) = Dst

And my way of thinking was

1 * ( 1 - 0.5 ) * 1 = 0.5


The result is the same, but definitely you are right, XSI would be calculating in the way you described, within just one Mix2color node.

My point is, because of the identical results, thinking in my way could help making sense, for somebody like my co-worker who had incorrect idea about weight value. This is just for the purpose of getting rid of wrong idea that thinking of weight value (with multiply mode in Mix2color) would behave the same as PS's layer opacity(with Multiply layer mode).

Again, I do think your description is definitely correct.



Off topic, I've also found another page on your blog quoting my plugin 名前。
Are you introducing it to Taiwanese?
Are you actually using it?
Is it useful for you?
If so, you must buy me a beer someday because all my plugins are beer-ware (clearly described on my plugin page) hehe.

投稿: junki | 2009年2月 6日 (金) 01時08分

Junki.

I very like the plugin 名前。
It help me to save much time.

I drink a toast to you.

投稿: Lastor | 2009年2月 6日 (金) 14時20分

hey, I've never tried Taiwanese beer. Just showing a photo is not enough, buy me one :D

投稿: junki | 2009年2月10日 (火) 03時03分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217974/43795652

この記事へのトラックバック一覧です: 乗算。:

» XSIのLayerで乗算 [ポリゴンバカ一打ブログ]
Junki The Junkie's Junkyardさんとこで乗算やっててLayerのが楽なんじゃないでしょうかって事で、XSIのLayerで乗算 のページを作りました。http://saw-web.com/->xsi->XSIのLayerで乗算 [続きを読む]

受信: 2009年1月21日 (水) 00時01分

» 色演算 Photoshop v.s. XSI [GSKG / 幻想コンゲン]
在XSI道場上看到Junkiさん的Blog做了一篇「乘算」的討論。覺得挺有趣的,於是用我的破日文加上線上翻譯器,稍微看了一下。 日文的「乘算」,也就是指Multiply,咱們台灣普遍翻「色彩增值」,而大陸似乎翻作「負片疊加」。Junkiさん主要是在討論XSI的圖層混合(Layer Compose)是否可以跟Photosop等同視之。 下面我稍微做了些變化,照著Junkiさん的說明演示了一次,其中有個地方概念上似乎是錯誤的,不過這有可能... [続きを読む]

受信: 2009年2月 4日 (水) 16時05分

« Go!Go!フォルダ ver3.0。  (XPOP普及委員会その11) | トップページ | 復帰と強制更新バーヂョンアップ。 »