我不知道这是一个错误或正常的行为,但我感到困惑的是,一个细长的物体在反射一个红色的球体,这是什么?
我的场景:
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
)
]
)
1条答案
按热度按时间ryoqjall1#
Fixed version
我已经修好了。
我的错误是光线与物体相交时没有考虑光线的方向,假设光线指向前方(0,0,1),但它也与后方的物体相交,我针对三角形纠正了这一点,针对球体,我没有观察到这一点
正如你所看到的,在最后的图像中,我去掉了许多对我来说有用的扭曲