if you are going to worry about violating software patents, you might as well stop coding, because you probably violate 100s or 1000s with anything remotely nontrivial
probably just by pressing the power button on your machine. If you expect to have revenue; also expect some of that revenue will be appropriated by lawyers.
Thanks for your input. I'm a contractor and i've been asked to implement a system for which dynamic mesh subdivision seems like the best solution.. additionally i'd like to subdivide only small regions of the target mesh. I'm wondering if I should raise the question of this patent with my employer... the patent does seem overly broad... just wondering what to do from an ethical/professional standpoint..
There are lots of apps out there that do various forms of this.. dx11 has hardware implementations of it.. but if I implement a software version that implements a simple midpoint subdivision/smoothing, where I smooth the midpoint vertex by some amount based on neighboring edges.. seems to get close to some of the language in that patent.. I'll probably mention it to my employer just in case.
I am not a lawyer, and I may not remember this correctly. I believe that it helps your case if you aren't officially "aware" of the patent when you do your work.
I dunno. Either there's something subtle going on here that I'm not getting, in which you're probably safe unless you're actually using their code; or there is loads of prior art on this idea.
I worked on HyperMesh [1] in the mid-1990s, and while it wasn't my area of the code, we had a heavy focus on automatic mesh generation from geometric surface data. All this patent sounds like is applying the simpler bits of those techniques to meshes which had already been generated. (We had a ton of tools for that as well, but maybe none so automatic as what they are describing here?)
Of course, this being the world of software patents, none of what I've said indicates you cannot get seriously screwed by this patent...
Also, patent titles and descriptions can be very general, even if the actual patentable claim is very specific.
For example, I am on a European Patent titled "Method and Apparatus for producing a printing pattern" No, we did not patent "producing a printing pattern", it was one very specific method of doing so. (I use "we" very broadly, I didn't actually file the patent, they took a vaguely worded e-mail from me and copy-pasted it into the application, but that's another topic...)
Here's the first claim, slightly reworded to be easier to read:
> 1. A computer-based system for smoothing a mesh model of a three-dimensional object or surface,
the mesh model having a set of connected faces, each face being a geometric shape with a predetermined number of vertices and a corresponding number of edges, each edge connecting two of the predetermined number of vertices, each vertex being a data point describing the object or surface ... comprising:
a subdivision [function] to check a first edge against a predetermined subdivision criteria;
an insertion [function] to insert a new subdivision point along the first edge, the new subdivision point being inserted depending on whether or not the first edge meets the predetermined subdivision criteria; and
an extrusion [function] to extrude the new subdivision point so that it lies on a curve, wherein the curve passes through the vertices connected by the first edge orthogonal to normal vectors at the vertices.
(Some "subdivision criteria" are covered in dependent claims.)
I'm not a graphics / computational geometry guy, so I don't know how common / standard this is. The last step about extrusion through a curve looks somewhat narrow to my non-ordinary skilled eyes. Are these steps what you had in mind?
The 4th claim, however, is a doozy. As far as I can tell, it essentially covers recursively applying subdivision to only a selected subset of faces in a mesh:
> 4. A method for refining a mesh model of a three-dimensional object or shape, the mesh model including a plurality of first geometric shapes, comprising the steps of:
selecting at least one of the first geometric shapes;
recursively subdividing each of the selected first geometric shapes into a plurality of second geometric shapes; and
displaying each of the plurality of second geometric shapes.
Again, not familiar with the field, but this one sounds incredibly broad.
This was filed in 1999, so it has a few more years left.
I was gonna say "1999? That's awfully late for a subdivision modification patent. Sub-D modeling was already popular at that time."
Besides, one can sidestep such a patent through a surface definition transform: got polys? convert to a parameterized representation and then re-tesselate to the desired sub-d form.
first of all, never read patents. claiming ignorance is very important should a patent lawsuit arise. now that've read it, good luck claiming you weren't inspired.
and awesome job on getting a broader group of HN'ers to read the patent. a new kind of DDOS....
Sorry, but I would argue that not reading patents relative to your project is practicing negligence. Maybe that gets you out of trebled damages for willful infringement, but it opens you up to other liabilities and is against professional ethics.
Whose professional ethics? Yours, mine, a patent trolls? Since there is nothing like a PE for computer programmers professional ethics is a very blurry thing. I'd say needlessly opening myself and my employer to trebel damages and claims of being inspired by patents is against my professional ethics. I'll describe what I've done to my employer, and if their legal representation decides to investigate potential patent issues, that's up to them.
None of those have force of law or government-regulated licensing. Anyone can throw up a website with heir own definition if professional ethics. An obsolete trade association's website isn't privileged.
I guess I don't understand what you mean by a PE not being government-regulated licensing? If you mean that a software engineering PE isn't mandated for work, then I agree that's true but I think that's short-sighted in view of the trends for safety-critical projects. Regardless of government mandates, I see it as problematic from a liability standpoint to sign off on safety-critical projects now that the cat is out of the bag.
Bringing it back to the top of the thread, I think that willful ignorance is a bad recommendation, would not help in a legal situation, would be negligent, and would be contrary to a professional code of ethics. Maybe you feel that a consultant or someone working on areas outside of the safety-critical domain doesn't need to follow a professional code or act in a professional manner? Completely disagree if that is the case.
As far as IEEE-CS and ACM being "obsolete trade associations", agree to disagree. I'm not aware of a better trade organization than those two.
Honestly, I don't understand the backlash against professionalism.
Inspired by a standard algorithm which is in every better geometry textbook and used in the industry far earlier than 1999? Come on, even I wrote such an adaptive polygon smoother depending in the angles of the neighboring faces at around 1996, during the VM boom.
It is a required method to get rid of the huge number of automatically generated 3D points from scanners or terrain data, esp. in 3D cards. Games etc.
Use this better method from 1996: "Francine Evans, Steven Skiena, and Amitabh Varshney. Optimizing tirangle strips for fast rendering." In Proc. Visualization ’96, pages 319–326. IEEE Comput. Soc. Press, 1996.
It uses the better subdivision-surface wavelets for Catmull-Clark subdivision surfaces. There should also be libraries out there to do that.
I'm not a lawyer, and even if I was, I wouldn't be your lawyer.
However, my friend is a patent attorney and explained to me that a vast swath of software patents have been invalidated... before you downvote me, please understand this is relatively new. Like I said, I'm not a lawyer but if you are interested in doing your own research here are some recent US rulings to examine:
Ultramercial v. Hulu
Content Extraction and Transmission v. Wells Fargo Bank
To paraphrase the rulings, to be patentable the software needs to have an "inventive concept" to tie it a specific piece of novel hardware or to "transform any article to a different state of thing" (i.e., chemistry or physical phase change, etc). It cannot simply instruct the practitioner to implement an abstract idea using routine means.
I've not (and won't) read the patent you've referenced, so I don't know about the specifics of the claims. And once again I'm not a lawyer. I didn't even stay at a Holiday Inn Express last night.
You would only be in violation of that patent if you use the specific process claimed in that payment in what you're doing.
Patents don't cover broad concepts like "transmitting images over the internet". A patent title might be something broad like that, but the patent itself actually covers a very specific set of methods that have to be unique at the time they are patented.
Unfortunately, many people seem to assume that means the patent give the holder the exclusive right to "transmit images over the internet"... which is a perspective useful for getting alarmed about patents, but not true in reality.
I wouldn't worry too much about it. I worked out a very affordable licensing deal with Apple to use their patented Alpha Blending technology whenever I do graphics work: http://www.google.com/patents/US5379129
Completely OT patent trivia: the patent office in the US publishes newly issued patents once a week, which since ~1850 has almost always been on a Tuesday [1].
This makes patents a great source of practice material for honing your skills at mental date to day of week calculation. (See "The Doomsday Rule" [2] if you want to learn a good way of doing this). You have the publication date of the patent itself, and the list of citations to other patents down toward the bottom includes the publication dates of those patents.
[1] I tossed in the "almost" just to be safe. I don't know of any counterexamples.
It essentially says: abstract methods (e.g. algorithms) have never been patentable. Taking an abstract method and adding a general purpose computer does not make it patentable.
27 comments
[ 2.0 ms ] story [ 21.4 ms ] threadThere are lots of apps out there that do various forms of this.. dx11 has hardware implementations of it.. but if I implement a software version that implements a simple midpoint subdivision/smoothing, where I smooth the midpoint vertex by some amount based on neighboring edges.. seems to get close to some of the language in that patent.. I'll probably mention it to my employer just in case.
http://www.google.com/patents/US7028023
I worked on HyperMesh [1] in the mid-1990s, and while it wasn't my area of the code, we had a heavy focus on automatic mesh generation from geometric surface data. All this patent sounds like is applying the simpler bits of those techniques to meshes which had already been generated. (We had a ton of tools for that as well, but maybe none so automatic as what they are describing here?)
Of course, this being the world of software patents, none of what I've said indicates you cannot get seriously screwed by this patent...
[1] http://www.altairhyperworks.com/Product,7,HyperMesh.aspx
For example, I am on a European Patent titled "Method and Apparatus for producing a printing pattern" No, we did not patent "producing a printing pattern", it was one very specific method of doing so. (I use "we" very broadly, I didn't actually file the patent, they took a vaguely worded e-mail from me and copy-pasted it into the application, but that's another topic...)
> 1. A computer-based system for smoothing a mesh model of a three-dimensional object or surface,
the mesh model having a set of connected faces, each face being a geometric shape with a predetermined number of vertices and a corresponding number of edges, each edge connecting two of the predetermined number of vertices, each vertex being a data point describing the object or surface ... comprising:
a subdivision [function] to check a first edge against a predetermined subdivision criteria;
an insertion [function] to insert a new subdivision point along the first edge, the new subdivision point being inserted depending on whether or not the first edge meets the predetermined subdivision criteria; and
an extrusion [function] to extrude the new subdivision point so that it lies on a curve, wherein the curve passes through the vertices connected by the first edge orthogonal to normal vectors at the vertices.
(Some "subdivision criteria" are covered in dependent claims.)
I'm not a graphics / computational geometry guy, so I don't know how common / standard this is. The last step about extrusion through a curve looks somewhat narrow to my non-ordinary skilled eyes. Are these steps what you had in mind?
The 4th claim, however, is a doozy. As far as I can tell, it essentially covers recursively applying subdivision to only a selected subset of faces in a mesh:
> 4. A method for refining a mesh model of a three-dimensional object or shape, the mesh model including a plurality of first geometric shapes, comprising the steps of:
selecting at least one of the first geometric shapes;
recursively subdividing each of the selected first geometric shapes into a plurality of second geometric shapes; and
displaying each of the plurality of second geometric shapes.
Again, not familiar with the field, but this one sounds incredibly broad.
This was filed in 1999, so it has a few more years left.
https://graphics.llnl.gov/ROAM/roam.pdf
first of all, never read patents. claiming ignorance is very important should a patent lawsuit arise. now that've read it, good luck claiming you weren't inspired.
and awesome job on getting a broader group of HN'ers to read the patent. a new kind of DDOS....
Beyond the NCEES, the IEEE Computer Society and ACM jointly publish a code of ethics for software engineering: http://www.computer.org/web/education/code-of-ethics
Even if you're not a member, their code of ethics is similar to every other professional code of ethics I've seen. I don't see what's blurry about it.
Bringing it back to the top of the thread, I think that willful ignorance is a bad recommendation, would not help in a legal situation, would be negligent, and would be contrary to a professional code of ethics. Maybe you feel that a consultant or someone working on areas outside of the safety-critical domain doesn't need to follow a professional code or act in a professional manner? Completely disagree if that is the case.
As far as IEEE-CS and ACM being "obsolete trade associations", agree to disagree. I'm not aware of a better trade organization than those two.
Honestly, I don't understand the backlash against professionalism.
Use this better method from 1996: "Francine Evans, Steven Skiena, and Amitabh Varshney. Optimizing tirangle strips for fast rendering." In Proc. Visualization ’96, pages 319–326. IEEE Comput. Soc. Press, 1996.
It uses the better subdivision-surface wavelets for Catmull-Clark subdivision surfaces. There should also be libraries out there to do that.
However, my friend is a patent attorney and explained to me that a vast swath of software patents have been invalidated... before you downvote me, please understand this is relatively new. Like I said, I'm not a lawyer but if you are interested in doing your own research here are some recent US rulings to examine:
Ultramercial v. Hulu
Content Extraction and Transmission v. Wells Fargo Bank
To paraphrase the rulings, to be patentable the software needs to have an "inventive concept" to tie it a specific piece of novel hardware or to "transform any article to a different state of thing" (i.e., chemistry or physical phase change, etc). It cannot simply instruct the practitioner to implement an abstract idea using routine means.
I've not (and won't) read the patent you've referenced, so I don't know about the specifics of the claims. And once again I'm not a lawyer. I didn't even stay at a Holiday Inn Express last night.
Patents don't cover broad concepts like "transmitting images over the internet". A patent title might be something broad like that, but the patent itself actually covers a very specific set of methods that have to be unique at the time they are patented.
Unfortunately, many people seem to assume that means the patent give the holder the exclusive right to "transmit images over the internet"... which is a perspective useful for getting alarmed about patents, but not true in reality.
It comes out to mere pennies per frame rendered!
This makes patents a great source of practice material for honing your skills at mental date to day of week calculation. (See "The Doomsday Rule" [2] if you want to learn a good way of doing this). You have the publication date of the patent itself, and the list of citations to other patents down toward the bottom includes the publication dates of those patents.
[1] I tossed in the "almost" just to be safe. I don't know of any counterexamples.
[2] http://en.wikipedia.org/wiki/Doomsday_rule There are some improvements to some of the methods given there in this Reddit discussion: http://www.reddit.com/r/math/comments/2qvetr/doomsday_algori...
See: http://en.wikipedia.org/wiki/Alice_Corp._v._CLS_Bank_Interna...
It essentially says: abstract methods (e.g. algorithms) have never been patentable. Taking an abstract method and adding a general purpose computer does not make it patentable.