LDraw.org Discussion Forums

Full Version: Bowtie quads within official parts
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Hi everyone,

I'm currently developing a software that renders official parts. I recently figured out that some of them contain bowtie quads. So I implemented an algorithm to detect and correct them.

Is it interesting to post here an exhausted list of faulty part files?
FYI, that concerns at least 70 files over 7000. So that's not much, but I reckon official parts have to respect that rule.
I can also code something to fix bowtie quads within .dat files - and not only within the rendering process - and submit corrected files on this forum for new validation.

Let me know what I should do.

It would be certainly interesting to have the list... and it's even better if you can provide a fix to the files themselves. But be aware that files that have bowtie quads generally have other flaws, as they are early parts issued before "modern" rules:
- they are not BFCed
- they may contain non-planar quads
- they may contain primitives with degenerated transformation matrix.
Ok, so here is the list:

2342.dat 2466p07.dat 2573.dat 2599.dat 2599c01.dat 2609.dat 2621.dat 2627.dat 2638.dat 2641.dat 2680.dat 2681.dat 2907.dat 2982.dat 30037.dat 30082.dat 30140.dat 30151.dat 30152.dat 30159.dat 30195.dat 30231.dat 30235.dat 30376.dat 30378.dat 30378ps1.dat 30378ps2.dat 30382.dat 3186.dat 3297ps1.dat 3298p19.dat 3298p21.dat 3358.dat 3491.dat 3705c01.dat 3737c01.dat 3846p4e.dat 4498.dat 4698.dat 4714.dat 4856.dat 577.dat 6035.dat 6039.dat 6042.dat 6117.dat 6159.dat 6222.dat 654.dat 713.dat 828.dat 880.dat 973p02.dat 973p16.dat 973p17.dat 973p24.dat 973p42.dat 973p47.dat 973p4r.dat 973p4t.dat 973p4u.dat 973p52.dat 973p60.dat 973p61.dat 973p74.dat 973pa3.dat 973pa4.dat 973pn6.dat 973ps2.dat 975.dat 976.dat s/2573-12.dat s/25931-12.dat s/25931-8h.dat s/2903s01.dat s/30375s01.dat s/30375s03.dat s/30378s01.dat s/30378s02.dat s/30378s03.dat s/3039s101.dat s/3740a.dat s/3960p2a.dat s/3960p2b.dat s/4186p01e.dat s/4288-15.dat s/6579a.dat s/6580a.dat s/6580b.dat s/6581a.dat s/6582a.dat s/6582b.dat s/6594a.dat s/6594b.dat s/6594c.dat s/6595a.dat s/6595b.dat s/6595c.dat s/6595d.dat s/73839a.dat s/973p42a.dat s/973p71b.dat s/numb5a.dat s/numb5b.dat s/swh1.dat s/swh4.dat

As you can notice, there are parts under s/ directory too, and 106 files are concerning. I opened some of them with and without correction, corrected files are always well rendered. I can post some screenshots if you want to see the difference.

I will look closely whether files are BFCed or not, but I don't know how to check for non planar quads... And what do you exactly mean by degenerated matrix ? because I also can detect them easily if it's only a matter of math formula.

Anyway, I will implement a tool to correct faulty .dat files, but then where do I submit them for validation?

All updates to the official library go through the parts tracker, however, updates to existing parts need to go through the library admin first.
Thanks for the tip, I will submit there asa I fix them.

Specifications for coplanarity are here: http://www.ldraw.org/article/512.html#coplanar
Datheader tool detects and fix this (by splitting into triangles). BTW, it also find and correct bowties, but this may result in wrong winding.

By degenerated matrix I meant non-singular (determinant != 0). Also detected by Datheader.

Note also that some files may have been updated but are still on parts tracker, such as 2573 or 6035

Looks like some files appear twice in your list?
Oh, that Datheader tool seems great. I should definitely try to implement that kind of correcting features within mine.

Thanks for the links, it really helps. I just discovered LDraw library, and I still don't have a global view of every tool available.

Bowtie quad fix can reverse the binding, so if I develop a software to correct that, I will let the user change the winding afterward.
By the way, I detected even more winding issues than bowtie, but visually, not automatically, of course.

Ok, that what I expected for determinant. My software detects matrix whose determinant is lower than 0, but not equal to 0. It's easy to adapt it though.

Ok, maybe these two pieces will be corrected then.

Thanks for pointing out doubloons, I removed 7 parts from the list and edited my post consequently.

Last question: I assumed official parts were almost perfect. But obviously some still need some work. So what's the difference between unofficial parts and official parts that still need to be fixed?
The official parts that need fixing are old ones. Some of the parts you listed date back to the 90s and the standards have become stricter since then.

The unofficial parts are parts that are sitting in the parts tracker for the certification process. They're submissions of new parts and fixes to official parts that aren't yet approved.
Quote:Thanks for the links, it really helps. I just discovered LDraw library, and I still don't have a global view of every tool available.
Do you happen to be French speaking? (your name/surname makes me think maybe...) Then there is a very detailed panorama of available tools here: http://jc-tchang.philohome.com/
Even if you are not... Google translate is your friend Wink
Ahah, I hoped you would not notice that. Fortunately, my grammar is not responsible!
Yeah, I'm French, and I know that website, but haven't read every article yet. This is quite huge. I found a lot of interesting stuff, some translated from LDraw website itself, other from his own experience. The author seems to be a great LEGO fan, and his work is really useful.

I've never found that Datheader software on his website though.

Thanks for everything, I'm going to develop a Datheader-like software, to correct errors within .dat files, but that renders parts too in order to make corrections easier, and cross platform (GNULinux/Mac/Windows), and of course open source.


Edit: ok, I found it, http://jc-tchang.philohome.com/manuel/DATHeader.htm
Pages: 1 2