光线追踪中的群组、边界框优化与三角形实现
1. 更新 normal_at() 函数
为了更准确地计算法线,需要更新 normal_at() 函数,使用新的 world_to_object() 和 normal_to_world() 函数。具体做法是,先调用 world_to_object() 将世界空间的点转换为对象空间的点,再计算法线,最后调用 normal_to_world() 将法线转换回世界空间。以下是更新后的 normal_at() 函数的伪代码:
function normal_at(shape, world_point)
local_point ← world_to_object(shape, world_point)
local_normal ← local_normal_at(shape, local_point)
return normal_to_world(shape, local_normal)
end function
在处理群组中的图案时,将点从世界空间转换到对象空间时,需要使用新的 world_to_object() 函数,否则图案不会应用群组变换,效果可能不符合预期。
对于群组的 local_normal_at() 函数,实际上群组本身并不需要这个函数,因
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



