top | item 32337538

New open source project: Common Lisp 3D graphics system

188 points| kaveh808 | 3 years ago |old.reddit.com | reply

80 comments

order
[+] john2x|3 years ago|reply
I 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|3 years ago|reply
Ha 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.

[+] dougb|3 years ago|reply
Back 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

P3D DESCRIPTION AND DEFINITIONS http://netghost.narod.ru/gff/vendspec/p3d/p3d_desc.txt

[+] kaveh808|3 years ago|reply
> over the course of a week, render some high quality NTSC video.

I remember those days. :)

[+] eschaton|3 years ago|reply
Was any of the actual code or other artifacts of the work preserved?
[+] gus_massa|3 years ago|reply
For 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

A 3D graph a bull (and later the teapot): https://www.youtube.com/watch?v=NJe4isZ7NHI&t=2155s

[+] kaveh808|3 years ago|reply
Good point. I need better marketing. Or a marketing team. :)

I'll work on a promotional video.

[+] kaveh808|3 years ago|reply
Calling all those interested in being a part of this.
[+] ogogmad|3 years ago|reply
When 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

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|3 years ago|reply
I 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.

[+] vfclists|3 years ago|reply
I 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.

[+] truncate|3 years ago|reply
Unrelated 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.

[+] chii|3 years ago|reply
`i.reddit.com` links are even better. Renders great on mobile, and little to no clutter for every subreddit, regardless of the CSS customizations made.
[+] kaveh808|3 years ago|reply
I echo that sentiment regarding macros. Worthy of further exploration.
[+] Guthur|3 years ago|reply
I 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|3 years ago|reply
You 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-th...

Perhaps another way of putting it: This is what I want to spend my time doing.

[+] lbj|3 years ago|reply
Bless your heart for still using Common Lisp.
[+] kaveh808|3 years ago|reply
Been 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.
[+] leetrout|3 years ago|reply
Neat! 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

[+] kaveh808|3 years ago|reply
I 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.

[+] vfclists|3 years ago|reply
Your 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|3 years ago|reply
I'm afraid I don't know the gentleman. Or how an open source project could get funding.
[+] dgan|3 years ago|reply
i have a personal opinion that any sufficiently large project written in a untyped language will become unreadable to anyone external to that project
[+] lispm|3 years ago|reply
Common 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.

[+] brabel|3 years ago|reply
You can type Common Lisp.
[+] acalzycalzy|3 years ago|reply

[deleted]

[+] nmg|3 years ago|reply
My 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.
[+] mattpharr|3 years ago|reply
The irony of such a post on a website with the domain name “y combinator”…