我正在使用CGKit和RTree在python中编写一个非常简单的ray-tracer 。在将光线与三角形相交之后,我想从顶点的U,V推断出交点的U,V。什么是合适的方法呢?
当前,我正在使用到相对边缘的距离的加权平均值,如下所示。除了与CGKit相关的东西外,我还有3个顶点v1,v2,v3和3个UV的vt1,vt2,vt3。hit_p是CGKit相交返回的三角形上的xyz点。
def extract_hit_vt(tri_geom, tri_vt,hit_p, oa_face):
hit_face = tri_geom.faces[oa_face]
vt1 = np.array(vec3(tri_vt[oa_face * 3]))
vt2 = np.array(vec3(tri_vt[oa_face * 3 + 1]))
vt3 = np.array(vec3(tri_vt[oa_face * 3 + 2]))
v1 = tri_geom.verts[hit_face[0]]
v2 = tri_geom.verts[hit_face[1]]
v3 = tri_geom.verts[hit_face[2]]
d1 = ptlined(v2, v3, hit_p)
d2 = ptlined(v3, v1, hit_p)
d3 = ptlined(v1, v2, hit_p)
hit_vt = (d1*vt1+d2*vt2+d3*vt3)/(d1+d2+d3)
return hit_vt
相关分类