1.xmal中的代码
2. cs文件中的清除代码。
3.出现Null异常,需要修改3DTools中的MathUtils.cs 文件 TryWorldToCameraTransform函数。
4. 主要是因为 view.Children.Clear() 之后,这里的visual为空。
修改函数如下:
public static Matrix3D TryWorldToCameraTransform(Viewport3DVisual visual, out bool success)
{
success = false;
Matrix3D result = Matrix3D.Identity;
if (visual == null)
{
return ZeroMatrix;
}
Camera camera = visual.Camera;
if (camera == null)
{
return ZeroMatrix;
}
Rect viewport = visual.Viewport;
if (viewport == Rect.Empty)
{
return ZeroMatrix;
}
Transform3D cameraTransform = camera.Transform;
if (cameraTransform != null)
{
Matrix3D m = cameraTransform.Value;
if (!m.HasInverse)
{
return ZeroMatrix;
}
m.Invert();
result.Append(m);
}
result.Append(GetViewMatrix(camera));
success = true;
return result;
}