10. 17,000 Polygons Should Be Enough For Anyone

Steve White, Neo-Visuals’ founder, had also founded (or co-founded) Vertigo Graphics in Vancouver some years back. He had written all of their 3D software, and had brought it with him to Toronto to start his new company.

The system, initially named Vista and later renamed Vishad, had an architecture that was years ahead of its time. True, it was written in Fortran, which wasn’t the coolest or trendiest language. (Since Fortran had no dynamic memory allocation, the product shipped with static arrays for 17K polygons and 30K vertices.) But the stroke of genius was that it was built around a scripting language for 3D modeling. It had a REPL!

Prior to our adding a GUI (written in raw GL in those pre-OpenGL days), everything was done via the scripting language. The system would save your commands in a journal file, which you could later edit and clean up as desired. Even when we added a GUI (which involved writing an object-oriented framework in Fortran), all graphical commands were recorded as scripts in the journal file.

These were amazingly powerful features which did not become commonplace in 3D packages for another ten years.

An indelible image etched in my mind is that of Steve, usually wearing a white button down shirt, hunched over his keyboard pecking at the keys while holding a cigarette between his fingers. Both he and his father were chainsmokers, and in those days you could smoke indoors. I am amazed looking back that it didn’t bother me. Then again, back then I could also eat fast food every day and not feel the effects. No longer.

Design & Code

Fractal terrain was all the rage in the 80’s. So of course I had to make some terrain when testing my heightfields from the last post, as seen in the image above.

I used layered frequencies of Perlin noise, pulling out the code above and dusting it off. It was written in 1992 on a PowerBook 170 running Macintosh Common Lisp (Wouldn’t be wonderful if Apple would provide CL for the Mac today?).

To be honest I don’t remember how this code works. Or if it is efficient. But it is what it is, and it appears to give the expected visual results. It may even have been code I transcribed from previous C code of mine.

The function “turbulence” does the layering of different frequency noise values, by doubling the frequency and halving the amplitude of each layer.

Almost ten years later I would implement Perlin noise on the VU1 processor of the PS2. The lowest-level programming I ever did.




MIT mathematics degree • wrote animation software used in “Jurassic Park” • software R&D lead on “Final Fantasy” movie • software dev on “The Hobbit” films

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Rendering content in both Intercom and Slack

NFT Master V2 is Officially Launched!

The hash .with_indifferent_access method in Rails

Becoming reasonable

Can you build a Raspberry webserver? Yes, you can.

Abstraction in Software Engineering

Developing for the cloud, are you wasting time and money?

A black and white photo of a factory from the first industrial revolution

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Kaveh Kardan

Kaveh Kardan

MIT mathematics degree • wrote animation software used in “Jurassic Park” • software R&D lead on “Final Fantasy” movie • software dev on “The Hobbit” films

More from Medium

Stack overflow surveys, and what they say about language trends

11. Night Bus to Graphics Town

Rust: Decisions, Decisions

A pathway into the forest with a fork in the path, representing a decision.

Traverse: Fully Generalized Loops