Visual bug in the raytracer?

Question:

scene

I do not know if this is a bug or normal behavior, but I am confused by an elongated object in the reflection of a red sphere, what is it?

My scene:

s = Scene(
    [
        Light(
            type_=LightType.ambient, 
            intensity=vec3(0.2, 0.2, 0.2)
        ),
        Light(
            type_=LightType.point, 
            intensity=vec3(0.6, 0.6, 0.6), 
            position=vec3(2, 1, 0)
        ),
        Light(
            type_=LightType.directional,
            intensity=vec3(0.2, 0.2, 0.2), 
            direction=-vec3(1, 4, 4)
        ),
    ],
    [
        Triangle(vec3(-1.5, 0.5, 5.2), vec3(1.5, 0.5, 5.2), vec3(-1.5, 2, 4), vec3(0, 0, 0), 500, 1),
        Triangle(vec3(1.5, 0.5, 5.2), vec3(1.5, 2, 4), vec3(-1.5, 2, 4), vec3(0, 0, 0), 500, 1),
        Sphere(
            color=u8vec3(255, 0, 0), 
            radius=1, 
            center=vec3(0, -1, 3),
            specular=500,
            reflective = 0.2
        ),
        Sphere(
            color=u8vec3(0, 0, 255), 
            radius=1, 
            center=vec3(2, 0, 4),
            specular=500,
            reflective=0.3
        ),
        Sphere(
            color=u8vec3(0, 255, 0), 
            radius=1, 
            center=vec3(-2, 0, 4),
            specular=10,
            reflective=0.4 
        ),
        Sphere(
            color=u8vec3(255, 255, 0), 
            radius=5000, 
            center=vec3(0, -5001, 0),
            specular=1000,
            reflective=0.5
        )
    ]
)

full code is here: https://github.com/linux-admin0001/raytracer

Asked By: LINUX_ADMIN

||

Answers:

Fixed version

I’m fixed this bug.

My mistake was that the ray intersected with the object without taking into account the direction of the ray, let’s say the ray was directed forward (0, 0, 1), but it also intersected the object that was behind, I corrected this for triangles, for spheres I did not observe this

if dot(D-O, object_.normal) > 0: continue

As you can see, in the final image I got rid of many distortions that seemed to me to be serviceable

Answered By: LINUX_ADMIN
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.