# Euclidean approach to mesh offsetting

Found about 60 things (but what are they talking about? who knows? and who cares?). Since I’m bored to death to read’m > mail me your snail mail and I’ll put them in a memory stick for you.

#42

(Aris Nikolopoulos) #43

Bad news: 156 freaky things (~1GB) packed in a CD and send to Preveza (time of arrival varies: post in Greece works when it works). Avoid using the CD, anyway.

Ugly news: Offset on a mesh (and anything else) is not that easy: Study that offset sequel and think: what could be the condition to stop?

Answers : the alligator … blah, blah.

(Aris Nikolopoulos) #45

this discrete surface has triangular faces and is not a sphere, therefore by definition, it is not within those that interest me.

remember: PLANAR beams!!!

(Aris Nikolopoulos) #46

an ‘orthodox’ -for lack of a better word- surface would stop offsetting the moment the first offset facet would be reduced to a point, and without conflicts up until that moment.
In the case of the platonic solids and all those circumferenced by a sphere, the offsetting stops at the center of the sphere.

Not quite: Non of the captured stuff yields singularities on faces (but “thickened” faces" [as “solids”] intersect each other). The fact that Rhino is a surface modeller makes things even more challenging (in any solid modeller there’s the concept of self intersecting Brep:: thy it with Rhino [good luck]).

But … hope dies last: if the Curve to neighbor Curve pair (where curve = vertex to offset vertex Line and pair the curves per face edge) closest t values define a point outside the Line(s) (if t>1, then Line.PointAt(t) is outside the Line) … means that the directions already reached a non manifold threshold and then this, this and that happen.

Elementary my dear Watson.

BTW: See that man over there? Works at NASA plays with microns and can do stuff that are 100% alien for 99.9999999999% of the population. Send men to moon several decades ago etc etc.See that other man? Name’s Elon Musk: he plays with promises (100% fake: men in Mars among others) but has gazillions and his shareholders still feeding him with millions for no apparent to me reason. Tesla blue chips are worth 6 times the Ferrari blue chips.

(Aris Nikolopoulos) #48

Goodmorning!!!
I admire your passion and I wish I could put it in the path of the light!

Sherlock and Watson camped in the wood one night and had to sleep in a tent. At one point during the night Sherlock wakes up Watson:

• Watson, what do you notice around you?
• I see that ursa minor is around 50 degrees over the horizon which at this time of the year means we’re 2 hours away from sunset, also the birds fly low which means it will rain sometime in the day and lastly the tree tops movement indicates a northern wind which means it will be cold today.
-…Watson!!! They stole our tent!!!

So Watson… your form is invalid to begin with!!!

oh, and btw: proven reusability of rockets (real not like the space- shuttle) electric cars that outperform conventional supercars are not fake promises, they take huge effort and a big pool of great minds to achieve…
A friend of mine once liked the saying: perception is bigger than reality but I would add: for a while…

Greeks > once they owned the world … now they own … er … hmm … to everybody. And why this happened? Because they NEVER listen, that is (Lord for president: the only solution if you ask me).

Anyway appears that even the Merciless can’t teach you a thing (or two). So … take a break from nonsen … er … hmm … I mean great things and do some brain work:

We have a beam type of mesh (where beams: your quest for the holly grail). Now I want from you to mastermind some stuff that finds the loops: make a connectivity three where first dimension is the mesh (that initiated the offset) index and second dimension the face index. Each branch contains the indices of the faces that define a loop meaning that if we connect the mesh faces per loop we’ll get the polylines shown.

Why we need this?

(Aris Nikolopoulos) #50

to find the normals by averaging the neighboring facets’ normals?

No.

Make the FF tree.
For a given face with index faceIndex get the adjFaceIndices List.
Loop again (for j = 0 …)
if(i=j)continue.
If they Intersect (commonIndex) this is the “opposite” to face index.
your loop is {faceIndex, i, common index, j}.
Store in a loop connectivity tree
inner loop end
outer loop end.

For instance: face 2 loops with faces 1,0,29 whilst has adjacent faces 1,3,29,31,32.

(Aris Nikolopoulos) #52

You’re talking to me in terms of data when I’m talking in terms of geometric principles…
for the moment I’m researching the behaviour of conical faces…
(walk before you fly)
I hope I’ll find relative papers in the present you sent me!
So far in the books I’ve found, everybody talks about face offseting via conical faces but the way they work is a black box.

You are in confusion (get decent Vodka supplies ASAP): Are you a designer willing to take on the world OR some Academic lost in translation?

Why this happened? Because Westerners (and especially Greeks) are trained to act alone (in the name of “progress” and individuality and “freedom of will”) without guidance. You need a sensei: The man dictates what to do without questions and arguments. Many many years after blindly obeying his orders you understand what he meant … and you become a sensei.

Elementary my dear Watson.

(Aris Nikolopoulos) #54

This whole discussion is a cry for guidance!
(in geometry though, not programming)

Everything that the Lord says and does have a hidden meaning. Many many years after you may get the gist (and be a happy bunny).

Guidance has meaning if the trainee has no opinion.

Doing in real-life what you are really after without code is impossible.

The challenge in our trade IS NOT the idea The challenge is making it happen with an optimum way (moral, scope, cost, engineering, aesthetics, resistance in time).

(Aris Nikolopoulos) #56

The LOD does not help me understand the elemental geometric principles involved so I have to discover them one by one while searching in the dark…

See nephew Anton over there? Said to me: Lord teach me how to buy and ride superbikes (kinda a ZX10-R and the likes). Lord said: a noble scope that one … but are you willing to pay with your life the privilege … if @^%@ happens? Anton said: no way. Lord said: go buy a Toyota Prius.

1M Q: Did the Lord helped Anton?

(Aris Nikolopoulos) #58

In the mean time, for anyone who like me wants to get a better understanding on the subject, a great source is this video:

In the mean time a lesson on high efficiency:

1. We’ve seen that offsetting a Mesh via the Mesh Offset Method is NOT safe: we must check clash/non manifold situations (see some replies above).
2. Thus we need to work on Normals. But these are indexed according the Mesh Vertices that is NOT the same as indexing on Topology Vertices…
3. Since we have “loop beams” as target (each OEM mesh face is a stand alone collection of 3 or 4 (tri/quad mesh) perimeter [torsion free acc to tol] beams that are at some clearance distance from any adjacent combo) the fastest way to get the loop is a FE connectivity tree. But this means that we must work on Mesh.TopologyEdges collections (since these are used for FE connectivity). This means that our 'beams" are kinda like “lofting” an edge VSthe offset edge.
4. But due to 2 we need to “remap” the edge topology vertices indices to vertices indices (Method available for that).
5. So a VE connectivity on the initial mesh (the one to offset) actually gets the indices of the mesh “beam” faces as well since their creation is using Topology Edges indexing. So we have the loop instantly … and the rest are history.

If you combine all the above you get at least 30 times faster results (all checks included) VS the orthodox way (using VV connectivity for the beams). If you are after Breps the time required is ~100 times more (say from 20 milliseconds to 2000+).

(Aris Nikolopoulos) #60

a speech by the Baron of discrete geometry on the basics. (I could only follow up to the middle of the video)
and a read for deeper understanding:
http://www.geometrie.tugraz.at/wallner/focal.pdf