Your comments

I think I see what's going on re: orientation, and it makes sense when you pause not to over-think it.

X is depth, front/back, Y is lateral, left/right, and Z is, of course, height, up/down.

In these attempts, I have my X and Y reversed, at least if you consider the kicking plane of the goal post to be front.
And now with a persuaded TubeVisual3D.



var tube = new TubeVisual3D
{
Fill = postFill,
Diameter = crossBarDiameter,
Path = new Point3DCollection(archThreeDeePoints),
IsPathClosed = false,
};

Very spiff indeed!
I'm not sure "TubeVisual3D" wouldn't be a better choice for the arch itself, but I am unfamiliar with how to persuade the end points, angles, and so on.

For the moment, I have managed to cobble together some PipeVisual3D segments, but then there's an issue I'd like to smooth the edges of the arch group., which again, a single TubeVisual3D object might be a better fit.

var archPoints = CalculateArcPoints(new Point(),
crossBarArchRadius, 16, 90d).ToArray();

var archThreeDeePoints = archPoints
.Select(p => new Point(p.X, p.Y + paddingHeight)).ToArray()
.Select(toThreeDeeTransform.Transform).ToArray();

var archGroup = new ModelVisual3D();

foreach (var archPipe in archThreeDeePoints
.Take(archThreeDeePoints.Length - 1)
.Zip(archThreeDeePoints.Skip(1),
(a, b) => new PipeVisual3D
{
Fill = postFill,
Point1 = a,
Point2 = b,
Diameter = crossBarDiameter
}).ToArray())
{
archGroup.Children.Add(archPipe);
}

You can see what's going on here. It's easy enough to add more segments, 32, 64, 128, etc, but that's more objects to render. If I can do the same thing with a single TubeVisual3D, that's what I want.



Hello,

If you can figure that out, do let us know. If I understand the intent of your post, I'd like to do something similar.

At first glance, I'm not sure a XAML view (and/or view model) wouldn't be necessary.

Possibly subscribe to an observable collection for those updates and make the additions, removals, changes, "manually".

Best regards. Thank you...
Got it figured out. Not sure the view port coordinate system height/width have any real impact on the performance. But once the grid line length/width starts to increase, it's better to also adjust the major/minor lines for performance reasons.