
SpaceshipGenerator: A Blender script to procedurally generate 3D spaceships - itsspring
https://github.com/a1studmuffin/SpaceshipGenerator
======
Daub
It amazing the traction that Blender is now getting. After a lifetime of
delivering our 3D courses in Max, our school has recently switched to blender.
Despite being long-time Max users, all our staff having nothing but praise for
Blender. They are like kids in a candy store. It was the Covid thing that
precipitated this move. Max is platform-dependent, making it unsuitable for
home use. Today I returned to Max to tweak an old project and I am reminded of
what a funckwinkle it is: full of built-in bugs and inconsistent UI choices.

The design landscape is very subject to catastrophic change. I remember when
Quark Express went from being king of the hill to playing second fiddle to
InDesign, in what felt like a couple of months. This was the outcome of some
very poor customer-antagonising decisions by Quark.

~~~
mortenjorck
I tried to learn Blender about ten years ago and just couldn’t get past the
UI. I tried again this past week, and have already modeled and rendered a
proof-of-concept for what I was hoping to do with it.

The 2.8 UI redesign was nothing short of a game-changer.

~~~
jointpdf
Do you think it would be simple enough for an 11 year old to learn without
getting too lost? My nephew is into claymation and is generally artistically
inclined (but otherwise not very into school, even in the best of times). I’m
looking for something to help him learn remotely, so anyone’s tips or
resources would be appreciated.

~~~
Daub
Exciting development! ZBrush has just released a stripped-down free version of
their app: ZBrush Core

[https://zbrushcore.com/mini/](https://zbrushcore.com/mini/)

For any young person interested in digital clay, this is tops! ZBrush is the
market leader in digital sculpting.

------
Hemospectrum
The result screenshots are pretty cool-looking... and I personally wouldn’t
board any of these spacecraft! The decks should be stacked along the main
engines’ thrust vector, so the acceleration doubles as a source of artificial
gravity.

Maybe I should open an issue...

~~~
simonh
If you’ve got a magically efficient drive that’s unrealistically fuel
efficient to sustain long term high thrust like in The Expanse that’s one
option. But if we’re waving our magic wands anyway, why not just wish up
artificial gravity instead?

~~~
nurettin
It would be much harder to maintain homogeneous artificial gravity so I
imagine if/when it is invented, it will look like waves creating centers of
higher gravity and lower gravity underneath each deck, making you feel like
you're riding on a bumpy road instead of walking straight.

    
    
        ``'-.,_,.-'``'-.,_,.='``'-.,_,.-'``'-.,_,.='``

~~~
regularfry
Another model is that each mobile object worth keeping held down gets its own
gravity well which moves with it via an array of pads in the floor. They feel
a constant acceleration, but gravity is uneven where they aren't.

------
spectaclepiece
Really cool. I recently began playing around with procedural 3D design and
found Sorcar[0] which gives Blender Houdini like capabilities.

A good place to start for anybody interested in exploring this sort of thing.

[0] [https://github.com/aachman98/Sorcar](https://github.com/aachman98/Sorcar)

~~~
rurban
But still away from Houdini which is the gold standard still.

------
angry_octet
Quite good, though very much in the style of Aliens. I'd like to see if some
deep learning techniques can make ships like Chris Foss, Peter Jones or Angus
McKie.

[https://www.chrisfossart.com/](https://www.chrisfossart.com/)
[https://arthive.com/artists/65054~Peter_Andrew_Jones/works/3...](https://arthive.com/artists/65054~Peter_Andrew_Jones/works/354661~Spaceship)
[https://www.pinterest.ca/lleephoenix/space-art-angus-
mckie/](https://www.pinterest.ca/lleephoenix/space-art-angus-mckie/)

------
solinent
Some more in Houdini:
[https://www.youtube.com/watch?v=cNPO_w9YRb0](https://www.youtube.com/watch?v=cNPO_w9YRb0)

~~~
pzone
Big fan of this Houdini artist's procedural helmets and robots

[https://twitter.com/mglhs_com/status/1081153465328549889](https://twitter.com/mglhs_com/status/1081153465328549889)

------
trynewideas
A more up-to-date fork since this original repo hasn't been updated in two
years:
[https://github.com/ldo/blender_spaceship_generator](https://github.com/ldo/blender_spaceship_generator)

~~~
splatcollision
Thanks! I only tried using the original which wasn't updated for blender 2.8.

------
lgierth
I recently started playing No Man's Sky, a space game that has systems and
planets procedurally generated.

More varied spaceships and spaceship classes are something I'm looking forward
too, maybe the developers can take some inspiration from OP.

~~~
Daub
Procedural general works well for terrains and ecosystems, but not for man-
made objects. There has been some great work on procedurally generated
architecture, but they all need extensive manual tweaking before they can be
used. This tells us a lot about what differentiates design from natural
forces.

------
Ninjinka
I remember seeing this a while back when I was looking into how a procedurally
generated trading card game might work, where every single card was unique. It
ended up being beyond me, but I'd love to see it come to life at some point,
similar to Keyforge.

------
GavinB
Just needs some rendering presets, star field backgrounds, lens flare, GPT-2
title generation, and you've got random SF novel book covers!

~~~
smcameron
Speaking of random SF book covers: [https://thrilling-
tales.webomator.com/derange-o-lab/pulp-o-m...](https://thrilling-
tales.webomator.com/derange-o-lab/pulp-o-mizer/pulp-o-mizer.html)

~~~
FraKtus
This is so fun to play with. Thank you for sharing!

------
thdrdt
For those people who want to learn more about Blender here some lesser known
YouTube channels with great content:

[https://www.youtube.com/channel/UClUvUh2AoIhJRezjduP3xcQ](https://www.youtube.com/channel/UClUvUh2AoIhJRezjduP3xcQ)

[https://www.youtube.com/channel/UCzghqpGuEmk4YdVewxA79GA](https://www.youtube.com/channel/UCzghqpGuEmk4YdVewxA79GA)

[https://www.youtube.com/channel/UCREsnxg5H2HAj86KVREdGMw](https://www.youtube.com/channel/UCREsnxg5H2HAj86KVREdGMw)

[https://www.youtube.com/user/mediagabbitt](https://www.youtube.com/user/mediagabbitt)

[https://www.youtube.com/user/Blenderfan93](https://www.youtube.com/user/Blenderfan93)

[https://www.youtube.com/channel/UC2U5mRfclG1Rrr1ztNkpGKA](https://www.youtube.com/channel/UC2U5mRfclG1Rrr1ztNkpGKA)

[https://www.youtube.com/channel/UC-6vHjpfo62aJpQk_n9siUw](https://www.youtube.com/channel/UC-6vHjpfo62aJpQk_n9siUw)

Most of those channels show really professional work with great tutorials.

------
kebman
This got me thinking about Limit Theory [1], where _everything_ will be
procedurally generated. Not sure if the project is still alive though. I
remember getting so hyped over it in 2014 or something...

[1]: [http://ltheory.com/faq.html](http://ltheory.com/faq.html)

~~~
tck42
Sadly looks like no: [https://www.kickstarter.com/projects/joshparnell/limit-
theor...](https://www.kickstarter.com/projects/joshparnell/limit-theory-an-
infinite-procedural-space-game/posts/2270873)

It doesn't appear the code was ever released either.

~~~
nurettin
Well, it appears someone received a bonus of $180,000 without releasing any
code. Thanks again, kickscamter.

------
juanuys
Previously on HN:
[https://news.ycombinator.com/item?id=11929493](https://news.ycombinator.com/item?id=11929493)

Also, someone a while back posted procgen for 2D spaceships. Will update
when/if I find it.

~~~
arriu
Perhaps this one? [https://github.com/zfedoran/pixel-sprite-
generator](https://github.com/zfedoran/pixel-sprite-generator)

~~~
juanuys
That's it, thanks!

------
minitoar
Reminds me of Warning Forever, which would generate 2d spaceships:
[https://en.wikipedia.org/wiki/Warning_Forever](https://en.wikipedia.org/wiki/Warning_Forever)

------
klmadfejno
This is really cool. Spaceships feel like a limited choice for this though.
Being able to generate models of humans or animals already animated to a
standard skeleton would be a hugely useful asset. As a hobbyist game dev I'd
love to buy random monsters off the unreal asset store, but I can't help but
feel it'd be really lame if the monsters in your game were seen in some other
unrelated game. That would be super limiting on any immersion instantly imo.
Tools like this could help a lot. Maybe it's even easier since the skeleton
would be the same?

Not familiar with modeling

------
noblethrasher
Of possible interest is Kate Kinnear's thesis[1], titled _The Aesthetics of
Science Fiction Spaceship Design_ , which is about techniques for procedural
generation of sci-fi spaceships. Also discussed on HN[2].

[1]
[https://uwspace.uwaterloo.ca/handle/10012/4935](https://uwspace.uwaterloo.ca/handle/10012/4935)

[2]
[https://news.ycombinator.com/item?id=17899458](https://news.ycombinator.com/item?id=17899458)

------
corty
Reminds me of the spaceships in Avorion:
[https://www.youtube.com/watch?v=3R7xwseIkcE](https://www.youtube.com/watch?v=3R7xwseIkcE)

~~~
yellowapple
Was just playing that yesterday, and was getting ready to jump back in today.

BoxelWare revamped the procedural ship/station generation immediately prior to
the 1.0 release, and they're fantastic:
[https://www.youtube.com/watch?v=CLdmGxLWWfI](https://www.youtube.com/watch?v=CLdmGxLWWfI)

------
noisy_boy
Very cool. I used to draw spaceships as a child so this brings back memories.
Suggestion for OP: add more curves to the mix to increase variety.

~~~
cat199
also 'wings' and 'wing alikes'

------
jp555
This is great!! Blender is SO HUGE, even after years learning it I've not yet
dabbled much into scripting, but it's the spirit of sharing like this that
lets us dive in to an examples and learn so much!!

Blender is truly remarkable software, and it just keeps getting better and
better! I'm loving the 2.83 beta grease pencil updates.

------
potatofarmer45
One of my favorite aspects of Diablo was the randomly generated levels.
Imagine a space strategy game, where your "civ" is randomly generated giving
you a random tech tree, with random ships of random attributes.

That would so much more depth and replay-ability and make it much much harder
to over optimize.

------
metalliqaz
This is very cool, but they all looks like the same "kind" of space ship to
me. Even though I'm sure they are very different, they aren't distinct. And in
that way, this doesn't seem very useful.

~~~
TuringTest
The "extreme" examples are more visually interesting and distinct. But yes,
its too obvious that they all follow the same scheme.

------
splatcollision
Has this been updated for 2.8? I've used this when learning Blender scripting
and the script had a bunch of issues with the procedural materials because of
API changes.

That being said Blender is some heroic software.

------
HiroshiSan
Really interested to see how the concept art industry will adopt tools like
this

------
dreen
I've never done any 3D modelling, how feasible is it for a programmer to
approach it purely via scripting? Im very familiar with Python, and this
script doesn't look too complex.

~~~
Peckingjay
Blender has a great Python API[0] that allows you to do almost everything that
you could do in the editor with code. You do have to run your code from inside
the Blender app though.

[0]
[https://docs.blender.org/api/current/info_quickstart.html](https://docs.blender.org/api/current/info_quickstart.html)

~~~
capableweb
I'm unsure of why you say "almost" everything when the UI code is simply
calling the python API to do it's function. You could do anything and _more_
in the python API, as it's what the UI uses but you can use all the parameters
via the code while the UI doesn't expose everything.

Unless something changed recently regarding this.

Also, regarding executing the code from outside, you can run blender
headlessly, running the code with it when running blender via terminal. So you
could use it as a windowless client if you so wish.

~~~
blincoln
Blender is a truly fantastic tool, but some of the scripting is a bit hacky,
IMO.

I recently built some pretty complex Blender automation[1], and my experience
was that while technically nearly everything that can be done in the UI can be
automated, there are problems that fell into two main buckets for me:

1 - There are basically two parts to the Python API - bpy.ops, and everything
else. If something is in the "everything else" category, it works pretty well,
but not everything can be done through that part of the API. bpy.ops is
(AFAICT) the equivalent of using Selenium to automate clicking on web pages
instead of actually interacting with the underlying API, and it feels super
fragile.

2 - A _lot_ of the API is not documented well, and I frequently ran into
situations where there was no information on what I wanted to do, or the
information was outdated. The impression I get is that most of the core
Blender devs and users are _not_ using the scripting features, or not using
them extensively, because answers on StackOverflow and similar to things like
"how can I change property X of every material's shader in my project, oh, and
by the way, I have 1000 materials in my project" are usually "I guess you'll
just have to click through each of those and set it" even though the API
supports it if one digs far enough. A lot of the extensions I thought I could
use as reference for things like arranging shader nodes in a useful way have
been broken ever since 2.8, but there's no indication in the UI of this.

The pane in the scripting view that continuously shows the script equivalent
of actions taken in the UI is a big help, and again, Blender is a really,
really fantastic tool. But I can definitely understand some frustration with
the scripting feature.

[1]
[https://www.thelostworlds.net/Software/Soul_Reaver_to_Blende...](https://www.thelostworlds.net/Software/Soul_Reaver_to_Blender_Conversion_Toolchain.html)
\- better docs are coming soon, I promise.

------
gerdesj
"Upgrade to 2.8x required" 8(

Sadly, I've only just installed Blender so I have no idea how to update the
add in. Give me a couple of years to get to grips with it please.

~~~
risos
I guess you must've downloaded an older version of blender. The latest
official release version is 2.82 which you can download here
[https://www.blender.org/download/releases/2-82/](https://www.blender.org/download/releases/2-82/)
.

~~~
stoolpigeon
No- it's the script that needs updating.

eeereerews has the link to the issue that leads to a link with a corrected
version of the script

------
antpls
That's really cool ! Even the "extreme" examples could be an entire
specie/race/civilization in a space game

------
Archit3ch
Procedurally generated spaceships was the first idea that came to mind when I
learned about Blender's scripting capabilities. :)

------
baq
big spaceships should be skyscapers instead of boats so thrust works as
gravity.

looks nice though!

------
awinter-py
which part docks with ISS

------
rossjudson
All these ships have Bangle Butt.

------
andarleen
ok now THIS is what i am here for - thanks for the link!

