Does this patent mean I'm not allowed to do adaptive mesh subdivision?
google.com
google.com
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.
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...)
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.
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 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
> 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.
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.
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...
It comes out to mere pennies per frame rendered!
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.