Originally Posted by

**MutantJohn**
Wait Nominal, isn't shifting from a bag of triangles to a pipe structure literally the same thing as just using an edge structure for triangular mesh in the first place?

No. Consider a pipe with inner radius 0.9, outer radius 1.1, extending from origin to x=0,y=0,z=10. The pipe structure describing this is

Code:

pipe 2 0 0 0 0.9 1.1 0 0 0 10 0.9 1.1 0

i.e. two nodes, first at (0,0,0) with inner radius 0.9 and outer radius 1.1 with zero bending radius; second at (0,0,10) with inner radius 0.9 and outer radius 1.1 with again zero bending radius. (I may have botched the exact syntax, as I haven't actually used the pipe primitive in BRL-CAD.)

A more complicated pipe or tube path requires only more points sampled along the pipe axis, each sample containing one vector and three lengths (radiuses). The important point about using such a structure should be obvious: if you wish to move (reroute!) the pipe, you only need to relocate or resample the points along the pipe axis.

(Constructive geometry for pipes is simple. To join, you first add together all the joined pipes' outer volumes, then substract all the inner volumes. This also corresponds to milling out the join from a solid chunk of material, especially if the pipe axes are straight in the joint region.)

If you have a bag-of-triangles or triangle mesh, you have one mesh describing the inner surface of the pipe, and one mesh describing the outer surface of the pipe. You don't know where the pipe axis is, what the pipe radius is, only the two surfaces approximated by the triangle mesh. You basically have two sets of vertices,

Code:

inner_x(u,v) = 0.9*cos(u*Pi*2/umax)
inner_y(u,v) = 0.9*sin(u*Pi*2/umax)
inner_z(u,v) = 10*v/vmax
outer_x(u,v) = 1.1*cos(u*Pi*2/umax)
outer_y(u,v) = 1.1*sin(u*Pi*2/umax)
outer_z(u,v) = 10*v/vmax

and you don't know the exact (u,v) values for each vertex, and not even that something like the above formulas were used to define the vertices. *The problem is that for editing, the original pipe properties must be gleaned from the vertex data.*

Nothing trivial here. (Assuming I understood OP correctly, of course.)

You can obviously do things like fluid dynamics based on the triangle meshes -- using the inner mesh to construct quad cells should be nearly trivial --, but you cannot move or edit the pipe.

You can edit the pipe described by the bag of triangles via deformations, but it will not retain the pipe properties -- in particular, the inner and outer radiuses. You do that with e.g. hydraulic fluid lines, and your model is no longer valid: constrictions or expansions along the pipe affect the flow speed and pressure a lot.

I fail to see any reason why you'd think any of this is super duper easy, but then again, maybe I completely misunderstood the original question. I don't think so, though.