3

最初の交差点までしか機能しない単純なレイトレーサーがあります。シーンは 2 つの異なる光源で問題ないように見えますが、両方のライトがシーン内にある場合、一方の光源からの照明領域の中央にある場合でも、一方の照明領域が終了するところに暗い影ができます (特に、緑のボール)。「両方の光源に照らされた領域」から「1つの光源だけに照らされた領域」への移行は、「1つの光源だけによって照らされた領域」よりもわずかに暗いようです。

imgur.comが主催

照明効果を追加するコードは次のとおりです。

// trace lights
        for ( int l=0; l<primitives.count; l++) {

            Primitive* p = [primitives objectAtIndex:l];
            if (p.light) 
            {
                Sphere * lightSource = (Sphere *)p;

                // calculate diffuse shading
                Vector3 *light = [[Vector3 alloc] init];
                light.x = lightSource.centre.x - intersectionPoint.x;
                light.y = lightSource.centre.y - intersectionPoint.y;
                light.z = lightSource.centre.z - intersectionPoint.z;

                [light normalize];

                Vector3 * normal = [[primitiveThatWasHit getNormalAt:intersectionPoint] retain];
                if (primitiveThatWasHit.material.diffuse > 0)
                {
                    float illumination = DOT(normal, light);
                    if (illumination > 0)
                    {
                        float diff = illumination * primitiveThatWasHit.material.diffuse;
                        // add diffuse component to ray color
                        colour.red += diff * primitiveThatWasHit.material.colour.red * lightSource.material.colour.red;
                        colour.blue += diff * primitiveThatWasHit.material.colour.blue * lightSource.material.colour.blue;
                        colour.green += diff * primitiveThatWasHit.material.colour.green * lightSource.material.colour.green;
                    }
                }
                [normal release];
                [light release];
            }
        }

どうすれば正しく見えるようになりますか?

4

4 に答える 4

7

マッハバンディングと呼ばれる知覚効果です。

また、間違った色空間で画像を表示している可能性が非常に高いです。レイ トレーサーは「線形」空間で照明の計算を行っていますが、ほぼ確実にこれらの画像を非線形応答のディスプレイに表示しているため、正しい結果が表示されません。これにより、マッハ バンドが適切に表示されている場合よりもはるかに目立つようになる可能性があります。ガンマ補正について学習してみてください。

于 2010-04-17T05:44:19.630 に答える
3

あなたの目はあなたをだましている。3つの画像から球体を一緒に移動すると、単一の光の場合はその領域が同じ色であり、二重の光の場合はより明るい領域であることが非常にはっきりとわかります。見栄えを良くしたい場合は、現在の光源の間に光源の弧全体を追加することをお勧めします。

于 2010-04-16T23:33:58.573 に答える
0

画像の1つのカラーチャンネルを飽和させました。明るさを少し下げて、何が起こるか見てみましょう。

于 2010-04-16T23:39:07.433 に答える
0

照明の方向が両方とも正規化されていますか?

そこにアサートを投げる価値があるかもしれません。

于 2010-04-17T10:12:16.593 に答える