Castle Game Engine射线投射向量绘制无显示问题求助
Castle Game Engine射线投射向量可视化问题排查
我在基于Pascal的Castle Game Engine中尝试绘制网格来可视化射线投射向量。参考官方示例后,我自定义了带参数的CreateMesh过程,传入角色的AvatarTransform来获取位置设置顶点,但代码编译正常却始终无法显示射线向量。
自定义的问题代码
procedure CreateMesh(const AvatarTransform: TCastleTransform); begin Mesh := TCastleRenderUnlitMesh.Create(true); Mesh.SetVertexes([ Vector4(0.0, AvatarTransform.Translation.Y, 0.0, 1.0), Vector4(0.0, (AvatarTransform.Translation.Y - AvatarTransform.Direction.Y), 0.0, 1.0), ], false); Mesh.SetIndexes([ // line loop on Z = -1 0, 1 ]); end; // 后续调用时我曾怀疑参数不匹配,但调整后还是无法绘制 CreateMesh;
参考的正常示例代码
此前参考的可正常绘制网格的示例代码如下:
procedure CreateMesh; begin Mesh := TCastleRenderUnlitMesh.Create(true); Mesh.SetVertexes([ Vector4(-1, -1, -1, 1), Vector4( 1, -1, -1, 1), Vector4( 1, 1, -1, 1), Vector4(-1, 1, -1, 1), Vector4(-1, -1, 1, 1), Vector4( 1, -1, 1, 1), Vector4( 1, 1, 1, 1), Vector4(-1, 1, 1, 1) ], false); Mesh.SetIndexes([ // line loop on Z = -1 0, 1, 1, 2, 2, 3, 3, 0, // line loop on Z = 1 4, 5, 5, 6, 6, 7, 7, 4, // connect Z = -1 with Z = 1 0, 4, 1, 5, 2, 6, 3, 7 ]); end; // 示例中后续调用 CreateMesh;
排查关键点
- 参数传递错误:自定义的
CreateMesh要求传入AvatarTransform参数,但调用时写的CreateMesh;未传参,这会导致顶点数据错误(若编译器允许无参调用,可能使用了未初始化的变量)。正确调用应为CreateMesh(YourAvatarTransform);,传入角色的实际Transform对象。 - 顶点坐标逻辑错误:当前顶点仅设置了Y轴坐标,X和Z均为0,线段可能处于视角盲区或被角色模型完全遮挡。正确的射线起点应为角色完整位置,终点是角色位置加上方向向量,示例修正:
Mesh.SetVertexes([ // 起点:角色当前位置 Vector4(AvatarTransform.Translation.X, AvatarTransform.Translation.Y, AvatarTransform.Translation.Z, 1.0), // 终点:角色位置沿方向向量延伸(可乘倍数调整长度) Vector4(AvatarTransform.Translation.X + AvatarTransform.Direction.X * 5, AvatarTransform.Translation.Y + AvatarTransform.Direction.Y * 5, AvatarTransform.Translation.Z + AvatarTransform.Direction.Z * 5, 1.0) ], true); - 网格未加入场景:创建
Mesh后,必须将其添加到场景节点树中,比如:
否则网格不会被引擎渲染。Container.Add(Mesh); // 假设Container是场景根节点 - 渲染模式设置:
TCastleRenderUnlitMesh默认可能使用填充模式,需手动设置为线框模式才能显示线段:Mesh.RenderOptions.Mode := rmLines; - 顶点所有权设置:
SetVertexes的第二个参数OwnsVertexes设为true,让引擎管理顶点内存,避免潜在的内存访问问题。
内容的提问来源于stack exchange,提问作者Joshua P Fingerle
相关产品推荐
相关产品推荐

