CGKitとRTreeを使用して、Python で非常に単純なレイ トレーサーを作成しています。光線を三角形と交差させた後、頂点の 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