1

我使用 Helix3d 工具包导入模型。接下来,我对 3Dmodel 执行命中测试。然后我从 rayMeshResult.Meshit 获取 MeshGeometry3D 信息。最后,我从 MeshGeometry3D 中获得了顶点位置信息和 triangleIndices。现在我从 LinesVisual3D 中克隆点,然后将 triangleIndices/vertex 信息输入到克隆中。最后,我将克隆的点数据复制到 LinesVisual3D.Points 中,并将线条添加到我的视口中。

正如您从链接中的图片中看到的那样,并非立方体的所有边缘都被绘制出来,但所有点都在那里。

http://www.freeimagehosting.net/fhws5

GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D;
MeshGeometry3D newGeom = rayMeshResult.MeshHit as MeshGeometry3D;
Point3DCollection srtpnt = modelLines.Points.Clone();

for (int i = 0; i < newGeom.TriangleIndices.Count; i ++)
{
    srtpnt.Add(newGeom.Positions[newGeom.TriangleIndices[i]]);
    textBlock4.Text += newGeom.Positions[newGeom.TriangleIndices[i]].ToString() + "\n";
}

modelLines.Points = srtpnt;
modelPoints.Points = srtpnt;

modelPoints.Color = Colors.Red;
modelPoints.Size = 15;

modelLines.Thickness = 6;
modelLines.Color = Colors.Blue;

MainViewport.ClearChildren();
MainViewport.Children.Add(modelLines);
MainViewport.Children.Add(modelPoints);
UpdateResultInfo(rayMeshResult);
4

0 回答 0