8 ms·
New open source project: Common Lisp 3D graphics system
- truncate 4y agoUnrelated to the post. I like old.reddit.com which the story links to :) Looks cool, although I don't understand much of graphics, I always felt, with lisp macros you can probably do bunch of cool things around graphics.
- acalzycalzy 4y ago
- nmg 4y agoMy first "a ha" moment using lisp, when i suddenly got my first glimpse of understanding the whole code-is-data-is-code thing and what it makes possible, was my favorite moment using computers, and nothing before or since even comes close. Try it sometime, it's great.
- chrisjc 4y ago> when i suddenly got my first glimpse of understanding the whole code-is-data-is-code thing I know it exists, but I still haven't had that feeling, haven't had that moment
- EddySchauHai 4y agoMaybe he is cool?
- kaveh808 4y agoI'm not cool enough for Rust. ;)
- mattpharr 4y agoThe irony of such a post on a website with the domain name “y combinator”…
- capableweb 4y agoAnd a platform that is written in a lisp-language specifically created for hosting said platform, a language called Arc. The roots of lisp runs deep at HN.
- dougb 4y agoBack in the 90s, Joel Welling and Chris Nuuja at the Pittsburgh Supercomputing Center at CMU developed a similar system called P3D. It was really cool, and they had a bunch of backends to render on different high end graphic workstations. We even had a Pixar Renderman hooked up to a laser disk recorder. You could script a 3D scene with different light sources and cameras and over the course of a week, render some high quality NTSC video. P3D: a Lisp-based format for representing general 3D models https://dl.acm.org/doi/10.5555/110382.110608 https://dl.acm.org/doi/10.5555/110382.110608 P3D DESCRIPTION AND DEFINITIONS http://netghost.narod.ru/gff/vendspec/p3d/p3d_desc.txt http://netghost.narod.ru/gff/vendspec/p3d/p3d_desc.txt
- kaveh808 4y ago> over the course of a week, render some high quality NTSC video. I remember those days. :)
- eschaton 4y agoWas any of the actual code or other artifacts of the work preserved?
- dougb 4y agoI looked, but I couldn't find a .tar.gz or anything. I emailed Joel and asked him to put it up on his github page, https://github.com/jswelling https://github.com/jswelling He has something called DrawP3D, but I think its just a library that you can call from C or Fortran that uses the P3D rendering backend. I could be wrong it was a long time ago.
- leetrout 4y agoNeat! Immediately made me think of Naughty Dog where they used Allegro CL to make Game Oriented Assembly Lisp (GOAL). https://en.m.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp https://en.m.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp
- kaveh808 4y agoI find it ironic that instead of adopting ND's unique technology, Sony shut it down and went with standard fare. In business, the platform with the most available "developers" usually wins out. It's very difficult to justify the training effort and cost for non-mainstream technology, even if it is demonstrably more productive. Easier to just hire twice as many staff.
- pjmlp 4y agoWhich is why I always make the point most technology failures aren't because the tech wasn't up to it, rather human factor taking decisions. Another good example was while Midori was powering the Asian Bing infrastructure, Windows team was still asserting it wasn't production ready (see Joe Duffy keynot on RustConf). Our industry needs more dreamers and less bean counters.
- kaveh808 4y agoOne reason I'm going the open source route is to work with like-minded people and have the freedom to dream. As I've probably made clear elsewhere in this posting, I can't make a business case for the project. Not one that an investor would buy.
- e12e 4y agoI don't think it's entirely true that there's no documentation beyond the readme - aren't the code/concepts from your blog a reasonable introduction to people that want to jump in? https://kaveh808.medium.com/ https://kaveh808.medium.com/ Previously on hn: https://news.ycombinator.com/item?id=31115221 https://news.ycombinator.com/item?id=31115221
- kaveh808 4y agoGood point. I never thought of the blog posts as documentation.
- lbj 4y agoBless your heart for still using Common Lisp.
- kaveh808 4y agoBeen using it for almost all my personal projects for a few decades now. It's the only language that I don't feel is fighting me when I develop my code.
- enduser 4y agoI used it exclusively for 4 years and had the same experience. I moved on so that I could work with people who are scared of parentheses on projects larger than what I could do by myself. Working on a team with other Lisp-speaking aliens would be a dream.
- kaveh808 4y agoYes, I know the feeling. My first job after my Symbolics/MIT experience was writing a 3D rendering system in Fortran. :) That would be a dream. One I'm hoping to make happen here.
- deleted 4y ago[deleted]
- jcelerier 4y agofor the lisp lover, https://github.com/inconvergent/weird https://github.com/inconvergent/weird is also great
- kaveh808 4y agoVery cool. I'm always fascinated by DSLs for doing algorithmic art.
- dgan 4y agoi have a personal opinion that any sufficiently large project written in a untyped language will become unreadable to anyone external to that project
- brabel 4y agoYou can type Common Lisp.
- ogogmad 4y agoYou can do anything* in Common Lisp. But will you? * - almost anything
- brabel 4y agoAdding types in CL is pretty trivial [1] to do. So, yes, I will, and I do. [1] https://lispcookbook.github.io/cl-cookbook/type.html#compile-time-type-checking https://lispcookbook.github.io/cl-cookbook/type.html#compile...
- lispm 4y agoCommon Lisp is not untyped. It is dynamically typed. Common Lisp is also object-oriented with classes, generic functions and methods. CL-USER 6 > (defclass foo () ((bar :type number :initform 0))) #<STANDARD-CLASS FOO 82200CF0DB> CL-USER 7 > (defmethod add-number ((object foo) (n number)) (incf (slot-value object 'bar) n)) #<STANDARD-METHOD ADD-NUMBER NIL (FOO NUMBER) 80100E116B> CL-USER 8 > (let ((foo1 (make-instance 'foo))) (add-number foo1 10) foo1) #<FOO 80100E185B> CL-USER 9 > (describe *) #<FOO 80100E185B> is a FOO BAR 10 Thus the source code will contain lots of class definitions, lots of methods with multiple argument dispatching over classes. Thus the source code will contain all the usual class and method declarations. Common Lisp may also contain optional type declarations. For above example the slot BAR of the class FOO has a type NUMBER.
- dgan 4y ago
- vfclists 4y agoI think with such projects it is more important for the leaders to focus on the the higher level architecture, the data structure and algorithms and their proper documentation rather than the coding finished product. Of course they can code when these details are fleshed out, but these traits in a project are what make it easier for more people to join and contribute. My view is that there are more than enough people to make open source projects succeed, but trying to unravel and understand other peoples poorly documented architectural decisions and code is what make things difficult.
- vfclists 4y agoYour name reminds of one Kaveh Alamouti, PhD. In a particular year in the late 80s or 90s he was the UK's highest earner by dint of bringing his mathematical genius to bear on the trading activities of Tokai Bank. You might tap your namesake for some funding.
- kaveh808 4y agoI'm afraid I don't know the gentleman. Or how an open source project could get funding.
- ogogmad 4y agoWhen it comes to computing motions, and interpolating between motions, this might be a nice way of doing it: https://www.youtube.com/watch?v=pq9YfdPHhIo https://www.youtube.com/watch?v=pq9YfdPHhIo I think that some computational geometry problems admit nice solutions using Projective Geometric Algebra. Using it is fairly intuitive: You have some elements of the algebra that represent Euclidean motions, and some other elements that represent flat objects like points, lines and planes; you can then intersect these objects, "join" them into larger objects, and apply transformations to them. If it looks to you like it could make some things you're doing easier, then you might try using it. I think there are already some Common Lisp implementations out there -- but if there aren't, then it shouldn't be difficult to make one from scratch. There's also Conformal Geometric Algebra, which is notable for allowing you to represent circles and spheres as elements of the algebra. But efficiently implementing it appears to be harder than PGA.
- kaveh808 4y agoI am quite interested in exploring new ways of doing 3D interpolated animation. Especially when it comes to visualizing and controlling the motion by the animator. I have not yet seen a system or UI that I am happy with. Having a flexible enough GUI toolset to allow this sort of development is definitely on my mind.
- kaveh808 4y agoPlease join the project GitHub repo if you would like to contribute or be notified of updates: https://github.com/kaveh808/kons-9 https://github.com/kaveh808/kons-9
- kaveh808 4y agoCalling all those interested in being a part of this.
- gus_massa 4y agoFor a project about 3D graphics, I expect 3D graphics in the video! Lot of 3D graphics! Can you make a tl;dw video? 1 minute, perhaps 3 minutes. Some links to some arbitrarily selected parts of the video: Something about (random?) particle flow: https://www.youtube.com/watch?v=NJe4isZ7NHI&t=1649s https://www.youtube.com/watch?v=NJe4isZ7NHI&t=1649s A 3D graph a bull (and later the teapot): https://www.youtube.com/watch?v=NJe4isZ7NHI&t=2155s https://www.youtube.com/watch?v=NJe4isZ7NHI&t=2155s
- kaveh808 4y agoGood point. I need better marketing. Or a marketing team. :) I'll work on a promotional video.
- john2x 4y agoI thought this was funny > • wrote 3D animation software used in “Jurassic Park” • software R&D lead on “Final Fantasy: The Spirits Within” movie • senior software developer on “The Hobbit” films > But I don't consider myself an expert Looks like a cool project though!
- kaveh808 4y agoHa ha, thanks. I know 3D graphics, but I realize there are folks out there who know a lot more than I do in their respective fields. And I hope to tap into that knowledge. It's going to take a team to do this project.
- john2x 4y agoThe colors in the demos reminds me of Wings3d, a 3d editor written in Erlang. It had quite a unique user interface to it, with modal bindings not unlike Vim. Are the color choices a coincidence?
- kaveh808 4y agoI based the menu design on the Symbolics menus, and Wings3D is a descendant of S-Geometry in spirit. I wanted a quick way of assigning some colors so I just made a rainbow color ramp. If you mean the red color for selection, then yes that was inspired by watching a Wings3D video.
- lispm 4y agosee also Nendo from Izware: https://archive.org/details/nendo-1-5-setup https://archive.org/details/nendo-1-5-setup which originally was a project for Nintendo..., IIRC
- kaveh808 4y agoIf memory serves, Nendo was a standalone version of the S-Geometry modeler written in CL, and Wings3D was a clone of Nendo written in Erlang.
- Guthur 4y agoI love Common Lisp but I feel that for a project like this to actually go somewhere it needs to have goals beyond the "we'd like to rewrite the software A in language L" trope. There are many inspirations that we can take from CL development experience that might make for interesting directions to take 3D software systems. For example a live sharable image based environment would be sweet to allow artists to easily collaborate in real time. I'll be keep an eye on this, I might have some time for CL projects in the future and would love to help out if possible.
- kaveh808 4y agoYou are absolutely right. And I don't have a logical argument as to why this will actually go somewhere. At best, all I can say is "If you build it, they might come." I wrote about this in my blog a while back, if you can stomach the overthinking. :) https://kaveh808.medium.com/15-interlude-musings-and-over-thinkings-21aca8c43f3f https://kaveh808.medium.com/15-interlude-musings-and-over-th... Perhaps another way of putting it: This is what I want to spend my time doing.
- havercosine 4y agoYou might be asked why a lot. And sometimes, I think, the best answer is 'because I can and I want to', as your article perfectly answers it. Being too utilitarian early in a project is sometimes useful but large, audacious bets don't work that way. Not all those who wander are lost, so do it!
- kaveh808 4y agoWell put. Thank you.
- Guthur 4y agoWhich perfectly fine from an individualistic perspective, and that's cool, but this was framed as a open project with call for community involvement. A successful community project would benefit from a clear set of goals, which is oft times a matter of "software A in language L".