[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:00020] Re: DepthComponentFloat クラスについて



鈴村@広島市立大

> うーん、この「線形でない」というのが分からないのですが、
> 視点からの距離であればどの点も一次補間で求まるのでは...

nearクリップが0、farクリップが1としてfloat[0,1]に正規化されるんですが、
このfloat[0,1]の値が、実際のnearクリップからの距離(最大値:farクリップ)に比例してないんです。
これを私は「線形でない」と言っていたんですが。
具体的に例を挙げると、
nearクリップからfarクリップまでの距離が10とした時、
その対応は

     near                                                         far
位置  0    1    2    3    4    5    6    7    8    9    10
      ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
係数 0.0   0.1   0.2   0.3   0.4   0.5   0.6   0.7   0.8   0.9   1.0

じゃなくて、

位置  0    1    2    3    4    5    6    7    8    9    10
      ├──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
係数 0.0   0.9   0.95  0.97  0.98  0.99  0.993 0.995 0.997 0.998  1.0

といったようになっていて、
グラフで表すと 1/x とか 1/x*x 、あるいは -1/log(x)といったような
曲線に近いものになります。
なので、位置1にある物体を、単純にnearからfarの距離に係数を乗算して算出すると
本当は1が算出されてほしいのに、実際には 10 * 0.9 = 9 が算出されるということになってしまいます。

というわけで、1次補間では求められないかな、と。
私は1次補間をこう解釈したんですが。
間違っていたらすいません。